CSE 505 Tentative Syllabus
Alan Borning
Fall 1997
Functional Programming (2-3 weeks)
- Issues addressed:
- first-class functions; lexical scoping
- programming without side-effects
- polymorphic type systems; type inference; static vs. dynamic typing
- module systems
- lazy evaluation
- continuations
- Languages studied:
- Course work:
- small programming assignments and homework in each language
Object-Oriented Programming (2-3 weeks)
- Issues addressed:
- ADTs; inheritance; subclass polymorphism & dynamic binding
- static type systems; subclassing vs. subtyping
- polymorphic type systems
- other issues:
- single vs. multiple dispatching
- classes vs. prototypes
- Languages studied:
- Smalltalk
- C++, Java
- Cecil, Dylan
- Course work:
- small programming assignments and homework in 2-3 languages
Logic and Constraint-Based Programming (1 week)
- Issues addressed:
- Languages studied:
- Prolog, CLP(R), cc languages
- Kaleidoscope
- Course work:
- one simple programming assignment and homework
Formal Semantics (1 week)
- Issues addressed:
- operational semantics; natural semantics
- denotational semantics
- type deduction rules; soundness
- Languages studied:
- Course work:
- one simple homework assignment
History of Programming Languages (1-2 lectures)
- Algol-60 and its descendants (Simula, Pascal, Ada, etc)
Exams
Course Project
- 10-15 page paper on a language issue of student's choosing. Optional
implementation component. Topic negotiated with instructor.