MÜHENDİSLİK FAKÜLTESİ
Yazılım Mühendisliği
SE 310 | Ders Tanıtım Bilgileri
Dersin Adı |
İleri C++: Şablonlar ve Soysal Programlama
|
Kodu
|
Yarıyıl
|
Teori
(saat/hafta) |
Uygulama/Lab
(saat/hafta) |
Yerel Kredi
|
AKTS
|
SE 310
|
Güz/Bahar
|
3
|
0
|
3
|
5
|
Ön-Koşul(lar) |
Yok
|
|||||
Dersin Dili |
İngilizce
|
|||||
Dersin Türü |
Seçmeli
|
|||||
Dersin Düzeyi |
Lisans
|
|||||
Dersin Veriliş Şekli | - | |||||
Dersin Öğretim Yöntem ve Teknikleri | - | |||||
Dersin Koordinatörü | ||||||
Öğretim Eleman(lar)ı | ||||||
Yardımcı(ları) | - |
Dersin Amacı | C++ esnek tasarımı, ölçeklenebilirliği ve verimliliği sayesinde endüstride en çok kullanılan programlama dillerinden biri durumundadır. Bu dersin temel amacı öğrencilerin C++ bilgilerini ve programlama yeteneklerini geliştirmek ve onları C++ dilinde yer alan en güncel yeniliklerle tanıştırmaktır. Bu yeniliklerden bazıları başta Standard Template Library (STL) kütüphanesi olmak üzere soysal programlama teknikleri ve seçilmiş Boost C++ kütüphaneleridir. Bu dersin konuları arasında şablonlarla programlama, ileri şablon programlama teknikleri, soysal programlama, özelleştirilmiş şablonlar kullanma, tip özellikleri (traits), C++ ile GUI programlama, Standard Template Library, STL container, STL iterator, STL algoritmaları, ve seçilmiş Boost C++ kütüphaneleri yer almaktadır. |
Öğrenme Çıktıları |
Bu dersi başarıyla tamamlayabilen öğrenciler;
|
Ders Tanımı | Bu derste öğrencilere şablonlar ve soysal programlamanın prensipleri hakkında temel bilgiler verilmekte ve sık kullanılan soysal kütüphaneler tanıtılmaktadır. |
|
Temel Ders | |
Uzmanlık/Alan Dersleri |
X
|
|
Destek Dersleri | ||
İletişim ve Yönetim Becerileri Dersleri | ||
Aktarılabilir Beceri Dersleri |
HAFTALIK KONULAR VE İLGİLİ ÖN HAZIRLIK ÇALIŞMALARI
Hafta | Konular | Ön Hazırlık |
1 | Giriş ve motivasyon. C++ nesneye yönelik programlamanın kısa olarak hatırlatılması | |
2 | Temel şablon bilgileri. Fonksiyon ve sınıf şablonları | David Vandevoorde and Nicolai M. Josuttis. C++ Templates: The Complete Guide. Addison Wesley, 2003. (Course book) Bölüm 2- 3 |
3 | Tip dışı template parametreleri, ince detaylar | Ders kitabı Bölüm 4-5 |
4 | Sablonların günlük programlamada kullanımı | Ders kitabı Bölüm 6 |
5 | Sablonların çokbiçimli kullanım yetenekleri | Ders kitabı Bölüm 14 |
6 | Tip özellikleri ve kural sınıfları | Ders kitabı Bölüm 15 |
7 | Şablonlar ve kalıt | Ders kitabı Bölüm 16 |
8 | Qt 4.6 ile grafik arayüz programlama | C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Prentice Hall, 2008 |
9 | Standard Template Library tanıtımı | Josuttis, Nicolai M. The C++ standard library: a tutorial and reference. Addison Wesley, 1999 (STL Book) Chapter 2 |
10 | Map, Multimap, Set ve Multiset. | STL Book Bölüm 6 |
11 | STL iteratörleri | STL Book Bölüm 7 |
12 | STL algoritmaları | STL Book Bölüm 8 |
13 | Boost Smart Pointers | Boost C++ kütüphaneleri web sitesi |
14 | Diğer Boost C++ kütüphaneleri | Boost C++ kütüphaneleri web sitesi |
15 | Proje sunumları | |
16 | Dönemin gözden geçirilmesi |
Ders Kitabı | Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, Third Ed., Prentice Hall, 2010, ISBN10: 0132124114. David Vandevoorde and Nicolai M. Josuttis. C++ Templates: The Complete Guide. Addison Wesley, 2003. |
Önerilen Okumalar/Materyaller | C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Prentice Hall, 2008 Josuttis, Nicolai M. The C++ standard library: a tutorial and reference. Addison Wesley, 1999Boost C++ libraries website |
DEĞERLENDİRME ÖLÇÜTLERİ
Yarıyıl Aktiviteleri | Sayı | Katkı Payı % |
Katılım |
1
|
10
|
Laboratuvar / Uygulama | ||
Arazi Çalışması | ||
Küçük Sınav / Stüdyo Kritiği | ||
Portfolyo | ||
Ödev | ||
Sunum / Jüri Önünde Sunum | ||
Proje |
1
|
30
|
Seminer/Çalıştay | ||
Sözlü Sınav | ||
Ara Sınav |
1
|
25
|
Final Sınavı |
1
|
35
|
Toplam |
Yarıyıl İçi Çalışmalarının Başarı Notuna Katkısı |
3
|
65
|
Yarıyıl Sonu Çalışmalarının Başarı Notuna Katkısı |
1
|
35
|
Toplam |
AKTS / İŞ YÜKÜ TABLOSU
Yarıyıl Aktiviteleri | Sayı | Süre (Saat) | İş Yükü |
---|---|---|---|
Teorik Ders Saati (Sınav haftası dahildir: 16 x teorik ders saati) |
16
|
3
|
48
|
Laboratuvar / Uygulama Ders Saati (Sınav haftası dahildir. 16 x uygulama/lab ders saati) |
16
|
0
|
|
Sınıf Dışı Ders Çalışması |
15
|
2
|
30
|
Arazi Çalışması |
0
|
||
Küçük Sınav / Stüdyo Kritiği |
0
|
||
Portfolyo |
0
|
||
Ödev |
0
|
||
Sunum / Jüri Önünde Sunum |
0
|
||
Proje |
1
|
15
|
15
|
Seminer/Çalıştay |
0
|
||
Sözlü Sınav |
0
|
||
Ara Sınavlar |
1
|
22
|
22
|
Final Sınavı |
1
|
35
|
35
|
Toplam |
150
|
DERSİN ÖĞRENME ÇIKTILARININ PROGRAM YETERLİLİKLERİ İLE İLİŞKİSİ
#
|
Program Yeterlilikleri / Çıktıları |
* Katkı Düzeyi
|
||||
1
|
2
|
3
|
4
|
5
|
||
1 | Matematik, Fen Bilimleri, Bilgisayar Bilimleri ve Yazılım Mühendisliği konularında yeterli bilgi sahibidir; bu alanlardaki kuramsal ve uygulamalı bilgileri, Yazılım Mühendisliği problemlerinde kullanır. |
|||||
2 | Karmaşık Yazılım Mühendisliği problemlerini saptar, tanımlar, formüle eder ve çözer; bu amaca uygun analiz ve modelleme yöntemlerini seçer ve uygular. |
X | ||||
3 | Karmaşık bir yazılım sistemini, süreci veya ürünü gerçekçi kısıtlar ve koşullar altında, belirli gereksinimleri karşılayacak şekilde tasarlar, gerçekleştirir, sınar, doğrular, raporlar, ölçer ve bakımını yapar; bu amaçla modern yöntemleri uygular. |
X | ||||
4 | Yazılım Mühendisliği uygulamalarında karşılaşılan karmaşık problemlerin analizi ve çözümü için gerekli olan modern teknik ve araçları geliştirir, seçer ve kullanır; bilişim teknolojilerini etkin bir şekilde kullanır. |
X | ||||
5 | Yazılım Mühendisliği problemlerinin incelenmesi için deney tasarlar, deney yapar, veri toplar, sonuçları analiz eder ve yorumlar. |
X | ||||
6 | Yazılım Mühendisliği disiplini içinde ve çok disiplinli takımlarda etkin biçimde çalışır; bireysel çalışma sergiler. |
X | ||||
7 | Türkçe sözlü ve yazılı etkin iletişim kurar; etkin rapor yazar ve yazılı raporları anlar, tasarım ve üretim raporları hazırlar, etkin sunum yapar, açık ve anlaşılır talimat verir ve alır. |
|||||
8 | Mühendislik ve Yazılım uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları hakkında bilgi sahibidir; mühendislik ve yazılım çözümlerinin hukuksal sonuçlarının farkındadır. |
|||||
9 | Etik ilkelerine uygun davranma, mesleki ve etik sorumluluk bilincine sahiptir; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi sahibidir. |
|||||
10 | Proje yönetimi, risk yönetimi ve değişiklik yönetimi gibi, iş hayatındaki uygulamalar hakkında bilgi sahibidir; girişimcilik, yenilikçilik hakkında bilinçlidir; sürdürülebilir kalkınma hakkında bilgi sahibidir. |
|||||
11 | Bir yabancı dili kullanarak Yazılım Mühendisliği ile ilişkili konularda, bilgi toplar ve meslektaşları ile iletişim kurar. ("European Language Portfolio Global Scale", Level B1) |
|||||
12 | İkinci yabancı dili orta düzeyde kullanır. |
|||||
13 | Yaşam boyu öğrenmenin gerekliliği bilincindedir; bilgiye erişebilir, bilim ve teknolojideki gelişmeleri izler ve kendini sürekli yeniler; insanlık tarihi boyunca oluşan bilgi birikimini Yazılım Mühendisliği alanıyla ilişkilendirir. |
*1 Lowest, 2 Low, 3 Average, 4 High, 5 Highest