CEN324
Ders Bilgileri
Ders Kodu Yarıyıl T + U (Saat) Kredi AKTS
Derleyici tasarımı CEN 324 6 3 + 0 3 6
 
Ön Koşul Dersleri Veri Yapıları (CEN201) ve güçlü programlama (CEN 122/230) yetenekleri
 
Dersin Dili İngilizce
Dersin Seviyesi Lisans
Dersin Türü Zorunlu
Dersi Veren Öğretim Üyesi Dr. Öğr. Üyesi Shahid Alam
Dersin Yardımcıları  
Dersin Amacı Scritping dilleri, C veya Java gibi diğer yüksek seviyeli programlama dillerinden farklı bir programlama paradigması sağlar. Genellikle, C veya Java'dan daha yüksek düzeyde programlama ve daha hızlı uygulama geliştirme yöntemleri sağlarlar. Bu ders, programlama dillerinin ana yapılarına, kod programlama paradigması ile ilgili bir giriş sağlar. Bu kavramları öğretmek için Python'ı bir araç olarak kullanır. Ders, Python'ın temel ve bazı ileri özelliklerinin çoğunu kapsamaktadır.
Dersin İçeriği 1. Programlama dillerine özellikle dilleri betiklemeye giriş.
2. Temel veri türleri, Diziler dahil olmak üzere gelişmiş veri türleri - pürüzlü diziler, dilimler, ilişkisel -, kopyalar, listeler, sözlükler, yineleyiciler, değişebilir / değişmez.
3. İfade ve Atama ifadeleri - operatör aşırı yüklenmesi, karma mod, zorlama, kısa devre değerlendirmesi.
4. Kontrol yapıları - çoklu seçim, yinelemeli ifadeler, koşulsuz dallanma.
5. Alt programlar - temel tanım, parametreler, aşırı yükleme, yuvalama.
6. Soyut veri tipleri ve kapsülleme - giriş, tasarım sorunları, örnekler.
7. Nesne yönelimli programlama desteği - sınıflar, yöntemler, üyeler, fonksiyon ve operatör aşırı yüklenme, kalıtım, nesne oluşturma ve imha etme, çöp toplama.
8. İstisna yönetimi - giriş, hatalar ve istisnalar.
9. Eşzamanlılık (isteğe bağlı) -yaştırma, diş açma, çoklu işlem.
 
Dersin Öğrenme Çıktıları Öğretim Yöntemleri Ölçme Yöntemleri
Derleyici inşasının tüm sürecini daha iyi anlamak. 1, 2, 3, 4, 5, 10 A, B, C
Sırasıyla düzenli ifadeleri ve dilbilgileri kullanarak bir programlama dilinin sözdizimsel ve sözdizimsel yapısını tanımlamak. Tip bilgisi ile sözdizimi ağaçlarının hata raporlaması ve dekorasyonu ile kontrol tipi. 1, 4, 6, 10, 11, 14 A, B, C
Bir kaynak programdan ara veya montaj kodu oluşturan derleme şemaları tasarlamak ve uygulamak. 1, 5, 6, 8, 14, 15 B, C, D, E
Farklı mimariler için programlama dili özelliklerinin uygulanmasının zorluğunu belirlemek.
1, 3, 11, 15 A, B, C, D, E
 
Öğretim Yöntemleri:  1: Anlatım, 2: Soru-Cevap, 3: Tartışma, 4: Alıştırma ve Uygulama, 5: Gösteri, 6: Gösterip Yaptırma,, 7: Rol Yapma, 8: Grup Çalışmas, 9: Benzetim, 10: Beyin Fırtıması, 11: Örnek Çalışmalar, 12: Deney/Laboratuvar, 13: Bireysel Çalışma, 14: Proje Çalışması, 15: Proje Temelli Öğrenme, 16: Tanımsız
Ölçme Yöntemleri:  A: Sınav , B: Sözlü Sınav, C: Ödev, D: Proje/Tasarım, E: Performans Görevi, F: Portfolyo, G: Tanımsız
 
