Course
Course Catalog URL:
Identifier:
COM S 342
Offered during Fall and Spring Semesters each year.
- Credits and contact hours: 3 credits, 4 contact hours
- Instructor’s or course coordinator’s name: Hridesh Rajan, Wei Le
- Text book, title, author, and year: Programming Languages: Design, Semantics, and Implementaion, Hridesh Rajan
- Other supplemental materials: Concepts of Programming Languages, Robert W. Sebesta, Pearson
Specific course information
- Brief description of the content of the course: Study of concepts in programming languages, especially functional programming concepts. Overview of major programming paradigms, their relationship, and tradeoffs among paradigms enabling sound choices of programming language for application-specific development. Programming projects.
- Prerequisites or co-requisites: Minimum of C- in COM S 228 and MATH 165; COM S 230 or CPR E 310
- Required, elective, or selected elective? Required
Specific goals for the course
- Specific outcomes of instruction:
- Know terminologies of programming languages
- Write programs in different programming languages
- Compare and implement programming language design decisions on both syntax and semantics (2, 3)
- Understand theoretical foundations of programming languages such as grammar, formal semantics and lambda calculus (6)
Brief list of topics to be covered
- Formal language theory: regular languages, context-free languages, finite state automata
- Functional Programming: Write and modify programs in functional style, introduction to languages such as Scheme and Haskell and language implementation techniques such as lazy data structures and monads
- Make effective use of data abstraction
- Learn about language constructs by changing or enhance interpreters to have features such as: control flow, variables names and bindings, recursion, static and dynamic scoping, syntactic sugars, arrays, parameter passing mechanisms, continuations, co-routines, objects, and inheritance
- Write programs using such features and explain their behavior
- Type System: Learn about concepts such as type, type system, design decisions for types, type inference, type checking and execution errors
- Learn about language constructs by changing or enhance interpreters to have features such as: types and type checking rules. Write program using such features and explain their behavior
- Explain the data structures and algorithms used in interpreters
- Logic programming: Prolog, resolution principles, unification algorithm, search with backtracking, cut operation, negation as failure
- Compare alternatives in programming language design and implementations
- Tentative Topics Order