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.
- Please click out the slots when you are not free for this course.
- The last date for submission of Modeling, Analysis and exact problem specification is August 17.
- The last date for submission of SRS and use cases is October 3.
- The last date for submission of the Software design is October 18.
- 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:
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.
- Standard Unix utilities.
- gcc/g++ - the C pre-processor, header files, #defines; object
files, linking, static and run-time libraries; Makefile.
- using and creating libraries, ar and ranlib.
- Object oriented style, classes, namespaces etc.
- CVS and version control.
- debugging and profiling tools
- macros and in-line code, loop transformations and un-rolling,
- Documentation tools like Doxygen.
- auto-configuration, Makefile generation and porting issues.
We may also do case studies of one or two large projects.
- Golas' page on some tools and utilities
- Avinash's notes on compiling, linking, libraries, Makefile, Doxygen, Latex \& CVS
- Subhajit's case study of design of a small math utility library
Common project I
Design and implement a software package for Engineering drawing.
The package should have the following functionalities:
- We should be able to interactively input either i) an isometric
drawing and a 3D object model or ii) projections on to any
- Given the 3D model description we should be able to generate
projections on to any cross section or cutting plane.
- 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