- 536 Introduction to Programming Languages and Compilers
- 538 Introduction to the Theory and Design of Programming Languages
- 701 Programming Languages and Compilers
- 702 Compiler Construction
- 703 Advanced Topics in Programming Languages and Compilers
- 704 Principles of Programming Languages
- 706 Analysis of Software Artifacts
536 Introduction to Programming Languages and CompilersCredits: 4 undergraduate, 3 graduate.
Prerequisites: CS 367 and either CS 354 or CS 552.
Introduction to the theory and practice of compiler design. Comparison of features of several programming languages and their implications for implementation techniques. Several programming projects required.
538 Introduction to the Theory and Design of Programming LanguagesCredits: 3.
Prerequisites: CS 354 and CS 367.
Design and theory of programming languages: procedural, object-oriented, functional and logic paradigms. Serial and concurrent programming. Execution models and formal specification techniques.
701 Programming Languages and CompilersCredits: 3.
Prerequisites: CS 536.
Design and implementation of compilers for modern programming languages. Emphasis on tools for compiler construction.
702 Compiler ConstructionCredits: 3.
Prerequisites: CS 536; co-requisite: CS 701 or consent of instructor.
Techniques for the implementation of compilers for sophisticated programming languages.
703 Advanced Topics in Programming Languages and CompilersCredits: 3.
Prerequisites: CS 701
Advanced topics in compiling and programming languages design. Advanced parsing techniques; automatic syntactic error correction; local and global code optimization; attribute grammars; programming language design issues (data and control abstractions, specification and verification of high level languages)
704 Principles of Programming LanguagesCredits: 3.
Prerequisites: CS 536 or consent of instructor
Introduction to principles of advanced programming languages and programming-language theory. Topics include: lambda-calculus, functional languages, polymorphic functions, type inference, structural induction, lazy evaluation, operational semantics, denotational semantics, and axiomatic semantics.
706 Analysis of Software ArtifactsCredits: 3.
Prerequisites: CS 536 or consent of instructor. A basic knowledge of mathematical logic is also required.
Advanced course covering various analysis techniques used in software engineering. This course will cover techniques for analyzing various software artifacts. Some of the topics that will be covered are: model checking, testing, program analysis, requirements analysis, and safety analysis.