Slides and solutions
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 2 Jan | No Class | ||
Wed 4 Jan | L01 | Introduction 1 2 | |
Fri 6 Jan | Lab 01 | Introduction to Python | |
Mon 9 Jan | L02 | Basic Elements | |
Wed 11 Jan | L03 | Grammars | |
Fri 13 Jan | Lab 02 | Grammars and Internal/External Representations | |
Mon 16 Jan | No Class - MLK Day | ||
Wed 18 Jan | L04 | Scheme |
Project 1
Wed 1/18 8pm |
Fri 20 Jan | Lab 03 | Value/Reference Semantics and Scheme | |
Mon 23 Jan | L05 | Names and Environments | |
Wed 25 Jan | L06 | Control Flow |
HW1
Wed 1/25 8pm |
Fri 27 Jan | Lab 04 | Scoping, Parsing in Scheme, and Exceptions | |
Functional Programming | |||
Mon 30 Jan | L07 | Functions and Recursion 1 2 | |
Wed 1 Feb | L08 | Higher-Order Functions |
Project 2 Checkpoint
Wed 2/1 8pm |
Fri 3 Feb | Lab 05 | Functions | |
Mon 6 Feb | L09 | Lambdas | |
Wed 8 Feb | L10 | Continuations |
Project 2
Wed 2/8 8pm |
Fri 10 Feb | Lab 06 | Generators and Lambdas | |
Data Abstraction | |||
Mon 13 Feb | L11 | Memory Management | |
Wed 15 Feb | L12 | Functional Data Abstraction |
HW2
Wed 2/15 8pm |
Fri 17 Feb | Lab 07 | Functional Data Abstraction and Memory Management | |
Midterm | |||
Mon 20 Feb | Midterm Exam |
Midterm
Mon 2/20 1:30pm |
|
Special Topics | |||
Wed 22 Feb | Program Analysis | ||
Fri 24 Feb | No Class - Spring Break | ||
Mon 27 Feb | No Class - Spring Break | ||
Wed 1 Mar | No Class - Spring Break | ||
Fri 3 Mar | No Class - Spring Break | ||
Data Abstraction | |||
Mon 6 Mar | L13 | Object-Oriented Programming | |
Wed 8 Mar | L14 | Inheritance and Polymorphism |
Project 3 Checkpoint
Wed 3/8 8pm |
Fri 10 Mar | Lab 08 | Object-Oriented Programming and Vtables | |
Mon 13 Mar | L15 | Static and Dynamic Typing 1 2 |
Project 3
Mon 3/13 8pm |
Wed 15 Mar | L16 | Generics | |
Fri 17 Mar | Lab 09 | Generics and Project 4 Overview | |
Mon 20 Mar | L17 | Modules and Namespaces | |
Declarative Programming | |||
Wed 22 Mar | L18 | Logic Programming |
Project 4 Checkpoint
Wed 3/22 8pm |
Fri 24 Mar | Lab 10 | Logic Programming and uC | |
Mon 27 Mar | L19 | Logic Programming II | |
Wed 29 Mar | L20 | Logic Programming III |
Project 4
Wed 3/29 8pm |
Fri 31 Mar | Lab 11 | More Logic Programming | |
Mon 3 Apr | L21 | Constraints, Dependencies, and Matching 1 2 | |
Metaprogramming | |||
Wed 5 Apr | L22 | Macros and Code Generation |
HW3
Wed 4/5 8pm |
Fri 7 Apr | Lab 12 | Macros, Code Generation, and Project 5 Overview | |
Mon 10 Apr | L23 | Template Metaprogramming |
Project 5 Checkpoint
Mon 4/10 8pm |
Wed 12 Apr | L24 | Template Metaprogramming II | |
Fri 14 Apr | Lab 13 | Template Metaprogramming and Exam Review | |
Special Topics | |||
Mon 17 Apr | Parallel Computing |
Project 5
Mon 4/17 8pm |
|
Final Exam | |||
Wed 19 Apr | No Class - End of Semester | ||
Fri 21 Apr | No Class - End of Semester | ||
Tue 25 Apr | Final Exam |
Final
Tue 4/25 1:30pm |