CS 345: Programming Languages Schedule, Spring 2014





Date

Topic

Reading

Assigned

Due

1

W

Jan 21

Introduction to course.

Chapter 1, 2 of AoPL



2

M

Jan 26

Top-down Parsing


HW#0: Parsing


3

W

Jan 28

Bottom-up Parsing


Task #1: Get started running Haskell (not graded)



M

Feb 02

Haskell Introduction

* Haskell Platform
* Learn You a Haskell for Great Good!
* Haskell Tutorial
Chapter 5 of Theory in Programming Practice

HW #1A: Fibs and Primes

HW#0

4

W

Feb 04

More Haskell


HW #1B: Data Types and functions


5

M

Feb 09

More Haskell - Type classes

How to make ad-hoc polymorphism less ad hoc


HW #1A

6

W

Feb 11

Expressions and substitution

Chapter 3 of AoPL

HW #2: Basic Interpreter:
Implement
Assignment 1 in AoPL

HW #1B

7

M

Feb 16

First-class functions

Chapter 4 of AoPL



8

W

Feb 18

Closures

Chapter 4.5 of AoPL

HW #3: First-Class Functions and Patterns
Implement
Assignment 2 in AoPL

HW #2

9

M

Feb 23

Environment Diagrams

Chapter 4.6 of AoPL



10

W

Feb 25

Closures and Environments


HW #4: Draw environment diagrams for these problems

HW #3

11

M

Mar 02

Recursion and fixed points

Chapter 5 of AoPL



12

W

Mar 04

Error Propagation

Chapter 6.1 of AoPL

HW #5: Error Handling (Exercise 6.1 and 6.2 of AoPL)

HW#4

13

M

Mar 09

Data Abstraction & Representing data as functions

Chapter 4.4.3, 4.4.5 of AoPL



14

W

Mar 11




HW#5 Due

15

M

Mar 16

Spring Break





W

Mar 18

Spring Break





M

Mar 23

Midterm




16

W

Mar 25

Mutable State (part 1)

Chapter 6.2 of AoPL

HW#6 Combining Monads: Do Assignment 3 in AoPL


17

M

Mar 30

Mutable State (part 2)

Chapter 6.3 of AoPL



18

W

Apr 01

Objects

On Understanding Data Abstraction, Revisited (paper)
(Slides presented in Orlando)



19

M

Apr 06

Inheritance

A denotational semantics of inheritance and its correctness

HW#7 Return Statement

HW#6 due

20

W

Apr 08

JavaScript monad




21

M

Apr 13

Typing


HW#8 JavaScript

HW#7 Due May 2 at 5pm

22

W

Apr 15

Typing

 



23

M

Apr 20

Type Inference




24

W

Apr 22

Partial Evaluation

Haskell code
Lecture notes 
* Tutorial on Partial Evaluation

An introduction to partial evaluation 
Partial Evaluation of Computation Process—An Approach to a Compiler-Compiler Yoshihiko Futamura

HW #9 Typing

HW#8

25

M

Apr 27

Partial Evaluation part 2




26

W

Apr 29

TBD




27

M

May 04




HW#9

28

W

May 06