CSP301/CSP601: Design Practices in CS

This is the course page for Design Practices in CS, for Semester I, 2007-2008, being taught by Subhashis Banerjee at the Department of Computer Science and Engineering, IIT, New Delhi.


  1. Please click out the slots when you are not free for this course.
  2. The last date for submission of Modeling, Analysis and exact problem specification is August 17.
  3. The last date for submission of SRS and use cases is October 3.
  4. The last date for submission of the Software design is October 18.
  5. Click here to submit the final implementation.

Objective(s) and plan

To get familiar with methods for doing (large?) projects in collaborative mode with special emphasis on software development.

We plan to cover: design, analysis and modeling; software requirement analysis and detailed specifications; design documentation; standard software development tools; testing; report.

The tools that we plan to cover include:

  1. Standard Unix utilities.
  2. Latex
  3. gcc/g++ - the C pre-processor, header files, #defines; object files, linking, static and run-time libraries; Makefile.
  4. using and creating libraries, ar and ranlib.
  5. Object oriented style, classes, namespaces etc.
  6. CVS and version control.
  7. debugging and profiling tools
  8. macros and in-line code, loop transformations and un-rolling, speed-up issues.
  9. Documentation tools like Doxygen.
  10. auto-configuration, Makefile generation and porting issues.
The class will be required to do one or two common projects and one open project (in groups of three or four). The students are encouraged to select a topic for their open project in consultation with faculty and/or Ph. D. and other senior students.

We may also do case studies of one or two large projects.


  1. Golas' page on some tools and utilities
  2. Avinash's notes on compiling, linking, libraries, Makefile, Doxygen, Latex \& CVS
  3. Subhajit's case study of design of a small math utility library

Common project I

Rough specification
Design and implement a software package for Engineering drawing. The package should have the following functionalities:
  1. We should be able to interactively input either i) an isometric drawing and a 3D object model or ii) projections on to any cross section.
  2. Given the 3D model description we should be able to generate projections on to any cross section or cutting plane.
  3. Given one or more projections we should be able to interactively recover the 3D description and produce an isometric drawing from any view direction.
Step I: Modeling and analysis
Work out a mathematical model for the problem. Figure out how many views are necessary? how many are sufficient? How can one compute projections given the 3D description? How can one compute the 3D description given one or more projections? What interactions are necessary?

Define the problem more precisely and submit a report by Aug 17.

Step II: Software requirement specification
Step III: Software design document
Step IV: Implementation and software documentation
Step V: Testing and fine tuning
Step VI: Report

Common project II

Subhashis Banerjee / Dept. Computer Science and Engineering / IIT Delhi / Hauz Khas/ New Delhi 110016