Fonksiyonel Programlama
Eğitmen Bilgileri:
Duyurular:
Ders Tanımı:
Bu ders öğrencilere hesaplama (computation) prensiplerini tanıtır. Bu dersi tamamlayan öğrenciler, programlama dillerinden hesaplama sistemlerini analiz etmek için temel yöntemleri açıklayabilmeli ve uygulayabilmeli ve soyut problemlere hesaplamalı çözümler üretebilmelidir.
Dersin Hedefleri:
bu dersin tamamlanmasının ardından, öğrenciler programlama dillerinden hesaplama sistemlerini analiz etmek için temel yöntemleri açıklayabilecek ve uygulayabilecek, soyut problemlere yönelik hesaplamalı çözümler üretebileceklerdir. Özellikle, öğrenciler:
Ders boyunca Scheme programlama dilinde aşağıdaki kavramları tasarlayabilmek ve gerçekleştirmek hedeflenmektedir.
Kaynaklar:
DERS İZLENCESİ
D1 Hesaplamaya Giriş (Introduction to Computation)
D2 Scheme Temelleri
D3 Prosedürler, Süreçler ve Özyineleme (Procedures, Processes, and Recursion)
D4 Büyüme Dereceleri ve Prosedür Türleri (Orders of Growth and Kinds of Procedures)
D5 Veri Soyutlama (Data Abstraction)
D6 Yüksek Seviyeli Prosedürler (Higher Order Procedures)
D7 İyi Programlama Uygulamaları (Good Programming Practices)
D8 Yüksek Seviyeli Prosedürleri Kullanma (Using Higher Order Procedures)
D9 Semboller ve Alıntılar (Symbols and Quotation)
D10 Etiketlenmiş Veri (Tagged Data)
D11 İleri Veri Tipleri (Advanced Data Types)
D12 Veri Mutasyonu (Data Mutation)
D13 Ağaçlar, Çizgeler ve Arama (Trees, Graphs and Search)
D14 Çizgeler ve Arama
D15 Ortam/Çevre Modeli (Environment Model)
D16 Nesne Yönelimli Programlama (Object Oriented Programming) I
D17 Nesne Yönelimli Programlama (Object Oriented Programming) II
D18 Nesne Yönelimli Programlama (Object Oriented Programming) III
D19 Yorumlama (Interpretation)
D20 Meta-Dairesel Değerlendirici (The Meta-circular Evaluator)
D21 Tembel Değerlendirme (Lazy Evaluation)
D22 Asenkron Hesaplama (Asynchronous Computing)
D23 Evrensel Makineler (Universal Machines)
D24 Geometrik Katlama Algoritmaları: Origami, Bağlantılar ve Polyhedra
D25 Eşler Arası Hesaplama Araştırması (Peer-To-Peer Computing Research)
D26 Hesaplanabilirlik (Computability)
- Dr. Fatih Özkaynak
Duyurular:
- Sınavda faydalı olabilecek basit kod örnekleri 2 (indir)
- Test Soru Örnekleri (indir)
- Basit kod örnekleri (indir)
- Kitap çevirileriniz (indir)
- Lab için incelenecek kod (indir)
- 26 Nisan ve 3 Mayıs tarihli Kodlar (indir)
- Oyun tasarımı için örnek klavuz (pdf)
- Klavye ve fare kontrolleri oyun animasyonları (indir)
- BÜTÜNLEME SINAVI için AÇIKLAMALAR
- Bütünleme sınavı yapılmayacaktır. Bütünlemeye gelmenize gerek yoktur.
- Ancak (BÜTÜNLEME TUTANAĞI) dokümanı imzalayıp taratarak projenizle birlikte eposta atmanız yeterli olacaktır.
- Projeniz resmi programda ilan edilecek sınav gününe kadar firatyazilim@gmail.com adresine mail atmanız yeterlidir.
- Basit olsa da projeleriniz özgün olsun.
- Yılan oyunu bütünlemede kabul edilmeyecektir.
- Finalde başkası tarafından gönderilen projeleri tekrar göndermeyiniz.
- Kodu çalışmadığı için bütünlemeye kalan arkadaşlar aynı projelerini gönderebilir.
- Bütünleme sınavı yapılmayacaktır. Bütünlemeye gelmenize gerek yoktur.
Ders Tanımı:
Bu ders öğrencilere hesaplama (computation) prensiplerini tanıtır. Bu dersi tamamlayan öğrenciler, programlama dillerinden hesaplama sistemlerini analiz etmek için temel yöntemleri açıklayabilmeli ve uygulayabilmeli ve soyut problemlere hesaplamalı çözümler üretebilmelidir.
Dersin Hedefleri:
bu dersin tamamlanmasının ardından, öğrenciler programlama dillerinden hesaplama sistemlerini analiz etmek için temel yöntemleri açıklayabilecek ve uygulayabilecek, soyut problemlere yönelik hesaplamalı çözümler üretebileceklerdir. Özellikle, öğrenciler:
- Büyük programlama sistemlerinde karmaşıklığın kontrolü için temel mekanizmaları açıklayabilmek ve uygulayabilmek:
- Soyutlama Yapabilmek
- Geleneksel Arayüzlerle Etkileşim Kontrolü, ve Yeni Dilleri Tasarlayabilmek
- Programlama stili ve programlama estetiği konularını tartışabilecek sevmeye gelmek
- Scheme programlama dilinde okuyabilmek ve yazabilmek
Ders boyunca Scheme programlama dilinde aşağıdaki kavramları tasarlayabilmek ve gerçekleştirmek hedeflenmektedir.
- Özyinelemeli (Recursive) ve Yinelemeli (Iterative) Süreçler ve Prosedürler
- Yüksek Seviyeli Prosedürleri (Higher Order Procedures)
- Nesneye Yönelik Yöntemler
- Veri Soyutlamaları
- Durumlara sahip Prosedürler
- Tipe göre gönderme (Dispatch on Type)
Kaynaklar:
- Structure and Interpretation of Computer Programs.(indir)
DERS İZLENCESİ
D1 Hesaplamaya Giriş (Introduction to Computation)
D2 Scheme Temelleri
D3 Prosedürler, Süreçler ve Özyineleme (Procedures, Processes, and Recursion)
D4 Büyüme Dereceleri ve Prosedür Türleri (Orders of Growth and Kinds of Procedures)
D5 Veri Soyutlama (Data Abstraction)
D6 Yüksek Seviyeli Prosedürler (Higher Order Procedures)
D7 İyi Programlama Uygulamaları (Good Programming Practices)
D8 Yüksek Seviyeli Prosedürleri Kullanma (Using Higher Order Procedures)
D9 Semboller ve Alıntılar (Symbols and Quotation)
D10 Etiketlenmiş Veri (Tagged Data)
D11 İleri Veri Tipleri (Advanced Data Types)
D12 Veri Mutasyonu (Data Mutation)
D13 Ağaçlar, Çizgeler ve Arama (Trees, Graphs and Search)
D14 Çizgeler ve Arama
D15 Ortam/Çevre Modeli (Environment Model)
D16 Nesne Yönelimli Programlama (Object Oriented Programming) I
D17 Nesne Yönelimli Programlama (Object Oriented Programming) II
D18 Nesne Yönelimli Programlama (Object Oriented Programming) III
D19 Yorumlama (Interpretation)
D20 Meta-Dairesel Değerlendirici (The Meta-circular Evaluator)
D21 Tembel Değerlendirme (Lazy Evaluation)
D22 Asenkron Hesaplama (Asynchronous Computing)
D23 Evrensel Makineler (Universal Machines)
D24 Geometrik Katlama Algoritmaları: Origami, Bağlantılar ve Polyhedra
D25 Eşler Arası Hesaplama Araştırması (Peer-To-Peer Computing Research)
D26 Hesaplanabilirlik (Computability)