DEPARTMENT OF SOFTWARE ENGINEERING (ENGLISH)
Bachelor TR-NQF-HE: Level 6 QF-EHEA: First Cycle EQF-LLL: Level 6

Ders Genel Tanıtım Bilgileri

Course Code: 1413002002
Ders İsmi: Compiler Design
Ders Yarıyılı: Spring
Ders Kredileri:
Theoretical Practical Credit ECTS
3 0 3 5
Language of instruction: EN
Ders Koşulu:
Ders İş Deneyimini Gerektiriyor mu?: No
Type of course: Department Elective
Course Level:
Bachelor TR-NQF-HE:6. Master`s Degree QF-EHEA:First Cycle EQF-LLL:6. Master`s Degree
Mode of Delivery: Face to face
Course Coordinator : Dr.Öğr.Üyesi Adem ÖZYAVAŞ
Course Lecturer(s): Assoc. Prof. Fatih KOÇAN
Course Assistants:

Dersin Amaç ve İçeriği

Course Objectives: The aim of this course is to provide students with knowledge and skills in compiler design and development.
Course Content: This course introduces students to methods used to translate from one formal language to another. The course explains the steps used from the browser step to parser design and development. In addition, the course provides information on semantic analysis and local and global compiler optimization. During the course, each student is expected to design a simple compiler using the lex and yacc software tools.

Learning Outcomes

The students who have succeeded in this course;
Learning Outcomes
1 - Knowledge
Theoretical - Conceptual
1) Basic information about compiler steps; ability to use automata theory and knowledge of formal languages.
2 - Skills
Cognitive - Practical
1) Ability to design and develop compilers and browser modules.
3 - Competences
Communication and Social Competence
Learning Competence
1) Ability for compilers to choose case-appropriate parser strategies. Knowledge of alternative methods (top-down or bottom-up, etc.)
2) Knowledge of current technologies required for compiler design and implementation and the ability to use these technologies effectively.
Field Specific Competence
Competence to Work Independently and Take Responsibility

Ders Akış Planı

Week Subject Related Preparation
1) What is a compiler? Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
2) Target Languages A.V. AHO, M.S. LAM, R. SETHI, J.D. ULLMAN, “COMPILERS: PRINCIPLES, TECHNIQUES AND TOOLS, 2nd ED., ADDISON WESLEY, 2006. K.D. COOPER, L. TORCZON, “ENGINEERING A COMPILER”, 2nd ED., MORGAN KAUFMANN, 2012.
3) Formal Grammars Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
4) Intermediate Representations Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
5) Lexical Analysis Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
6) Syntax Analysis Methods Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
7) Error Handling Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
8) Midterm
9) Parser Generators Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
10) Semantic Checking Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
11) Code Generation Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
12) Code Optimization Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
13) A Complete Compiler for VSL Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
14) Evaluating progrmming projects interactively Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly. An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
15) Final Exam
16) Final Week

Sources

Course Notes / Textbooks: Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly.
An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.
References: Levine, J. (John Levine). (2009). Flex and Bison. O'Reilly.
An Introduction to Compiling Techniques : A First Course using ANSI C, LEX and YACC.

Ders - Program Öğrenme Kazanım İlişkisi

Ders Öğrenme Kazanımları

1

2

3

4

Program Outcomes
1) Competent knowledge of mathematics, science and technology, and computer engineering; ability to apply this knowledge to engineering solutions.
2) Skills to design and conduct experiments, collect data, analyze and interpret results.
3) Ability to design a complex system, process, device or product under realistic constraints and conditions to meet specific requirements; ability to apply modern design methods for this purpose.
4) Ability to develop, select and use modern techniques and tools required for analysis and solution of complex problems encountered in engineering practice; ability to use information technologies effectively.
5) Ability to design and conduct experiments, collect data, analyze and interpret results to investigate complex engineering problems or discipline-specific research topics.
6) Ability to work effectively in intra-disciplinary and multi-disciplinary teams; ability to work individually.
7) Ability to communicate effectively in Turkish, both orally and in writing; Knowledge of at least one foreign language; the ability to write and understand written reports effectively, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions.
8) Awareness of the necessity of lifelong learning; the ability to access information, to follow developments in science and technology, and to constantly renew oneself.
9) Acting in accordance with ethical principles, professional and ethical responsibility awareness; information about standards used in engineering applications.
10) Information about business life practices such as project management, risk management and change management; awareness of entrepreneurship, innovation; information about sustainable development.
11) Knowledge about the universal and social effects of engineering applications on health, environment and safety and the problems of the age reflected in the field of engineering; awareness of the legal consequences of engineering solutions.

Ders - Öğrenme Kazanımı İlişkisi

No Effect 1 Lowest 2 Low 3 Average 4 High 5 Highest
           
Program Outcomes Level of Contribution
1) Competent knowledge of mathematics, science and technology, and computer engineering; ability to apply this knowledge to engineering solutions.
2) Skills to design and conduct experiments, collect data, analyze and interpret results.
3) Ability to design a complex system, process, device or product under realistic constraints and conditions to meet specific requirements; ability to apply modern design methods for this purpose.
4) Ability to develop, select and use modern techniques and tools required for analysis and solution of complex problems encountered in engineering practice; ability to use information technologies effectively.
5) Ability to design and conduct experiments, collect data, analyze and interpret results to investigate complex engineering problems or discipline-specific research topics.
6) Ability to work effectively in intra-disciplinary and multi-disciplinary teams; ability to work individually.
7) Ability to communicate effectively in Turkish, both orally and in writing; Knowledge of at least one foreign language; the ability to write and understand written reports effectively, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions.
8) Awareness of the necessity of lifelong learning; the ability to access information, to follow developments in science and technology, and to constantly renew oneself.
9) Acting in accordance with ethical principles, professional and ethical responsibility awareness; information about standards used in engineering applications.
10) Information about business life practices such as project management, risk management and change management; awareness of entrepreneurship, innovation; information about sustainable development.
11) Knowledge about the universal and social effects of engineering applications on health, environment and safety and the problems of the age reflected in the field of engineering; awareness of the legal consequences of engineering solutions.

Öğrenme Etkinliği ve Öğretme Yöntemleri

Ölçme ve Değerlendirme Yöntemleri ve Kriterleri

Yazılı Sınav (Açık uçlu sorular, çoktan seçmeli, doğru yanlış, eşleştirme, boşluk doldurma, sıralama)
Homework

Assessment & Grading

Semester Requirements Number of Activities Level of Contribution
total %
PERCENTAGE OF SEMESTER WORK % 0
PERCENTAGE OF FINAL WORK %
total %

İş Yükü ve AKTS Kredisi Hesaplaması

Activities Number of Activities Duration (Hours) Workload
Course Hours 13 3 39
Study Hours Out of Class 13 4 52
Project 1 35 35
Homework Assignments 2 10 20
Midterms 1 40 40
Final 1 40 40
Total Workload 226