CS471
Programming Languages
Course Overview
Introduction to the design and implementation of programming languages: linguistic features for expressing algorithms; formal syntax specification; introduction to language semantics and parsing; declarative programming (functional and goal-driven); scripting languages; imperative programming (procedural and object-oriented); comparative design and implementation issues across languages and paradigms. Assignments emphasize languages such as Scheme, Prolog, Haskell, Python. Required Lab includes student presentations.
Prerequisites
- CS375 Design and Analysis of Algorithms
- CS373 Automata Theory & Formal Language
Course Materials
- Textbook
- Michael L. Scott, Programming Language Pragmatics, 3rd or 4th Edition
- 3rd edition ISBN: 978-0123745149
- 4th edition ISBN: 978-0124104099
- Michael L. Scott, Programming Language Pragmatics, 3rd or 4th Edition
- Other Reference Books
- Allen Tucker and Robert Noonan, Programming Languages Principles and Paradigms
- Robert Sebesta, Concepts of Programming Languages
- Paul R. Wilson, An Introduction to Scheme and its Implementation
- Brian Harvey and Matthew Wright, Simply Scheme: Introducing Computer Science
- R. Kent Dybvig, The Scheme Programming Language
- Patrick Blackburn, Johan Bos, and Kristina Striegnitz, Learn Prolog Now!
- Miran Lipovaca, Learn You a Haskell for Great Good!
- Fred Herbert, Learn You Some Erlang for Great Good!
- Lecture notes for each chapter, in PDF format, as well as some relevant supplemental materials will be posted on Brightspace before lectures. Lecture notes do not substitute for class attendance, since (i) they do not contain all the details in terms of explanations and analyses and (ii) significant parts of lectures, including discussions and presentations, may not come from the lecture notes
- Additional materials will be added as appropriate
Grading
- Assignments: 40%
- Midterm Exam: 30%
- Final Exam: 25%
- Participation: 5%