Yazılım Mühendisliği
Lisans TYYÇ: 6. Düzey QF-EHEA: 1. Düzey EQF-LLL: 6. Düzey

Ders Genel Tanıtım Bilgileri

Ders Kodu: YAZ307
Ders İsmi: Programlama Teori ve Pratiği 3 (C++)
Ders Yarıyılı: Güz
Ders Kredileri:
AKTS
7
Öğretim Dili: Türkçe
Ders Koşulu:
Ders İş Deneyimini Gerektiriyor mu?: Hayır
Dersin Türü: Zorunlu
Dersin Seviyesi:
Lisans TYYÇ:6. Düzey QF-EHEA:1. Düzey EQF-LLL:6. Düzey
Dersin Veriliş Şekli: Yüz yüze
Dersin Koordinatörü: Araş. Gör. ZEHRA TÜFEKÇİ
Dersi Veren(ler): Ziya Ercan
Dersin Yardımcıları:

Dersin Amaç ve İçeriği

Dersin Amacı: Bu dersin amacı, nesne yönelimli programlamanın temel prensiplerini C++ programlama dilini kullanarak öğretmektir. Bu amaca yönelik olarak, derste pek çok problemin nesne yönelimli olarak tasarlanması ve kodlanması üzerinde durulacaktır.
Dersin İçeriği: Fonksiyonların aşırı yüklenmesi, fonksiyon şablonları, sınıf şablonları. Nesne yapıcılar, yokediciler ve arayüzler. Nesne kompozisyonları, arkadaş fonksiyonlar ve sınıflar. Kalıtım ve çok formluluk. Akıntı girdi/çıktı arayüzü. C++ standard şablon kütüphanesi (STL) . İstisnaları ele alma. Dinamik hafıza yönetimi.

Öğrenme Kazanımları

Bu dersi başarıyla tamamlayabilen öğrenciler;
1) Nesne yönelimli tasarım ve programlamanın temel prensipleri.
2) C++ programlama dili ve standard şablon kütüphanesini (STK) kullanarak programlama.
3) C++ programlama dilinde yazılım geliştirme ve hata ayıklama, C++ programları içerisinde C kodlarını işleyebilme.
4) Jenerik programlamanın önemini kavrar ve şablonları kullanır.
5) Paralel programlamayı kullanarak çoklu akışa sahip program tasarlayabilir ve özel durumların üstesinden gelebilir.
6) Yazılım geliştirmede önemli olan araçları (docker, git, make, bash) iyi kullanabilir.
7) Agile proje yönetimi ile ilgili tecrübeye sahip olur.

Ders Akış Planı

Hafta Konu Ön Hazırlık
1) Nesne yönelimli programlamaya giriş, sınıflar, nesneler ve tipler. Bölüm 3
2) C++'a giriş: fonksiyonlar, parametreler, kapsamlar. Bölü 6
3) Fonksiyonların aşırı yüklenmesi, fonksiyon şablonları, sınıf şablonları. Bölüm 6, 7
4) Nesne yapıcılar, yokediciler ve arayüzler. Bölüm 9
5) Nesne kompozisyonları, arkadaş fonksiyonlar ve sınıflar. Bölüm 10
6) Kalıtım ve çok formluluk. Bölüm 11, 12
7) Akıntı girdi/çıktı arayüzü. Bölüm 13
8) Şablonlar, C++ standard şablon kütüphanesine (STL) giriş. Bölüm 15, 16, 18
9) Ara sınav
10) Dosya işleme, istisnaları ele alma. Bölüm 14, 17
11) Ad alanları, dinamik hafıza yönetimi. Bölüm 23
12) Devops, CI/CD pipelines, Lambda ifadeleri, Multi-processing concurrency kavramlarına giriş WebPages
13) Introduction to virtualization, containers vs virtual machines, Docker, Kubernetes, Cloud computing Various web sources
14) Workshop on clean-coding principles How to clean code

Kaynaklar

Ders Notları / Kitaplar: C++ How to Program (9th Edition), Paul Deitel, Harvey Deitel, Deitel & Associates, 2014.
Diğer Kaynaklar:

Ders - Program Öğrenme Kazanım İlişkisi

Course Learning Outcomes

1

2

3

4

5

6

7

