TBD
Survey of programming language features and paradigms, with a focus on how to effectively use them. Introduces common features for structuring program execution, data, and resource management. Exploration of programming paradigms including imperative, functional, object-oriented, and declarative paradigms, as well as advanced techniques such as metaprogramming. Students will gain programming experience in large projects that incorporate these paradigms and techniques.
See the syllabus for all the details.
Day | # | Topic and Readings in Notes | Deadline |
---|---|---|---|
Foundations | |||
Mon 6 Jan | No Class | ||
Wed 8 Jan | L01 | Introduction 1 2 | |
Fri 10 Jan | Lab 01 | Introduction to Python | |
Mon 13 Jan | L02 | Basic Elements | |
Wed 15 Jan | L03 | Scheme | |
Fri 17 Jan | Lab 02 | Python, Scheme, and Value/Reference Semantics | |
Mon 20 Jan | No Class - MLK Day | ||
Wed 22 Jan | L04 | Grammars |
Project 1
Wed 1/22 8pm |
Fri 24 Jan | Lab 03 | Scheme and Grammars | |
Mon 27 Jan | L05 | Names and Environments | |
Wed 29 Jan | L06 | Control Flow |
HW1
Wed 1/29 8pm |
Fri 31 Jan | Lab 04 | Scoping, Parsing in Scheme, and Exceptions | |
Functional Programming | |||
Mon 3 Feb | L07 | Functions and Recursion 1 2 | |
Wed 5 Feb | L08 | Higher-Order Functions |
Project 2 Checkpoint
Wed 2/5 8pm |
Fri 7 Feb | Lab 05 | Functions | |
Mon 10 Feb | L09 | Lambdas | |
Wed 12 Feb | L10 | Continuations |
Project 2
Wed 2/12 8pm |
Fri 14 Feb | Lab 06 | Generators and Lambdas | |
Data Abstraction | |||
Mon 17 Feb | L11 | Memory Management | |
Wed 19 Feb | L12 | Functional Data Abstraction |
HW2
Wed 2/19 8pm |
Fri 21 Feb | Lab 07 | Functional Data Abstraction and Memory Management | |
Midterm | |||
Mon 24 Feb | Midterm Exam |
Midterm
Mon 2/24 7pm |
|
Special Topics | |||
Wed 26 Feb | Program Analysis | ||
Fri 28 Feb | No Class - Spring Break | ||
Mon 3 Mar | No Class - Spring Break | ||
Wed 5 Mar | No Class - Spring Break | ||
Fri 7 Mar | No Class - Spring Break | ||
Data Abstraction | |||
Mon 10 Mar | L13 | Object-Oriented Programming | |
Wed 12 Mar | L14 | Inheritance and Polymorphism |
Project 3 Checkpoint
Wed 3/12 8pm |
Fri 14 Mar | Lab 08 | Object-Oriented Programming and Vtables | |
Mon 17 Mar | L15 | Static and Dynamic Typing 1 2 |
Project 3
Mon 3/17 8pm |
Wed 19 Mar | L16 | Generics and Modules 1 2 | |
Fri 21 Mar | Lab 09 | Generics and Project 4 Overview | |
Declarative Programming | |||
Mon 24 Mar | L17 | Modules and Logic Programming | |
Wed 26 Mar | L18 | Logic Programming II |
Project 4 Checkpoint
Wed 3/26 8pm |
Fri 28 Mar | Lab 10 | Logic Programming and uC | |
Mon 31 Mar | L19 | Logic Programming III | |
Wed 2 Apr | L20 | Constraints, Dependencies, and Matching 1 2 |
Project 4
Wed 4/2 8pm |
Fri 4 Apr | Lab 11 | More Logic Programming | |
Metaprogramming | |||
Mon 7 Apr | L21 | Macros and Code Generation | |
Wed 9 Apr | L22 | Template Metaprogramming |
HW3
Wed 4/9 8pm |
Fri 11 Apr | Lab 12 | Macros, Code Generation, and Project 5 Overview | |
Mon 14 Apr | L23 | Template Metaprogramming II |
Project 5 Checkpoint
Mon 4/14 8pm |
Special Topics | |||
Wed 16 Apr | TBD | ||
Fri 18 Apr | Lab 13 | Template Metaprogramming and Exam Review | |
Mon 21 Apr | TBD |
Project 5
Mon 4/21 8pm |
|
Final Exam | |||
Wed 23 Apr | No Class - End of Semester | ||
Fri 25 Apr | No Class - End of Semester | ||
Mon 28 Apr | No Class - End of Semester | ||
Wed 30 Apr | Final Exam |
Final
Wed 4/30 4pm |