Bilgisayar Mühendisliği (İngilizce)
Lisans TYYÇ: 6. Düzey QF-EHEA: 1. Düzey EQF-LLL: 6. Düzey

Ders Genel Tanıtım Bilgileri

Ders Kodu: SWE110
Ders İsmi: Nesne Yönelimli Programlama
Ders Yarıyılı: Bahar
Ders Kredileri:
AKTS
6
Öğretim Dili: İngilizce
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ü: Dr. Öğr. Üy. GÜRSAN ÇOBAN
Dersi Veren(ler): Dr. Öğr. Gürsan ÇOBAN
Dersin Yardımcıları:

Dersin Amaç ve İçeriği

Dersin Amacı: Öğrencilere nesneye yönelik programlama kavramlarını öğreterek, yazılım geliştirme sürecini daha etkin ve düzenli hale getirmelerini sağlamak ve OOP prensiplerini uygulayarak yazılım sistemleri tasarlamalarını sağlamaktır.
Dersin İçeriği: Sınıflar ve nesneler, sınıf üye değişkenler ve fonksiyonlar, erişim belirteçleri ve "scope" kavramı, fonksiyonların sınıfların ve operatörlerin aşırı yüklenmesi, veri soyutlama, kalıtım ve çok biçimlilik, soyutlanmış sınıf tanımlarının yaratılması, sınıf ve fonksiyon şablonları, dizayn örüntülerine giriş.

Öğrenme Kazanımları

Bu dersi başarıyla tamamlayabilen öğrenciler;
1) Nesne Yönelimli C++ yaklaşımları için kapsülleme (üye verileri/işlevleri) dahil olmak üzere sınıf tanımlarını ve standart prosedürleri analiz edebilir ve açıklayabilir.
2) Nesne yönelimli yaklaşımlarda operatörlerin/fonksiyonların aşırı yüklenmesine ilişkin bir programlama kodunu analiz edebilir.
3) Bir programlama kodundaki kalıtım hiyerarşisini analiz edebilir.
4) Nesneye yönelik problemler için polimorfizmin uygulama ayrıntılarını analiz edebilir.
5) Nesne yönelimli yaklaşımlarda sınıf veya işlev şablonlarının ilkelerine ilişkin bir programlama kodunu analiz edebilir.

Ders Akış Planı

Hafta Konu Ön Hazırlık
1) Nesneye Yönelik Programlama: Sınıflara ve Nesnelere ve Katarlara Giriş, Sınıf tanımları, nesneler, veri üyeleri, üye işlevleri, yapıcılar, arayüzün ayrıştırılması. CH3
2) Sınıflar: Fonksiyonların gözden geçirilmesi ('scope' kavramı, işaretçiler, işaretçiler ve referanslar, depolama ve değişkenlerin yaşam süresi). İşaretçilerin gözden geçirilmesi, (::) çözümleme operatörü. CH6,CH8
3) Sınıflar: Sınıflarda scope (görü alanı) kavramı, yapıcı ve yıkıcıların kullanımı. arkadaş fonksiyonları ve arkadaş sınıfları, "this" işaretçisi, sınıf değişkenleri ve nesne (örnek) değişkenleri, Vaka Problemleri. CH9
4) Operatör Aşırı Yüklemesi; katar sınıfı: Aşırı yüklenmiş operatörlerin kullanılması, ikili ve tekli operatörlerin aşırı yüklenmesi, dinamik bellek yönetimi. CH10
5) Operatör Aşırı Yüklemesi; Standart sınıf şablonlarından dizi ve vektörlerin kullanılması, istisnaların yakalaması, vektörler ve dizilerle aşırı yüklemenin sınıf uygulamalarına yönelik örnekler. CH7, CH10
6) Nesneye Dayalı Programlama: Kalıtım kavramı, türetilmiş sınıflar, miras hiyerarşisi, türetilmiş sınıflarda yapıcıların yıkıcıları. CH11
7) Nesneye Dayalı Programlama: Kalıtımla Yazılım Mühendisliği, örnekler. CH11
8) Yarıyıl Sınavı Haftası -
9) Nesneye Dayalı Programlama: Çok biçimlilik, soyut sınıflar ve sanal işlevler, sanal yıkıcılar CH12
10) Nesneye Yönelik Programlama: Çok Biçimlilik Uygulamaları Ch12
11) Standart Kütüphane Konteynerleri ve Yineleyiciler: konteynerler, yineleyiciler, standart kütüphane algoritmaları CH15
12) Özel Şablonlara Giriş: sınıf şablonları, işlev şablonlarının aşırı yüklenemsi CH18-CH19
13) Şablonlaştırılmış Özel Veri Yapıları: kendine referanslı yapılar. CH19
14) *Nesne Tabanlı Programlamada Diğer Konular: değişken sınıf üyeleri, çoklu miras, çoklu miras ve sanal temel sınıflar. C++'da Yapısal Tasarım Desenleri (Design Patterns). Örnek: “dekoratör” deseni. CH23 and Slides

Kaynaklar

Ders Notları / Kitaplar: C++ How to Program, 10/E, Paul Deitel, Harvey Deitel, ISBN-13: 9780134448237, Pearson.
Diğer Kaynaklar: Bjarne Stroustrup, “Programming: Principles and Practice Using C++”, 2nd Edition, Pearson

online sources: https://cplusplus.com/doc/tutorial/
o https://cplusplus.com/
o https://github.com/pdeitel
o https://github.com/pdeitel/CPlusPlusHowToProgram10e

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

Course Learning Outcomes

1

2

3

4

5

