Academics / Courses / DescriptionsCOMP_SCI 321: Programming Languages
VIEW ALL COURSE TIMES AND SESSIONS
Prerequisites
Prerequisites: COMP_SCI 111, COMP_SCI 211, and COMP_SCI 214 or CS Graduate standing or Instructor permissionDescription
This course introduces students to the key features of programming languages. Students implement a series of interpreters that nail down the precise details of how various aspects of programming languages behave. Students are assumed to understand trees and (mathematical) functions that process them; the course builds up to the features of real programming languages from there.
REQUIRED TEXT: Programming Languages: Application and Interpretation by Shriram Krishnamurthi
COURSE INSTRUCTOR: Prof. Robby Findler or Prof. Christos Dimoulas or Prof. Dietrich Geisler
COURSE COORDINATOR: Prof. Robby Findler
COURSE TOPICS: The course explores these aspects of a programming language (in this order):
- Modeling programming languages
- Arithmetic expressions & variables
- Functions
- Deferring substitution
- First class functions
- (implementing) Recursion
- State
- Control
- Garbage collection
- Types
GRADES: Grades are based on weekly homework assignments.
EXAM: There is no exam in this course.
COURSE OBJECTIVES: Students that complete this course should:
- understand the basic features that underlie most programming languages
- understand the basic semantic features of all call-by-value programming languages (which includes nearly all programming languages they will encounter),
- understand the pragmatics behind those features (when to use them and why),
- understand some of the more advanced features, when they are applicable, and when they are desireable,
- be able to maintain and extend an interpreter-based implementation of a programming language containing those features