YAZILIM MÜHENDİSLİĞİ | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu | Ders Adı | Yarıyıl | Teorik | Pratik | Kredi | AKTS |
SEN2001 | Programlama Dilleri | Bahar | 3 | 0 | 3 | 7 |
Bu katalog bilgi amaçlıdır, dersin açılma durumu, ilgili bölüm tarafından yarıyıl başında belirlenir. |
Öğretim Dili: | İngilizce |
Dersin Türü: | |
Dersin Seviyesi: | LİSANS |
Dersin Veriliş Şekli: | Yüz yüze |
Dersin Koordinatörü: | Öğ.Gör. DUYGU ÇAKIR YENİDOĞAN |
Dersi Veren(ler): |
Öğ.Gör. DUYGU ÇAKIR YENİDOĞAN Dr. Öğr. Üyesi ÖVGÜ ÖZTÜRK ERGÜN Dr. Öğr. Üyesi BETÜL ERDOĞDU ŞAKAR Dr. Öğr. Üyesi SERKAN AYVAZ |
Opsiyonel Program Bileşenleri: | Yok |
Dersin Amacı: | Öğrenciler, birkaç programlama dilinin karşılaştırmalı incelenmesi sayesinde programlama dillerinin yazım ve anlamsal yapılarının temel kavramları hakkında genel bilgi sahibi olacaklar. Öğrenciler, yeni programlama dilleri ve derleyici tasarımının genel kavramsal dilbilimsel konularını çalışabilmek için beceri kazanmak üzere birkaç yeni programlama dilinin özellikleri ve örneklemeleri hakkında farkındalık kazanacaklar. |
Bu dersi başarıyla tamamlayabilen öğrenciler; 1. Programlama dillerinin temek kavramlarını ve kategorilerini tanımlar 2. Yazım kurallarını anlatan biçimsel yöntemleri, nitelik dilbilgisini ve dinamik semantikleri tanımlar 3. Bağlayıcı kavramını, tür kontrolünü, tür denkliğini, kapsam ve referanslamayı tarif eder 4. İlkel değişkenleri, karakter dizilimi, sıralı, dizi, ilişkili dizi, kayıt, birleşim, pointer ve referans veri tiplerinin özelliklerini tanımlar 5. Aritmetik, ilişkisel ve mantıksal gösterim, tür dönüştürmesi, atama komutları, seçim ve atama komutları ve koşulsuz dallanmayı tanımlar 6. Altprogramların temellerini, altprogram tasarımlarını, yerel referans ortamlarını, parametre-geçiş yöntemlerini, aşırı yüklü altprogramları ve fonksiyon tasarımının temellerini tarif eder 7. Soyutlama kavramının tanımını, veri soyutlama ve soyut veri türleri için tasarım konularını tarif eder 8. Nesne-tabanlı dillerin tasarımı konusunun tanımını, Smalltalk, C++, Java, C#, Ruby gibi programlama dillerinin nesne-tabanlı programlama desteğini tarif eder 9. Matematiksel fonksiyonların analizi, Lisp, Scheme, ML, Haskell gibi fonksiyonel programlama dillerinin temeli ve Calculus ve teorem ispatı, mantık programlama ve Prolog'un temel elemanlarının tarifi 10. Ada, C++, Java gibi farklı programlama dillerinde exception ve event handling tanımı yapar |
Dersin içeriği yazım ve semantiklerin tanımı, değişken isimleri, bağlayıcılar, veri türü kontrolü, veri türleri, gösterimler ve atama komutları, kontrol yapıları, altprogramlar, soyut veri türleri, nesne tabanlı programlama, fonksiyonel programlama, mantık programlama, exception ve event handling konularından oluşmaktadır. |
Hafta | Konu | Ön Hazırlık |
1) | Giriş | Syllabus ve Chapter#1 & 2 ders notlarını okumak |
2) | Sintaks ve Semantiklerin Tanımı I | Chapter#3 ders notlarını okumak |
3) | Sintaks ve Semantiklerin Tanımı II | Chapter#4 ders notlarını okumak |
4) | İsimler, Bağlamalar, Tür Kontrolü ve Kapsamlar | Chapter#5 ders notlarını okumak |
5) | Veri Türleri | Chapter#6 ders notlarını okumak |
6) | Gösterimler ve Atama Komutları | Chapter#7 ders notlarını okumak |
7) | Kontrol Yapıları | Chapter#8 ders notlarını okumak |
8) | Altprogramlar | Chapter#9 ders notlarını okumak |
9) | Altprogramlar II | Chapter#10 ders notlarını okumak |
10) | Soyut Veri Türleri | Chapter#11 ders notlarını okumak |
11) | Nesne-Tabanlı Programlama | Chapter#12 ders notlarını okumak |
12) | Exception ve Event Handling | Chapter#13 & 14 ders notlarını okumak |
13) | Fonksiyonel Programlama | Chapter#15 ders notlarını okumak |
14) | Mantık Programlama | Chapter#16 ders notlarını okumak |
Ders Notları / Kitaplar: | Robert W. Sebesta, Concepts of Programming Languages, 8e, Pearson Education, Addison Wesley, 2008, ISBN 978-0-321-50968-0 |
Diğer Kaynaklar: | Yok |
Yarıyıl İçi Çalışmaları | Aktivite Sayısı | Katkı Payı |
Küçük Sınavlar | 4 | % 20 |
Projeler | 1 | % 25 |
Ara Sınavlar | 1 | % 15 |
Final | 1 | % 40 |
Toplam | % 100 | |
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI | % 35 | |
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI | % 65 | |
Toplam | % 100 |
Aktiviteler | Aktivite Sayısı | Süre (Saat) | İş Yükü |
Ders Saati | 14 | 3 | 42 |
Sınıf Dışı Ders Çalışması | 8 | 4 | 32 |
Proje | 1 | 28 | 28 |
Ara Sınavlar | 1 | 28 | 28 |
Final | 1 | 35 | 35 |
Toplam İş Yükü | 165 |
Etkisi Yok | 1 En Düşük | 2 Düşük | 3 Orta | 4 Yüksek | 5 En Yüksek |
Dersin Program Kazanımlarına Etkisi | Katkı Payı | |
1) | Karmaşık mühendislik problemlerine yönelik yazılım proje, süreç ve ürünlerine ait fonksiyonel ve fonksiyonel olmayan özellikleri tanımlayabilmek. | 4 |
2) | Karmaşık mühendislik problemlerinde yazılım mimarisi, bileşenleri, ara yüzleri ve sisteme ait diğer alt bileşenleri tasarlayabilmek. | 5 |
3) | Kodlama, doğrulama, sınama ve hata ayıklama konularını da içerecek şekilde karmaşık yazılım sistemleri geliştirebilmek. | 5 |
4) | Karmaşık mühendislik problemlerinde yazılımı, programın davranışlarını beklenen sonuçlara göre sınayarak doğrulayabilmek. | 2 |
5) | Karmaşık yazılım sistemlerinin çalışması sırasında, çalışma ortamının değişmesi, yeni kullanıcı istekleri ve yazılım hatalarının ortaya çıkması ile meydana gelen bakım faaliyetlerine yönelik işlemleri yapabilmek. | 1 |
6) | Karmaşık yazılım sistemlerinde yapılan değişiklikleri izleyebilmek ve kontrol edebilmek, entegrasyonunu sağlayabilmek, yeni sürümlerini sistematik olarak planlayabilmek ve riskleri yönetebilmek. | 1 |
7) | Disiplin içi ve disiplinler arası takımlarda görev alarak karmaşık yazılım sistemleri yaşam süreçlerini tanımlayabilmek, değerlendirebilmek, ölçebilmek, yönetebilmek ve uygulayabilmek. | 1 |
8) | Karmaşık mühendislik problemlerinde gerçekçi kısıtlar ve koşullar altında yazılım gereksinimlerini toplama, yazılımı tasarlama, geliştirme, sınama, bakımını yapma konularındaki çeşitli araçları ve yöntemleri kullanabilmek. | 4 |
9) | Temel kalite metrikler tanımlayabilmek, yazılım yaşam döngüsü süreçlerini uygulayabilmek, yazılım kalitesini ölçebilmek, kalite model karakteristiklerini tanımlayabilmek, standartları uygulayabilmek ve bunları karmaşık yazılım sistemlerini analiz etmekte, tasarlamakta, geliştirmekte, doğrulamakta ve sınamakta kullanabilmek. | 3 |
10) | Yazılım mühendisliği ile ortak sınırlara sahip olan matematik, fen bilimleri, bilgisayar mühendisliği, endüstri mühendisliği, sistem mühendisliği, ekonomi, yönetim ve sürdürülebilir kalkınma gibi diğer disiplinler hakkında teknik bilgi kazanabilmek ve bunlar aracılığıyla yenilikçi fikirleri karmaşık mühendislik problemlerinde ve girişimcilik faaliyetlerinde kullanabilmek. | 3 |
11) | Yazılım mühendisliği kültürü ve etik anlayışını kavrayabilmek ve bunları yazılım mühendisliğinde uygulayabilecek temel bilgilere sahip olmak, meslek hayatı boyunca gerekli teknik becerileri öğrenip başarıyla uygulayabilmek. | 1 |
12) | Yabancı dil ve Türkçe kullanarak etkin rapor yazabilmek ve yazılı raporları anlayabilmek, tasarım ve üretim raporları hazırlayabilmek, etkin sunum yapabilmek, açık ve anlaşılır talimat verebilmek ve alabilmek. | 4 |
13) | Mühendislik uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları ile mühendislik çözümlerinin hukuksal sonuçları hakkında bilgi sahibi olmak. |