Computer Engineering Department

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.
Print the course contents
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
Scroll to Top