Ders Adı | Kodu | Verildiği Yıl | Verildiği Yarıyıl | Süresi (T+U) | Yerel Kredisi | AKTS Kredisi |
Programlama Dilleri | CENG 442 | 4 | 2 | 3 + 0 | 3 | 5,00 |
|
Ders Bilgileri |
Dersin Öğretim Dili | Türkçe |
Dersin Seviyesi | Lisans |
Dersin Türü | Zorunlu |
Dersin Veriliş Biçimi | Yüz Yüze |
|
Dersin Öğrenme Kazanımları:
Bu dersi başarı ile tamamlayan öğrenciler: |
1. Çağın ve geleceğin programlama dillerini değerlendirmek. |
2. Problemler için uygun programlama dili seçimini öğrenmek. |
3. Yeni programlama dili öğrenme kabiliyetini geliştirmek. |
4. Programlama kavramlarını ifade etme kabiliyetini geliştirmek. |
5. İmperatif, nesne-yönelimli, fonksiyonel ve mantıksal dillerde programlama. |
|
Dersin Önkoşulları ve Birlikte Alınması Gereken Dersler | CENG 124, CENG 241 |
Daha Önce Alınmış Olması Önerilen Dersler | Yok |
|
Dersin Tanımı:
The purpose of this course is to study fundamentals concepts in programming languages and major tools and techniques to implement them. This includes syntax specification and informal semantic models; binding and scoping; types and type systems; control structures; data abstraction; procedural abstraction and parameter passing; exceptions; and higher-order functions; and memory management.
We will explore key characteristics of major programming paradigms, including their relationship to the imperative programming paradigm adopted by mainstream programming languages. Students will gain insights into the central ideas of programming languages by implementing interpreters and compilers for several small languages that incorporate salient features of various paradigms. The tools they employ will be Flex and Bison. Haskell will be used around the discussion of functional language as well as for functional programming. This programming paradigm with Haskell differs enough from imperative programming to require a substantially different way of thinking about computation. Learning to write functional programs will provide students with a deeper understanding of programming concepts.
Bu dersin amacı, programlama dillerindeki temel kavramları ve bunları uygulamak için başlıca araç ve teknikleri incelemektir. Bu, sözdizimi belirtimini ve biçimsel olmayan anlamsal modelleri içerir; bağlama ve kapsam belirleme; türler ve tür sistemleri; kontrol yapıları; veri soyutlama; yordamsal soyutlama ve parametre geçirme; istisnalar; ve üst düzey fonksiyonlar; ve bellek yönetimi.
Ana programlama dilleri tarafından benimsenen zorunlu programlama paradigması ile ilişkileri de dahil olmak üzere, ana programlama paradigmalarının temel özelliklerini keşfedeceğiz. Öğrenciler, çeşitli paradigmaların göze çarpan özelliklerini içeren birkaç küçük dil için çeviriciler ve derleyiciler uygulayarak programlama dillerinin temel fikirleri hakkında fikir edineceklerdir. Kullandıkları araçlar Flex ve Bison olacaktır. Haskell, işlevsel programlamanın yanı sıra işlevsel dil tartışması etrafında kullanılacaktır. Haskell ile programlama paradigması, buyrum programlamadan hesaplama yaklaşımı kapsamında önemli ölçüde farklı bir düşünme biçimi gerektirecek kadar farklıdır. İşlevsel programlar ile kodlamayı öğrenmek, öğrencilere programlama kavramları hakkında daha derin bir anlayış sağlayacaktır. |
|
Dersin İçeriği (Haftalık Konu Dağılımı): |
|
Hafta | Konu |
1 | Giriş, Hazırlık ve Tarih |
2 | Sözcük Tanıma ve Analiz |
3 | CFL/CFGs and Sözdizimi Analizi |
4 | Flex ve Bison Araçları |
5 | Anlamsal Analiz |
6 | İsimler, Bağlayıcılar, Tip Denetimi ve Kapsam |
7 | (Soyut) Veri Tipleri |
8 | Vize |
9 | İfadeler ve Denetim Yapıları |
10 | Alt programlar |
11 | İstisnalar ve İstisna Yönetme |
12 | Fonksiyonel Programlama Dilleri I |
13 | Fonksiyonel Programlama Dilleri II |
14 | Fonksiyonel Programlama: Haskel |
|
Kaynaklar: |
Robert W. Sebesta, Concepts of Programming Languages, Addison-Wesley, 2012, 978-0131395312.
|
|
Diğer Kaynaklar: |
Michael L. Scott, Programming Language Pragmatics, Morgan Kaufmann, 2009, 978-0123745149
Haskell The Craft of Functional Programming, 2nd Edition, Simon Thompson, Pearson, 1999.
|
|
Öğretim Yöntem ve Teknikleri: |
3 saat/hafta ders. |
|
Değerlendirme Sistemi: |
Yöntem | Adet | Katkı (%) |
Ara sınav | 1 | %30 |
Proje | 1 | %30 |
Final Sınavı | 1 | %40 |
|
Ders İşbaşı Eğitimi (iş yerinde eğitim) Gerektiriyor mu? |
Gerektirmiyor |