Course Details
01:198:415 - Compilers
- Course Number: 01:198:415
- Instructor: Uli Kremer
- Course Type: Undergraduate
- Semester 1: Spring
- Credits: 4
- Description:
To reveal the general concepts and theoretical foundations of programming language translation and implementation. Emphasis will be placed on imperative languages.Recommended for all students interested in programming languages and techniques used to build software tools (i.e., debuggers, browsers).
- Syllabus: https://www.cs.rutgers.edu/courses/415/classes/spring_2021_kremer/
- Video Intro: https://www.cs.rutgers.edu/courses/415/classes/spring_2021_kremer/videos/UlrichKremerCs415Spring2021.mp4
- Instructor Profile: Kremer, Ulrich
- Prerequisite Information:
01:198:211 or 14:332:331; 01:198:314.
† This course is available for CS Graduate degree credit.
- A grade below a "C" in a prerequisite course will not satisfy that prerequisite requirement.
- Course Links: 01:198:211 - Computer Architecture, 01:198:314 - Principles of Programming Languages
- Topics:
Compilers
Methods of language specification
Lexical analysis
Top-down (recursive descent) and bottom-up (LR) parsing methods
Semantics-driven translation
Code generation
Symbol tables and intermediate code forms
Procedures and run time stacks
Recursion implementation
Code Optimization - Expected Work: Work will consist primarily of a large programming project, usually the implementation of a working compiler for a simulated abstract machine. Some additional written homework will be assigned. Previous knowledge of C or C++ will be useful.
- Exams: A midterm and a final examination
- Learning Goals:
Computer Science majors ...
- will be prepared to contribute to a rapidly changing field by acquiring a thorough grounding in the core principles and foundations of computer science (e.g., techniques of program design, creation, and testing; key aspects of computer hardware; algorithmic principles).
- will acquire a deeper understanding on (elective) topics of more specialized interest, and be able to critically review, assess, and communicate current developments in the field.
- will be prepared for the next step in their careers, for example, by having done a research project (for those headed to graduate school), a programming project (for those going into the software industry), or some sort of business plan (for those going into startups).