DERS AKIŞI
Hafta Konular       Ön Hazırlık
1 Giriş  
2 Sözcüksel Analiz  
3 Ayrıştırma  
4 Anlamsal Analiz  
5 Çalışma zamanı Ortamları  
6 Kod Üretimi İçin Hedef Makine  
7 Kod Üretimi İçin Hedef Makine-devam  
8 Orta Seviye Kod Üretimi  
9 Optimizasyonlar  
10 Optimizasyonlar - devam  
11 Hedef Kod Üretimi  
12 Hedef Kod Üretimi-devam  
13 Hedef Kod Üretimi-devam  
14 Problem Çözme  
           
KAYNAKLAR
Ders Notu Compiler Construction: Principles and Practice, Kenneth C. Louden, 1997.
 
Diğer Kaynaklar Compilers: Principles, Techniques, and Tools (2nd Edition), Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman, 2006.
 
 
           
           
MATERYAL PAYLAŞIMI 
Dökümanlar 1-8 hafta  
Sınav Soruları  
9-14 hafta  
Ödevler Ödevler  
Sınavlar Sınav Tarihleri  
ArasinavTarihleri  
 
DEĞERLENDİRME SİSTEMİ
YARIYIL İÇİ ÇALIŞMALARI SAYISI KATKI YÜZDESİ
Sınıf Katılımı   5
Ara Sınav 1 30
Kısa sınav 1 20
Ödev 4 20
Toplam 75
Yıliçinin Başarıya Oranı 75
Finalin Başarıya Oranı 25
Toplam 100
 
DERS KATEGORİSİ Mesleki
 
DERSİN PROGRAM ÇIKTILARINA KATKISI
No Program Öğrenme Çıktıları Katkı Düzeyi
1 Matematik, Fen Bilimleri ve temel mühendislik alanlarında bilgi birikimi ve bu birikimi uygulamaya dönüştürebilme yeteneğine sahip olma, 5
2 Bilgisayar Mühendisliği’nin temel prensipleri hakkında bilgiye sahip olma ve bu alandaki problemleri tanımlama, modelleme ve çözme yeteneğine sahip olma, 5
3 Bilişim teknolojileri bilgisi ve bu teknolojileri aktif olarak kullanabilme yeteneğine sahip olma, 5
4 Kendi alanında veri toplama, deney yapma, deney sonuçlarını analiz ve yorumlama yeteneğine sahip olma, 5
5 Problem çözümlerinde ve uygulamalarda modern mühendislik araçlarını ve yöntemlerini kullanabilme yeteneğine sahip olma, 4
6 Sistem ve sistem bileşenini veya süreci istenilen kriterlere uygun olarak tasarlama ve uygulama yeteneğine sahip olma, 4
7 Disiplin içi ve disiplinler arası takımlarda çalışabilme yeteneğine sahip olma, 4
8 Bilgi edinimi araştırması yapabilme, veri tabanlarına ve diğer bilgi kaynaklarına erişebilme becerisine sahip olma, 4
9 Yaşam boyu öğrenme gerekliliğinin farkındalığına sahip olma ve bu farkındalığı uygulayarak kendini yenileyebilme yeteneği sahip olma, 3
10 Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi uygulamalar ile girişimcilik ve yenilikçilik hakkında bilgi sahibi olma, 3
11 İletişim de etkin olabilme yeteneğine sahip olma, 1
12 Mesleki özgüven, bağımsız davranma, yaratıcılık gibi özelliklere sahip olma, 4
13 Mesleki ve etik sorumluluk bilinçlerine sahip olma, 1
KATKI DÜZEYİ: 1:Çok-Düşük, 2: Düşük, 3: Orta, 4: Yüksek, 5: Çok-Yüksek
AKTS / İŞ YÜKÜ TABLOSU
Etkinlik SAYISI Süresi (saat) Toplam İş Yükü (saat)
Ders Süresi (Sınav haftası dahildir: 16x toplam ders saati) 16 3 48
Sınıf Dışı Ders Çalışma Süresi(Ön çalışma, pekiştirme) 16 2 32
Ödev 4 10 40
Proje 1 10 10
Ara sınav 1 38 38
Final sınavı 1 12 12
Toplam İş Yükü 180
Toplam İş Yükü / 30 (saat) 6
Dersin AKTS Kredisi 6