Fork me on GitHub

CS 5010: Program Design Paradigms

Fall 2017

CS 5010 is the introductory course for students in the MSCS 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 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.

This website is for students in Boston and Silicon Valley; students in Seattle should consult their instructor for the relevant website.

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

Class meetings for CS 5010 begin on Tuesday, September 12, and Wednesday, September 13. There are no class meetings for CS 5011. Do not go to the classroom listed by the Registrar.

Syllabus:

Module Monday Topic Problem Set Notes
00 4 Sep How to Learn in This Course 00 No class meetings for 5010/5011 this week.
01 11 Sep The Function Design Recipe, Part I 01
02 18 Sep The Function Design Recipe, Part II 02
03 25 Sep Designing Sets of Functions 03
04 2 Oct Computing with Lists 04
05 9 Oct Computing with Trees 05
06 16 Oct Computing with Higher-Order Functions 06
07 23 Oct Designing with Invariants 07
08 30 Oct General Recursion and Efficiency 08
09 6 Nov Defining OO Data with Interfaces and Classes, Part I 09
10 13 Nov Interfaces and Classes II 10
20 Nov Thanksgiving Break no lecture or codewalk
11 27 Nov Sharing Implementations using Inheritance 11 (Last Problem Set)
12 4 Dec Special Bonus Content
(come and see!)
Last week of class; final codewalks

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.