Schedule

CSC 323: Software design · Spring, 2012

Department of Computer Science · Grinnell College

January 23. Introduction to the course; discussion of course policies on attendance, grading, plagiarism and attribution, and copyright; the rhetoric of programming.

Programming assignment #0: Implementing queues is assigned.

January 25. The rhetoric of programming (continued); software-development methodologies.

Reading for January 27: Beautiful code, chapters 1 and 3 (pages 1 through 9 and 29 through 40).

January 27. Software-development methodologies; elegance, concision, and simplicity as indicators of code quality.

Programming assignment #0: Implementing queues is due.

Reading for January 30: Code complete, chapter 3 (pages 23 through 60).

January 30: Conceptual project specification.

Reading for February 1: Code complete, chapter 4 (pages 61 through 70).

February 1: Objective project specifications.

Reading for February 3: Beautiful code, chapter 11 (pages 161 through 186).

February 3: Social responsibility.

Reading for February 6: Code complete, chapter 21 (pages 479 through 497).

February 6: Choosing project teams.

Reading for February 8: Code complete, chapter 5 (pages 73 through 123).

February 8: Designing projects.

Reading for February 10: Beautiful code, chapter 17 (pages 279 through 291).

February 10: Architecture; layer structure; module structure.

Writing assignment #1: Project specification is assigned.

February 13: Information hiding; extensibility.

Reading for February 15: Code complete, chapters 6, 12, and 13 (pages 125 through 160 and pages 291 through 344).

February 15: Selection of key data structures.

Reading for February 17: Code complete, chapter 7 (pages 161 through 186).

February 17: Interfaces; prototyping and stub programming.

Writing assignment #1: Project specification is due.

Reading for February 20 and 22: “Understanding git conceptually.”

February 20: Lab on git, part 1.

February 22: Lab on git, part 2.

Reading for February 24: Code complete, chapter 8 (pages 187 through 213).

February 24: Defensive programming.

Reading for February 27 and 29: Code complete, chapter 22 (pages 499 through 533).

February 27: Project group meetings.

February 29: Testing.

Reading for March 2: Code complete, chapter 23 (pages 535 through 562).

March 2: Coding and debugging.

March 5: Debugging tools; lab on gdb (part 1).

March 7: Lab on gdb, part 2.

March 9: Build tools; lab on make.

Reading for March 12: Beautiful code, chapter 5 (pages 59 through 74).

March 12: Correctness; assertions, preconditions, postconditions, and invariants; verification techniques.

Reading for March 14: Code complete, chapters 14 through 17 and 19 (pages 347 through 410 and pages 431 through 460).

March 14: Structured programming; control structures.

March 16: Documentation generation; lab on Doxygen.

Reading for April 2: Code complete, chapter 31 (pages 729 through 775).

April 2: Code layout.

Reading for April 4: Beautiful code, chapters 29 and 33 (pages 477 through 481 and pages 539 through 551).

April 4: Balance; coding for “the book.”

Reading for April 6: Code complete, chapter 18 (pages 411 through 430).

April 6: Table-driven code.

Reading for April 9: Beautiful code, chapter 23 (pages 371 through 384).

April 9: Programming models.

April 11: Editing tools; lab on Emacs LISP, part 1.

April 13: Lab on Emacs LISP, part 2.

April 16: Lab on Emacs LISP, part 3.

Reading for April 18: Beautiful code, chapter 7 (pages 85 through 103).

April 18: Unit testing.

April 20: Project meetings.

Reading for April 23: Code complete, chapter 29 (pages 689 through 708).

April 23: Integration testing.

Reading for April 25: Code complete, chapters 20 and 28 (pages 463 through 477 and pages 661 through 688).

April 25: Code assessment.

Reading: GNU/Linux manual pages on gprof and gcov.

April 27: Lab on gprof and gcov.

April 30: Memory management; lab on mtrace functions.

May 2: Torture tests; fuzz tests.

Reading for May 4: Beautiful code, chapter 10 (pages 147 through 160).

May 4: Speed benchmarks.

Reading for May 7: Code complete, chapters 25 and 26 (pages 587 through 645).

May 7: Maintenance.

Reading for May 9: Code complete, chapters 33 and 34 (pages 819 through 853).

May 9: Craftsmanship and professionalism.

May 11: Reflection and assessment; student evaluations.

May 16, 9 a.m.: Final examination.