On this page:
Details
DrRacket
6.6

Syllabus

This web page is deprecated.

Please see the main page for Fundamentals I.

Week

   

Topic

   

Readings

1

   

Introduction to programming

   

Prologue, Chapter 1 (up to and including 1.4), Chapter 2 (up to and including 2.4)

2

   

Introduction to design

   

Chapter 1 (1.5-1.7), Chapter 3, Chapter 4 (section 1)

3

   

Designing with fixed-size data

   

Chapter 5 (up to and including 5.8)

4

   

Towards arbitrarily large data

   

Chapter 4 (up to and including 4.6), Summary of part 1, Review of BSL, Chapter 9 (sections 3 and 4)

5

   

Designing with arbitrarily large data

   

Chapter 8: Lists, Chapter 9 (sections 1 and 6), Chapter 10 (sections 1-3)

6

   

Abstracting functions

   

Chapter 14: Similarities Everywhere, Chapter 15: Design of Abstractions

7

   

Using abstractions

   

Chapter 16: Using Abstractions, Lexical Scope

8

   

Designing with abstractions

   

Chapter 16: Using Abstractions

9

   

Designing with mutually recursive data

   

Chapter 19: S-expressions and trees, Chapter 22: XML

10

   

Graphs

   

Chapter 29 (section 1)

11

   

Generative recursion

   

Chapter 25: Non-standard recursion, Chapter 26: Designing algorithms, Chapter 27: Examples of generative recursion, Chapter 28: Mathematical examples of generative recursion

12

   

Generative recursion (continued)

   

13

   

Accumulators and lambda

   

Chapter 17: Nameless Functions, Chapter 31: The Loss of Knowledge, Chapter 32: Designing Accumulator-Style Functions, Chapter 33: More Uses of Accumulation

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/05

   

1. Why CS; Arithmetic of numbers, strings, images; Administrivia

   

09/06

   

2. Arithmetic of strings, functions, simple animations

   

    

Week 2

   

Introduction to design

09/10

   

3. Booleans, conditionals

   

09/11

   

Lab 1

   

09/12

   

4. The design recipe

   

09/13

   

5. World programs

   

Assignment 1

    

Week 3

   

Designing with fixed-size data

09/17

   

6. Structure type definitions

   

Assignment 2

09/18

   

Lab 2

   

09/19

   

7. Custom structures

   

09/20

   

8. More on custom structures

   

Assignment 3

    

Week 4

   

Towards arbitrarily large data

09/24

   

9. Unions

   

Assignment 4

09/25

   

Lab 3 (partner assignment)

   

09/26

   

10. Transition from fixed-size to arbitrary-size data

   

09/27

   

11. Self-referential data definitions

   

Assignment 5

    

Week 5

   

Designing with arbitrarily large data

10/01

   

12. Lists and designing functions on lists

   

Assignment 6

10/02

   

Lab 4

   

10/03

   

13. Lists of structures

   

10/04

   

14. More on lists of structures

   

Assignment 7

10/07

   

Optional review session for exam 1 (4-6pm)

   

    

Week 6

   

Abstracting functions

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

10/08

   

Columbus day: no classes

   

10/09

   

Lab 5

   

10/10

   

15. Similarities in functions

   

10/11

   

16. Abstractions

   

    

Week 7

   

Using abstractions

10/15

   

17. DrRacket-provided abstractions

   

Assignment 8

10/16

   

Lab 6 (new partners assigned)

   

10/17

   

18. More DrRacket-provided abstractions

   

10/18

   

19. Scope and local

   

Assignment 9

    

Week 8

   

Designing with abstractions

10/22

   

20. Design recipe for abstractions

   

Assignment 10

10/23

   

Lab 7

   

10/24

   

21. Practice with abstractions

   

10/25

   

22. Programming with I/O

   

Assignment 11

    

Week 9

   

Designing with mutually recursive data

10/29

   

23. Trees

   

Assignment 12

10/30

   

Lab 8

   

10/31

   

24. Multiple complex inputs

   

11/01

   

25. Mutually recursive data

   

Assignment 13

    

Week 10

   

Graphs

11/05

   

26. Graphs

   

Assignment 14

11/06

   

Lab 9

   

11/07

   

27. Ad-hoc functions on graphs

   

11/08

   

28. More on graphs

   

Assignment 15

    

Week 11

   

Generative recursion

11/12

   

Veterans day: no classes

   

11/13

   

Lab 10

   

11/14

   

29. Design recipe for generative recursion

   

11/15

   

30. Practice with generative recursion

   

Assignment 16

    

Week 12

   

Generative recursion (continued)

11/19

   

31. More on generative recursion

   

Assignment 17

11/21

   

Thanksgiving break: no classes

   

11/22

   

Thanksgiving break: no classes

   

11/25

   

Optional review session for exam 2 (4-6pm)

   

    

Week 13

   

Accumulators and lambda

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

11/26

   

32. Accumulators

   

11/27

   

Lab 11

   

Assignment 18

11/28

   

33. Practice with accumulators

   

11/29

   

34. Lambda

   

    

Week 14

   

Wrap up

12/03

   

35. Practice with lambda

   

Assignment 19

12/04

   

Lab 12

   

12/05

   

36. Wrap up