CIS505 Lecture Notes: Introduction to Programming-Language Paradigms

Week 1

Chapter 0: Introduction to language paradigms
Chapter 1: Grammars, trees, and interpreters
Notes on Python's lists and dictionaries (read these before you code)
PythonTutor: a great visualization tool for the Python virtual machine

Week 2

Chapter 2: Two virtual machines for imperative languages
Chapter 5: Component extension by abstraction, parameterization, and qualification

Week 3

Chapter 6: The imperative paradigm: From an assignment core to Java
Solution to in-class exercise

Weeks 4 and 5

Chapter 7: The functional paradigm: From an arithmetic core to ML
Solution to in-class exercise
Folder of SML examples
David Toman's quick summary of SML

Week 6

Solution to in-class exercise on summing a list: pdf | txt
Solution to in-class exercise on selecting the smallest int: html | txt

Chapter 10: The Lambda Calculus
Solution to in-class exercises: html | txt
zipped folder of lambda-calculus reducer | README file | folder of individual files

Weeks 7-9

Chapter 8: The logical paradigm: From a boolean core to Prolog
Folder of Prolog examples | zipped folder
solution to in-class exercise

Week 10

Overview of computability and computational-complexity theory
Summary of Go"del's and Turing's results

To come (subject to change):

Chapter 3: The core language and its characteristic domains
Chapter 4: Control and data-structure extensions
Chapter 9: Domain-specific languages

David Schmidt   das at

Creative Commons License This work is licensed under a Creative Commons License.