|
|
| BIL7151 | Functional Programming | 3+0+0 | AKTS:7.5 | | Yıl / Yarıyıl | Bahar Dönemi | | Ders Duzeyi | Doktora | | Yazılım Şekli | Seçmeli | | Bölümü | BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI | | Ön Koşul | Yok | | Eğitim Sistemi | Yüz yüze | | Dersin Süresi | 14 hafta - haftada 3 saat teorik | | Öğretim Üyesi | Doç. Dr. Hüseyin PEHLİVAN | | Diğer Öğretim Üyesi | Yok | | Öğretim Dili | İngilizce | | Staj | Yok | | | | Dersin Amacı: | | Fonksiyonel dilleri gerçekleme, fonksiyonel programlama tarzının yararları ve fonksiyonel programların bir matematiksel hesaplama süreci olarak oluşturulması gibi konuları anlatarak Haskell dili yardımıyla fonksiyonel programlama paradigmasını sunmaktır. |
| Öğrenim Kazanımları | PÖKK | ÖY | | Bu dersi başarı ile tamamlayan öğrenciler : | | | | ÖK - 1 : | basit problemleri çözmek için temel fonksiyonel teknikleri kullanabilir. | 3 - 10 | 1,3 | | ÖK - 2 : | yüksek dereceli fonksiyonlar tanımlayabilir ve kullanabilir. | 3 - 5 - 10 | 1,3 | | ÖK - 3 : | listeler üzerinde herhangi bir çeşit fonksiyon tanımlayabilir. | 3 - 5 | 1,3 | | ÖK - 4 : | yeni veri tipleri tanımlamak için Haskell ilkelerini kullanabilir. | 3 - 5 - 10 | 1,3 | | ÖK - 5 : | bir tembel fonksiyonel dilin ana özelliklerini anlayabilir. | 3 - 5 | 1,3 | | ÖK - 6 : | fonksiyonel biçimde giriş ve çıkış işlemlerini yönetebilir. | 3 - 5 - 10 | 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ı | | |
| Fonksiyonel programlamaya giriş: Haskell programları, Hugs kullanımı, program sözdizimi, ifadeler, standart kütüphaneler, modüller, hatalar ve hata mesajları. Veri tipleri: Temel tipler ve tanımlamalar, çiftler, listeler, liste türetimi, çokbiçimlilik, aşırı yükleme, öncü ifadeler. Fonksiyon tanımlama: Örüntü eşleme, listeler ve liste örüntüleri, listeler üzerindeki ilkel özçağrılar, fonksiyon seviyeli tanımlamalar, fonksiyon birleşimi, parametre birleşimi, yerel tanımlamalar. Genelleştirme: Listeler üzerindeki hesaplama örüntüleri, yüksek dereceli fonksiyonlar, katlama ve ilkel özçağrı, listeleri parçalama. Tip denetimi: Tekbiçimli tip denetimi, çokbiçimli tip denetimi, tip denetimi ve sınıfları. Cebirsel tipler: Cebirsel tiplere giriş, özçağrılı cebirsel tipler, çokbiçimli cebirsel tipler. Soyut veri tipleri: Tip gösterimleri, kuyruklar, tasarım, benzetim, arama ağaçları, kümeler, ilişkiler ve graflar. Amaçlı hesaplama: Amaçlı değerlendirme, hesaplama kuralları, veriye dayalı programlama, ayrıştırma ifadeleri, sonsuz listeler. Durum çalışmaları: Huffman kodları, kodlama ve dekodlama, Huffman ağaçları oluşturma. Eylemlerle programlama: Giriş/çıkış temelleri, yineleme ve özçağırma, do yapısı, monad'lar, ağaçlar üzerinde monadik hesaplama. |
| |
| Haftalık Detaylı Ders Planı | | Hafta | Detaylı İçerik | Önerilen Kaynak | | Hafta 1 | Fonksiyonel Programlamaya Giriş | | | Hafta 2 | Veri Tipleri | | | Hafta 3 | Çiftler ve Listeler | | | Hafta 4 | Fonksiyon tanımlama | | | Hafta 5 | Özyineleme ve Liste Türetme | | | Hafta 6 | Yüksek Dereceli Fonksiyonlar | | | Hafta 7 | Genelleştirme | | | Hafta 8 | Tiplerin Denetimi | | | Hafta 9 | Arasınav | | | Hafta 10 | Cebirsel Tipler | | | Hafta 11 | Cebirsel Veri Tipleri | | | Hafta 12 | Amaçlı Programlama | | | Hafta 13 | Durum Çalışması: Huffman Ağaçları | | | Hafta 14 | Eylemlerle Programlama | | | Hafta 15 | Durum Çalışması: Ayrıştırıcılar | | | Hafta 16 | Dönem sonu sınavı | | | |
| 1 | Thompson, S. 2001; Haskell: The Craft of Functional Programming, 2nd ed., Addison Wesley, 600 p. | | | 2 | Rabhi, F.A., Lapalme, G. 1999; Algorithms: A Functional Programming Approach, 1st ed., Addison Wesley, 256 p. | | | |
| 1 | Bird, R. 1998; Introduction to Functional Programming using Haskell, 2nd ed., Prentice Hall, 448 p. | | | 2 | Cousineau, G., Mauny, M., Callaway, K. 1998; The Functional Approach to Programming, .English ed., Cambridge University Press, 460 p. | | | |
| Ölçme Yöntemi | | Yöntem | Hafta | Tarih | Süre (Saat) | Katkı (%) | | Arasınav | 9 | 18/04/2024 | 2 | 30 | | Yıl içi çalışma | 13 | 16/05/2024 | 2 | 20 | | Dönem sonu sınavı | 16 | 06/06/2024 | 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 | 5 | 14 | 70 | | Arasınav için hazırlık | 15 | 1 | 15 | | Arasınav | 2 | 1 | 2 | | Ödev | 30 | 1 | 30 | | Dönem sonu sınavı için hazırlık | 20 | 1 | 20 | | Dönem sonu sınavı | 2 | 1 | 2 | | Toplam Çalışma Yükü | | | 181 |
|