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 | Unit | # | Lecture Topic | Deadline | Readings |
---|---|---|---|---|---|
Mon 18 Jan | Foundations | No Class - MLK Day | Introduction, Basic Python, Basic Elements | ||
Wed 20 Jan | 1 | Introduction | |||
Mon 25 Jan | 2 | Basic Elements | HW1 due Fri 29 Jan 8pm ET | Names and Environments | |
Wed 27 Jan | 3 | Names and Environments | |||
Mon 1 Feb | 4 | Control Flow | Project 1 due Mon 1 Feb 8pm ET | Control Flow, Value and Reference Semantics, Grammars | |
Wed 3 Feb | 5 | Grammars | |||
Mon 8 Feb | Functional Programming | 6 | Scheme and Functions | HW2 due Fri 12 Feb 8pm ET | Functions, Introduction to Scheme, Recursion |
Wed 10 Feb | 7 | Functions and Recursion | |||
Mon 15 Feb | 8 | Higher-Order Functions | Project 2 due Fri 19 Feb 8pm ET | Higher-Order Functions, Lambda Functions | |
Wed 17 Feb | 9 | Lambdas | |||
Mon 22 Feb | 10 | Continuations | HW3 due Fri 26 Feb 8pm ET | Continuations | |
Wed 24 Feb | Midterm | Break - No Class | |||
Mon 1 Mar | Midterm Exam | Midterm exam Mon 1 Mar 1:30pm ET | Functional Data Abstraction | ||
Wed 3 Mar | Data Abstraction | 11 | Functional Data Abstraction | ||
Mon 8 Mar | 12 | Memory Management | Memory Management, Object-Oriented Programming | ||
Wed 10 Mar | 13 | Object-Oriented Programming | |||
Mon 15 Mar | 14 | Inheritance and Polymorphism | Project 3 due Mon 15 Mar 8pm ET | Inheritance and Polymorphism, Static Analysis, Dynamic Typing | |
Wed 17 Mar | 15 | Static and Dynamic Typing | |||
Mon 22 Mar | 16 | Generics and Modules | Generics, Modules and Namespaces | ||
Wed 24 Mar | Break - No Class | ||||
Mon 29 Mar | Declarative Programming | 17 | Logic Programming | Project 4 due Fri 2 Apr 8pm ET | Logic Programming |
Wed 31 Mar | 18 | Logic Programming II | |||
Mon 5 Apr | 19 | Logic, Constraints, and Dependencies | Constraints and Dependencies, Macros and Code Generation | ||
Wed 7 Apr | Metaprogramming | 20 | Macros and Code Generation | ||
Mon 12 Apr | 21 | Template Metaprogramming | HW4 due Mon 12 Apr 8pm ET | Template Metaprogramming, Example: Multidimensional Arrays | |
Wed 14 Apr | 22 | Template Metaprogramming II | |||
Mon 19 Apr | Special Topics | 23 | Advanced C++ | Project 5 due Wed 21 Apr 8pm ET | |
Wed 21 Apr | 24 | Parallel Computing | |||
Tue 27 Apr | Final | Final Exam | Final exam Tue 27 Apr 4pm ET |
akamil@umich.edu
1:30pm-3pm MW
akminch@umich.edu
11:30am-12:30pm F
sguest@umich.edu
12:30pm-1:30pm F