Syllabus
Welcome to the Course Louv1.1x!
Louv1.1x and Louv1.2x together form a two-course sequence that gives an introduction to all major programming concepts, techniques, and paradigms in a unified framework. Louv1.1x covers functional programming and formal semantics. We will cover the most important concepts and techniques including lists and trees, invariants and symbolic programming, higher-order programming, computational complexity, and concluding with the semantics of programming languages. You will learn practical techniques using the accompanying open-source platform, the Mozart Programming System. At the end of this course, you will have a deep understanding of the fundamental concepts of programming languages and you will be ready to continue the journey in Louv1.2x, on data abstraction and concurrency.
This course is targeted toward people with a basic knowledge of programming. It will be most useful to beginning programming students, but the unconventional approach should be insightful even to seasoned professionals.
To learn more about the practical organization of the course, watch this video:Prerequisites
Basic knowledge of programming in at least one programming language. For the semantics, basic knowledge of mathematical concepts such as sets, lists, and functions.
Workload
Students are expected to spend roughly 2 to 4 hours a week watching the videos and responding to the problems and exercises, depending on the number of lessons that given each week (about 2 hours for each lesson, one or two lessons per week). The programming exercises should not take too much time; we recommend that you think a little before using trial and error to find the right answer (an ounce of thought is worth a pound of brute force)!
Textbook
All required readings are available within the courseware, courtesy of The MIT Press. A print version of the course textbook, Concepts, Techniques, and Models of Computer Programming, is also available for purchase. The MIT Press is offering enrolled students a special 30% discount on books ordered directly through the publisher’s website. To take advantage of this offer, please use promotion code CTMCP30 at The MIT Press site.
The required readings in the textbook cover in great detail all the material of Louv1.1x. The slides give the most important parts of this material.
Grading
The course will be graded in two parts: the homeworks and the final. These are weighted 50% - 50% (homeworks are one half of the grade, the final is also one half of the grade). To pass the course successfully you need a total grade of 50% (B) or 85% (A).
Course Schedule
Week | Release Date | Lesson and recommended readings |
Due date |
1 | September 21 | Introduction (chapter 1, section 2.2) | October 12 |
2 | September 28 |
Recursion and invariant programming (section 1.3, sections 3.2-3.3) |
October 19 |
3 | October 5 |
Lists and pattern matching (sections 1.4-1.5, sections 3.4.1-3.4.3) |
October 26 |
4 | October 12 |
Higher-order programming and records (section 1.9, section 2.3, section 3.6) |
November 2 |
5 | October 19 |
Trees and computational complexity (section 3.4.6, section 3.5) |
November 9 |
6 | October 26 |
Semantics (section 1.6, section 2.1, section 2.4) |
November 16 |
7 | November 2 | Final exam | November 16 (deadline and end of course) |