Yazılım Mühendisliği | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu: | YAZ307 | ||||
Ders İsmi: | Programlama Teori ve Pratiği 3 (C++) | ||||
Ders Yarıyılı: | Güz | ||||
Ders Kredileri: |
|
||||
Öğretim Dili: | Türkçe | ||||
Ders Koşulu: | |||||
Ders İş Deneyimini Gerektiriyor mu?: | Hayır | ||||
Dersin Türü: | Zorunlu | ||||
Dersin Seviyesi: |
|
||||
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 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. |
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. |
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 |
Ders Notları / Kitaplar: | C++ How to Program (9th Edition), Paul Deitel, Harvey Deitel, Deitel & Associates, 2014. |
Diğer Kaynaklar: |
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. |
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 |
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 |
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 |