CS 345: Programming Languages Schedule, Spring 2016



Date

Topic

Reading

Assigned

Due

1

Wed

Jan 20

Introduction to course

Chapter 1,2 of AoPL



2

Fri

Jan 22

Grammars and Parsing


HW #0: Parsing


3

Mon

Jan 25

Top-down Parsing

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



4

Wed

Jan 27

Bottom-up Parsing


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


5

Fri

Jan 29

Haskell Introduction

How to make ad-hoc polymorphism less ad hoc

HW #1A: Fibs and Primes

HW#0 Due

6

Mon

Feb 01

Haskell introduction continued




7

Wed

Feb 03

More Haskell


HW #1B: Data Types and functions

HW #1A Due

8

Fri

Feb 05

Type classes in Haskell




9

Mon

Feb 08

Expressions

Chapter 3 of AoPL

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

HW #1B Due

10

Wed

Feb 10

Substitution




11

Fri

Feb 12

Functions

Chapter 4 and 4.1 of AoPL



12

Mon

Feb 15

Lambda Notation


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

HW #2 Due

13

Wed

Feb 17

Examples of Functions

Chapter 4 .4 of AoPL



14

Fri

Feb 19

Closures

Chapter 4.5 of AoPL



15

Mon

Feb 22

Environment Diagrams

Chapter 4.6 of AoPL

HW #4: Draw environment diagrams for these problems

HW #3 Due

16

Wed

Feb 24

Closures and Environments




17

Fri

Feb 26

Recursive definitions

Chapter 5 of AoPL



18

Mon

Feb 29

Error Propagation

Chapter 6.1 of AoPL

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

HW#4 Due

19

Wed

Mar 02





20

Fri

Mar 04

Mutable State (part 1)

Chapter 6.2 of AoPL



21

Mon

Mar 07

Mutable State (part 2)




22

Wed

Mar 09

Mutable State (part 1)

Chapter 6.2 of AoPL


HW#5 Due

23

Fri

Mar 11

TBD

 




Mon

Mar 14

SPRING BREAK




Wed

Mar 16

SPRING BREAK





Fri

Mar 18

SPRING BREAK




24

Mon

Mar 21

half-semester review




25

Wed

Mar 23

Midterm




26

Fri

Mar 25

Monads

Chapter 6.3 of AoPL

HW #6: Combining Monads: Do Assignment 3 in AoPL


27

Mon

Mar 28

Monads




28

Wed

Mar 30

Discuss Midterm




29

Fri

Apr 01

Discuss Midterm




30

Mon

Apr 04

Return Statement


HW# 7: Return

HW#6 Due

31

Wed

Apr 06

NO CLASS




32

Fri

Apr 08





33

Mon

Apr 11

Objects

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

HW#8: JavaScript

HW#7 Due

34

Wed

Apr 13

Objects




35

Fri

Apr 15

Objects




36

Mon

Apr 18

Inheritance




37

Wed

Apr 20

Records and “this”

A denotational semantics of inheritance and its correctness



38

Fri

Apr 22

Typing

Chapter 7 of AoPL



39

Mon

Apr 25

Typing


HW#9 Typing

HW#8 Due

40

Wed

Apr 27

Typing



41

Fri

Apr 29

Partial Evaluation

Tutorial on partial evaluation



42

Mon

May 02

Partial Evaluation




43

Wed

May 04




HW#9 Due

44

Fri

May 06