...
General Information
Office Hours |
| ||||||||||||||||||||
Textbooks | There is no required textbook. We will follow the pedagogic approach of "How to Design Programs, First Edition" and extend it to other languages. The Second Edition of this book is default at the website www.htdp.org but this page contains a link to the first edition (at URL: https://htdp.org/2003-09-26/) at the bottom of the page. We will draw material from a variety of sources, including:
| ||||||||||||||||||||
Recommended Videos | |||||||||||||||||||||
Development Environment |
|
...
Week | Day | Date | Lecture Topic and Resources | Work Assigned | Work Due | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Tu | Aug 23 | Motivation and the Elements (Constants) of Racket | Skim HTDP First Edition, Part 1 (Ch 1-8), Part 2 (Ch 9-10) | Sep 01 | |||||||
Th | Aug 25 | Conditionals, Function Definitions and Computation by Reduction | Homework 1 | Sep 03 | |||||||
Tu | Sep 01 | Conditionals, Function Definitions and Computation by Reduction | Review Ch 8 HTDP Part 2 (Ch 9-10) | Sep 08 | |||||||
3 | Th | Sep 03 | The Program Design Recipe for Racket focusing on using recursion to process lists and natural numbers | Preface, 9.4 HTDP Part 2 (Ch 11-13) | Sep 10 | ||||||
Tu | Sep 0806 | Data Definitions, Data-driven Structural Recursion, | HTDP Part 3 | Sep 1615 | |||||||
5 | Th | Sep 1008 | Mutually Recursive Definitions and Help Functions | HTDP Ch 15-17 | Sep 1715 | ||||||
Tu | Sep 1513 | Local Definitions and Lexical Scope | HTDP HTDP Parts 5-6 | Sep 2322 | |||||||
Th | Sep 1715 | Lambda the Ultimate and Reduction Semantics | LawsOfEval.pdfLawsOfEvaluation | Sep 2622 | |||||||
8 | Tu | Sep 1920
| Functional Abstraction and Polymorphism | Oct | 6Sep 29 | ||||||
9 | Th | Sep 2422 | Functions as Values | Homework 4 | Oct 5Sep 29 | ||||||
10 | Tu | Sep 2927 | Generative (Non-structural) Recursion
| Oct 6 | |||||||
11 | Th | Oct 01Sep 29 | Lazy Evaluation and Non-strict Constructors | Homework 5* | Oct 11 | ||||||
12 | Tu | Oct 0604 | Techniques for Implementing Lazy Evaluation | Homework 5* | Oct 14 | ||||||
13 | Th | Oct 0806 | A Glimpse at Imperative Racket and Memoization | Sample Exam | |||||||
| Tu | Oct 1311 | Racket ReviewFall Recess | ||||||||
13 | Th | Oct 1513 | On to Java! | OO Design Notes | Fri | Oct 16 | Midterm | ||||
Tu | Oct 2218 | Adapting the HTDP Design Recipe to Java Midterm (Through Lecture 13 and HW 5) 7-10pm | Homework 6 | Oct 2725 | |||||||
15 | Th | Oct 2420 | Higher-order Functional Programming in Java | Oct 31 | |||||||
16 | Tu | Oct 2925 | Four Key Idioms for Encoding FP in Java | Homework 7 | Nov 61 | ||||||
17 | Th | Oct 3127 | The Singleton and Visitor Patterns | ||||||||
18 | Tu | Nov 0301 | Java Generics and Their Role in FP in Java | Homework 8* | Nov 1610 | ||||||
19 | Th | Nov 0503 | Functional Rust IThe Strategy Pattern: Functions as Arguments in Java | ||||||||
20 | Tu | Nov 1008 | Functional Rust IICore Haskell (call-by-name, lazy constructors) (Agnishom) | Nov 15 | |||||||
21 | Th | Nov 12Haskell Pattern Matching (Agnishom)10 | OO Rust Using Only Traits | Homework 9 | Nov 19 | ||||||
22 | Tu | Nov 1715 | Rust ...Haskell Type Classes (Agnishom) | Dec 16 | |||||||
23 | Th | Nov 17 | Rust ...
| Homework 10 | Nov 29 | ||||||
24 | Tu | Nov 22 | Rust ... | Homework 11* | Dec 2 | ||||||
25 | Tu | Nov 29 | Rust Concurrency | ||||||||
26 | Th | Dec 1 | Future of FP | Nov 19 | Haskell Monads (Agnishom) | Final Project** |
*Assignments marked with * are double assignments that count twice as much as regular assignments. **indicates the project in lieu of a final examination.
...