This course introduces the fundamental concepts and techniques used in the design and implementation of compilers. Students will examine the complete compilation process, including lexical analysis, parsing, syntax-directed translation, semantic analysis, and code generation. Emphasis is placed on practical application, with students developing a working compiler for a simple programming language. Through hands-on exercises, they will gain experience with tools and techniques such as lexical analyzers and parser generators. By the end of the course, learners will have a clear understanding of how high-level programming languages are transformed into executable code.
Prerequisite
Successful completion of Theory of Automata is mandatory. Students who have not passed this prerequisite course are not eligible to take Compiler Construction. Any enrollment without meeting this requirement will be considered invalid.
The Theory of Automata course introduces students to the fundamental concepts of formal languages, automata theory, and computation. It provides the theoretical foundation of computer science and serves as the basis for areas such as compiler design, artificial intelligence, machine learning, and algorithm development.
Students will explore mathematical models of computation, including finite automata, pushdown automata, and Turing machines, and learn how these models define the limits of what can be computed. The course also covers formal language classifications (regular, context-free, and recursively enumerable languages), grammars, and the principles of computability and decidability.
The Computer Architecture course provides a comprehensive understanding of how computer systems are designed and function. It covers the interaction between hardware and software, focusing on instruction execution, data flow, and system performance.
Students will study instruction set architecture (ISA), processor organization, control unit design, pipelining, memory hierarchy (cache, main memory, and virtual memory), and input/output systems. The course also introduces parallelism and multicore processors to highlight modern trends in computer design.
The aim of this course is to build the foundation of database design, implementation and management from theory and practical perspectives. The focus of this course would be on design and development of relational model and relational query languages associated with such model. The basic concepts of concurrency control and transaction processing will also be covered. In addition to the theoretical concepts, the course through the lab section, and programming assignments and projects, will require students to use the Oracle / MySQL database systems and develop term projects.
This is an introductory course in Computer Science designed for beginners. Apart from leading the participants through a whirlwind history of computing, the course also develops a feel for web programming through a series of lectures that help the students develop their own web page. Main objective of the course is to build an appreciation for the fundamental concepts in computing and to become familiar with popular PC productivity software.