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 426414 + 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.
 
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
Test4%15
 
Ders İşbaşı Eğitimi (iş yerinde eğitim) Gerektiriyor mu?
Gerektirmiyor