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