Principles of Programming Languages - CSCI 3155 - Fall 2024

\(\newcommand{\TirName}[1]{\text{#1}} \newcommand{\inferrule}[3][]{ \let\and\qquad \begin{array}{@{}l@{}} \TirName{#1} \\ \displaystyle \frac{#2}{#3} \end{array} } \newcommand{\infer}[3][]{\inferrule[#1]{#2}{#3}} \)

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
</td>
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

The readings are classified into the following:

  1. Necessary (i.e., expected, required, and of highest importance) — assigned.
  2. Recommended (i.e., important but read after previous category) — assigned.
  3. 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.