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 | İngilizce |
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ı:
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. |
|
Üretken Yapay Zeka Kullanımı:
|
|
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 |
|
Dersin AKTS İş Yükü:
|
# | Aktivite | Adet | Süre (Saat) | İş Yükü |
1 | Derslere Katılım (haftalık bazda) | 14 | 3,00 | 42,00 |
2 | Laboratuvarlara/Derslere Katılım (haftalık bazda) | 0 | 0,00 | 0,00 |
3 | Notların önceden hazırlanması ve son haline getirilmesi (haftalık bazda) | 14 | 2,00 | 28,00 |
4 | İlgili materyalin toplanması ve seçilmesi (bir kez) | 1 | 4,00 | 4,00 |
5 | İlgili materyalin kendi kendine incelenmesi (haftalık bazda) | 14 | 2,00 | 28,00 |
6 | Ev ödevleri | 0 | 0,00 | 0,00 |
7 | Sınavlara Hazırlık | 0 | 0,00 | 0,00 |
8 | Ara Sınavlara Hazırlık (Sınavların süresi dahil) | 1 | 8,00 | 8,00 |
9 | Dönem Ödevi/Vaka Çalışması Raporunun Hazırlanması (sözlü sunum dahil) | 0 | 0,00 | 0,00 |
10 | Dönem Projesi/Saha Çalışması Raporunun Hazırlanması (sözlü sunum dahil) | 1 | 10,00 | 10,00 |
11 | Final Sınavına Hazırlık (sınav süresi dahil) | 1 | 8,00 | 8,00 |
|
Dersin Program Yeterlilikleri vs. Öğrenme Kazanımları:
|
# | Program Yeterlilikleri | Katkı (0-4) |
1 | Matematik, fen bilimleri, temel mühendislik, bilgisayarla hesaplama ve ilgili mühendislik disiplinine özgü konularda bilgi; bu bilgileri, karmaşık mühendislik problemlerinin çözümünde kullanabilme becerisi. | 4 |
2 | Karmaşık mühendislik problemlerini, temel bilim, matematik ve mühendislik bilgilerini kullanarak ve ele alınan problemle ilgili BM Sürdürülebilir Kalkınma Amaçlarını gözeterek tanımlama, formüle etme ve analiz becerisi. | 0 |
3 | Karmaşık mühendislik problemlerine yaratıcı çözümler tasarlama becerisi; karmaşık sistemleri, süreçleri, cihazları veya ürünleri gerçekçi kısıtları ve koşulları gözeterek, mevcut ve gelecekteki gereksinimleri karşılayacak biçimde tasarlama becerisi. | 0 |
4 | Karmaşık mühendislik problemlerinin analizi ve çözümüne yönelik, tahmin ve modelleme de dahil olmak üzere, uygun teknikleri, kaynakları ve modern mühendislik ve bilişim araçlarını, sınırlamalarının da farkında olarak seçme ve kullanma becerisi. | 4 |
5 | Karmaşık mühendislik problemlerinin incelenmesi için literatür araştırması, deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama dahil, araştırma yöntemlerini kullanma becerisi. | 0 |
6 | Mühendislik uygulamalarının BM Sürdürülebilir Kalkınma Amaçları kapsamında, topluma, sağlık ve güvenliğe, ekonomiye, sürdürülebilirlik ve çevreye etkileri hakkında bilgi; mühendislik çözümlerinin hukuksal sonuçları konusunda farkındalık. | 0 |
7 | Mühendislik meslek ilkelerine uygun davranma, etik sorumluluk hakkında bilgi; hiçbir konuda ayrımcılık yapmadan, tarafsız davranma ve çeşitliliği kapsayıcı olma konularında farkındalık. | 0 |
8 | Bireysel olarak ve disiplin içi ve çok disiplinli takımlarda (yüz yüze, uzaktan veya karma) takım üyesi veya lideri olarak etkin biçimde çalışabilme becerisi. | 0 |
9 | Hedef kitlenin çeşitli farklılıklarını (eğitim, dil, meslek gibi) dikkate alarak, teknik konularda sözlü, yazılı etkin iletişim kurma becerisi. | 0 |
10 | Proje yönetimi ve ekonomik yapılabilirlik analizi gibi iş hayatındaki uygulamalar hakkında bilgi; girişimcilik ve yenilikçilik hakkında farkındalık. | 0 |
11 | Bağımsız ve sürekli öğrenebilme, yeni ve gelişmekte olan teknolojilere uyum sağlayabilme ve teknolojik değişimlerle ilgili sorgulayıcı düşünebilmeyi kapsayan yaşam boyu öğrenme becerisi. | 0 |