Software design

Department of Computer Science · Grinnell College

CSC 323 · Spring, 2012

Class news

Final examination

Short syllabus

CSC 323, “Software design,” deals with the design, implementation, testing, documentation, and maintenance of software packages. The course includes a team software-development project, and the timetable for this project structures the schedule for the course.

The readings for the course include several chapters from the essay collection Beautiful code, edited by Andy Oram and Greg Wilson; several chapters from the software-construction handbook Code complete, by Steve McConnell; and on-line documentation for the GNU C compiler, GNU Emacs, gdb, make, git, Doxygen, and gprof.

In addition to their contributions to the team project, students will individually implement two or three function libraries and write two or three essays on assigned topics in software design.

The textbooks

Oram, Andy, and Greg Wilson, eds. Beautiful code: leading programmers explain how they think. Sebastopol, California: O'Reilly Media, 2007. ISBN 978-0-596-51004-6.

McConnell, Steve. Code complete, second edition. Redmond, Washington: Microsoft Press, 2004. ISBN 0-7356-1967-0.

The instructor

The instructor for this course is John David Stone. My office is Noyce 3829, near the east end of the long corridor on the third floor of the Noyce Science Center, on the north side (facing Eighth Avenue). My telephone extension on the Grinnell College campus is 3181.

My office hours for spring 2012 are

or by appointment.

Miscellaneous links

Lab on detecting memory leaks

Lab on profiling

GNU Emacs Lisp reference manual

Programming assignment #2

Lab on the git version-control system ... Lab on the gdb debugger ... Lab on the make builder ... Lab on the doxygen documentation generator ... Lab introducing Emacs Lisp

“Understanding git conceptually.”

GNU libunistring (manual)

Writing assignment #1

Chicago-style citation quick guide

Descriptions of possible projects

Collected comments on programming assignment #0

Programming assignment #0

“Structured programming with goto statements”

My own linked-list and array implementations and my test program are now available on MathLAN, in the /home/stone/courses/software-design/code directory.