Course code | CSCI3120 |
Course title | Compiler Construction 編譯程序構造 |
Course description | The course aims at teaching students about compiler development methodology and its associated technology to modern applications. The course contents included formal aspects, lexical analysis, syntax analysis, syntax-directed translation, run-time environments, intermediate code generation, code generation and code optimization. 本科旨在教授學生有關編譯程序開發方法及其於現代應用之相關技術。本科內容包括形式方面、詞法分析、語法分析、語法導向之翻譯、運行時環境、中間代碼之生成、代碼生成及編碼優化。 |
Unit(s) | 3 |
Course level | Undergraduate |
Pre-requisite | CSCI3130 |
Semester | 1 or 2 |
Grading basis | Graded |
Grade Descriptors | A/A-: EXCELLENT – exceptionally good performance and far exceeding expectation in all or most of the course learning outcomes; demonstration of superior understanding of the subject matter, the ability to analyze problems and apply extensive knowledge, and skillful use of concepts and materials to derive proper solutions. B+/B/B-: GOOD – good performance in all course learning outcomes and exceeding expectation in some of them; demonstration of good understanding of the subject matter and the ability to use proper concepts and materials to solve most of the problems encountered. C+/C/C-: FAIR – adequate performance and meeting expectation in all course learning outcomes; demonstration of adequate understanding of the subject matter and the ability to solve simple problems. D+/D: MARGINAL – performance barely meets the expectation in the essential course learning outcomes; demonstration of partial understanding of the subject matter and the ability to solve simple problems. F: FAILURE – performance does not meet the expectation in the essential course learning outcomes; demonstration of serious deficiencies and the need to retake the course. |
Learning outcomes | At the completion of this course, the student should be able to 1. demonstrate knowledge and understanding of the principles governing all phases of the compilation process; 2. design and apply the standard algorithms and techniques to implement a full compiler or compiler components for novel or application-specific languages; 3. appraise the key strengths and limits of compiler technology in relation to the target machine characteristics.. |
Assessment (for reference only) |
Essay test or exam: 45% Assignments: 40% Short answer test or exam: 15% |
Recommended Reading List | 1. [ASU86] Aho, A.V., Sethi, R., and Ullman, J.D., Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986. (Reserved in UL) 2. [ALS+07] Aho, A.V., Lam, M.S., Sethi, R., and Ullman, J.D., Compilers: Principles, Techniques, & Tools, Second Edition, Addison-Wesley, 2007. (Availabe in University Bookstore & reserved in UL) 3. [AeK01] Allen, R. and Kennedy, K., Optimizing Compilers for Modern Architectures, Morgan Kaufmann, 2001. 4. [App02] Appel, A.W., Modern Compiler Implementation in Java, Cambridge University Press, 2002. 5. [Cop07] Copeland, T., Generating Parsers with JavaCC, Centennial Books, 2007. 6. [CoT04] Cooper, K.D. and Torczon, L., Engineering a Compiler, Morgan Kaufmann, 2004. 7. [Ric09] Rich, E., Automata, Computability, and Complexity, Prentice Hall, 2009. 8. [Seb08] Sebesta, R.W., Concepts of Programming Languages, 8/e, Addison Wesley, 2008. 9. [Lia07] Liang, Y.D., Introduction to Java Programming – Comprehensive Version, 6/e, Prentice Hall, 2007. 10. [Kle09] Kelppe, A., Software Language Engineering, Addison-Wesley, 2009. |
CSCIN programme learning outcomes | Course mapping |
Upon completion of their studies, students will be able to: | |
1. identify, formulate, and solve computer science problems (K/S); | |
2. design, implement, test, and evaluate a computer system, component, or algorithm to meet desired needs (K/S); |
T |
3. receive the broad education necessary to understand the impact of computer science solutions in a global and societal context (K/V); | |
4. communicate effectively (S/V); |
T |
5. succeed in research or industry related to computer science (K/S/V); |
T |
6. have solid knowledge in computer science and engineering, including programming and languages, algorithms, theory, databases, etc. (K/S); | |
7. integrate well into and contribute to the local society and the global community related to computer science (K/S/V); | |
8. practise high standard of professional ethics (V); | |
9. draw on and integrate knowledge from many related areas (K/S/V); |
|
Remarks: K = Knowledge outcomes; S = Skills outcomes; V = Values and attitude outcomes; T = Teach; P = Practice; M = Measured |