On this page:
Details
Calendar
DrRacket
6.10

Syllabus

Week

   

Topic

   

Readings

1

   

Introduction to programming

   

Prologue

2

   

Introduction to design

   

I, Design of Programs

3

   

Designing with fixed-size data

   

I, Structural Design (1)

4

   

Designing with arbitrarily large data (1)

   

II, Structural Design (2)

5

   

Designing with arbitrarily large data (2)

   

II, Complete Programs

6

   

Designing abstractions

   

III, Design of Abstractions

7

   

Using abstractions

   

III, Using Abstractions, maps

8

   

Using lambda and designing with mutually recursive data

   

IV, S-expressions, Structural Design (3), Nameless Functions, Lexical Scope

9

   

Complex data types and recursion

   

IV, S-expressions

10

   

Generative Recursion

   

V, Generative Design

11

   

Graphs and accumulators

   

V, VI, Graph Traversal, Design w/ Accumulators

12

   

Designing an interpreter and a headache

   

13

   

Conclusion of the headache and distributed programming

   

14

   

Wrap up

   

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

Assignments are due at 8:59 pm on the day they are listed.

Week 1

   

Introduction to programming

09/06

   

Why CS; Arithmetic of numbers, strings; Administrivia

09/07

   

Arithmetic of images, functions, simple animations

    

Week 2

   

Introduction to design

09/11

   

Booleans, conditionals, and big-bang

   

Assignment 2a

09/12

   

Lab 1 (partner assignment)

   

Assignment 2q

09/13

   

Intervals & conditionals

   

09/14

   

Posns and structure type definitions

   

Assignment 2b

    

Week 3

   

Designing with fixed-size data

09/18

   

Design recipe

   

Assignment 3a

09/19

   

Lab 2

   

Assignment 3q

09/20

   

The Universe of Data, structures, functions on structures

   

09/21

   

Unions

   

Assignment 3b

    

Week 4

   

Designing with arbitrarily large data (1)

09/25

   

Self-referential data definition

   

Assignment 4a

09/26

   

Lab 3

   

09/27

   

Lists and designing functions on lists (part 1)

   

09/28

   

Lists and designing functions on lists (part 2)

   

Assignment 4b

    

Week 5

   

Designing with arbitrarily large data (2)

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

10/01

   

Optional review session for exam 1

   

10/02

   

Structures in lists, lists in structures

   

Assignment 5a

10/03

   

Lab 4

   

10/04

   

Design of a list based world program (part 1)

   

10/05

   

Design of a list based world program (part 2)

   

Assignment 5b

    

Week 6

   

Designing abstractions

10/10

   

Lab 5

   

Assignment 6a

10/11

   

Design of a list based world program (part 3)

   

10/12

   

Similarities in functions

   

10/09

   

Columbus Day (no classes)

   

Assignment 6b

    

Week 7

   

Using abstractions

10/16

   

Designing abstractions: functions

   

Assignment 7a

10/17

   

Lab 6 (partner swap)

   

10/18

   

Designing abstractions: data definitions, signatures

   

10/19

   

Existing abstractions and using them

   

Assignment 7b

    

Week 8

   

Using lambda and designing with mutually recursive data

10/23

   

Local

   

Assignment 8a

10/24

   

Lab 7

   

10/25

   

Snake with loops

   

10/26

   

Lambda and scope

   

Assignment 8b

    

Week 9

   

Complex data types and recursion

10/30

   

S-expressions and functions over them

   

Assignment 9a

10/31

   

Lab 8

   

11/01

   

Trees and forests

   

11/02

   

Processing two complex inputs

   

Assignment 9b

    

Week 10

   

Generative Recursion

11/06

   

Merge sort

   

Assignment 10a

11/07

   

Lab 9 (partner swap)

   

11/08

   

Binary search

   

11/09

   

Genereative recursion

   

Assignment 10b

    

Week 11

   

Graphs and accumulators

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

11/12

   

Optional review session for exam 2

   

11/13

   

Graphs (part 1)

   

Assignment 11a

11/14

   

Lab 10

   

11/15

   

Graphs (part 2 - traversal)

   

11/16

   

Accumulators

   

Assignment 11b

    

Week 12

   

Designing an interpreter and a headache

11/20

   

Speed from accumulators

   

Assignment 12a

11/22

   

No class (Thanksgiving break)

   

11/23

   

No class (Thanksgiving break)

   

    

Week 13

   

Conclusion of the headache and distributed programming

11/27

   

BSL Interpreter (part 1)

   

Assignment 13a

11/28

   

Lab 11

   

11/29

   

BSL Interpreter (part 2)

   

11/30

   

Everything is lambda (part 1)

   

Assignment 13b

    

Week 14

   

Wrap up

12/04

   

Everything is lambda (part 2)

   

Assignment 14a

12/06

   

Wrap up

   

    

Calendar

Here are HTML and iCal versions of the above. It includes all-day events for days when homeworks are due and events for the exams and exam reviews. Feel free to add them to your favorite calendar app.