On this page:
Details
DrRacket
6.7

Syllabus

Week

   

Topic

   

Readings

1

   

How to program

   

Prologue

2

   

How to design

   

I, Design of Programs

3

   

Design with fixed-size data

   

I, Structural Design (1)

4

   

Design with arbitrarily large data (1)

   

II, Structural Design (2)

5

   

Design with arbitrarily large data (2)

   

II, Complete Programs

6

   

Designing abstractions

   

III, Design of Abstractions

7

   

Using Abstraction

   

III, Using Abstractions, maps

8

   

Design with arbitrarily large data (3)

   

IV, S-expressions, Structural Design (3)

9

   

Iterative Refinement

   

IV, S-expressions

10

   

Generative Recursion

   

V, Generative Design

11

   

More generative recursion

   

V, Graph Traversal

12

   

Nameless Functions

   

Nameless Functions, Lexical Scope

13

   

Recursion with Accumulators

   

VI, Design w/ Accumulators

14

   

More structural design

   

Structural Design (4), DB

The topics are linked to detailed weekly lecture plans below. The readings point into the on-line version of the text book.

You are primarily responsible for the readings. The lectures will help you understand those and will occasionally add highly pragmatic tips. But, the weekly problem sets and the exams will cover the reading material.

A semester tends to unfold in unpredictable ways, meaning the syllabus is subject to change. The most likely change concerns the last two weeks, which cover material that varies from semester to semester. Extra-credit problem sets, if any, will be based on this material.

Details

A problem set (PS) labeled

a

  is due on  

Monday, 9pm

b

  is due on  

Wednesday, 9pm

c

  is due on  

Friday, 9pm

We will not accept late submissions.

Week 1

   

How to program

09/07

   

CS and programming & `hello world'

09/08

   

Animations

   

ps 1c

    

Week 2

   

How to design

09/12

   

Systematic design: functions

   

ps 2a

Lab 1 The Basics

09/14

   

Intervals, enumerations, & conditionals,

   

ps 2b

09/15

   

Systematic design: workd programs "finite state"

   

ps 2c

    

Week 3

   

Design with fixed-size data

09/19

   

Structure types: Posns

   

ps 3a

Lab 2 Structural Integrity

09/21

   

Structure type definitions

   

ps 3b

09/22

   

Unions

   

ps 3c

    

Week 4

   

Design with arbitrarily large data (1)

09/26

   

Self-referential data definition

   

ps 4a

Lab 3 Hello World

09/28

   

Designing functions on lists

   

ps 4b

09/29

   

Non-empty lists

   

ps 4c

    

Week 5

   

Design with arbitrarily large data (2)

Midterm coming up: 10/06 @ 6:00-9:00pm

10/03

   

Lists in lists, structures in lists

   

ps 5a

Lab 4 Lists

10/05

   

Designing with wish lists

   

ps 5b

10/06

   

Designing with hierarchical nests of data definitions

   

ps 5c

    

Week 6

   

Designing abstractions

10/10

   

Columbus Day

   

ps 6a

Lab 5 Quote

10/12

   

Similar functions & functions as values

   

ps 6b

10/13

   

Designing abstractions: functions

   

ps 6c

    

Week 7

   

Using Abstraction

10/17

   

Designing abstractions: data definitions, signatures

   

ps 7a

Lab 6 Creating Abstractions

10/19

   

Existing abstractions & local definitions

   

ps 7b

10/20

   

Designing with abstractions

   

ps 7c

    

Week 8

   

Design with arbitrarily large data (3)

10/24

   

Using Abstractions, folds

   

ps 8a

Lab 7 Using Abstractions to Mimic

10/26

   

Using Abstractions, nested 'loops'

   

ps 8b

10/27

   

S-expressions

   

ps 8c

    

Week 9

   

Iterative Refinement

10/31

   

Iterative refinement: idea, small example

   

ps 9a

Lab 8 JSON

11/02

   

Iterative refinement: example 1

   

ps 9b

11/03

   

Iterative refinement: example 2

   

ps 9c

    

Week 10

   

Generative Recursion

11/07

   

Graph representation, traversals

   

ps 10a

Lab 9 Files and Directories

11/09

   

Designing generative recursive functions

   

ps 10b

11/10

   

Binary search, fractals

   

ps 10c

    

Week 11

   

More generative recursion

Midterm coming up: 11/17 @ Midterm: 6:00-9:00pm

11/14

   

Mathematical example: Newton, Numeric Integration

   

ps 11a

Lab 10 Generative Recursion

11/16

   

Mathematical example: Newton, Numeric Integration

   

ps 11b

11/17

   

Accumulators: completing graph traversals

   

ps 11c

    

Week 12

   

Nameless Functions

11/21

   

Lambda and scope

   

ps 12a

11/23

   

Thanksgiving Day

11/24

   

Thanksgiving Day

    

Week 13

   

Recursion with Accumulators

11/28

   

Designing with accumulators

   

ps 13a

Lab 11 Graphs

11/30

   

Accumulator-style functions

   

ps 13b

12/01

   

Accumulators in data: example

   

ps 13c

    

Week 14

   

More structural design

12/05

   

Traversing two pieces of data simultaneously

Lab 12 Lambda

12/07

   

Designing functions that traverse data simultaneously

   

ps 14b