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
  • Other Reference Books
  • 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%