On this page:
Details
DrRacket
7.0

Syllabus

Week

   

Topic

1

   

Programming & Computing; All Principles

   

Readings: 2

2

   

How to Design Functions & Programs

   

Readings: 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

   

Type Checking & Compiling

   

Readings: none

14

   

Type Checking & Compiling 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  

Thursday, 9pm

Day

   

Week 1

   

Programming & Computing; All Principles

01

   

09/05

   

`hello world'

02

   

09/06

   

Algebra and Arithmetic, Information vs Data

   

1b

1 The Basics

    

Day

   

Week 2

   

How to Design Functions & Programs

03

   

09/10

   

Designing Functions: the Overview

   

2a

04

   

09/12

   

Designing Functions: Some Practice

05

   

09/13

   

Desiging Programs: the Basics

   

2b

Lab 2

    

Day

   

Week 3

   

From Fixed-size Data to Large Data

Midterm coming up: 09/19 @ 1:35-2:40pm

06

   

09/17

   

Designing Programs: Some Practice

   

3a

07

   

09/19

   

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

08

   

09/20

   

Representing Arbitrarily Large Data

   

3b

Lab 3

    

Day

   

Week 4

   

Designing Functions For Arbitrarily Large Data

09

   

09/24

   

Designing Functions: Arbitrarily Large Data

   

4a

10

   

09/26

   

Arbitrarily Large Data: Practice Design

11

   

09/27

   

Designing Functions via Composition

   

4b

Lab 4

    

Day

   

Week 5

   

Designing Programs For Arbitrarily Large Data

12

   

10/01

   

Designing Programs: Arbitrarily Large Data

   

5a

13

   

10/03

   

Local Definitions

14

   

10/04

   

Similar Functions & Functions As Values

   

5b

Lab 5

    

Day

   

Week 6

   

Design With Abstraction

15

   

10/08

   

Columbus Day

16

   

10/10

   

Designing (with) Abstractions

17

   

10/11

   

Designing (with) Abstractions: Practice

   

6b

Lab 6

    

Day

   

Week 7

   

General Design With Arbitrarily Large Data

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

18

   

10/15

   

Designing with Abstractions: More Practice

   

7a

19

   

10/17

   

Designing Programs: S--expressions

20

   

10/18

   

Designing Programs: Trees

   

7b

Lab 7

    

Day

   

Week 8

   

Iterative Refinement

21

   

10/22

   

Designing Programs: Binary Search Trees

   

8a

22

   

10/24

   

Designing for Multiple Complex Arguments

23

   

10/25

   

Big-bang, Universe, and Client-Server Programs

   

8b

Lab 8

    

Day

   

Week 9

   

Designing With Generative Recursion

24

   

10/29

   

Designing Client-Server Programs

   

9a

25

   

10/31

   

Enforcing Signatures

26

   

11/01

   

Graphs with Generative Recursion and Accumulators

   

9b

Lab 9

    

Day

   

Week 10

   

Designing With Accumulators

27

   

11/05

   

Designing Generative Recursive Functions

   

10a

28

   

11/07

   

Designing Generative Recursion, Practice

29

   

11/08

   

The Need For Accumulator Design

   

10b

Lab 10

    

Day

   

Week 11

   

Design Review

30

   

11/12

   

Veterans Day

31

   

11/14

   

More Practice with Accumulators

32

   

11/15

   

Design Review

   

11b

Lab 11

    

Day

   

Week 12

   

What is a Programming Language

33

   

11/19

   

Typed Programming Languages

   

12a

34

   

11/21

   

Thanksgiving

35

   

11/22

   

Thanksgiving Day

    

Day

   

Week 13

   

Type Checking & Compiling

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

36

   

11/26

   

Type Checking TypeLang

   

13a

37

   

11/28

   

Design of StackLang

38

   

11/29

   

Interpreter for StackLang

   

13b

Lab 12

    

Day

   

Week 14

   

Type Checking & Compiling II

39

   

12/03

   

Compiling TypeLang to StackLang

40

   

12/05

   

Compiling TypeLang to StackLang II

   

14b