COSE212: Programming Languages, 2024 Fall

COSE212: Programming Languages, 2024 Fall

Note that this page is outdated. Please refer to the recent course page.

Course Information

Course Materials

Attendances and Homework

Please use the Blackboard for the attendance check and the submission of homework.

Discussion and Questions

Please use the CampusWire for discussion and questions about the course.

Exams

  • Midterm: October 23 (Wed.) 18:30 – 21:00 (150 min.)
  • Final: December 18 (Wed.) 18:30 – 21:00 (150 min.)
  • Previous Exams

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:

Online Interpreters

In this course, you will implement interpreters for the following languages:


Schedule

# Date Title PDFUpdateHomework
Part 0: Basic Concepts
0 09/02 Course Overview

05/05
(17:37)

1 09/04 Basic Introduction of Scala

05/05
(17:37)

hw01
(by 09/25)
Part 1: Untyped Languages
2 09/09 Syntax and Semantics (1)

05/05
(17:37)

3 09/11 Syntax and Semantics (2)

05/05
(17:37)

ex01
4 09/16 Identifiers (1)

05/05
(17:37)

5 09/18 Identifiers (2)

05/05
(17:37)

ex02
6 09/23 First-Order Functions

05/05
(17:37)

ex03
7 09/25 First-Class Functions

05/05
(17:37)

ex04
8 09/30 Lambda Calculus

05/05
(17:37)

hw02
(by 10/14)
9 10/02 Recursive Functions

05/05
(17:37)

ex05
10 10/07 Mutable Data Structures - Boxes

05/05
(17:37)

ex06
11 10/09 Mutable Variables

05/05
(17:37)

ex07
12 10/14 Garbage Collection

05/05
(17:37)

13 10/16 Lazy Evaluation

05/05
(17:37)

ex08
10/23 Midterm Exam Lectures 1 - 13
14 10/28 Continuations (1)

05/05
(17:37)

15 10/30 Continuations (2)

05/05
(17:37)

ex09
16 11/04 First-Class Continuations

05/05
(17:37)

ex10
17 11/06 Compiling with Continuations

05/05
(17:37)

hw03
(by 11/20)
Part 2: Typed Languages
18 11/11 Type Systems

05/05
(17:37)

19 11/13 Typed Languages

05/05
(17:37)

ex11
20 11/18 Typing Recursive Functions

05/05
(17:37)

ex12
21 11/20 Algebraic Data Types (1)

05/05
(17:37)

22 11/25 Algebraic Data Types (2)

05/05
(17:37)

ex13
23 11/27 Parametric Polymorphism

05/05
(17:37)

hw04
(by 12/11)
ex14
24 12/02 Subtype Polymorphism

05/05
(17:37)

ex15
25 12/04 Type Inference (1)

05/05
(17:37)

26 12/09 Type Inference (2)

05/05
(17:37)

ex16
27 12/11 Course Review

05/05
(17:37)

12/18 Final Exam Lectures 14 - 26