CS471 Programming Languages

Spring 2025


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: Lecture Hall 012
  • Lab Time: Tuesday 10:05 -11:30 AM
    • Location: EB N01
  • Instructor: Zeyu Ding
    • Email: dding1@binghamton.edu
    • Office: EB N34
    • Office hours: Tuesday 2 – 4 PM or by appointment
  • Teaching Assistant: Zefeng Li
    • Email: zli29@binghamton.edu
    • Office: EB P17
    • Office hours: Monday 9 - 10 AM

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