Principles of Programming Languages - CSCI 3155 - Fall 2024
Class meetings are Tuesdays and Thursdays 2:00pm-3:15pm in ECCR 265. Lab sections are on Fridays. Following University guidelines, CSCI 3155 Fall 2024 is an in-person course. All course meetings, including lectures, recitations, and office hours are in-person by default. Please communicate with the course staff in person or through Piazza for all course related matters. Please do not email any members of the course staff. You can post privately on Piazza for confidential discussions to an individual or “Instructors” to reach the course staff.
Topic Schedule
The Reading column lists the assigned reading for the meeting. You should do the reading before attending class and view it as an introduction to spark discussion in class. The Assignment column lists the due date for each assignment.
Week | Date | Topic | Reading | Assignment | ||
---|---|---|---|---|---|---|
1 | T | 8/27 | Welcome: Bootstrapping - Course Approach - Your Goals - Getting Your Money’s Worth - Syllabus Policies |
Necessary. Syllabus. Necessary. Notes Course Approach. Recommended. Notes Getting Your Money’s Worth. Recommended. Scala Chapter 1 A Scalable Language. Supplemental (optional). Bootstrapping: Torben Mogensen. Basics of Compiler Design, Chapter 13. |
Introduce yourself on Piazza | |
R | 8/29 |
Experience from 3155 Alumni: Luis Olivas and Andrew Arnopoulous Expressions |
Necessary. Notes Expressions. Recommended. Scala Chapter 2 First Steps in Scala (Step 1-4), Chapter 5 Basic Types and Operations. |
|||
F | 8/30 | Development Environment | Syllabus Quiz due | |||
2 | T | 9/3 | Binding and Scope |
Necessary. Notes Binding and Scope. Necessary. Notes Exercise: Binding and Scope. Necessary. Notes Exercise: Expressions and Data Types. Recommended. Section 6.10 Identifiers in Scala, Section 7.7 Variable Scope, Section 17.5 Tuples. |
||
R | 9/5 | Data Types |
Necessary. Notes Data Types. Recommended. Scala Chapter 15 Case Classes and Pattern Matching. |
|||
F | 9/6 | HW 1 | Quiz 1 and HW 1 due | |||
3 | T | 9/10 | Recursion |
Necessary. Notes Recursion. |
||
R | 9/12 | Inductive Data Types |
Necessary. Notes Inductive Data Types. |
|||
F | 9/13 | Lab 1 | Lab 1 due | |||
4 | T | 9/17 | Concrete Syntax | Necessary. Notes Concrete Syntax. | ||
R | 9/19 | Abstract Syntax and Parsing |
Necessary. Notes Abstract Syntax and Parsing. Supplemental. EoPL Chapter 2 Data Abstraction. |
|||
F | 9/20 | Homework 2 | HW 2 due | |||
5 | T | 9/24 | Static Scoping |
Necessary. Notes Static Scoping. |
||
R | 9/26 | Judgments |
Necessary. Notes Judgments. Supplemental. EoPL 3.1-3.2. |
|||
F | 9/27 | Lab 2 | Lab 2 due | |||
6 | T | 10/1 | Operational Semantics | Necessary. Notes Operational Semantics. | ||
R | 10/3 | Functions and Dynamic Scoping | Necessary. Notes Functions and Dynamic Scoping. | |||
F | 10/4 | Homework 3 | HW 3 due | |||
7 | T | 10/8 | Exam 1-2. Small-Step Semantics. | Supplemental. EoPL Chapter 3.3-3.4 PROC and LETREC. | ||
R | 10/10 | Evaluation Order and Short-Circuit Evaluation |
Necessary. Notes Evaluation Order. Supplemental. EoPL Chapter 3.5 Scoping and Binding of Variables. |
|||
F | 10/11 | Lab 3 | Lab 3 due | |||
8 | T | 10/15 | Collections and Callbacks (Higher-Order Functions) |
Necessary. Notes Higher-Order Functions. Recommended. Scala Chapter 16.1-16.9 Lists. Recommended. Scala Chapter 17.2 Sets and Maps. Supplemental. Twitter Scala School. Collections. |
||
R | 10/17 | Collections and Callbacks (Higher-Order Functions) | ||||
F | 10/18 | Homework 4 | HW 4 due | |||
9 | T | 10/22 | Static Type Checking | Necessary. Notes Static Type Checking. | ||
R | 10/24 | Objects. | ||||
F | 10/25 | Lab 4 | Lab 4 due | |||
10 | T | 10/29 | Lab 4 | |||
R | 10/31 | Review 3-4 |
Recommended. EoPL Chapter 4 State (4.5). Supplemental. Scala Chapter 23.2, 23.4-23.5 For Expressions. |
|||
F | 11/1 | Review 3-4 | ||||
11 | T | 11/5 | Exam 3-4. | |||
R | 11/7 | Encapsulating Effects | Necessary. Notes Encapsulating Effects. | |||
F | 11/8 | HW 5 |
| |||
12 | T | 11/12 | Mutable State. | Necessary. Notes Mutable State. | ||
R | 11/14 | Continuations. Regular Expressions. | ||||
F | 11/15 | Lab 5 | ||||
13 | T | 11/19 | Continuations. Regular Expressions. Parsing. | |||
R | 11/21 | Continuations. Regular Expressions. Parsing. | ||||
F | 11/22 | Lab 5 | Lab 5 due | |||
- | T | 11/26 | No class. Thanksgiving break. | |||
R | 11/28 | No class. Thanksgiving break. | ||||
F | 11/29 | No class. Thanksgiving break. | ||||
14 | T | 12/3 | Objects and Classes. | |||
R | 12/5 | Objects and Classes. | ||||
F | 12/6 | Lab 6 | Lab 6 due | |||
15 | T | 12/10 | Project Presentations. | |||
R | 12/12 | Final Review | ||||
F | 12/13 | Final Review | ||||
Final Exam |
Readings
- Notes refers to the course notes, Principles and Practice in Programming Languages.
- Scala refers to Programming in Scala, 4th edition by Odersky, Spoon, and Venners.
- EoPL refers to Essentials of Programming Languages, 3rd edition by Friedman and Wand.
The readings are classified into the following:
- Necessary (i.e., expected, required, and of highest importance) — assigned.
- Recommended (i.e., important but read after previous category) — assigned.
- Supplemental (i.e., additional material for a different perspective) – optional.
The above schedule lists the topics we plan to cover and approximately the number of meetings we plan to spend on each topic. The schedule is tentative. Most likely, some things will change during the semester, and the schedule will be revised as necessary. This class is yours, so please make suggestions.