Marmara Üniversitesi
Marmara Üniversitesi Eğitim-Öğretim Bilgi Sistemi

Programlar Hakkında Bilgi

Lisans - Fen-Edebiyat Fakültesi - Matematik

Müfredat Adı Ders Kodu Ders Adı Ders Türü Dönem AKTS Teorik Uygulama
Matematik - Lisans - 2014 MAT4045 Fonksiyonel Programlama Seçmeli 5 2,00 2 0

Dersin İçeriği

Dersin Amacı

Bu ders öğrencilere fonksiyonel programlama teknikleri, bu programlama paradigmasının avantaj ve dezavantajları ve pratikte kullanımı hakkında bilgi verir. Bu yaklaşım, programcının çözmek için gereken işlemlerin tam sırasını belirtmek yerine, çözülecek sorunu sembolik olarak tanımlaması anlamında bildirimseldir. Çözülen problemin özüne odaklanmaya ve daha karmaşık algoritmaları kompakt bir şekilde uygulamaya izin verir. İşlevsel programlama, paralelleştirme ve algoritmaların otomatik olarak doğrulanması için dikkate değer avantajlara sahiptir ve en kullanışlı işlevsel programlama kavramları, standart programlama dillerine giderek daha sık tanıtılmaktadır. Fonksiyonel programlamanın sayılar yerine sembollere odaklanması nedeniyle, fonksiyonel programlama, etmen sistemleri veya sembolik makine öğrenimi gibi yapay zeka alanlarında yoğun olarak kullanılmaktadır.

Öğrenim Türü

-

Dersin İçeriği

emel kavramlar: fonksiyonlar, ilişkiler, özyineleme, kuyruk-özyineleme, tür sistemleri, polimorfizm, veri türleri, özyinelemeli veri türleri, üst düzey işlevlere giriş, veri soyutlama

Planlanan Öğrenme Aktiviteleri ve Metodları

bilgisayar uygulamalı anlatım

Staj Durumu

Yok

Dersin Sunulduğu Dil

Türkçe

Ders Kitabı / Malzemesi / Önerilen Kaynaklar

1) Pierce, B. C. (2002). Types and Programming Languages. The MIT Press (1st edition). Pierce's book will be a useful reference for some of the concepts introduced in the first half of the course, although we'll be taking a less formal approach. 2) Richard Bird, Introduction to Functional Programming using Haskell, second edition, Prentice-Hall International, 1998. 3) Cook, Mary Rose. 2014. "A practical introduction to functional programming." Blog. Accessed 2017-04-05. 4) Michaelson, Greg. 2011. "An Introduction to Functional Programming Through Lambda Calculus." Dover Publications. Accessed 2017-04-05.

Dersin Web Sayfası

-

Öğrenme Çıktıları

  • Fonksiyonel programlamanın temel kavramlarını listeler ve tanımlar,
  • verilen (basit) bir işlevsel programı manuel olarak yürütmek ve belirli bir (basit) işlevsel programın türünü manuel olarak çıkarma
  • (basit) algoritmaları ve veri yapılarını işlevsel programlar olarak uygulamak,
  • modüler ve yeniden kullanılabilir bileşenlere sahip (büyük) işlevsel programlar tasarlamak,
  • Basit bir problem üzerinde fonksiyonel programlamanın zorunlu ve nesne yönelimli programlamadan nasıl farklı olduğunu açıklar.

Haftalık Ayrıntılı Ders İçeriği

Hafta Teorik
1 Giriş
2 Birinci sınıf değerler olarak fonksiyonlar
3 Bileşik veri türleri (listeler, demetler ve kullanıcı tanımlı türler)
4 Özyineleme ve özyinelemeli veri türleri
5 Tekrarlayan programlamayı önlemek için soyutlama kullanma
6 Cebirsel veri türleri
7 Aa sınav hazırlığı
8 Arar sınav
9 Polimorfizm ve tip sınıfları
10 Zaman karmaşıklığı: verimli ve verimsiz işlevsel programlar
11 Saf fonksiyonlar vs giriş-çıktı
12 Modüller ve soyut veri türleri
13 Fonksiyonel programları test etme
14 Tembel değerlendirme ve sonsuz nesneler
15 12) Mathematica tanıtımı
16 Sınav hazırlığı
17 Final sınavı

Değerlendirme

Değerlendirme Değer
Yarıyıl (Yıl) İçi Etkinlikleri 40
Yarıyıl (Yıl) Sonu Etkinlikleri 60
Yarıyıl (Yıl) Sonu Etkinlikleri Değer
Final Sınavı 100

Öğrenci İş Yükü Hesabı

Etkinlikler Sayısı Süresi (saat) Toplam İş Yükü (saat)
Ders Öncesi/Sonrası Bireysel Çalışma 5 1 5
Proje ve Hazırlığı 1 3 3
Ödev ve Hazırlığı 0 0 0
Laboratuvar ve Hazırlığı 0 0 0
Atölye ve Hazırlığı 0 0 0
Sunum ve Hazırlığı 0 0 0
Seminer ve Hazırlığı 0 0 0
Demo ve Hazırlığı 0 0 0
Araştırma ve Hazırlığı 0 0 0
Rapor ve Hazırlığı 0 0 0
Arasınav ve Hazırlığı 0 0 0
Kısa Sınav ve Hazırlığı 0 0 0
Final ve Hazırlığı 0 0 0
Teorik Ders Saati 10 2 20
Uygulama Ders Saati 10 2 20

Program ve Öğrenme Çıktıları İlişkisi

ÖÇ1
ÖÇ2
ÖÇ3
ÖÇ4
ÖÇ5