Program Kazanımları
1) Matematik, fen bilimleri ve ilgili mühendislik disiplinine özgü konularda yeterli bilgi birikimine; bu alanlardaki kuramsal ve uygulamalı bilgileri, mühendislik problemlerinde kullanabilme becerisine sahiptir.
2) Bir sistemi, süreci veya ürünü ekonomik, çevre, sosyo-politik, etik, sağlık, güvenlik, üretilebilirlik ve sürdürülebilirlik ile ilişkili gerçekçi koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisine sahiptir.
3) Mühendislik problemlerini tanımlama, formüle etme ve çözme; çözüm için gerekli yöntemi seçme ve uygulama becerisine sahiptir.
4) Mühendislik uygulamalarında karşılaşılan problemlerin analizi ve çözümü için gerekli olan modern teknikleri geliştirme, seçme ve kullanma; bilişim teknolojilerini etkin bir şekilde kullanma becerisine sahiptir.
5) Mühendislik problemlerinin veya disipline özgü araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisine sahiptir.
6) Çok disiplinli takımlarda etkin biçimde çalışabilme becerisine sahiptir.
7) Sözlü ve yazılı etkin iletişim kurma becerisi ile etkin rapor yazma ve yazılı raporları anlama, etkin sunum yapabilme becerisine sahiptir.
8) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilincine sahiptir; mühendislik uygulamalarında kullanılan standartlar hakkında bilgiye sahiptir.
9) Bir yabancı dili Avrupa Dil Portföyü kriteri açısından en az B1 düzeyinde kullanabilme becerisine sahiptir.
10) Yaşam boyu öğrenmenin gerekliliği bilincine sahiptir; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisine sahiptir.
11) Bilgisayar yazılımı ile birlikte bilişim ve iletişim teknolojilerini Avrupa Bilgisayar Kullanma Lisansı İleri düzeyinde kullanabilme becerisine sahiptir.
12) Proje yönetimi ve risk yönetimi uygulamaları hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgiye sahiptir.
13) Mühendislik uygulamalarının evrensel ölçekte çevre, sağlık ve güvenlik üzerindeki etkileri ve hukuksal sonuçları hakkında bilgi ve farkındalığa sahiptir.
14) Yazılım alternatiflerini irdeleyerek bilgisayar tabanlı sistemlerin modellenmesi ve tasarımında, algoritma prensiplerini, matematiksel temelleri ve bilgisayar bilimleri teorisini uygulama becerisine sahiptir.
15) Türevsel denklemler, integral hesapları, doğrusal cebir, mantık ve ayrık matematik içerecek şekilde ileri matematik eğitimi ile birlikte yazılım mühendisliğinde veri yapıları ve algoritmalar, programlama dilleri, işletim sistemleri, bilgisayar güvenliği, bilgisayar teorisi, ağ programlama ve makine öğrenmesi alanlarını kapsayan mühendislik eğitimine sahiptir.

Ders - Öğrenme Kazanımı İlişkisi

Etkisi Yok 1 En Düşük 2 Orta 3 En Yüksek
       
Dersin Program Kazanımlarına Etkisi Katkı Payı
1) Matematik, fen bilimleri ve ilgili mühendislik disiplinine özgü konularda yeterli bilgi birikimine; bu alanlardaki kuramsal ve uygulamalı bilgileri, mühendislik problemlerinde kullanabilme becerisine sahiptir. 1
2) Bir sistemi, süreci veya ürünü ekonomik, çevre, sosyo-politik, etik, sağlık, güvenlik, üretilebilirlik ve sürdürülebilirlik ile ilişkili gerçekçi koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlama becerisine sahiptir. 2
3) Mühendislik problemlerini tanımlama, formüle etme ve çözme; çözüm için gerekli yöntemi seçme ve uygulama becerisine sahiptir. 1
4) Mühendislik uygulamalarında karşılaşılan problemlerin analizi ve çözümü için gerekli olan modern teknikleri geliştirme, seçme ve kullanma; bilişim teknolojilerini etkin bir şekilde kullanma becerisine sahiptir. 2
5) Mühendislik problemlerinin veya disipline özgü araştırma konularının incelenmesi için deney tasarlama, deney yapma, veri toplama, sonuçları analiz etme ve yorumlama becerisine sahiptir. 1
6) Çok disiplinli takımlarda etkin biçimde çalışabilme becerisine sahiptir. 1
7) Sözlü ve yazılı etkin iletişim kurma becerisi ile etkin rapor yazma ve yazılı raporları anlama, etkin sunum yapabilme becerisine sahiptir. 1
8) Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilincine sahiptir; mühendislik uygulamalarında kullanılan standartlar hakkında bilgiye sahiptir. 1
9) Bir yabancı dili Avrupa Dil Portföyü kriteri açısından en az B1 düzeyinde kullanabilme becerisine sahiptir. 1
10) Yaşam boyu öğrenmenin gerekliliği bilincine sahiptir; bilgiye erişebilme, bilim ve teknolojideki gelişmeleri izleme ve kendini sürekli yenileme becerisine sahiptir. 2
11) Bilgisayar yazılımı ile birlikte bilişim ve iletişim teknolojilerini Avrupa Bilgisayar Kullanma Lisansı İleri düzeyinde kullanabilme becerisine sahiptir. 2
12) Proje yönetimi ve risk yönetimi uygulamaları hakkında bilgi; girişimcilik, yenilikçilik hakkında farkındalık; sürdürülebilir kalkınma hakkında bilgiye sahiptir. 1
13) Mühendislik uygulamalarının evrensel ölçekte çevre, sağlık ve güvenlik üzerindeki etkileri ve hukuksal sonuçları hakkında bilgi ve farkındalığa sahiptir. 1
14) Yazılım alternatiflerini irdeleyerek bilgisayar tabanlı sistemlerin modellenmesi ve tasarımında, algoritma prensiplerini, matematiksel temelleri ve bilgisayar bilimleri teorisini uygulama becerisine sahiptir. 3
15) Türevsel denklemler, integral hesapları, doğrusal cebir, mantık ve ayrık matematik içerecek şekilde ileri matematik eğitimi ile birlikte yazılım mühendisliğinde veri yapıları ve algoritmalar, programlama dilleri, işletim sistemleri, bilgisayar güvenliği, bilgisayar teorisi, ağ programlama ve makine öğrenmesi alanlarını kapsayan mühendislik eğitimine sahiptir. 3

Ölçme ve Değerlendirme

Yarıyıl İçi Çalışmaları Aktivite Sayısı Katkı Payı
Projeler 1 % 35
Ara Sınavlar 1 % 25
Final 1 % 40
Toplam % 100
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI % 60
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI % 40
Toplam % 100

İş Yükü ve AKTS Kredisi Hesaplaması

Aktiviteler Aktivite Sayısı İş Yükü
Ders Saati 14 42
Uygulama 13 13
Sınıf Dışı Ders Çalışması 12 36
Sunum / Seminer 1 3
Proje 13 65
Ara Sınavlar 1 2
Final 1 4
Toplam İş Yükü 165