|
Dec 21, 2024
|
|
|
|
CS 3040 - Programming Languages and Translators4 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)
|
|