CS 345: Programming Languages Schedule, Spring 2014





Date

Topic

Reading

Assigned

Due

1

T

Jan 14

Introduction to course

Chapter 1, 2 of AoPL



2

Th

Jan 16

Top-down Parsing


HW#0: Parsing


3

T

Jan 21

Bottom-up Parsing



HW#0


Th

Jan 23

Haskell Introduction

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

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

HW #1: Fibs and Primes


4

T

Jan 28

NO CLASS – bad weather




5

Th

Jan 30

More Haskell - Type classes

How to make ad-hoc polymorphism less ad hoc



6

T

Feb 04

Expressions and substitution

Chapter 3 of AoPL

HW #2: Basic Interpreter:
Implement assignment 8.1 in AoPL

HW #1

7

Th

Feb 06

NO CLASS – bad weather




8

T

Feb 11

First-class functions

Chapter 4 of AoPL



9

Th

Feb 13

Closures

Chapter 4.5 of AoPL

HW #3: First-Class Functions and Patterns
Implement assignment 8.2
in AoPL

HW #2

10

T

Feb 18

Data Abstraction & Representing data as functions

Chapter 4.4.3, 4.4.5 of AoPL



11

Th

Feb 20

Environment Diagrams

Chapter 4.6 of AoPL



12

T

Feb 25

Closures and Environments



HW #3

13

Th

Feb 27

Recursion and fixed points

Chapter 5 of AoPL

HW #4: Draw environment diagrams for these problems


14

T

Mar 04

Error Propagation

Chapter 6.1 of AoPL



15

Th

Mar 06

Mutable State (part 1)

Chapter 6.2 of AoPL


HW#4


T

Mar 11

Spring Break





Th

Mar 13

Spring Break




16

T

Mar 18

Midterm




17

Th

Mar 20

Mutable State (part 2)

Chapter 6.3 of AoPL

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


18

T

Mar 25

Objects

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



19

Th

Mar 27

No Class




20

T

Apr 01

Inheritance

A denotational semantics of inheritance and its correctness



21

Th

Apr 03

Typing



HW#5 Due

22

T

Apr 08

Typing


HW#6 Combining Monads: Do Assignment 3 in AoPL


23

Th

Apr 10

Type Inference

 



24

T

Apr 15

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



25

Th

Apr 17

JavaScript monad




26

T

Apr 22

Partial Evaluation part 2



HW#6 due
Solution

27

Th

Apr 24



HW#7 Return Statement


28

T

Apr 29





29

W

May 1




HW#7 Due May 2 at 5pm