Apr 23, 2024  
2020-2021 Undergraduate Academic Catalog 
    
2020-2021 Undergraduate Academic Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CS 3040 - Programming Languages and Translators

4 lecture hours 0 lab hours 4 credits
Course Description
This course studies programming languages and their implementations. This includes discussions of data types, storage management, syntax, BNF descriptions, domain-specific languages, semantics, lexical analysis, parsing, and compilation. Traditional and more modern programming languages are used as examples. Students use a functional programming language to construct interpreters and translators for multiple, domain-specific languages. (prereq: CS 2040 )
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Specify regular and context free languages
  • Write moderately sized programs in Haskell
  • Apply regular expressions to construct programming language tokenizers
  • Use recursive descent and parser generators to build parsers, interpreters, and translators for simple languages
  • Give a formal specification of a type system and compare various systems
  • Construct an operational semantics for a simple programming language
  • Discuss storage and data management, including binding, scope, lifetime, and automated garbage collection
  • Build a domain-specific language along with tools to process that language

Prerequisites by Topic
  • Procedural and object-oriented programming in a scripting language
  • Procedural and object-oriented programming in C and C++
  • The impact of typing systems on efficiency, readability, and reliability

Course Topics
  • Implementing a recognizer for a small domain-specific language
  • Regular expressions and their translation to finite state machines
  • Constructing an abstract syntax tree
  • Interpreting and compiling simple computer programs
  • Specifying context-free grammars
  • Operational semantics
  • Specifying type systems
  • Variable binding, scope, lifetime, and storage management
  • Functional programming

Coordinator
Dr. Robert Hasker



Add to Portfolio (opens a new window)