
CalendarThis page contains information on the rough timing of topics, lab material, assignment due dates, exam dates, and other important milestones. The selection and ordering of topics is correct. Due dates are also precise. The exact timing of lecture topics will almost certainly vary from this, and readings (all from the textbook, "How To Design Programs"), are linked to the timing of lectures. DrRacket implements a series of language subsets, and the changes from one level to the next are noted under the heading "Language Level". Week 1(September 7)Lectures (Module 1): Course information and goals. Functions and evaluation. DrRacket. Defining functions. Syntax and semantics. Substitution. Tracing. Readings: Preface, Sections 1 through 3. Lab 1 : Basics, using DrRacket. Language Level: Beginning Student. Week 2(September 1214)Lectures (Module 1): Course information and goals. Functions and evaluation. DrRacket. Defining functions. Syntax and semantics. Substitution. Tracing. Readings: Sections 2 and 3. Assignment 0: Due at 10:00 AM on Wednesday, September 13. Week 3(September 1921)Lectures (Module 2): A design recipe for a function, with a contract, purpose, examples, definition, and tests. Using constants. Helper functions. Strings. Readings: Sections 4 and 5. Lab 2 : The design recipe and helper functions. Due at 4:00 PM, Monday, September 18. Assignment 1: Due at 10:00 AM on Wednesday, September 20. Week 4 (September 2628)Lectures (Module 3): Boolean functions. Predicates. Testing using Booleans. Conditional expressions. Designing conditional functions. Templates. Symbols. Symbols versus strings. Characters. Mixed data. Errors. Readings: Sections 6 and 7. Lab 3: Booleans, predicates, conditionals. Due at 4:00 PM, Monday, September 25. Assignment 2: Due at 10:00 AM on Wednesday, September 27. Week 5 (October 35):Lectures (Module 4): Compound data and userdefined structures. Data definition and analysis. Functions that operate on compound data. Templates and datadirected design. The design recipe for compound data. Type predicates. Readings: Sections 9 and 10. Lab 4: Structures. Due at 4:00 PM, Monday, October 2. Assignment 3: Due at 10:00 AM on Wednesday, October 4. Week 6 (October 12)Lectures (Module 5): Constructing lists. Visualizations of lists. The recursive definition of a list. Functions that process lists. The design recipe for selfreferential data definitions. Hazards of not using templates. Nonempty lists. Strings as lists of characters. Lists of structures. Readings: Sections 9 and 10. Week 7 (October 1719)Lectures (Module 5 continued and Module 6): A recursive definition of a natural number. Processing natural numbers. Templates for counting down. Templates for counting up. Readings: Sections 11 and 12. Language Level: Beginning Student with List Abbreviations. Lab 5: Lists. Due at 4:00 PM, Monday, October 16. Assignment 4: Due at 10:00 AM on Wednesday, October 18. Week 8 (October 2426)Lectures (Module 6 continued): Auxiliary recursive functions. Sorting. Insertion. List abbreviations. Lists containing lists. Association lists. Lists versus structures. Readings: Sections 11 and 12, Intermezzo 2. Lab 6: Lists of structures. Due at 4:00 PM, Monday, October 23. Assignment 5: Due at 10:00 AM on Wednesday, October 25. Week 9 (October 31  November 2)Midterm Exam: Monday, October 30, 7:00 PM – 8:50 PM Lectures (Module 7): Processing two lists or two numbers. A list going along for the ride. Lockstep. Processing at different rates. Readings: Sections 17. Lab 7: Lists of structures. Due at 4:00 PM, Monday, October 30. No Assignment Week 10 (November 79)Lectures (Module 8): Binary arithmetic expressions. Evolution Trees. Binary search trees. Readings: Sections 14, 15, 16. Lab 8: Structural recursion on numbers. Due at 4:00 PM, Monday, November 6. Assignment 6: Due at 10:00 AM on Wednesday, November 8. Week 11 (November 1416)Lectures (Module 8 continued): Binary search trees. General trees. Readings: Sections 14, 15, and 16. Lab 9: Processing two lists. Due at 4:00 PM, Monday, November 13. Assignment 7: Due at 10:00 AM on Wednesday, November 15. Week 12 (November 2123)Lectures (Module 9): General arithmetic expressions. Mutual recursion, Leaflabelled trees. Compounds. Readings: Intermezzo 3, Sections 19 to 21. Lab 10: Binary trees. Due at 4:00 PM, Monday, November 20. Assignment 8: Due at 10:00 AM on Wednesday, November 22. Week 13 (November 2830)Lectures (Module 9 continued and Module 10): Organizing definitions using local. Encapsulating auxiliary functions and definitions. Lexical scope and block structure. Functional and data abstraction. Readings: Sections 14, 15, and 16. Lab 11: Local, functional abstraction. Due at 4:00 PM, Monday, November 27. Language Level: Intermediate Student. Lab 12: General trees. Due at 4:00 PM, Monday, December 4. Assignment 9: Due at 4:00 PM on Monday, December 4. 
Last modified on Wednesday, 15 November 2017, at 10:42 hours.
Course Supported by Instructional Support Group