Bilgisayar Mühendisliği | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu: | YAZ006 | ||||
Ders İsmi: | Derleyiciler | ||||
Ders Yarıyılı: | Bahar | ||||
Ders Kredileri: |
|
||||
Öğretim Dili: | Türkçe | ||||
Ders Koşulu: | |||||
Ders İş Deneyimini Gerektiriyor mu?: | Hayır | ||||
Dersin Türü: | Bölüm/Program Seçmeli | ||||
Dersin Seviyesi: |
|
||||
Dersin Veriliş Şekli: | E-Öğrenme | ||||
Dersin Koordinatörü: | Dr. Öğr. Üy. MUHAMMED DAVUD | ||||
Dersi Veren(ler): | Buse Yılmaz | ||||
Dersin Yardımcıları: |
Dersin Amacı: | Derleyicilerin yapısını öğrenmek, kod üretme ve optimizasyon adımlarına hakim olmak, ders sonunda küçük ve basit bir dil yazabilmek. Derleyici optimizasyonları ve kod performansı arasındaki ilişkiyi anlamak. |
Dersin İçeriği: | Tarayıcılar, ayrıştırıcılar ve sözlükler, Ara Temsil, bağlama duyarlı analiz, LLVM araç zinciri, kod oluşturma, veri akışı analizi, kayıt ayırma |
Bu dersi başarıyla tamamlayabilen öğrenciler;
|
Hafta | Konu | Ön Hazırlık |
1) | Giriş, Derleyicilere Genel Bakış | |
2) | Tarama, Ayrıştırma, Semantik İşleme, Ayrıştırmaya Genel Bakış | |
3) | Ayrıştırma, LLVM'ye genel bakış | |
4) | Semantik Analiz ve Tip Kontrolü | |
5) | Orta Düzey Temsil, bağlama duyarlı analiz, LLVM ile deneme | |
6) | kod üretimine giriş | |
7) | kod oluşturma, Operasyonel Semantik, Ara Kod ve Yerel Optimizasyon | |
8) | kod üretimi, lokal optimizasyonlar | |
9) | ara sınav | |
10) | kod üretimi, lokal optimizasyonlar | |
11) | kod üretimi, global optimizasyonlar | |
12) | arka uç, talimat seçimi ve zamanlama | |
13) | arka uç, Kayıt tahsisi | |
14) | performans darboğazlarını algılama, derleyici geçişlerini kullanarak kodun enstrümantasyonu |
Ders Notları / Kitaplar: | Engineering a Compiler, Second Edition Keith Cooper, Linda Torczon. 2011, Morgan Kaufmann. ISBN: 978-0-12-088478-0 |
Diğer Kaynaklar: | Engineering a Compiler, Second Edition Keith Cooper, Linda Torczon. 2011, Morgan Kaufmann. ISBN: 978-0-12-088478-0 |
Ders Öğrenme Kazanımları | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Program Kazanımları | |||||||||||
1) Matematik, bilim ve bilgisayar mühendisliği prensipleri hakkında yeterli bilgiye sahip olma, hem teorik hem de pratik olarak, ve bu bilgiyi karmaşık mühendislik problemlerine uygulayabilme becerisi. | |||||||||||
2) Etik prensiplere, mesleki ve etik sorumluluğa uygun davranma; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi sahibi olma | |||||||||||
3) Proje yönetimi, risk yönetimi ve değişim yönetimi gibi iş uygulamaları hakkında bilgi; girişimcilik ve yenilik farkındalığı; sürdürülebilir kalkınma hakkında bilgi. | |||||||||||
4) Bilgisayar mühendisliği uygulamalarının sağlık, çevre ve güvenlik üzerindeki etkileri ve bilgisayar mühendisliğine yansıyan dönemin sorunları hakkında bilgi sahibi olma; bilgisayar mühendisliği çözümlerinin yasal sonuçları konusunda farkındalık. | |||||||||||
5) Uygun analiz ve modelleme tekniklerini kullanarak karmaşık bilgisayar mühendisliği problemlerini tanımlama, formülleme ve çözebilme yeteneği. | |||||||||||
6) Belirli gereksinimleri karşılayan ve gerçekçi kısıtlar ve koşullar altında çalışan karmaşık bilgisayar sistemleri, cihazlar veya ürünler tasarlama ve geliştirme yeteneği, modern tasarım yöntemlerini kullanma yeteneği. | |||||||||||
7) Sözlü ve yazılı iletişim becerileriyle etkili iletişim kurabilme; en az bir yabancı dil bilgisi; etkili raporlar yazabilme ve yazılı raporları anlayabilme, tasarım ve üretim raporları hazırlayabilme, etkili sunumlar yapabilme, açık ve anlaşılır talimatlar verip alabilme yeteneği. | |||||||||||
8) Yaşam boyu öğrenme gerekliliğinin farkında olma; bilgiye erişme yeteneği, bilim ve teknolojideki gelişmeleri takip etme ve sürekli yenileme yeteneği. | |||||||||||
9) Karmaşık bilgisayar mühendisliği problemlerinin analizi ve çözümü için kullanılan modern teknikleri ve araçları geliştirme, seçme ve kullanabilme yeteneği, bilgi teknolojilerini etkili bir şekilde kullanabilme yeteneği. | |||||||||||
10) Karmaşık bilgisayar mühendisliği problemleri veya araştırma konularının incelenmesinde deney planlama ve yürütme, veri toplama ve analiz etme, sonuçları yorumlama yeteneği. | |||||||||||
11) Disiplin içi ve çok disiplinli ekiplerde etkili bir şekilde çalışma yeteneği; bireysel çalışma becerileri. |
Etkisi Yok | 1 En Düşük | 2 Orta | 3 En Yüksek |
Dersin Program Kazanımlarına Etkisi | Katkı Payı | |
1) | Matematik, bilim ve bilgisayar mühendisliği prensipleri hakkında yeterli bilgiye sahip olma, hem teorik hem de pratik olarak, ve bu bilgiyi karmaşık mühendislik problemlerine uygulayabilme becerisi. | |
2) | Etik prensiplere, mesleki ve etik sorumluluğa uygun davranma; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi sahibi olma | |
3) | Proje yönetimi, risk yönetimi ve değişim yönetimi gibi iş uygulamaları hakkında bilgi; girişimcilik ve yenilik farkındalığı; sürdürülebilir kalkınma hakkında bilgi. | |
4) | Bilgisayar mühendisliği uygulamalarının sağlık, çevre ve güvenlik üzerindeki etkileri ve bilgisayar mühendisliğine yansıyan dönemin sorunları hakkında bilgi sahibi olma; bilgisayar mühendisliği çözümlerinin yasal sonuçları konusunda farkındalık. | |
5) | Uygun analiz ve modelleme tekniklerini kullanarak karmaşık bilgisayar mühendisliği problemlerini tanımlama, formülleme ve çözebilme yeteneği. | |
6) | Belirli gereksinimleri karşılayan ve gerçekçi kısıtlar ve koşullar altında çalışan karmaşık bilgisayar sistemleri, cihazlar veya ürünler tasarlama ve geliştirme yeteneği, modern tasarım yöntemlerini kullanma yeteneği. | |
7) | Sözlü ve yazılı iletişim becerileriyle etkili iletişim kurabilme; en az bir yabancı dil bilgisi; etkili raporlar yazabilme ve yazılı raporları anlayabilme, tasarım ve üretim raporları hazırlayabilme, etkili sunumlar yapabilme, açık ve anlaşılır talimatlar verip alabilme yeteneği. | |
8) | Yaşam boyu öğrenme gerekliliğinin farkında olma; bilgiye erişme yeteneği, bilim ve teknolojideki gelişmeleri takip etme ve sürekli yenileme yeteneği. | |
9) | Karmaşık bilgisayar mühendisliği problemlerinin analizi ve çözümü için kullanılan modern teknikleri ve araçları geliştirme, seçme ve kullanabilme yeteneği, bilgi teknolojilerini etkili bir şekilde kullanabilme yeteneği. | |
10) | Karmaşık bilgisayar mühendisliği problemleri veya araştırma konularının incelenmesinde deney planlama ve yürütme, veri toplama ve analiz etme, sonuçları yorumlama yeteneği. | |
11) | Disiplin içi ve çok disiplinli ekiplerde etkili bir şekilde çalışma yeteneği; bireysel çalışma becerileri. |
Yarıyıl İçi Çalışmaları | Aktivite Sayısı | Katkı Payı |
Laboratuvar | 5 | % 0 |
Ödev | 3 | % 30 |
Ara Sınavlar | 1 | % 30 |
Final | 1 | % 40 |
Toplam | % 100 | |
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI | % 60 | |
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI | % 40 | |
Toplam | % 100 |
Aktiviteler | Aktivite Sayısı | İş Yükü |
Ders Saati | 16 | 32 |
Laboratuvar | 16 | 32 |
Sınıf Dışı Ders Çalışması | 16 | 48 |
Ödevler | 2 | 4 |
Ara Sınavlar | 1 | 2 |
Final | 1 | 2 |
Toplam İş Yükü | 120 |