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 3 Jan | No Class | ||
Wed 5 Jan | L01 | Introduction 1 2 | |
Mon 10 Jan | L02 | Basic Elements | |
Wed 12 Jan | L03 | Grammars | |
Mon 17 Jan | No Class - MLK Day | ||
Wed 19 Jan | L04 | Scheme |
Project 1
Wed 1/19 8pm |
Mon 24 Jan | L05 | Names and Environments | |
Wed 26 Jan | L06 | Control Flow |
HW1
Wed 1/26 8pm |
Functional Programming | |||
Mon 31 Jan | L07 | Functions and Recursion 1 2 | |
Wed 2 Feb | L08 | Higher-Order Functions |
Project 2 Checkpoint
Wed 2/2 8pm |
Mon 7 Feb | L09 | Lambdas | |
Wed 9 Feb | L10 | Continuations |
Project 2
Wed 2/9 8pm |
Data Abstraction | |||
Mon 14 Feb | L11 | Memory Management | |
Wed 16 Feb | L12 | Functional Data Abstraction |
HW2
Wed 2/16 8pm |
Midterm | |||
Mon 21 Feb | Midterm Exam |
Midterm
Mon 2/21 12pm |
|
Special Topics | |||
Wed 23 Feb | Program Analysis | ||
Mon 28 Feb | No Class - Spring Break | ||
Wed 2 Mar | No Class - Spring Break | ||
Data Abstraction | |||
Mon 7 Mar | L13 | Object-Oriented Programming | |
Wed 9 Mar | L14 | Inheritance and Polymorphism |
Project 3 Checkpoint
Wed 3/9 8pm |
Mon 14 Mar | L15 | Static and Dynamic Typing 1 2 |
Project 3
Mon 3/14 8pm |
Wed 16 Mar | L16 | Generics | |
Mon 21 Mar | L17 | Modules and Namespaces | |
Declarative Programming | |||
Wed 23 Mar | L18 | Logic Programming |
Project 4 Checkpoint
Wed 3/23 8pm |
Mon 28 Mar | L19 | Logic Programming II | |
Wed 30 Mar | L20 | Logic Programming III |
Project 4
Wed 3/30 8pm |
Mon 4 Apr | L21 | Constraints, Dependencies, and Code Generation 1 2 | |
Metaprogramming | |||
Wed 6 Apr | L22 | Macros |
HW3
Wed 4/6 8pm |
Mon 11 Apr | L23 | Template Metaprogramming |
Project 5 Checkpoint
Mon 4/11 8pm |
Wed 13 Apr | L24 | Template Metaprogramming II | |
Special Topics | |||
Mon 18 Apr | Advanced C++ |
Project 5
Mon 4/18 8pm |
|
Final Exam | |||
Wed 20 Apr | No Class - End of Semester | ||
Tue 26 Apr | Final Exam |
Final
Tue 4/26 10:30am |