|
COM2014 | Programming Languages | 3+0+0 | AKTS:4 | Yıl / Yarıyıl | Bahar Dönemi | Ders Duzeyi | Lisans | Yazılım Şekli | Zorunlu | Bölümü | BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ | Ön Koşul | Yok | Eğitim Sistemi | Yüz yüze , Uygulama | Dersin Süresi | 14 hafta - haftada 3 saat teorik | Öğretim Üyesi | Doç. Dr. Hüseyin PEHLİVAN | Diğer Öğretim Üyesi | YRD. DOÇ. DR. Hüseyin PEHLİVAN, | Öğretim Dili | İngilizce | Staj | Yok | | Dersin Amacı: | Önemli programlama paradigmalarının (emirsel, nesne-tabanlı, fonksiyonel ve lojik) icra modellerini, farklı katmanlarda dil yapılarını (kelimesel, sözdizimsel, içeriksel ve anlamsal) ve diğer önemli programlama dili konularını (tipler, çokbiçimlilik, aşırı yükleme, kapsamlar, aktivasyon kayıtları ve parametre geçişi) incelemenin yanı sıra C, Java ve Haskell gibi dillerde kaynak kod içerisinden modern programlama dillerinin temel prensiplerini sunmaktır. |
Öğrenim Kazanımları | PÖKK | ÖY | Bu dersi başarı ile tamamlayan öğrenciler : | | | ÖK - 1 : | programlama dili sözdizim ve anlambilimini tanımlamak için formal teknikleri kullanabilir. | 2,3,4 | 1,3 | ÖK - 2 : | sözdizim ve anlambiliminin temel çerçevesi verilen yeni dillerde hızlıca programlar yazmaya başlayabilir. | 2,3,4 | 1,3 | ÖK - 3 : | yeni programlama dillerini analiz edebilir ve değerlendirebilir. | 2,3,4 | 1 | ÖK - 4 : | fonksiyonel programlama tarzını uygulayabilir ve çoklu fonksiyonlar gerektiren Haskell programları yazabilir. | 2,3,4 | 1,3 | ÖK - 5 : | statik ve dinamik olarak tiplenen diller arasındaki farkları kavrayabilir. | 2,3,4 | 1 | ÖK - 6 : | çokbiçimlilik, tipleme, aşırı yükleme, erken ve geç bağlama gibi emirsel ve nesneye yönelik özellikleri uygulayabilir. | 2,3,4 | 1,3 | PÖKK :Program öğrenim kazanımlarına katkı, ÖY : Ölçme ve değerlendirme yöntemi (1: Yazılı Sınav, 2: Sözlü Sınav, 3: Ev Ödevi, 4: Laboratuvar Çalışması/Sınavı, 5: Seminer / Sunum, 6: Dönem Ödevi / Proje),ÖK : Öğrenim Kazanımı | |
Dil paradigmaları: Emirsel, nesneye yönelik, fonksiyonel ve lojik programlama. Program sözdizimi: Backus Naur biçimi, gramerler, kelimesel sözdizimsel yapılar, diğer gramer biçimleri. Sözdizim ve anlambilimi: İşleçler, öncelik, birleşme, diğer belirsizlikler, parse ağaçları. Dil sistemleri: Klasik zincir, yorumlayıcılar, sanal makineler, gecikmeli bağlama, profilleme, dinamik derleme, bağlama zamanları. Haskell'e ilk bakış: Hugs sistemi, tipler, sınıflar. Tipler: İlkel ve yapılandırılmış tipler, sıralamalar, diziler, birleşik tipler, alt tipler, tiplerin kullanımları. Haskell'e ikinci bakış: Fonksiyonlar tanımlama, liste türetimi. Çokbiçimlilik: Aşırı yükleme, parametre dönüşümü, parametrik ve alt tip çokbiçimliliği. Haskell'e üçüncü bakış: Yüksek dereceli fonksiyonlar, fonksiyonel ayrıştırıcılar. Kapsam: Tanımlamalar, blokalarla kapsama, etiketlenmiş alanla kapsama, ilkel alanla kapsama, dinamik kapsama. Haskell'e dördüncü bakış: Etkileşimli programlar, tip ve sınıf bildirimleri. Değişkenler için bellek alanları: Aktivasyona özel değişkenler, aktivasyon kayıtları, statik özgüleme, dinamik yığınlar, içice fonksiyonlarla ilgilenme, parametre olarak fonksiyonlar, uzun yaşamlı fonksiyonlar. Bellek yönetimi: Bir bellek modeli, yığınlar, kümeler, bölütleme, güncel küme linkleri. Nesne-yönlendirme: Sınıflar, prototipler, miras, kuşatma, çokbiçimlilik. Parametreler: Uyuşma, parametre geçme yöntemleri. Maliyet modelleri: Listeler için bir maliyet modeli, fonksiyon çağrımları için bir maliyet modeli, diziler için bir maliyet modeli. |
|
Haftalık Detaylı Ders Planı | Hafta | Detaylı İçerik | Önerilen Kaynak | Hafta 1 | Dil Paradigmaları
Çok disiplinli proje grupları ve konularının belirlenmesi | | Hafta 2 | Program Sözdizimi | | Hafta 3 | Sözdizim ve Anlambilimi | | Hafta 4 | Dil Sistemleri | | Hafta 5 | Haskell'e İlk Bakış | | Hafta 6 | Tipler | | Hafta 7 | Haskell'e İkinci Bakış | | Hafta 8 | Çokbiçimlilik ve Kapsam | | Hafta 9 | Arasınav | | Hafta 10 | Haskell'e Üçüncü Bakış | | Hafta 11 | Değişkenler için Bellek Alanları | | Hafta 12 | Haskell'e Dördüncü Bakış | | Hafta 13 | Bellek Yönetimi ve Nesne-yönlendirme | | Hafta 14 | Parametreler
Project presentations | | Hafta 15 | Maliyet Modelleri | | Hafta 16 | Dönem sonu sınavı | | |
1 | Webber, A. B., 2011, Modern Programming Languages: A Practical Introduction, Franklin Beedle & Associates, 572 p.
| | |
1 | Sebesta, R. W., 2019, Concepts of Programming Languages, Pearson, 784 p. | | 2 | Hutton, G., 2016, Programming in Haskell, 2nd ed., Cambridge University Press, 272 p. | | |
Ölçme Yöntemi | Yöntem | Hafta | Tarih | Süre (Saat) | Katkı (%) | Arasınav | 9 | 17/04/2024 | 2 | 50 | Dönem sonu sınavı | 16 | 10/06/204 | 2 | 50 | |
Öğrenci Çalışma Yükü | İşlem adı | Haftalık süre (saat) | Hafta sayısı | Dönem toplamı | Yüz yüze eğitim | 3 | 14 | 42 | Sınıf dışı çalışma | 3 | 14 | 42 | Arasınav için hazırlık | 10 | 1 | 10 | Arasınav | 2 | 1 | 2 | Uygulama | 1 | 14 | 14 | Dönem sonu sınavı için hazırlık | 15 | 1 | 15 | Dönem sonu sınavı | 2 | 1 | 2 | Toplam Çalışma Yükü | | | 127 |
|