On this page:
Details
DrRacket
6.11.0.4

Syllabus

Week

   

Topic

1

   

Programming & Computing; Information & Data

   

Readings: 1, 2.1, 4.1, 5.1, 2.2, 4.2, 5.2

2

   

How to Design Functions & Programs

   

Readings: 2, 3.1, 3.3, 3.4, 3.5, 4.3, 4.4, 4.5, 5.4, 5.7, 4.6, 5.8, 6.1, 3.6

3

   

From Fixed-size Data to Large Data

   

Readings: 4.7, 5.9, 6.2, 8, 9.2, 9.3, 9.4

4

   

Designing Functions For Arbitrarily Large Data

   

Readings: 9, 10, 11

5

   

Designing Programs For Arbitrarily Large Data

   

Readings: 12, 14, 16.2, 16.3, 16.4

6

   

Design With Abstraction

   

Readings: 15, 16.5, 16.6, 16.7

7

   

General Design With Arbitrarily Large Data

   

Readings: 19, 20

8

   

Iterative Refinement

   

Readings: 17, 21, 23

9

   

Designing With Generative Recursion

   

Readings: 25, 26, 27

10

   

Designing With Accumulators

   

Readings: 31, 32, 33.2

11

   

Design Review

   

Readings: 3.1, 3.4, 3.6, 4.6, 5.8, 6.1, 9, 11, 15, 16.6, 19.4, 20, 26, 32, 33.1

12

   

What is a Programming Language

   

Readings: none

13

   

Creating Programming Languages I

   

Readings: Realm of Racket, Chapter 15

14

   

Creating Programming Languages II

   

Readings: none

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.

Day

   

Week 1

   

Programming & Computing; Information & Data

01

   

09/06

   

`hello world'

02

   

09/07

   

Algebra and Arithmetic, Information vs Data

   

1c

    

Day

   

Week 2

   

How to Design Functions & Programs

03

   

09/11

   

Designing Functions: the Overview

   

2a

1 The Basics & Function Design

04

   

09/13

   

Designing Functions: Some Practice

   

2b

05

   

09/14

   

Desiging Programs: the Basics

   

2c

    

Day

   

Week 3

   

From Fixed-size Data to Large Data

Midterm coming up: 09/20 @ 9:15-10:20am

06

   

09/18

   

Designing Programs: Some Practice

   

3a

2 Program Design

07

   

09/20

   

Exam 0: are you better Off In Regular Fundamentals I?

   

3b

08

   

09/21

   

Representing Arbitrarily Large Data

   

3c

    

Day

   

Week 4

   

Designing Functions For Arbitrarily Large Data

09

   

09/25

   

Designing Functions: Arbitrarily Large Data

   

4a

3 Lists

10

   

09/27

   

Arbitrarily Large Data: Practice Design

   

4b

11

   

09/28

   

Designing Functions via Composition

   

4c

    

Day

   

Week 5

   

Designing Programs For Arbitrarily Large Data

12

   

10/02

   

Designing Programs: Arbitrarily Large Data

   

5a

4 Designing Programs on Lists

13

   

10/04

   

Local Definitions

   

5b

14

   

10/05

   

Similar Functions & Functions As Values

   

5c

    

Day

   

Week 6

   

Design With Abstraction

15

   

10/09

   

Columbus Day

5 Quote; Design in the Context of a Mini-Project

16

   

10/11

   

Designing (with) Abstractions

   

6b

17

   

10/12

   

Designing (with) Abstractions: Practice

   

6c

    

Day

   

Week 7

   

General Design With Arbitrarily Large Data

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

18

   

10/16

   

Designing with Abstractions: More Practice

   

7a

6 Designing with Abstractions

19

   

10/18

   

Designing Programs: S--expressions, Trees, Forests

   

7b

20

   

10/19

   

Iterative Refinement: Programs as Data

   

7c

    

Day

   

Week 8

   

Iterative Refinement

21

   

10/23

   

Iterative Refinement: Arithmetic

   

8a

7 Designing Functions for Mutually Recursive Data Definitions

22

   

10/25

   

Iterative Refinement: Representing Functions

   

8b

23

   

10/26

   

Iterative Refinement: BSL

   

8c

    

Day

   

Week 9

   

Designing With Generative Recursion

24

   

10/30

   

Iterative Refinement: ISL with λ

   

9a

8 Program Design via Iterative Refinement

25

   

11/01

   

Designing For Multiple Arguments

   

9b

26

   

11/02

   

Designing Generative Recursive Functions

   

9c

    

Day

   

Week 10

   

Designing With Accumulators

27

   

11/06

   

Designing Generative Recursion, Practice

   

10a

9 Design with Generative Recursion

28

   

11/08

   

The Need For Accumulator Design

   

10b

29

   

11/09

   

Accumulators In Data: Example

   

10c

    

Day

   

Week 11

   

Design Review

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

30

   

11/13

   

More Practice with Accumulators

   

11a

10 Designing with Accumulators

31

   

11/15

   

Yet More Practice with Accumulators

   

11b

32

   

11/16

   

Design Review

   

11c

    

Day

   

Week 12

   

What is a Programming Language

33

   

11/20

   

The Basic Anatomy of Programming Languages

   

12a

34

   

11/22

   

Thanksgiving Day

35

   

11/23

   

Thanksgiving Day

    

Day

   

Week 13

   

Creating Programming Languages I

36

   

11/27

   

The Anatomy of an Extensible Programming Language

   

13a

11 The Nature of Numbers

37

   

11/29

   

Racket's Syntax Transformers

   

13b

38

   

11/30

   

Racket Interposition

   

13c

    

Day

   

Week 14

   

Creating Programming Languages II

39

   

12/04

   

Morse Code

12 Modules, Syntax, Languages

40

   

12/06

   

Mark Down

   

14b