CSE 341: Lecture Notes

Overview: Why languages?

ML introduction

ML: Functions and Patterns
(Supplementary notes: functional programming, language semantics, exercises)

ML: Polymorphic types and higher-order functions

ML: Lexical scoping

ML: Polymorphic type inference

ML: User-defined types and type synonyms

ML: Mutable and optional data
(Supplementary notes: Why side effects?; lecture slide version)

ML: Modules

ML: Exceptions

Grammars, language specifications, and interpreters

Scheme introduction

Dynamic vs. static types
(Supplementary notes: uses of dynamic typing)

Scheme: Quotes and Quasiquote

Scheme: Continuations and exceptions

Smalltalk introduction

Smalltalk: Classes and metaclasses

Object-oriented design and Smalltalk collections
(lecture slide version, with additional notes)

Exploratory programming with Squeak and Morphic
(lecture slide version [920KB PDF], 4 slides/page handout version [3.7MB PDF], KPresenter sources)

Static typing in object-oriented languages
(lecture slide version [63KB PDF], KPresenter sources)

Multiple inheritance

Parameter passing

Connections between OOP and FP: EML, MultiJava, and Pizza

Scripting, Ruby, and regular expression matching

Unsafe languages (C)


The source files used in my interactive read-eval-print sessions during lecture are available in this directory. However, I strongly suggest you read the notes and type in the expressions yourself, instead of entering the provided code directly. The act of typing in code --- and thinking about it as you do so --- helps you learn. Even the act of making a typo, seeing the resulting error, and fixing it can be educational. I am providing this code primarily because I sometimes type things in lecture that aren't in the notes, and it may be useful to students to see them.


Figure sources: The xfig and eps versions of all the figures from these notes are in this directory. As an exception to the Creative Commons license governing the remainder of these materials, the figures in this directory are hereby released into the public domain.