COURSE/MODULESUMMARY OF INFORMATION ON EACH COURSE/MODULE 1. Version July 2009 (state the date of the last Senate approval) 2. Pre-Requisite/Requirement for Registration TCP1201 Object-Oriented Programming and Data Structures 3. Name(s) of academic/teaching staff Dr. Yeoh Eng Thiam Mr. Nathar Shah 4. 5. Trimester 1 (Delta Level) Semester and Year offered Objective of the course/module/subject in the programme : To provide a thorough introduction to the theory and practice of programming language translation and to provide extensive hands-on experience with compiler construction tools and techniques. 6. Justification for including the subject in the program : This subject trains the student on the application of theoretical concepts and also provides a hands-on development of a complicated software application. The student will learn to develop a software by systematically separating it into individual components and also learn techniques that are applicable in developing other types of software. 7. Subject Learning Outcomes : LO1. Explain the process of translating a program from one language to another language Domain Cognitive Level 2 LO2. Apply lexical and syntax analysis techniques on a given context free grammar Cognitive 3 LO3. Design lexical and syntax analyser phases of a Cognitive compiler LO4. Explain the processes of semantic checking, code Cognitive generation and optimization in a compiler Mapping of Learning Outcomes to Programme Outcomes : Learning Outcomes PO1 PO2 PO3 PO4 PO5 LO1 LO2 LO3 LO4 Assessment Methods and Types : Method and Type Description/Details Assignments Practical work Quiz Written Tutorial Practical work Test Written Final Exam Written Details of Subject 6 8. 9. 10. 2 PO6 PO7 x PO8 x x x Percentage 20% 5% 10% 15% 50% Topics Mode of Delivery (eg : Lecture, Tutorial, Workshop, Seminar, etc.) Indicate allocation of SLT (lecture, tutorial, lab) for each subtopic Lecture 2 1. Introduction to Language Translation Lab Tutorial 2 Language translation systems: interpreters, compilers and assemblers; Language translation phases; Machine-dependent and machineindependent aspects of translation; Main components in compilers; Review of programming language concepts. 2. Lexical Analysis 6 6 8 8 4 4 2 2 Role of lexical analyzer; Specification and recognition of tokens; Application of regular expressions in lexical scanners; Implementation of finite-state automata; Handling lexical errors. 3. Syntax Analysis Role of parsers; Formal definition of context free grammars; Parse tree vs. abstract syntax tree; Recursive-descent parsing; Shift-reduce parsing; Construction of parsing tables; Eliminating ambiguity, left recursion and left factoring; Precedence and Associativity; Syntaxdirected translation; Handling parsing errors. 4. Semantic Analysis Role of semantic analyzer; Symbol table management; Declaration models: binding, visibility, scope, and lifetime; Inherited and synthesized attributes; Annotated syntax tree and dependency graphs; Bottom-up and Top-down evaluation of Attributes; Data type as set of values with set of operations; Semantic models of user-defined types; Equivalence of types; Type-checking models; Type conversion; Type-checking algorithms. 5. Code Generation Role of code generator; Interrmediate code generation; Intermediate representations; Issues in the design of code generator. Instruction selection and register allocation; Addresses in target code; Basic blocks and flow graphs; Run-time environment; Generating codes for arithmetic expressions, Boolean expressions, control structures, and procedure calls. 6. Optimization 2 2 4 4 Local and global optimization; Peep Hole optimization; Optimization of basic blocks; Optimizing using Directed Acyclic Graphs; Global redundancy and data flow analysis; Looping improvement. 7. Tools for language translation Automated generation of lexical and syntax analyzers; Specifying regular expressions for scanner generation; Specifying grammar for parser generation; Handling ambiguities and conflicts; Combining tools for an integrated compiler. Overview of automation tools: Lex, 11. 12. 13. YACC, JLex, Java CUP. Total Student Face to Face Learning Time (SLT) 28 Lecture 28 Tutorials Laboratory/Practical Quiz 0 Assignment 1 Mid Term Test 2 Final Exam 59 Sub Total Total SLT Credit Value Reading Materials : Textbook Aho, Lam, Sethi, Ullman, Compilers: Principles, Techniques, & Tools, 2nd Ed., Addison-Wesley, 2007. Independent Learning 28 28 9 12 4 20 101 160 4 Reference Materials Michael L. Scott, Programming Language Pragmatics, 3rd Ed., Morgan Kaufman, 2009. Keith D. Cooper, Linda Torczon, Engineering a Compiler, Morgan Kaufman, 2003. D. Grune, H. Bal, C. Jacobs, K. Langendoen, Modern Compiler Design, Wiley, 2000. 14. Appendix (to be compiled when submitting the complete syllabus for the programme) : 1. Mission and Vision of the University and Faculty 2. Programme Objectives or Programme Educational Objectives 3. Programme Outcomes (POs) Programming Language Translation 15. Name of Course/Module/Subject 4. Mapping of POs to the 8 MQF domain 5. Mapping of Los to the POs 6. Summary of the Bloom’s Taxonomy’s Domain Coverage in all the Los in the format below : Subject Bloom’s Taxonomy Domain Learning Outcomes Affective Cognitive Psychomotor (please state the learning outcomes) TSE2101 Learning 2 Outcome 1 Learning 3 Outcome 2 Learning 5 Outcome 3 Learning 2 Outcome 4 7. Summary of LO to PO measurement 8. Measurement and Tabulation of result for LO achievement 9. MeasurementTabulation of result for PO achievement Mapping Assessment to Learning Outcomes No. A1 Assessment Assignment (20%) LO1 LO2 X A2 Quiz (5%) X X A3 Tutorial (10%) X X A4 Test (15%) X X A5 Final Exam (50%) X X LO3 X LO4 X X X X X 16. 17. 18. Course /Subject SUMMARY Code Status of Subject MQF Level/Stage TCP2451 ON EACH OF INFORMATION Elective Bachelor - MQF Level 6