CS 5010: Program Design Paradigms

Spring 2017

CS 5010 is the introductory course for students in the MS program. The course has two distinct objectives. First, it ensures all MS students have developed basic skills in program design, from problem analysis to developing test suites, using several program design paradigms. Second, the course introduces students to programming as a people discipline. Students will work in pairs, present code to review panels, and learn to cope with an evolving code base.

Programming takes time, and it usually takes more time than you think. Most students who have taken the course report spending an average of about 20 hours per week on the programming assignments. Please take that into account when organizing your time.

Before the first meeting of your section, you should do everything listed in the pre-semester checklist, including Problem Set 00.


Module Monday Topic Problem Set Notes
00 9 Jan How to Learn in This Course 00
01 16 Jan Function Design Recipe, Part 1 01 Monday holiday,
makeup Tuesday night
02 23 Jan Function Design Recipe, Part 2 02
03 30 Jan System Design Recipe 03
04 6 Feb Computing with Lists 04
05 13 Feb Generalizing Similar Functions 05
06 20 Feb Trees and Graphs 06 Monday holiday,
makeup Tuesday night
07 27 Feb Contexts and Invariants 07
6 Mar (no classes) spring break
08 13 Mar General Recursion and Efficiency 08
09 20 Mar Interfaces and Classes 09
10 27 Mar Inheritance 10
11 3 Apr Objects with Mutable State 11
12 10 Apr Efficiency, Part 2 12
13 17 Apr Additional Topics Monday holiday,
makeup to be announced

Most of the online materials at this web site were developed by Professor Mitch Wand and other NU faculty, including the instructor and other course staff, and are used here with some changes as permitted by a Creative Commons License.

For debugging: Click here to validate.