DERS TANITIM ve UYGULAMA BİLGİLERİ

Dersin Adı Kodu Yarıyıl T+U+L (saat/hafta) Türü (Z / S) Yerel Kredi AKTS
Derleyici Tasarımı CMPE 473 Bahar 03+00+00 Seçmeli 3 5
Akademik Birim: Mühendislik ve Doğa Bilimleri Fakültesi
Öğrenim Türü: Örgün Eğitim
Ön Koşullar Yok
Öğrenim Dili: İngilizce
Dersin Düzeyi: Lisans
Dersin Koordinatörü: Rahim DEHKHARGHANİ & Taner ARSAN
Dersin Amacı: Bu ders öğrencilere 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 öğretmeyi amaçlar. Öğrencilerin çağdaş bir dilin büyükçe bir alt kümesi için, sanal bir makinayı hedef alan, bir derleyici yazması planlanmıştır.
Dersin İçeriği: Derleme aşamaları, sözcüksel analiz, ayrıştırma, tür denetleme, JVM kodu üretme, ünlü Java derleyicilerini inceleme ve modern derleyici konuları.
Dersin Öğrenme Çıktıları (ÖÇ):
  • 1- Ayrıştırıcı yazabilme ve soyut söz dizimi ağacı yazabilme.
  • 2- Bir söz dizimi ağacı ile gösterilen bir programlama yapısını çözümleyip, uygun kod üretebilme
  • 3- Yapılan çalışmaları program açıklamaları ve, tasarım tercihleri, karşılaştıkları problemler ve çözümlerini anlatarak döküman haline getirebilme.
Dersin Öğrenme Yöntem ve Teknikleri Ders ve uygulama


HAFTALIK PROGRAM

HaftaKonularÖn Hazırlık ÖÇ
1 Giriş: Derleyicilere karşı yorumlayıcılar, derleyici yapısı. Ders notları. 1,2
2 Java Virtual Machine ve çalışma zamanı çevresi. Ders notları. 1,2
3 j—derleyicisi haritası Ders notları. 1,2
4 Sözcüksel çözümleme. Düzenli deyimler, sonlu durum otomatı ve deterministik sonlu durum otomatı. Ders notları. 1,3
5 İçerikten Bağımsız Gramer ve ayrıştırma. Ders notları. 1
6 Yukarıdan-aşağı ayrıştırma. LL(1) ayrıştırıcılar. Ders notları. 1,3
7 Yukarıdan-aşağı ayrıştırma. Özyinelemeli ayrıştırıcılar. Ders notları. 1,3
8 Ayrıştırıcı üretici kullanma. JavaCC Ders notları. 1,3
9 Ara sınav Ders notları. 3,4
10 Semantik çözümleme. Ders notları. 2,3
11 Semantik çözümleme. JVM Kodu üretimi. Ders notları. 2,3
12 JVM Kodu üretimi. Ders notları. 2,3
13 Optimizasyona giriş Ders notları. 2
14 Meşhur Derleyiciler Ders notları. 1,2


ZORUNLU ve ÖNERİLEN OKUMALAR

Bill Campbell, Swami Iyer, and Bahar Akbal-Delibaş. Introduction to Compiler Construction in a Java World. Chapman and Hall/CRC Press, 2013. ISBN 1439860882


DİĞER KAYNAKLAR

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


DEĞERLENDİRME SİSTEMİ

Yarıyıl İçi ÇalışmalarıSayıKatkı Payı (%)
Ödev 5 40
Ara Sınavlar/Sözlü Sınavlar/Kısa Sınavlar 1 20
Final Sınavı 1 40
Total: 7 100


İŞ YÜKÜ HESAPLAMASI

EtkinliklerSayısıSüresi (saat)Toplam İş Yükü (saat)
Ders Saati31442
Ödev5525
Ara Sınavlar/Sözlü Sınavlar/Kısa Sınavlar12020
Final Sınavı14040
Toplam İş Yükü (saat):127


PROGRAM YETERLİLİKLERİ (PY) ve ÖĞRENME ÇIKTILARI (ÖÇ) İLİŞKİSİ

# PY1 PY2 PY3 PY4 PY5 PY6 PY7 PY8
OC1                
OC2                
OC3