Principles of Programming Languages
Programming Languages are the duct tape, bricks, mortar and steel of the information age. Over the last thirty years, a variety of languages with diverse features have been developed, expressing different perspectives of the idea of computation. CS 314 is an introduction to these different perspectives, the fundamental concepts of languages, and how modern language techniques and idioms can be used to engineer software systems.
The aim of the course is to teach you about the different paradigms of programming, their underlying concepts, and the relationships between them. We will look at functional, imperative and logic programming. We will study functional paradigm through OCaml, imperative paradigm through python and logic paradigm through Prolog (specifically SWI-Prolog).
If time permits, we will also look at mordern programming language implementation techniques, such as decision procedures, program synthesis, and program verification.
Essential Details
- Instructor: He Zhu.
- Where: Zoom
- When: Monday, Thursday 12:00p - 1:20. See detailed schedule.
- Office Hours: Tuesday 10:30a - 11:30, Thursday 1:20p - 2:30.
- LMS: Sakai Piazza
- TAs:
Section | Name | Recitation Time | Office Hours | Zoom |
---|---|---|---|---|
5 | Qi Dong | Tue 5:15p - 6:10 | Wed 3p-4 | Zoom |
6 | Chun Leung Lau | Tue 9:30a - 10:25 | Fri 2p-3 | Zoom |
7 | Guo Chen | Mon 10:35a - 11:30 | Mon 9a-10 | Zoom |
Grading (subject to change)
Item | Due | Weight (%) |
---|---|---|
Assignment 1 (OCaml) | 02/18 | 5.0 |
Assignment 2 (OCaml) | 03/03 | 7.0 |
Assignment 3 (OCaml) | 03/28 | 8.0 |
Assignment 4 (Prolog) | 04/19 | 15.0 |
Assignment 5 (Python) | 04/28 | 6.0 |
Written Assignment 1 | 04/07 | 8.0 |
Written Assignment 2 | 8.0 | |
Final Project | 05/12 | 35.0 |
Best coding assignment | 8.0 |