Courses



 

536 Introduction to Programming Languages and Compilers

Credits: 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 Languages

Credits: 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 Compilers

Credits: 3.
Prerequisites: CS 536.

Design and implementation of compilers for modern programming languages. Emphasis on tools for compiler construction.


 

702 Compiler Construction

Credits: 3.
Prerequisites: CS 536; co-requisite: CS 701 or consent of instructor.
Infrequently offered

Techniques for the implementation of compilers for sophisticated programming languages.


 

703 Advanced Topics in Programming Languages and Compilers

Credits: 3.
Prerequisites: CS 701
Infrequently offered

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 Languages

Credits: 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 Artifacts

Credits: 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.