Ders Adı | Kodu | Verildiği Yıl | Verildiği Yarıyıl | Süresi (T+U) | Yerel Kredisi | AKTS Kredisi |
Yazılım Geliştirmede Formal Yöntemler | SENG 426 | 4 | 1 | 4 + 0 | 4 | 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. Zorunlu, işlevsel ve nesne yönelimli programlama dahil olmak üzere çeşitli programlama paradigmalarını eleştirel olarak değerlendirebilir ve aralarındaki farkı ayırt edebilir, bunların güçlü yanlarını, sınırlamalarını ve uygun uygulamalarını anlayabilir. |
2. Temel dil tasarım ilkelerine ilişkin kapsamlı bir anlayış kazanır |
3. Tip sistemleri, kontrol yapıları ve veri soyutlamaları gibi programlama dillerinin temel özelliklerini pratik programlama ödevleri ve projeleri aracılığıyla tasarlayabilir ve uygulayabilir |
4. Kod performansını ve bellek kullanımını optimize etmeye yönelik teknikleri kullanabilir ve programların verimliliğini ve etkinliğini değerlendirebilir |
5. Uygun programlama dillerini ve paradigmalarını seçip uygulayarak karmaşık programlama problemlerini ele alır, yazılım geliştirmede problem çözme becerilerini ve uyum yeteneğini geliştirir |
6. Sonlu otomatlar, itmeli otomatlar ve Turing makineleri dahil olmak üzere temel otomat modelleri hakkında kapsamlı bir anlayış kazanır ve bunların teorik temellerini ve çalışma prensiplerini anlar |
|
Dersin Önkoşulları ve Birlikte Alınması Gereken Dersler | Yok |
Daha Önce Alınmış Olması Önerilen Dersler | Yok |
|
Dersin Tanımı:
Bu kurs, yazılım mühendisliğinde resmi yöntemlere kapsamlı bir giriş sunarak çağdaş yazılım geliştirme uygulamalarının temelini oluşturan ilkeleri belirler. Yüksek seviyeli anlamsal modellemeden kodlama ve hata ayıklamaya kadar tüm geliştirme yaşam döngüsünü kapsayan bu kurs, programlama dillerinin hem teorik hem de pratik boyutlarını bütünleştirir. Zorunlu ve işlevsel tasarım paradigmalarının anlaşılmasını sağlar. Zorlu programlama ödevleri ve pratik alıştırmalar yoluyla öğrenciler dil uygulaması ve yazılım optimizasyonu konusunda yeterlilik kazanacaklardır. Bu deneyim, onları karmaşık programlama zorluklarını etkili bir şekilde ele almaya ve yazılım mühendisliği disiplininin ilerlemesine anlamlı bir şekilde katkıda bulunmaya hazırlayacaktır. |
|
Dersin İçeriği (Haftalık Konu Dağılımı): |
|
Hafta | Konu |
1 | Giriş, Tarihçe |
2 | Değişkenler ve Bağlamlar |
3 | Kapsam ve Yaşam Süresi |
4 | Aktivasyon Kaydı |
5 | Özyineleme |
6 | Veri Türleri |
7 | İşaretçiler ve Dinamik Bellek Yönetimi |
8 | İfadeler ve Değer Atama |
9 | Fonksiyonel Programlama Paradigması |
10 | Alt-programlar |
11 | Parametre Geçiş Yöntemleri |
12 | Otomat Teorisi ve Düzenli İfadeler |
|
Kaynaklar: |
Robert W. Sebesta, Concepts of Programming Languages, 11th Ed, Pearson, 2016
Daniel Jackston, Software Abstractions Logic, Language and Analysis, MIT Press, 2006 |
|
Diğer Kaynaklar: |
. |
|
Öğretim Yöntem ve Teknikleri: |
Ders,
Tartışmalar,
Soru-Cevap Oturumları,
Programlama Ödevleri,
Sınavlar,
Quizler |
|
Değerlendirme Sistemi: |
Yöntem | Adet | Katkı (%) |
Ara sınav | 1 | %25 |
Final Sınavı | 1 | %30 |
Ödev | 3 | %30 |
Test | 4 | %15 |
|
Ders İşbaşı Eğitimi (iş yerinde eğitim) Gerektiriyor mu? |
Gerektirmiyor |