CS 115: Introduction to Computer Science 1

Calendar

This 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 12-14)

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 19-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 : 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 26-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: 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 3-5):

Lectures (Module 4): Compound data and user-defined structures. Data definition and analysis. Functions that operate on compound data. Templates and data-directed 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 self-referential 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 17-19)

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 24-26)

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. Lock-step. 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 7-9)

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 14-16)

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 21-23)

Lectures (Module 9): General arithmetic expressions. Mutual recursion, Leaf-labelled 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 28-30)

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.

Valid XHTML 1.0 Strict Valid CSS!

Last modified on Wednesday, 15 November 2017, at 10:42 hours.

Course Supported by Instructional Support Group