CS471 Programming Languages
Spring 2024
Course Description
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.
- Class Time: Monday, Wednesday and Friday 3:30 – 4:30 PM
- Location: CW 102
- Lab Time: Thursday 4:25 - 5:50 PM
- Location: EB N01
- Instructor: Zeyu Ding
- Email: dding1@binghamton.edu
- Office: EB N34
- Office hours: Tuesday 1:30 – 3:30 PM or by appointment
- Teaching Assistant: Zefeng Li
- Email: zli29@binghamton.edu
- Office: EB N00
- Office hours: TBA
Learning Objectives
Develop computer science professionals who are knowledgeable consumers of programming languages, able to understand the strengths and limitations of languages and why the languages have them.
- Students will have a firm grasp of different language features included in common languages such as C, C++,C#, Java, Scheme, Prolog and scripting languages; understand the benefits and drawbacks of these features.
- Students will have a clear understanding of the different language paradigms, their benefits and drawbacks. Understand and appreciate the distinctions between imperative versus declarative languages; functional versus logic versus object-oriented languages.
- Students will understand how various language features are implemented, with a view to better understand design choices and trade-offs in a language, and most importantly, become more effective programmers whatever language you choose to program in.
- Students will acquire a good working knowledge of different programming styles and understand and use modern language features such as abstract data types, type-safe programming, inheritance, higher-order functions, etc.
Prerequisites
- CS375 Design and Analysis of Algorithms
- CS373 Automata Theory & Formal Language
Textbooks and Other Materials
- Required 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 PowerPoint 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