The role of the compiler. Lexical analysis, regular expressions, deterministic and non-deterministic automata, methods of constructing a lexical analyzer, lexical analyzer generators. Syntactic analysis, context-free grammars, productions, parse trees, ambiguous grammars, elimination of ambiguity. Construction of parsers, top-down parsing, recursive descent parsing, predictive parsing, LL(k), LL(1) parsers, and grammars. Abstract syntax trees, bottom-up parsing, conflicts in bottom-up parsing, LR(k), LR(1) parsers, and grammars. Construction of the SLR parsing table, improvements. Attribute grammars, syntax-directed translation, implementation in LL and LR parsers. Intermediate code, the alpha language, use of hidden variables, intermediate code generation. The alpha virtual machine, architecture, instruction set, dynamic languages, execution environment and memory organization, final machine code generation, construction of the virtual machine, implementation, and linking of library functions. Optimization issues. Programming lab: construction of a complete compiler using Lex and Yacc type tools, construction of the virtual machine, construction of library functions.
Learning Outcomes
Students, upon successful completion of the course:
• will possess the basic concepts of languages and translators
• will be able to construct a complete compiler using Lex and Yacc type tools
• construction of the virtual machine
• construction of library functions
Student Performance Evaluation
Specific details on grading can be found on the course’ s website
The courses of the Computer Science Department are designated with the letters "CS" followed by three decimal digits. The first digit denotes the year of study during which students are expected to enroll in the course; the second digit denotes the area of computer science to which the course belongs.
First Digit
Advised Year of Enrollment
1,2,3,4
First, Second, Third and Fourth year
5,6
Graduate courses
7,8,9
Specialized topics
Second Digit
Computer Science Area
0
Introductory - General
1
Background (Mathematics, Physics)
2
Hardware Systems
3
Networks and Telecommunication
4,5
Software Systems
6
Information Systems
7
Computer Vision and Robotics
8
Algorithms and Theory of Computation
9
Special Projects
The following pages contain tables (one for each course category) summarizing courses offered by the undergraduate studies program of the Computer Science Department at the University of Crete. Courses with code-names beginning with "MATH" or "PHYS" are taught by the Mathematics Department and Physics Department respectively at the University of Crete.