Courses

Study fundamental concepts on which programming of languages are based, and execution models supporting them. Topics include values, variables, bindings, type systems, control structures, exceptions, concurrency, and modularity. Learn how to select a language and to adapt to a new language. Prerequisites: Requires prerequisite courses of CSCI 2270 and CSCI 2824 or ECEN 2703 or APPM 3170 or MATH 2001 (all minimum grade C-).
Introduces the basic techniques used in translating programming languages: scanning, parsing, definition table management, operator identification and coercion, code selection and register allocation, error recovery. Students build a complete compiler for a simple language. Same as ECEN 4553 and CSCI 5525. Prerequisites: Requires prerequisite courses of CSCI 3155 and CSCI 2400 or ECEN 3350 (all minimum grade C-).
Covers two-level and multilevel minimization, optimization via expert systems, algebraic and Boolean decomposition, layout methodologies, state assignment, encoding and minimization, silicon compilation. Recommended prereqs., ECEN 2703 and general proficiency in discrete mathematics and programming. Same as ECEN 5139. Prerequisites: Restricted to graduate students only.
Introduces the principles and techniques for compiling high-level programming languages to assembly code. Topics include parsing, instruction selection, register allocation, and compiling high-level features such as polymorphism, first-class functions, and objects. Students will build a complete compiler for a simple language. Recommended prereq., CSCI 3155 and CSCI 2400, or ECEN 2120 or ECEN 3350. Same as ECEN 5523, CSCI 4555, and ECEN 4553. Prerequisites: Restricted to graduate students or Computer Science Concurrent Degree (CSEN) majors only.
Considers concepts common to a variety of programming languages--how they are described (both formally and informally) and how they are implemented. Provides a firm basis for comprehending new languages and gives insight into the relationship between languages and machines. Recommended prereq., CSCI 3155 or instructor consent required. Same as ECEN 5533. Prerequisites: Restricted to graduate students or Computer Science Concurrent Degree (CSEN) majors only.
Topics selected by instructor. Possible topics are syntax, semantics, metacompilers, compiler design, and translator writing systems. Department consent required. Prerequisites: Restricted to graduate students only.