Computer Science 365

Programming Language Concepts
Spring 2010
Thomas VanDrunen



Meeting time: MWF 2:00-3:05 pm.
Meeting place: Armerding 123

Office hours: MWF 3:15-4:45 pm; Th 9:00-11:30 am.
Contact: 112 Armerding; 752-5692; Thomas.VanDrunen@wheaton.edu
http://csnew.wheaton.edu/~tvandrun/cs365


Syllabus


Resources:
Java Language Specification



Final exam: Tuesday, May 4, 1:30 pm


Moon's dayWoden' s dayFrigga's day

Jan 11

Prolegomena. Introduction. History of programming languages
Slides

Short assignment

Jan 13

More history of programming languages [1.(1-5)]

Short assignment

Jan 15

Defining programing languages
Slides

Jan 18

NO CLASS

Jan 20

Imperative programming. Lexical and syntactic structure [1.6; 2.(1&2)]

proj 1 due 1/26

Jan 22

Parsing [3.3]
Slides

Jan 25

Concrete and abstract syntax [2 & 3]
Slides

proj 2 due 2/1

Jan 27

Types[5.(1-3); 6.3]

Jan 29

Type-checking [6]

proj 3 due 2/8

Feb 1

Formal semantics[7.(1-4); 8.(1, 4)]

Feb 3

Implementation

Short assignment

Feb 5

Loops, scope [4.1-3; 7.5]
Slides

Short assignment
proj 4 due 2/17

Feb 8

Switch statements; casting [5.3]

Feb 10

Procedures [9]

Feb 12

More on procedures [10]

Feb 15

NO CLASS

Feb 17

Parameter passign modes [9.4]
In-class exercise

Feb 19

Arrays and dynamic memory [5.4.3; 11.(1&2)]

proj 5 due 3/1

Feb 22

More on arrays

Feb 24

Records [5.4.5]

Feb 26

Exceptions [7.7]

Mar 1

Review

Mar 3

MIDTERM

Mar 5

Alternative constructs in imperative languages

Mar 8

NO CLASS

Mar 10

NO CLASS

Mar 12

NO CLASS

Mar 15

Object-oriented programming. Introduction [13]

proj 6 due 3/24

Mar 17

Type in OO; polymorphism [(5.8) & (9)]

Mar 19

Type checking in OO

Mar 22

Inheritance

Mar 24

Alternative formulations of OO

proj 7 due 3/31

Mar 26

More alternatives: method update

Mar 29

Functional programming. Introduction; the lambda calculus[14]

Short exercise for wed
Read for wed

Mar 31

More lambda calculus

Apr 2

NO CLASS

Apr 5

Building a functional programming language

proj 8 due 4/21

Apr 7

Efficiency; tail-form


Read for mon

Apr 9

Continuation passing style

Apr 12

Types in functional languages

Apr 14

Type soundness proofs [18.4]

Apr 16

Work on project

Apr 19

Compilation. Introduction

proj 9 due 4/28

Apr 21

Classfiles and the JVM

Apr 23

Alternatives. Data flow languages; declarative languages [15]

Apr 26

Concurrent languages [17]

Apr 28

"Growing a Language"

Apr 30

Review