CS 345: Programming Languages Schedule, Spring 2014





Date

Topic

Reading

Assigned

Due

1

M

Jul 13

Top-down Parsing

Chapter 1,2 of AoPL

HW#0: Parsing


2

T

Jul 14

Bottom-up Parsing


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


3

W

Jul 15

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

Th

Jul 16

More Haskell


HW #1B: Data Types and functions


5

F

Jul 17

More Haskell - Type classes

How to make ad-hoc polymorphism less ad hoc


HW #1A

6

M

Jul 20

Expressions and substitution

Chapter 3 of AoPL

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

HW #1B

7

T

Jul 21

First-class functions

Chapter 4 of AoPL



8

W

Jul 22

Guest lecture




9

Th

Jul 23

Guest lecture


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

HW #2

10

F

Jul 24

Closures

Chapter 4.5 of AoPL



11

M

Jul 27

Environment Diagrams

Chapter 4.6 of AoPL

HW #4: Draw environment diagrams for these problems


12

T

Jul 28

Closures and Environments



HW #3

13

W

Jul 29

Recursion and fixed points

Chapter 5 of AoPL

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


14

Th

Jul 30

Midterm



HW#4

15

F

Jul 31

Error Propagation

Chapter 6.1 of AoPL



16

M

Aug 03

Data Abstraction & Representing data as functions

Chapter 4.4.3, 4.4.5 of AoPL

HW#6 Combining Monads: Do Assignment 3 in AoPL

HW#5 Due

17

T

Aug 04

Mutable State (part 1)

Chapter 6.2 of AoPL



18

W

Aug 05

Mutable State (part 2)

Chapter 6.3 of AoPL



19

Th

Aug 06

Objects

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

HW#7 Return Statement

HW#6 due

20

F

Aug 07

Inheritance

A denotational semantics of inheritance and its correctness



21

M

Aug 10

JavaScript monad


HW#8 JavaScript

HW#7 Due

22

T

Aug 11

Typing




23

W

Aug 12

Typing

 



24

Th

Aug 13

Type Inference



25

F

Aug 14




HW#8 Due