COSE212: Programming Languages, 2023 Fall

Course Information

Course Materials

Installation of Scala and sbt

Scala is a general-purpose programming language combining object-oriented and functional programming in one concise, high-level language. Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.

The interactive build tool sbt is built for Scala and Java projects.

Please download and install them using the following links:

Schedule

# Date Title PDF
(handout)
Homework
Part 0: Basic Concepts
0 09/04 Course Overview
1 09/06 Basic Introduction of Scala hw01
(due: 09/20)
Part 1: Untyped Languages
2 09/11 Syntax and Semantics (1)
3 09/13 Syntax and Semantics (2) ex01
4 09/18 Identifiers (1)
5 09/20 Identifiers (2) ex02
6 09/25 First-Order Functions ex03
7 09/27 First-Class Functions ex04
8 10/02 Lambda Calculus
9 10/04 Recursive Functions ex05
10 10/09 Mutable Data Structures - Boxes hw02
(due: 10/27)
11 10/11 Mutable Variables ex06
12 10/16 Garbage Collection
13 10/18 Lazy Evaluation ex07
10/25 Midterm Exam Lectures 1 - 13
14 10/30 Continuations (1)
15 11/01 Continuations (2) ex08
16 11/06 First-Class Continuations ex09
17 11/08 Compiling with Continuations
Part 2: Typed Languages
18 11/13 Type Systems hw03
(due: 11/27)
19 11/15 Typed Languages ex10
20 11/20 Typing Recursive Functions ex11
21 11/22 Algebraic Data Types (1)
22 11/27 Algebraic Data Types (2) ex12
23 11/29 Parametric Polymorphism ex13
24 12/04 Subtype Polymorphism hw04
(due: 12/14)
ex14
25 12/06 Type Inference (1)
26 12/11 Type Inference (2) ex15
27 12/13 Course Review
12/20 Final Exam Lectures 14 - 24