CS-671: Programming Language Concepts and Features

(The syllabus can be downloaded as a pdf.)

Next offered: Fall 2017

Catalog description

Explores the main features of modern, high-level, general purpose programming languages from the user (programmer) point of view. Provides students with an opportunity to use non-imperative programming paradigms, such as object-oriented, functional, and logical, and to learn how specific features of such languages can be used efficiently in solving programming problems. Prereq: CS520.


Everything that is computable can be computed using very few basic building blocks, like assignments, conditionals, loops and recursion. In practice, however, modern, high-level programming languages offers a profusion of features that help implement large, complex pieces of software: support for object-oriented, functional, concurrent and distributed programming, modularity, types, exception handling, pattern matching, etc. This course explores the advanced features of modern programming languages from a user’s standpoint, by illustrating their use through practical examples and programming assignments.

These features can be found in one form or another in many modern languages, like Java, Python, Ruby, Clojure, Rust, Javascript, C#, F#, etc. Although some of these languages are discussed when relevant, all implementations are done in Scala, a modern cousin of Java that runs on the Java Virtual Machine and that integrates many of the most interesting features of modern programming languages. Scala provides us with a platform on which to experiment with many different features within a single language. The course is programming intensive and a large part of the final grade is based on programming assignments.




Five programming assignments (50%), multiple quizzes (30%) and one exam (20%).

Minimum score for each grade: A: 90, A: 87, B+: 83, B: 80, B: 77, C+: 73, C: 70, C: 67, D+: 63, D: 60, D: 57.


Textbook (reference)