On this page:
Details
Calendar
DrRacket
6.6

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

   

Spring Break

   

10

   

Complex data types and recursion

   

IV, S-expressions

11

   

Generative Recursion

   

V, Generative Design

12

   

Graphs and accumulators

   

V, VI, Graph Traversal, Design w/ Accumulators

13

   

Designing an interpreter and a headache

   

14

   

Conclusion of the headache and distributed programming

   

15

   

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 11:59 pm on the day they are listed (either Monday or Thursday).

We will not accept late submissions.

Week 1

   

Introduction to programming

01/09

   

Why CS; Arithmetic of numbers, strings; Administrivia

   

Assignment 1

01/11

   

Arithmetic of images, functions, simple animations

01/12

   

Arithmetic of booleans, conditionals in functions

   

Assignment 2

01/13

   

Lab 1 The Basics

   

partner assignment

    

Week 2

   

Introduction to design

01/16

   

No class

01/18

   

Intervals & conditionals

01/19

   

Posns and structure type definitions

   

Assignment 3

01/20

   

Lab 2 Structural Integrity

    

Week 3

   

Designing with fixed-size data

01/23

   

Design recipe

   

Assignment 4

01/25

   

The Universe of Data, structures, functions on structures

01/26

   

Unions

   

Assignment 5

01/27

   

Lab 3 Hello World

    

Week 4

   

Designing with arbitrarily large data (1)

01/30

   

Self-referential data definition

   

Assignment 6

02/01

   

Lists and designing functions on lists (part 1)

02/02

   

Lists and designing functions on lists (part 2)

   

Assignment 7

02/03

   

Lab 4 Lists

    

Week 5

   

Designing with arbitrarily large data (2)

Midterm coming up: 02/09 @ 6:00-9:00pm

02/05

   

Optional exam review session - WVF 020 - 6-8pm

02/06

   

Structures in lists, lists in structures

   

Assignment 8

02/08

   

Design of a list based world program (part 1)

02/09

   

Design of a list based world program (part 2)

   

Assignment 9

02/10

   

Lab 5 Recursion, With A Twist

    

Week 6

   

Designing abstractions

02/13

   

Similarities in functions

02/15

   

Designing abstractions: functions

02/16

   

Designing abstractions: data definitions, signatures (part 1)

   

Assignment 10

02/17

   

Lab 6 Creating Abstractions

   

partner swap

    

Week 7

   

Using abstractions

02/20

   

No class

02/22

   

Designing abstractions: data definitions, signatures (part 2)

02/23

   

Existing abstractions and using them

   

Assignment 11

02/24

   

Lab 7 Using Abstractions to Mimic

    

Week 8

   

Using lambda and designing with mutually recursive data

02/27

   

More on using loops

   

Assignment 12

03/01

   

Lambda and scope

03/02

   

S-expressions and functions over them

   

Assignment 13

    

Week 9

   

Spring Break

    

Week 10

   

Complex data types and recursion

03/13

   

Trees and forests

   

Assignment 14

03/15

   

Processing two complex inputs

03/16

   

Merge sort

   

Assignment 15

03/17

   

Lab 8 JSON

    

Week 11

   

Generative Recursion

03/20

   

Generative recursion (part 1)

   

Assignment 16

03/22

   

Generative recursion (part 2)

03/23

   

Graphs (part 1)

   

Assignment 17

03/24

   

Lab 9 Generative Recursion

   

partner swap

    

Week 12

   

Graphs and accumulators

Midterm coming up: 03/29 @ 6:00-9:00pm

03/26

   

Optional exam review session - WVF 020 - 6-8pm

03/27

   

Graphs (part 2 - traversal)

   

Assignment 18

03/29

   

Accumulators

03/30

   

Speed from accumulators

   

Assignment 19

03/31

   

Lab 10 Graphs

    

Week 13

   

Designing an interpreter and a headache

04/03

   

BSL Interpreter (part 1)

   

Assignment 20

04/05

   

BSL Interpreter (part 2)

04/06

   

Everything is lambda (part 1)

   

Assignment 21

04/07

   

Lab 11 Lambda

    

Week 14

   

Conclusion of the headache and distributed programming

04/10

   

Everything is lambda (part 2)

   

Assignment 22

04/12

   

Distributed universe programming (part 1)

04/13

   

Distributed universe programming (part 2)

    

Week 15

   

Wrap up

04/17

   

No class

   

Assignment 23

04/19

   

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.