PROGRAMI
DERS TANITIM VE UYGULAMA BİLGİLERİ

Ders AdıKoduVerildiği YılVerildiği YarıyılSüresi (T+U)Yerel KredisiAKTS Kredisi
Yazılım Geliştirmede Formal YöntemlerSENG 42614 + 045,00
 
Ders Bilgileri
Dersin Öğretim Diliİngilizce
Dersin SeviyesiLisans
Dersin TürüZorunlu
Dersin Veriliş BiçimiYü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 DerslerYok
Daha Önce Alınmış Olması Önerilen DerslerYok
 
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.
 
Üretken Yapay Zeka Kullanımı:

-
 
Dersin İçeriği (Haftalık Konu Dağılımı):
 
HaftaKonu
1Giriş, Tarihçe
2Değişkenler ve Bağlamlar
3Kapsam ve Yaşam Süresi
4Aktivasyon Kaydı
5Özyineleme
6Veri Türleri
7İşaretçiler ve Dinamik Bellek Yönetimi
8İfadeler ve Değer Atama
9Fonksiyonel Programlama Paradigması
10Alt-programlar
11Parametre Geçiş Yöntemleri
12Otomat 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öntemAdetKatkı (%)
Ara Sınav1%25
Final Sınavı1%30
Ödev3%30
Test/Quiz/Kısa Sınav4%15
 
Ders İşbaşı Eğitimi (iş yerinde eğitim) Gerektiriyor mu?
Gerektirmiyor
 
Dersin AKTS İş Yükü:
#AktiviteAdetSüre (Saat)İş Yükü
1Derslere Katılım (haftalık bazda)144,0056,00
2Laboratuvarlara/Derslere Katılım (haftalık bazda)00,000,00
3Notların önceden hazırlanması ve son haline getirilmesi (haftalık bazda)00,000,00
4İlgili materyalin toplanması ve seçilmesi (bir kez)00,000,00
5İlgili materyalin kendi kendine incelenmesi (haftalık bazda)142,5035,00
6Ev ödevleri35,0015,00
7Sınavlara Hazırlık41,004,00
8Ara Sınavlara Hazırlık (Sınavların süresi dahil)16,006,00
9Dönem Ödevi/Vaka Çalışması Raporunun Hazırlanması (sözlü sunum dahil)00,000,00
10Dönem Projesi/Saha Çalışması Raporunun Hazırlanması (sözlü sunum dahil)00,000,00
11Final Sınavına Hazırlık (sınav süresi dahil)18,008,00