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ı CE 473 Bahar 03+00+00 Zorunlu 3 8
Akademik Birim: Bilgisayar Mühendisliği Bölümü
Öğrenim Türü: Örgün Eğitim
Ön Koşullar Yazılım Mühendisliği, Nesneye Yönelik Programlama, Veri Yapıları, Kurallı/Düzenli İfadeler, Sonlu Durum Otomatı (Deterministik Sonlu Durum Otomatı ve Deterministik Olmayan Sonlu Durum Otomatı), Backus–Naur Form kuralları
Öğrenim Dili: İngilizce
Dersin Düzeyi: Lisans
Dersin Koordinatörü: Tamer DAĞ
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. Öğrenciler çağdaş bir dilin büyükçe bir alt kümesi için, sanal bir makinayı hedef alan, bir derleyici yazacaklar.
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 becerisi.
  • 2- Bir söz dizimi ağacı ile gösterilen bir programlama yapısını çözümleyip, uygun kod üretebilme becerisi.
  • 3- Yapılan çalışmaları program açıklamaları yanısıra tasarım tercihleri, karşılaştıkları problemler ve çözümlerini anlatarak döküman haline getirebilme becerisi.
Dersin Öğrenme Yöntem ve Teknikleri Sınıf anlatımı


HAFTALIK PROGRAM

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


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:
https://docs.oracle.com/javase/specs/jls/se16/html/index.html

The Java Virtual Machine Specification:
https://docs.oracle.com/javase/specs/jvms/se16/html/index.html

Java 16 API:
https://docs.oracle.com/en/java/javase/16/docs/api/index.html

JavaCC: The Java Parser Generator:
https://javacc.github.io/javacc/

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 Saati14342
Ödev530150
Dersle İlgili Sınıf Dışı Etkinlikler133
Ara Sınavlar/Sözlü Sınavlar/Kısa Sınavlar122
Final Sınavı133
Toplam İş Yükü (saat):200


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

# PY1 PY2 PY3 PY4 PY5 PY6 PY7 PY8 PY9 PY10 PY11 PY12
OC1 3   2 3 3              
OC2 3   2 3 3              
OC3               2