Compilation(INF400)
| Course Code | Course Name | Semester | Theory | Practice | Lab | Credit | ECTS |
|---|---|---|---|---|---|---|---|
| INF400 | Compilation | 7 | 3 | 0 | 0 | 3 | 5 |
| Prerequisites | INF114 |
| Admission Requirements | INF114 |
| Language of Instruction | Turkish |
| Course Type | Compulsory |
| Course Level | Bachelor Degree |
| Course Instructor(s) | Burak ARSLAN ext-gsu@burakarslan.com (Email) |
| Assistant | Eda BAHAR (Email) |
| Objective | This course aims to give a practical account of the programming techniques used in implementing high-level programming languages by compiling into code for stack machines (WebAssembly). As part of the course project, students design and implement a working ahead-of-time compiler in modern C++ for a custom-designed toy language called "Course PL". |
| Content |
1. Introduction, Concepts, Course Scope, Compilation Pipeline 2. C++ Recap 3. Definion of Course PL, PL Ergonomy 4. Lexing: Regexp, Finite Automata, flex 5. Parsing, Abstract Syntax Trees, Context Free Grammars, Syntax-Directed Translation, Top-Down Parsing, Bottom-Up Parsing, bison 6. Midterm Break 7. Lexing & Parsing Recap 8. Semantic Analysis I: Scopes, Types 9. Semantic Analysis II: Rules of Inference, Type Checking 10. Code Generation: Stack Machines, WebAssembly, Browser WASM Runtime 11. Operational Semantics 12. Course PL to WASM I: Resource Management, Primitive Types, Activations 13. Course PL to WASM II: Implementing OOP, Method Dispatch 14. Intermediate Representations, Code Optimization |
| Course Learning Outcomes |
On completion, the students should be able to: - Understand and explain the main techniques and algorithms used in compilers. - Describe the runtime structures used to represent constructs in typical programming languages. - Use compiler construction tools, such as parser generators, to build a simple compiler. |
| Teaching and Learning Methods | Lecture, Discussion, Demonstration, Case Study, Problem Solving, Cooperative Learning, Project, Brain Storming |
| References |
- Compilateurs : principes, techniques et outils – A. Aho, R Sethi, J Ullman – InterEditions - Compilateurs – D. Grune, H. Bal, V. Jacobs,K. Langendoen, Dunod. |
Theory Topics
| Week | Weekly Contents |
|---|---|
| 1 | Introduction, Concepts, Course Scope, Compilation Pipeline |
| 2 | C++ Recap |
| 3 | Definion of Course PL, PL Ergonomy |
| 4 | Lexing: Regexp, Finite Automata, flex |
| 5 | Parsing, Abstract Syntax Trees, Context Free Grammars, Syntax-Directed Translation, Top-Down Parsing, Bottom-Up Parsing, bison |
| 6 | Midterm Break |
| 7 | Lexing & Parsing Recap |
| 8 | Semantic Analysis I: Scopes, Types |
| 9 | Semantic Analysis II: Rules of Inference, Type Checking |
| 10 | Code Generation: Stack Machines, WebAssembly, Browser WASM Runtime |
| 11 | Operational Semantics |
| 12 | Course PL to WASM I: Resource Management, Primitive Types, Activations |
| 13 | Course PL to WASM II: Implementing OOP, Method Dispatch |
| 14 | Intermediate Representations, Code Optimization |
Practice Topics
| Week | Weekly Contents |
|---|
Contribution to Overall Grade
| Number | Contribution | |
|---|---|---|
| Contribution of in-term studies to overall grade | 3 | 60 |
| Contribution of final exam to overall grade | 1 | 40 |
| Toplam | 4 | 100 |
In-Term Studies
| Number | Contribution | |
|---|---|---|
| Assignments | 0 | 0 |
| Presentation | 0 | 0 |
| Midterm Examinations (including preparation) | 0 | 0 |
| Project | 3 | 60 |
| Laboratory | 0 | 0 |
| Other Applications | 0 | 0 |
| Quiz | 0 | 0 |
| Term Paper/ Project | 0 | 0 |
| Portfolio Study | 0 | 0 |
| Reports | 0 | 0 |
| Learning Diary | 0 | 0 |
| Thesis/ Project | 0 | 0 |
| Seminar | 0 | 0 |
| Other | 0 | 0 |
| Make-up | 0 | 0 |
| Toplam | 3 | 60 |
| No | Program Learning Outcomes | Contribution | ||||
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 1 | Matematik, fizik ve mühendislik bilimlerine özgü konularda yeterli bilgi birikimi; bu alanlardaki kuramsal ve uygulamalı bilgileri, mühendislik problemlerinin modellenmesi ve çözümünde kullanabilme becerisi. | X | ||||
| 2 | Karmaşık bilgisayar mühendisliği problemlerini saptama, tanımlama, formüle etme ve çözme becerisi; bu amaçla uygun analiz ve modelleme yöntemlerini seçme ve uygulama becerisi. | X | ||||
| 3 | Yazılımsal veya donanımsal karmaşık bir sistemi, süreci veya donanımı gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisi; bu amaçla modern tasarım yöntemlerini uygulama becerisi. | X | ||||
| 4 | Mühendislik uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları geliştirme, seçme ve kullanma becerisi; bilişim teknolojilerini etkin bir şekilde kullanma becerisi. | X | ||||
| 5 | Analitik düşünce ile bir sistemi, sistem bileşenini ya da süreci analiz etme, modelleme, deney tasarlama ve yapma, veri toplama, çözüm algoritmaları üretebilme, uygulamaya alma ve geliştirme becerileri. | X | ||||
| 6 | Disiplin içi ve çok disiplinli takımlarda etkin biçimde çalışabilme becerisi; bireysel çalışma becerisi. | |||||
| 7 | Türkçe sözlü ve yazılı etkin iletişim kurma becerisi; en az iki yabancı dil bilgisi; etkin rapor yazma ve yazılı raporları anlama, yazılım ve donanım tasarımını, gerekirse teknik resim metotları kullanarak raporlayabilme, etkin sunum yapabilme becerisi. | X | ||||
| 8 | Bilgiye erişebilme ve bu amaçla kaynak araştırması yapabilme, veri tabanları ve diğer bilgi kaynaklarını kullanabilme becerisi | |||||
| 9 | Yaşam boyu öğrenmenin gerekliliği bilinci; kendini sürekli yenileme becerisi. | |||||
| 10 | Mesleki etik ilkelerine uygun davranma, mesleki sorumluluk bilinci; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi. | X | ||||
| 11 | Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgi. | |||||
| 12 | Mühendislik uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları hakkında bilgi. | |||||
| 13 | Bilgisayar mühendisliği uygulamalarının hukuki ve etik boyutları konusunda farkındalık. | |||||
| Activities | Number | Period | Total Workload |
|---|---|---|---|
| Class Hours | 14 | 3 | 42 |
| Working Hours out of Class | 14 | 3 | 42 |
| Midterm Examinations (including preparation) | 1 | 20 | 20 |
| Final Examinations (including preparation) | 1 | 22 | 22 |
| Total Workload | 126 | ||
| Total Workload / 25 | 5.04 | ||
| Credits ECTS | 5 | ||


