KHÜ DERS KATALOG FORMU (COURSE CATALOGUE FORM) Kodu (Code) Dersin Adı Course Name Derleyici Tasarımı Compiler Design Yarıyılı (Semester) Kredisi (Local Credits) AKTS Kredisi (ECTS Credits) Ders Uygulaması, Saat/Hafta (Course Implementation, Hours/Week) Ders Uygulama Laboratuar (Theoretical) (Tutorial) (Laboratory) Bahar 3 8 (Spring) Bölüm / Program Bilgisayar Mühendisliği (Computer Engineering) (Department/Program) Dersin Türü Dersin Dili Seçmeli (Elective) İngilizce (English) (Course Type) (Course Language) Software Engineering, Object-Oriented Languages, Data Structures, Theory of Formal Dersin Önkoşulları Languages and Automata Theory (e.g. Regular Expressions, Deterministic Finite State (Course Prerequisites) Automata, Non-Deterministic Finite State Automata, BNF rules) Temel Bilim Temel Mühendislik Mühendislik Tasarım İnsan ve Toplum Bilim Dersin mesleki bileşene (Basic Sciences) (Engineering Science) (Engineering Design) (General Education) katkısı, % (Course Category by Content, %) CE473 Dersin İçeriği Course Description Derleme aşamaları, sözcüksel analiz, ayrıştırma, tür The phases of compilation, lexical analysis, parsing, denetleme, JVM kodu üretme, ünlü Java derleyicilerini type checking, JVM code generation, survey of famous Java compilers and discussion of modern compiler inceleme ve modern derleyici konuları. issues. Dersin Amacı Course Objectives Derleyici düzenleme ve gerçekleştirme (biçimsel belirtim, sözcüksel ve sözdizimsel analiz algoritmaları dahil olmak üzere), kaynak programın içsel gösterimi, semantik analiz, çalışma zamanı çevresi meseleleri ve kod üretimi. Öğrenciler çağdaş bir dilin büyükçe bir alt kümesi için, sanal bir makinayı hedef alan, bir derleyici yazacaklar. Introduction to compiler organization and implementation, including formal specifications and algorithms for lexical and syntactic analysis, internal representation of the source program, semantic analysis, run-time environment issues and code generation. Students will write a compiler for a reasonably large subset of a contemporary language, targeted to a virtual machine. Dersin Öğrenme Çıktıları Course Learning Outcomes 1. Be able to write parsers and produce an abstract 1. Ayrıştırıcı yazabilme ve soyut söz dizimi ağacı syntax tree. yazabilme. 2. Be able to analyze and generate code for a 2. Bir söz dizimi ağacı ile gösterilen bir programlama programming construct represented by an abstract yapısını çözümleyip, uygun kod üretebilme. syntax tree. 3. Yapılan çalışmaları program açıklamaları ve, tasarım 3. Be able to document your work with program tercihleri, karşılaştıkları problemler ve çözümlerini comments and narratives about design choices, anlatarak döküman haline getirebilme. problems and their fixes. Ders Kitabı (Textbook) Diğer Kaynaklar (Other References) Bill Campbell, Swami Iyer, and Bahar Akbal-Delibaş. Introduction to Compiler Construction in a Java World. Chapman and Hall/CRC Press, 2013. ISBN 1439860882 The Java Language Specification: http://docs.oracle.com/javase/specs/jls/se7/html/index.html The Java Virtual Machine Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/index.html Java 7.0 API: http://docs.oracle.com/javase/7/docs/api/ JavaCC: The Java Parser Generator: https://javacc.java.net Keith Cooper, Linda Torczon, "Engineering a Compiler", Second Edition, Morgan Kaufmann Ödevler Homework Beş programlama odevi Five programming assignments Laboratuar Uygulamaları Laboratory Work Bilgisayar Kullanımı Computer Use Java programlama dili Java Programming Language Diğer Uygulamalar Other Activities Ünlü Java derleyicilerini ve modern derleyici Survey of famous Java compilers and modern compiler konularını araştırma. issues. Faaliyetler Adedi Değerlendirmedeki Katkısı, % (Activities) (Quantity) (Effects on Grading, %) Yıl İçi Sınavları 1 %20 (Midterm Exams) Kısa Sınavlar (Quizzes) Ödevler 5 %40 Değerlendirme (Homework) Sistemi Projeler (Projects) (Assessment Criteria) Dönem Ödevi/Projesi (Term Paper/Project) Laboratuar Uygulaması (Laboratory Work) Diğer Uygulamalar (Other Activities) Final Sınavı 1 %40 (Final Exam) DERS PLANI (COURSE PLAN) Hafta (Week) 1 2 3 4 5 6 7 8 9 10 11 Konular Topics Giriş: derleyicilere karşı yorumlayıcılar, derleyici yapısı. Java Virtual Machine ve çalışma zamanı çevresi. j—derleyicisi haritası Sözcüksel çözümleme. Düzenli deyimler, sonlu durum otomatı ve deterministik sonlu durum otomatı. İçerikten Bağımsız Gramer ve ayrıştırma. Yukarıdan-aşağı ayrıştırma. Özyinelemeli ayrıştırıcılar. Ayrıştırıcı üretici kullanma. JavaCC Ara sınav için tekrar Ara sınav Semantik çözümleme. JVM Kodu üretimi. Introduction: compilers vs. interpreters, compiler structure. The Java Virtual Machine and its run-time environment. A map of the j-- compiler. Lexical analysis (scanning). expressions, fsa and dfa. Regular Dersin Çıktıları (Course Outcomes) 1,2 1,2 1,2 1,3 Context-free grammars and parsing. Top-down parsing. Recursive descent. 1 1,3 Using a parser generator. JavaCC Recap for the Midterm Exam Midterm Exam Semantic analysis. JVM Code generation. 1,3 2,3 2,3 12 13 14 Optimizasyona giriş Meşhur Derleyiciler Final sınavı için tekrar Introduction to Optimization Celebrity compilers Recap for the Final Exam 2 1,2 Dersin Bilgisayar Mühendisliği Program Çıktılarına Katkısı (Contribution of the Course to Computer Engineering Program Outcomes) Program Çıktıları Katkı Seviyesi (Contribution level) 1 2 3 Program Outcomes a Temel Bilimler, Temel Mühendislik ve Bilgisayar Mühendisliği tasarım ilke ve yöntemlerini, mühendislik problemlerinin modellenmesi ve çözümü için uygulayabilme becerisi Ability to apply the knowledge of mathematics, science and engineering principles to solve problems in electronics and communications engineering b Ayrık Matematik kavram ve konularını uygulayabilme becerisi Ability to understand and apply discrete mathematics Karmaşık mühendislik problemlerini tanımlama, veri toplama, yorumlama, problemleri analiz etme, modelleme ve etkin çözümler geliştirme ve uygulama becerisi Donanım ve Yazılım bileşenleri ile bir bilgisayar sisteminin, gerçekçi kısıtlar ve koşullar altında, analizini, tasarımını ve yönetimini, modern mühendislik yöntemleri ile gerçekleştirebilme becerisi Modern mühendislik teknik ve araçları ile bilişim teknolojileri ve yazılımlarını geliştirme, seçme ve etkin bir şekilde kullanabilme becerisi Mühendislik problemlerinin incelenmesi için laboratuvar ve bilgisayar ortamında deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisi Tek ve çok disiplinli takım çalışması yürütebilme becerisi, buna yönelik bireysel becerilere de sahip olma Türkçe ve İngilizce olarak, yazılı ve sözlü etkili iletişim kurabilme becerisi, Kendi alanındaki uluslararası çalışmaları takip edebilme becerisi Ability to define complex engineering problems, collect, analyze data, analyze problems and develop models and implement solutions for the engineering problems c d e f g h i j Yaşam boyu öğrenmenin gerekliliği bilinci, bilimi ve teknolojideki gelişmeleri izleyerek kendini sürekli yenileyebilme becerisi, Mesleki ve etik sorumluluk bilinci k Proje yönetimi, girişimcilik ve toplam kalite yönetimi konularında farkındalık l Çağdaş toplumsal sorunlara duyarlılık, mühendislik çözümlerinin etik ve hukuksal sonuçları konusunda farkındalık. X X Ability to analyze, design and manage the hardware/software computer system requirements with limited resources and conditions by modern engineering principles X Ability to use modern engineering techniques, tools and information technologies and develop software equipment and software Ability to conduct lab experiment with using computer and to have the ability of collecting data, analyze, interpret data and to solve engineering problems X Ability to work on multi disciplinary topics with team as well as individually Ability to communicate Turkish and English very well with written and oral form Ability to follow international works in his or her field Ability to follow technological innovations and to engage in life-long learning in order to adapt himself/herself to the changing conditions of the future with professional and ethical responsibility Ability to make a difference about the project managements, entrepreneurships, quality controls An understanding of current/contemporary issues and impact of engineering solutions in legal and ethical levels X X 1: Az (Little), 2. Kısmi (Partial), 3. Tam (Full) Düzenleyen (Prepared by) Tarih (Date) Bahar Delibaș 23/1/2017 İmza (Signature)