Program Kazanımları
1) Matematik, bilim ve bilgisayar mühendisliği prensipleri hakkında yeterli bilgiye sahip olma, hem teorik hem de pratik olarak, ve bu bilgiyi karmaşık mühendislik problemlerine uygulayabilme becerisi.
2) Uygun analiz ve modelleme tekniklerini kullanarak karmaşık bilgisayar mühendisliği problemlerini tanımlama, formülleme ve çözebilme yeteneği. 3 3 3 3 3
3) Belirli gereksinimleri karşılayan ve gerçekçi kısıtlar ve koşullar altında çalışan karmaşık bilgisayar sistemleri, cihazlar veya ürünler tasarlama ve geliştirme yeteneği, modern tasarım yöntemlerini kullanma yeteneği. 2 2 2 2 2
4) Karmaşık bilgisayar mühendisliği problemlerinin analizi ve çözümü için kullanılan modern teknikleri ve araçları geliştirme, seçme ve kullanabilme yeteneği, bilgi teknolojilerini etkili bir şekilde kullanabilme yeteneği. 3 3 3 3 3
5) Karmaşık bilgisayar mühendisliği problemleri veya araştırma konularının incelenmesinde deney planlama ve yürütme, veri toplama ve analiz etme, sonuçları yorumlama yeteneği.
6) Çok disiplinli ekiplerde etkili bir şekilde çalışma yeteneği; bireysel çalışma becerileri.
7) Sözlü ve yazılı iletişim becerileriyle etkili iletişim kurabilme; en az bir yabancı dil bilgisi; etkili raporlar yazabilme ve yazılı raporları anlayabilme, tasarım ve üretim raporları hazırlayabilme, etkili sunumlar yapabilme, açık ve anlaşılır talimatlar verip alabilme yeteneği.
8) Yaşam boyu öğrenme gerekliliğinin farkında olma; bilgiye erişme yeteneği, bilim ve teknolojideki gelişmeleri takip etme ve sürekli yenileme yeteneği.
9) Etik prensiplere, mesleki ve etik sorumluluğa uygun davranma; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi sahibi olma.
10) Proje yönetimi, risk yönetimi ve değişim yönetimi gibi iş uygulamaları hakkında bilgi; girişimcilik ve yenilik farkındalığı; sürdürülebilir kalkınma hakkında bilgi.
11) Bilgisayar mühendisliği uygulamalarının sağlık, çevre ve güvenlik üzerindeki etkileri ve bilgisayar mühendisliğine yansıyan dönemin sorunları hakkında bilgi sahibi olma; bilgisayar mühendisliği çözümlerinin yasal sonuçları konusunda farkındalık.

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, bilim ve bilgisayar mühendisliği prensipleri hakkında yeterli bilgiye sahip olma, hem teorik hem de pratik olarak, ve bu bilgiyi karmaşık mühendislik problemlerine uygulayabilme becerisi.
2) Uygun analiz ve modelleme tekniklerini kullanarak karmaşık bilgisayar mühendisliği problemlerini tanımlama, formülleme ve çözebilme yeteneği. 3
3) Belirli gereksinimleri karşılayan ve gerçekçi kısıtlar ve koşullar altında çalışan karmaşık bilgisayar sistemleri, cihazlar veya ürünler tasarlama ve geliştirme yeteneği, modern tasarım yöntemlerini kullanma yeteneği. 2
4) Karmaşık bilgisayar mühendisliği problemlerinin analizi ve çözümü için kullanılan modern teknikleri ve araçları geliştirme, seçme ve kullanabilme yeteneği, bilgi teknolojilerini etkili bir şekilde kullanabilme yeteneği. 3
5) Karmaşık bilgisayar mühendisliği problemleri veya araştırma konularının incelenmesinde deney planlama ve yürütme, veri toplama ve analiz etme, sonuçları yorumlama yeteneği.
6) Çok disiplinli ekiplerde etkili bir şekilde çalışma yeteneği; bireysel çalışma becerileri.
7) Sözlü ve yazılı iletişim becerileriyle etkili iletişim kurabilme; en az bir yabancı dil bilgisi; etkili raporlar yazabilme ve yazılı raporları anlayabilme, tasarım ve üretim raporları hazırlayabilme, etkili sunumlar yapabilme, açık ve anlaşılır talimatlar verip alabilme yeteneği.
8) Yaşam boyu öğrenme gerekliliğinin farkında olma; bilgiye erişme yeteneği, bilim ve teknolojideki gelişmeleri takip etme ve sürekli yenileme yeteneği.
9) Etik prensiplere, mesleki ve etik sorumluluğa uygun davranma; mühendislik uygulamalarında kullanılan standartlar hakkında bilgi sahibi olma.
10) Proje yönetimi, risk yönetimi ve değişim yönetimi gibi iş uygulamaları hakkında bilgi; girişimcilik ve yenilik farkındalığı; sürdürülebilir kalkınma hakkında bilgi.
11) Bilgisayar mühendisliği uygulamalarının sağlık, çevre ve güvenlik üzerindeki etkileri ve bilgisayar mühendisliğine yansıyan dönemin sorunları hakkında bilgi sahibi olma; bilgisayar mühendisliği çözümlerinin yasal sonuçları konusunda farkındalık.

Ölçme ve Değerlendirme

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

İş Yükü ve AKTS Kredisi Hesaplaması

Aktiviteler Aktivite Sayısı İş Yükü
Ders Saati 13 39
Laboratuvar 13 26
Sınıf Dışı Ders Çalışması 13 26
Ara Sınavlar 3 22
Final 4 27
Toplam İş Yükü 140