
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(January 4)Lectures (Module 1): Course information and goals. Functions and evaluation. DrRacket. Defining functions. Syntax and semantics. Substitution. Tracing Potatoheads. Readings: Preface, Sections 1 through 3. Lab 1 : Basics, using DrRacket. Language Level: Beginning Student. Week 2(January 9, 11)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, January 10. Week 3(January 16, 21)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 : Designing Functions. Due at 4:00 PM, Monday, January 15. Assignment 1: Due at 10:00 AM on Wednesday, January 17. Week 4 (January 23, 28)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: The design recipe and helper functions. Due at 4:00 PM, Monday, January 22. Assignment 2: Due at 10:00 AM on Wednesday, January 24. Week 5 (January 30, February 1):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: Booleans, predicates, conditionals. Due at 4:00 PM, Monday, January 29. Assignment 3: Due at 10:00 AM on Wednesday, January 31. Week 6 (February 6, 8)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. Lab 5: Structures. Due at 4:00 PM, Monday, February 5. Assignment 4: Due at 10:00 AM on Wednesday, February 7. Week 7 (February 13, 15)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 6: Lists. Due at 4:00 PM, Monday, February 12. Assignment 5: Due at 10:00 AM on Wednesday, February 14. Week 8 (February 27, March 1)Midterm Exam: Monday, February 26, 7:00 PM – 8:50 PM 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 7: Lists of structures. Due at 4:00 PM, Monday, February 26. No Assignment due this week Week 9 (March 6, 8)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 8: Structural recursion on numbers. Due at 4:00 PM, Monday, March 5. Assignment 6: Due at 10:00 AM on Wednesday, March 7. Week 10 (March 13, 15)Lectures (Module 8): Binary arithmetic expressions. Evolution Trees. Binary search trees. Readings: Sections 14, 15, 16. Lab 9: Processing two lists. Due at 4:00 PM, Monday, March 12. Assignment 7: Due at 10:00 AM on Wednesday, March 14. Week 11 (March 20, 22)Lectures (Module 8 continued): Binary search trees. General trees. Readings: Sections 14, 15, and 16. Lab 10: Binary trees. Due at 4:00 PM, Monday, March 19. Assignment 8: Due at 10:00 AM on Wednesday, March 21. Week 12 (March 27, 29)Lectures (Module 9): General arithmetic expressions. Mutual recursion, Leaflabelled trees. Compounds. Readings: Intermezzo 3, Sections 19 to 21. Lab 11: Local, functional abstraction. Due at 4:00 PM, Monday, March 26. No Assignment due this week Week 13 (April 3)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. Language Level: Intermediate Student. Lab 12: General trees. Due at 4:00 PM, Wednesday, April 4. (notice date change) Assignment 9: Due at 4:00 PM on Wednesday, April 4. (notice time change) Final ExamDate and Time: Tuesday, April 24, 9:00 AM  11:30 AM 
Last modified on Thursday, 15 February 2018, at 10:27 hours.
Course Supported by Instructional Support Group