Ders Adı Nesne Tabanlı Programlama
Ders Kodu BPR-3130
Dersin Türü Zorunlu
Ders Biriminin Seviyesi Ön Lisans
Yıl 1
Dönem 2.Yarıyıl
AKTS 3
Dersi Veren(ler) Öğr.Gör.Oğuzhan KİLİM
Dersin Yardımcıları
Ders İşleme Biçimi Yüz Yüze
Önkoşul Dersleri
Dersin İçeriği Diziler ve dizi listeleri, dizi algoritmaları, Çok boyutlu diziler, Sıralama Algoritmaları Nesneye yönelik programlama ve sınıf kavramı.Nesneye Yönelik Programlamanın Temel İlkeleri ve UML Diyagramları Sınıf (Class) kavramı , static değişkenler ve void metotlar, Sınıf (Class) ve fonksiyonlar Overloading(Aşırı yükleme) Recursive (Özyineli) Methotlar Nesne yapısı ve kavramı Nesne sınıfı ve nesne oluşturma Bellekte yer ayırma, başvuru değişkeni. Constructorlar (Kurucu/Yapıcı) Fonksiyonlar İnheritance ( Kalıtım) Encapsulation (Kapsülleme) Polymorphism (Çok Biçimlilik) Abstraction (Soyutlama)
Dersin Verildiği Diller Türkçe
Dersin Amacı Bu dersin amacı, sözdiziminden (syntax) daha çok problem çözmeye odaklanan ve problem odaklı bir şekilde nesne yönelimli programlamayı (OOP) öğretmektir. Öğrenciler nesne tabanlı düşünme ve tasarımını öğrenir ve algoritmik düşünme becerilerini geliştirirler. OOP tekniklerini belirli bir probleme nasıl ve ne zaman etkili bir şekilde uygulayacaklarını öğrenirler. Ders, Java C# veya Python da temel tekniklerin gözden geçirilmesiyle başlar ve ardından nesneler ve sınıflar, nesne odaklı düşünme, kalıtım ve çok biçimlilik, kapsülleme ve soyutlama ile ilgili konuları öğrenir.
Ders Yapısı
Temel/Alana Özgü Mesleki Dersler 50
Uzmanlık/Program Dersi 25
Destek Dersi 25
Beceri,İletişim ve Yönetim Becerileri Dersi 0
Aktarılabilir Beceri Dersi 0
Matematik ve Temel Bilimler 0
Temel Eğitim 0
Ders İşleme Şekli
Sınıf Dersi 50
Sınıf Dersi açıklama 1
Problem Saati 0
Problem Saati Açıklama 0
Laboratuvar 50
Laboratuvar Açıklama 1
Diğer 0
Diğer Açıklama 0
No Dersin Kazanımları  
1 Diziler üzerinde işlemler yapabilecek, algoritmalar geliştirebilecektir.
2 Verilen bir problem için sınıf diyagramları üretebilecek, metod ve fonksiyonlar oluşturabilecektir.
3 Özel fonksiyonları (Yapıcı, Özyineli, Aşırı Yüklemeli) kullanabilecektir.
4 Nesne yönelimli programlama dilinin temel özelliklerini tanımlayabilecektir.
5 Nesne yönelimli tasarım, polimorfizm, bilgi saklaması ve miras kavramlarını tanımlayabilecektir.
DERSİN KAZANIMLARI / PROGRAM YETERLİKLERİ İLİŞKİ MATRİSİ
DKPÇ1PÇ2PÇ3PÇ4PÇ5PÇ6PÇ7PÇ8PÇ9PÇ10PÇ11PÇ12PÇ13PÇ14PÇ15
1
2
3
4
5
5-Çok Yüksek İlişkili 4- Yüksek İlişkili 3-Orta İlişkili 2- Zayıf İlişkili 1-İlişkisiz
Hafta Konular  
1 Diziler ve dizi listeleri, dizi algoritmaları, Çok boyutlu diziler, Sıralama Algoritmaları
2 Diziler ve dizi listeleri, dizi algoritmaları, Çok boyutlu diziler, Sıralama Algoritmaları
3 Nesneye yönelik programlama ve sınıf kavramı.Nesneye Yönelik Programlamanın Temel İlkeleri ve UML Diyagramları
4 Sınıf (Class) kavramı , static değişkenler ve void metotlar,
5 Sınıf (Class) ve fonksiyonlar
6 Overloading(Aşırı yükleme)
7 Recursive (Özyineli) Methotlar
8 Nesne yapısı ve kavramı
9 Nesne sınıfı ve nesne oluşturma Bellekte yer ayırma, başvuru değişkeni.
10 Constructorlar (Kurucu/Yapıcı) Fonksiyonlar
11 İnheritance ( Kalıtım)
12 Encapsulation (Kapsülleme)
13 Polymorphism (Çok Biçimlilik)
14 Abstraction (Soyutlama)
No Program Çıktısı Katkı Düzeyi
1 Mesleği ile ilgili temel, güncel ve uygulamalı bilgilere sahip olur. 4
2 İş sağlığı ve güvenliği, çevre bilinci ve kalite süreçleri hakkında bilgi sahibi olur. 1
3 Mesleği için güncel gelişmeleri ve uygulamaları takip eder, etkin şekilde kullanır. 2
4 Mesleği ile ilgili bilişim teknolojilerini (yazılım, program, animasyon vb.) etkin kullanır. 4
5 Mesleki problemleri ve konuları bağımsız olarak analitik ve eleştirel bir yaklaşımla değerlendirme ve çözüm önerisini sunabilme becerisine sahiptir. 2
6 Bilgi ve beceriler düzeyinde düşüncelerini yazılı ve sözlü iletişim yolu ile etkin biçimde sunabilir, anlaşılır biçimde ifade eder. 2
7 Alanı ile ilgili uygulamalarda karşılaşılan ve öngörülemeyen karmaşık sorunları çözmek için ekip üyesi olarak sorumluluk alır. 2
8 Kariyer yönetimi ve yaşam boyu öğrenme konularında farkındalığa sahiptir. 1
9 Alanı ile ilgili verilerin toplanması, uygulanması ve sonuçlarının duyurulması aşamalarında toplumsal, bilimsel, kültürel ve etik değerlere sahiptir. 1
10 Bir yabancı dili kullanarak alanındaki bilgileri takip eder ve meslektaşları ile iletişim kurar. 2
11 Algoritma ve veri yapılarını oluşturur ve matematiksel hesapları yapar. 1
12 Web programlama teknolojilerini açıklar ve uygular. 1
13 Veri tabanı tasarımı ve yönetimini gerçekleştirir. 2
14 Yazılımları test eder ve hataları giderir. 2
15 Veri yönetimi, veri işleme ve analiz etme becerisine sahiptir. 1
Yarıyıl İçi Çalışmaları Sayısı Katkı Payı
Ara Sınav 1 50
Kısa Sınav 0 0
Ödev 7 25
Devam 0 0
Uygulama 0 0
Labaratuvar 14 25
Proje 0 0
Atölye 0 0
Seminer 0 0
Arazi Çalışması 0 0
Sözlü sınav 0 0
Portfolyo 0 0
Doküman İncelemesi 0 0
Performans değerlendirme 0 0
Sunum 0 0
Alan Çalışması 0 0
Vaka Çalışması 0 0
Video Kaydı 0 0
Öz değerlendirme 0 0
Akran Değerlendirme 0 0
Eşleştirme Testleri 0 0
Çoktan seçmeli test 0 0
Kısa Cevaplı test 0 0
Kontrol listeleri 0 0
Dereceleme Ölçekleri 0 0
Zihin Haritalama 0 0
Araştırma yazısı 0 0
Çevrimiçi anket 0 0
Çevrimiçi Kısa sınav 0 0
TOPLAM 100
Yıliçinin Başarıya Oranı 50
Finalin Başarıya Oranı 50
TOPLAM 100
AKTS kredilerinin belirlenmesinde öğrenci işyükü anketlerinden faydalanılmaktadır.
Etkinlik Sayısı Süresi Toplam
Ders Süresi (Sınav Haftaları Hariç) 14 3 42
Sınıf Dışı Ders Çalışma Süresi 14 3 42
Ödevler 14 1 14
Sunum/Seminer 0 0 0
Proje 0 0 0
Laboratuar Çalışması 14 1 14
Arazi ya da Alan Çalışması 0 0 0
Kısa Sınav 0 0 0
Araştırma 0 0 0
Rapor Yazma/Rapor sunumu 0 0 0
Vaka İncelemesi 0 0 0
Staj 0 0 0
Uygulama/Materyal Hazırlama 0 0 0
Tez Çalışması 0 0 0
Ara Sınavlar 1 1 1
Yarıyıl Sonu Sınavı 1 1 1
İşyükü Saati (30) 30
Toplam İşyükü / Saat 114    
Dersin Akts Kredisi 4    
Ders Notu [1]Java ile Temel Programlama, Bora Güngören, Seçkin Yayıncılık Nisan 2008, [2]Java Uygulamaları, Murat İnan, Altaş Yayıncılık 2010, [3]Java Programlama Dili ve Yazılım Tasarımı,Altuğ B. Altıntaş,Papatya Yayıncılı 2010, [4]Java Programlama Teknikleri ,Bora Güngören, Seçkin Yayıncılık 2006 [5]"Python Programming: An Introduction to Computer Science" – John Zelle [6] "Java: The Complete Reference" – Herbert Schildt [7] "Object-Oriented Programming in Python" – Dusty Phillips [8] "C# 9.0 in a Nutshell" – Joseph Albahari [8] "Effective C++" – Scott Meyers
Diğer Kaynaklar [1]Java ile Temel Programlama, Bora Güngören, Seçkin Yayıncılık Nisan 2008, [2]Java Uygulamaları, Murat İnan, Altaş Yayıncılık 2010, [3]Java Programlama Dili ve Yazılım Tasarımı,Altuğ B. Altıntaş,Papatya Yayıncılı 2010, [4]Java Programlama Teknikleri ,Bora Güngören, Seçkin Yayıncılık 2006 [5]"Python Programming: An Introduction to Computer Science" – John Zelle [6] "Java: The Complete Reference" – Herbert Schildt [7] "Object-Oriented Programming in Python" – Dusty Phillips [8] "C# 9.0 in a Nutshell" – Joseph Albahari [8] "Effective C++" – Scott Meyers
Materyal
Dökümanlar [1]Java ile Temel Programlama, Bora Güngören, Seçkin Yayıncılık Nisan 2008, [2]Java Uygulamaları, Murat İnan, Altaş Yayıncılık 2010, [3]Java Programlama Dili ve Yazılım Tasarımı,Altuğ B. Altıntaş,Papatya Yayıncılı 2010, [4]Java Programlama Teknikleri ,Bora Güngören, Seçkin Yayıncılık 2006 [5]"Python Programming: An Introduction to Computer Science" – John Zelle [6] "Java: The Complete Reference" – Herbert Schildt [7] "Object-Oriented Programming in Python" – Dusty Phillips [8] "C# 9.0 in a Nutshell" – Joseph Albahari [8] "Effective C++" – Scott Meyers
Ödevler
Sınavlar
Materyal Diğer
Planlanmış Öğrenme Faaliyetleri ve Öğretim Yöntemleri











Course Weekly Schedules
Hafta 1 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta boyunca diziler ve ilgili algoritmalar konusunda temel ve ileri düzey konular işlenecek. Hedefler:

Dizilerin temel yapısını ve kullanımını öğrenmek
Dizi algoritmalarını anlamak ve uygulamak (arama, ekleme, silme)
Çok boyutlu dizileri kullanarak matris işlemleri yapmak
Sıralama algoritmalarının mantığını kavramak ve kodlamak
Algoritmaların zaman ve uzay karmaşıklıklarını analiz etmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Öğrenme etkinlikleri şunları içerebilir:

Ders Notları: Diziler ve algoritmalarla ilgili yazılı kaynaklar
Videolar: YouTube, Udemy gibi platformlardan sıralama ve arama algoritmalarını anlatan eğitimler
Kodlama Pratiği:
Java, C##, Python gibi dillerde sıralama algoritmalarını kodlamak
Kitaplar:
"Introduction to Algorithms" – Cormen
"Data Structures and Algorithm Analysis" – Mark Allen Weiss
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu şekilde ilerleyecek:

Teorik Kısım: Öncelikle dizilerin yapısı ve temel işlemleri anlaşılır.
Pratik Kısım:
Dizi oluşturma, eleman ekleme, çıkarma, sıralama gibi temel işlemler yapılır.
Arama algoritmaları (Linear Search, Binary Search) ve sıralama algoritmaları (Bubble, Selection, Merge Sort) uygulanır.
Algoritma Analizi: Algoritmaların verimliliği (Big-O notasyonu) analiz edilir.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi:Öğrencilerden verilen dizi işlemleri ile ilgili lab çalışması ve ödevlerini için kodlar yazmaları beklenir. (Örn: Binary Search veya Merge Sort kodlamak)
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 2 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta boyunca diziler ve ilgili algoritmalar konusunda temel ve ileri düzey konular işlenecek. Hedefler:
Dizilerin temel yapısını ve kullanımını öğrenmek
Dizi algoritmalarını anlamak ve uygulamak (arama, ekleme, silme)
Çok boyutlu dizileri kullanarak matris işlemleri yapmak
Sıralama algoritmalarının mantığını kavramak ve kodlamak
Algoritmaların zaman ve uzay karmaşıklıklarını analiz etmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Öğrenme etkinlikleri şunları içerebilir:
Ders Notları: Diziler ve algoritmalarla ilgili yazılı kaynaklar
Videolar: YouTube, Udemy gibi platformlardan sıralama ve arama algoritmalarını anlatan eğitimler
Kodlama Pratiği:
Java, C##, Python gibi dillerde sıralama algoritmalarını kodlamak
Kitaplar:
"Introduction to Algorithms" – Cormen
"Data Structures and Algorithm Analysis" – Mark Allen Weiss

Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu şekilde ilerleyecek:
Teorik Kısım: Öncelikle dizilerin yapısı ve temel işlemleri anlaşılır.
Pratik Kısım:Dizi oluşturma, eleman ekleme, çıkarma, sıralama gibi temel işlemler yapılır.
Arama algoritmaları (Linear Search, Binary Search) ve sıralama algoritmaları (Bubble, Selection, Merge Sort) uygulanır.
Algoritma Analizi: Algoritmaların verimliliği (Big-O notasyonu) analiz edilir.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi:Öğrencilerden verilen dizi işlemleri ile ilgili lab çalışması ve ödevlerini için kodlar yazmaları beklenir. (Örn: Binary Search veya Merge Sort kodlamak)
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 3 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta boyunca Nesneye Yönelik Programlama (OOP) ve Sınıf Kavramı ile ilgili temel ve ileri düzey konular işlenecektir. Hedefler şunlardır:

Nesneye yönelik programlamanın (OOP) temel kavramlarını anlamak
Sınıf (Class) ve Nesne (Object) yapılarını öğrenmek ve uygulamak
OOP’nin dört temel ilkesi olan kapsülleme (encapsulation), kalıtım (inheritance), çok biçimlilik (polymorphism) ve soyutlama (abstraction) kavramlarını anlamak
UML (Unified Modeling Language) diyagramlarının temel türlerini öğrenmek (Sınıf Diyagramı, Nesne Diyagramı, Kullanım Senaryosu Diyagramı)
OOP prensiplerini içeren basit bir proje geliştirmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Öğrenme etkinlikleri şunları içerebilir:

Ders Notları ve Slaytlar: OOP kavramlarını detaylı anlatan kaynaklar
Videolar: YouTube, Udemy gibi platformlardan OOP ve UML diyagramlarını anlatan eğitimler
Kodlama Pratiği:
OOP uygulamalarına yönelik örnekler kodlama (C#, Java, Python)
Online platformlarda OOP alıştırmaları yapmak (LeetCode, HackerRank)
Kitaplar:
"Head First Object-Oriented Analysis and Design" – Brett McLaughlin
"Design Patterns: Elements of Reusable Object-Oriented Software" – Erich Gamma
UML Çalışmaları: UML sınıf diyagramları, nesne diyagramları ve kullanım senaryosu diyagramları çizme
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu şekilde ilerleyecek:

Teorik Kısım:
OOP’nin temel kavramları detaylı incelenecek.
UML diyagramlarının nasıl oluşturulacağı öğretilecek.
Pratik Kısım:
Küçük ölçekli projelerle sınıf ve nesne kavramları uygulanacak.
Kalıtım, çok biçimlilik ve kapsülleme gibi temel ilkeler kodlanarak pratiğe dökülecek.
UML Çalışmaları:
Bir sistem için UML sınıf diyagramı ve kullanım senaryosu diyagramı oluşturulacak.
Kodlama Görevleri:
Basit bir nesne yönelimli program yazarak OOP prensipleri uygulanacak.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 4 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta boyunca Sınıf (Class) Kavramı, Static Değişkenler ve Void Metotlar konuları ele alınacaktır. Bu kapsamda aşağıdaki hedefler belirlenmiştir:

Sınıf (Class) kavramını anlamak ve nesne yönelimli programlamadaki rolünü kavramak
Nesneler ve sınıflar arasındaki ilişkiyi öğrenmek ve basit sınıflar oluşturmak
Static değişkenlerin ne olduğunu ve nasıl kullanıldığını kavramak
Void metotların yapısını ve nasıl kullanıldığını öğrenmek
Bir nesne yönelimli programlama dili (Java, Python, C#) kullanarak sınıflar, static değişkenler ve void metotları içeren örnekler yazmak
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuların öğrenilmesi için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Sınıf ve nesne ilişkisini anlatan kaynaklar
Static değişkenler ve void metotlarla ilgili detaylı dokümanlar
Videolar:
YouTube, Udemy gibi platformlardan OOP’nin temel bileşenlerini anlatan dersler
Java, Python veya C++ kullanarak static değişkenler ve void metotlar üzerine pratik anlatımlar
Kodlama Pratiği:
Online kodlama platformlarında (LeetCode, HackerRank) sınıf ve metodlarla ilgili alıştırmalar yapmak
Küçük ölçekli projeler geliştirmek
Kitaplar:
"Java: The Complete Reference" – Herbert Schildt
"Python Crash Course" – Eric Matthes
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci aşağıdaki aşamalardan oluşacaktır:

Teorik Kısım:
Sınıf ve nesne kavramları detaylandırılacak.
Static değişkenlerin bellekte nasıl saklandığı ve hangi durumlarda kullanıldığı açıklanacak.
Void metotların çalışma prensibi ve dönüş değeri olmayan fonksiyonlar ele alınacak.
Pratik Kısım:
Örnek sınıflar oluşturularak nesne türetme uygulamaları yapılacak.
Static değişkenler kullanılarak sayaç (counter) gibi örnekler geliştirilecek.
Void metotlar kullanarak kullanıcıdan veri alıp işleyen uygulamalar yazılacak.
Kodlama Görevleri:
Java, Python veya C# kullanarak, sınıflar, static değişkenler ve void metotlar içeren küçük bir program yazılacak
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.

Hafta 5 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta boyunca Sınıf (Class) ve Fonksiyonlar konuları ele alınacaktır. Hedefler şunlardır:

Sınıf (Class) kavramını anlamak ve nesne yönelimli programlamadaki (OOP) rolünü kavramak
Nesneler ve sınıflar arasındaki ilişkiyi öğrenmek ve sınıflar oluşturarak nesne üretmek
Fonksiyonların nasıl tanımlandığını ve kullanıldığını anlamak
Sınıf içinde fonksiyonlar (metotlar) kullanarak nesnelerin davranışlarını yönetmek
Bir programlama dili (Java, Python, C#) kullanarak sınıflar ve fonksiyonları içeren kod örnekleri geliştirmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuların öğrenilmesi için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Sınıfların ve nesnelerin temellerini anlatan kaynaklar
Fonksiyonların yapısını açıklayan dökümanlar
Videolar:
YouTube, Udemy gibi platformlardan OOP ve fonksiyonlar üzerine dersler
Java, Python veya C# ile sınıf ve fonksiyon uygulamalarına yönelik eğitimler
Kodlama Pratiği:
Online kodlama platformlarında (LeetCode, HackerRank) fonksiyonlar ve sınıflarla ilgili alıştırmalar yapmak
Küçük ölçekli projeler geliştirmek
Kitaplar:
"Object-Oriented Programming in Python" – Dusty Phillips
"Thinking in Java" – Bruce Eckel
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Sınıf ve nesne kavramları detaylandırılacak.
Fonksiyonların tanımı, parametre yapıları ve dönüş değerleri anlatılacak.
Sınıf içinde metotlar (fonksiyonlar) nasıl tanımlanır ve kullanılır konusu incelenecek.
Pratik Kısım:
Örnek sınıflar oluşturularak nesne türetme uygulamaları yapılacak.
Fonksiyonlar kullanılarak nesne davranışları kodlanacak.
Parametreli ve parametresiz fonksiyonlar yazılarak uygulamalar geliştirilecek.
Kodlama Görevleri:
Java, Python veya C# kullanarak, sınıflar ve fonksiyonları içeren bir program yazılacak.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 6 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Overloading (Aşırı Yükleme) konusu ele alınacaktır. Hedefler şunlardır:

Overloading (Aşırı Yükleme) kavramını anlamak ve nesne yönelimli programlamadaki (OOP) rolünü kavramak
Metot (Fonksiyon) Aşırı Yükleme: Aynı isimde farklı parametre listeleriyle metotların nasıl oluşturulacağını öğrenmek
Operatör Aşırı Yükleme: Bazı dillerde (C++, Python) operatörlerin nasıl aşırı yüklendiğini anlamak
Statik ve dinamik bağlama (static vs. dynamic binding) arasındaki farkları öğrenmek
Kodlama uygulamaları yaparak aşırı yükleme tekniğini kullanma pratiği kazanmak
Java, C#, Python gibi dillerde Overloading örnekleri geliştirmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuların öğrenilmesi için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Overloading kavramını detaylı açıklayan kaynaklar
Java, Python ve C++’ta aşırı yükleme tekniklerini anlatan dökümanlar
Videolar:
YouTube, Udemy gibi platformlardan Overloading ile ilgili eğitimler
Farklı dillerde metot ve operatör aşırı yükleme uygulamalarına yönelik videolar
Kodlama Pratiği:
Online kodlama platformlarında (LeetCode, HackerRank) aşırı yükleme alıştırmaları yapmak
Küçük ölçekli projeler geliştirmek
Kitaplar:
"Effective Java" – Joshua Bloch
"C++ Primer" – Stanley B. Lippman
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Aşırı yükleme (Overloading) kavramının detaylandırılması
Java, C#, Python gibi dillerde Overloading’in nasıl çalıştığının anlatılması
Statik bağlama (static binding) ve dinamik bağlama (dynamic binding) arasındaki farkların açıklanması
Pratik Kısım:
Aynı isimli ancak farklı parametre yapılarına sahip metotlar yazma
Java, C# ve Python’da operatör aşırı yükleme uygulamaları geliştirme
Java'da metot aşırı yükleme (method overloading) örnekleri yapma
Kodlama Görevleri:
Overloading içeren küçük bir program yazma
Operatör aşırı yükleme (Java C# veya Python) ve metot aşırı yükleme (Java) uygulamalarını içeren bir proje geliştirme
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 7 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Recursive (Özyineli) Metotlar konusu ele alınacaktır. Hedefler şunlardır:

Özyinelemeli (recursive) metotların temel mantığını anlamak
Recursive ve iteratif (döngü tabanlı) çözümler arasındaki farkları öğrenmek
Basit ve karmaşık recursive fonksiyonlar yazmak
Stack yapısının (çağrı yığını - call stack) recursive metotlarla nasıl çalıştığını kavramak
Tail Recursion (kuyruk özyineleme) ve optimizasyon tekniklerini öğrenmek
Fibonacci, faktöriyel, kuleler problemi gibi klasik recursive algoritmalar üzerinde pratik yapmak
Java, Python, C# gibi dillerde recursive metotlar yazarak uygulamalar geliştirmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuların öğrenilmesi için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Özyinelemeli fonksiyonların çalışma mantığını açıklayan kaynaklar
Stack yapısı ve çağrı yığını ile ilgili detaylı dokümanlar
Videolar:
YouTube, Udemy gibi platformlardan Recursive Programlama ile ilgili dersler
Java, Python veya C# kullanarak recursive metotlarla problem çözme anlatımları
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda recursive çözümler geliştirme
Fibonacci, faktöriyel, kuleler problemi gibi klasik özyinelemeli algoritmalar üzerinde çalışma
Kitaplar:
"Grokking Algorithms" – Aditya Y. Bhargava
"Introduction to the Design and Analysis of Algorithms" – Anany Levitin
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Özyineleme (recursion) kavramı detaylandırılacak.
Recursive ve iteratif yöntemler arasındaki farklar incelenecek.
Çağrı yığınının (call stack) recursive metotlarla nasıl çalıştığı anlatılacak.
Tail Recursion ve optimizasyon teknikleri ele alınacak.
Pratik Kısım:
Faktöriyel, Fibonacci dizisi gibi basit özyinelemeli fonksiyonlar yazılacak.
Kuleler Problemi, derinlik öncelikli arama (DFS) gibi ileri seviye recursive algoritmalar kodlanacak.
Java, Python veya C++ kullanılarak recursive çözümler geliştirilecek.
Kodlama Görevleri:
Recursive fonksiyonlarla bir dizi problemi çözme.
Recursive çözümlerin iteratif versiyonlarıyla karşılaştırılması.
Derinlik öncelikli arama (DFS) algoritmasıyla ilgili bir uygulama geliştirme.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 8 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Nesne Yapısı ve Kavramı konusu ele alınacaktır. Bu haftanın hedefleri şunlardır:

Nesne yapısının temellerini öğrenmek ve nesnelerin nesne yönelimli programlamadaki (OOP) rolünü anlamak
Nesnelerin sınıflarla nasıl ilişkilendiğini öğrenmek ve nesne oluşturma sürecini kavramak
Nesne yapısının özelliklerini (değişkenler, metotlar) incelemek
Nesne yönelimli programlamadaki sınıfların ve nesnelerin kullanımını anlamak
Nesnelerin, sınıfların birer örneği olduğunu kavrayarak, nesne tabanlı bir program yazmak
Java, C#, Python gibi dillerde nesne yapısına dair pratik yaparak uygulamalar geliştirmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuları öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Nesne yapısının temellerini anlatan kaynaklar
Nesne ve sınıf ilişkisini açıklayan dökümanlar
Videolar:
YouTube ve Udemy gibi platformlardan Nesne Yapısı ve Nesne Yönelimli Programlama ile ilgili dersler
Java, Python, C# gibi dillerde nesnelerle ilgili uygulamalı dersler
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda nesnelerle ilgili alıştırmalar yapmak
Nesne yapısına dair küçük projeler geliştirmek
Kitaplar:
"Object-Oriented Programming in Python" – Dusty Phillips
"Java: The Complete Reference" – Herbert Schildt
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Nesne yapısının ne olduğu, sınıflar ve nesneler arasındaki ilişki detaylı şekilde anlatılacak.
Nesnelerin özellikleri (değişkenler, metotlar) ve nasıl işlediği açıklanacak.
Nesne yönelimli programlamanın temel ilkeleri (encapsulation, inheritance, polymorphism, abstraction) açıklanacak.
Pratik Kısım:
Nesne ve sınıf ilişkisi üzerinde çalışarak uygulamalar geliştirilecek.
Nesnelerle basit programlar yazılacak.
Java, C#, veya Python kullanarak nesne yapısı içeren küçük projeler yapılacak.
Kodlama Görevleri:
Nesne yapısına dair basit bir uygulama geliştirilmesi
Sınıfları tanımlayarak nesne oluşturulması ve bu nesnelerle işlem yapılması
Nesne tabanlı programlama dilinde (Java, Python veya C#) bir nesne yapısı projesi geliştirilmesi
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 9 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Nesne Sınıfı ve Nesne Oluşturma, Bellekte Yer Ayırma ve Başvuru Değişkeni konusu ele alınacaktır. Haftanın hedefleri şunlardır:

Nesne sınıfı (class) ve nesne oluşturma (object creation) kavramlarını anlamak
Nesnelerin bellek üzerinde nasıl yer ayırdığını öğrenmek
Heap ve Stack bellek alanlarını anlamak
Başvuru değişkeni (reference variable) kavramını öğrenmek ve nesnelerle nasıl çalışıldığını anlamak
Java, Python, C# gibi dillerde nesne sınıfı oluşturma ve başvuru değişkenleri ile çalışarak uygulamalar geliştirmek
Bellek yönetimi, nesne referansları ve çöp toplama (garbage collection) gibi konuları incelemek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuları öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Nesne sınıfı ve nesne oluşturma hakkında detaylı açıklamalar
Bellek yönetimi, Heap ve Stack hakkında dökümanlar
Başvuru değişkenleri ve nesne referansları hakkında bilgiler
Videolar:
YouTube, Udemy gibi platformlardan nesne oluşturma, başvuru değişkenleri ve bellek yönetimi hakkında dersler
Nesnelerin bellek üzerinde nasıl yer aldığına dair video anlatımlar
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda nesne oluşturma ve bellek yönetimi üzerine alıştırmalar yapmak
Nesne sınıfı oluşturma ve başvuru değişkeni kullanarak uygulamalar geliştirmek
Kitaplar:
"Java: The Complete Reference" – Herbert Schildt
"Effective C++" – Scott Meyers
"Python Programming: An Introduction to Computer Science" – John Zelle
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Nesne sınıfı (class) ve nesne oluşturma (object creation) hakkında detaylı bir açıklama yapılacak.
Bellek yönetimi ve nesne oluşturma sırasında Heap ve Stack arasındaki farklar ele alınacak.
Başvuru değişkeni (reference variable) kavramı anlatılacak.
Nesnelerin bellekte nasıl yer aldığını, bellek ayırma süreçlerini ve garbage collection (çöp toplama) mekanizmasını inceleyeceğiz.
Pratik Kısım:
Java, Python veya C# ile nesne sınıfı oluşturulacak ve başvuru değişkenleri kullanılarak nesnelerle işlem yapılacak.
Nesne oluşturma ve bellek ayırma üzerine küçük uygulamalar yapılacak.
Heap ve Stack ile ilgili bellek yönetimi ve referanslar üzerine pratik çözümler yazılacak.
Kodlama Görevleri:
Nesne sınıfı oluşturma ve başvuru değişkenleriyle nesnelerle işlem yapma alıştırması yapılacak.
Java veya Python dilinde bellek yönetimi ve çöp toplama (garbage collection) ile ilgili bir uygulama geliştirilecek.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 10 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Constructorlar (Kurucu/Yapıcı) Fonksiyonlar konusu ele alınacaktır. Bu haftanın hedefleri şunlardır:

Constructor (Kurucu) fonksiyonlarının ne olduğunu öğrenmek
Constructor'ların sınıflarla nasıl ilişkilendirildiğini ve nesne oluşturulurken nasıl çağrıldığını anlamak
Farklı türde constructor'ların (default, parameterized) nasıl kullanıldığını öğrenmek
Constructor overloading (aşırı yükleme) kavramını anlamak
Java, Python, C# gibi dillerde constructor'lar kullanarak nesne oluşturma ve yapılandırma uygulamaları geliştirmek
Constructor'ların bellek yönetimi ve sınıfın doğru şekilde başlatılması üzerindeki etkilerini kavramak
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuyu öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Constructor fonksiyonlarının temel kavramlarını anlatan notlar
Default, parameterized ve constructor overloading konuları üzerinde odaklanmış dökümanlar
Videolar:
YouTube ve Udemy gibi platformlardan constructor fonksiyonları, constructor overloading ve nesne oluşturma üzerine dersler
Java, Python, C# kullanarak constructor'lar ile uygulamalı video dersler
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda constructor'lar ile ilgili alıştırmalar yapma
Constructor fonksiyonlarını kullanarak küçük projeler geliştirme
Kitaplar:
"Object-Oriented Programming in Python" – Dusty Phillips
"Java: The Complete Reference" – Herbert Schildt
"C++ Primer" – Stanley B. Lippman
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Constructor (Kurucu) fonksiyonlarının tanımı yapılacak.
Default Constructor ve Parameterized Constructor arasındaki farklar açıklanacak.
Constructor Overloading (aşırı yükleme) kavramı anlatılacak.
Nesne oluşturma ve yapılandırma işlemleriyle ilgili Constructor'ların önemi vurgulanacak.
Pratik Kısım:
Java, Python veya C# kullanarak farklı türde constructor'lar yazılacak ve nesne oluşturulacak.
Constructor Overloading uygulanarak bir sınıfın farklı parametrelerle oluşturulması sağlanacak.
Constructor'ların bellek yönetimi ve sınıf başlatma üzerindeki etkileri pratikle gösterilecek.
Kodlama Görevleri:
Constructor'lar kullanarak bir sınıf oluşturulacak ve nesne başlatılacak.
Farklı constructor türleri ile örnekler yapılacak ve bu örneklerde nesne başlatma adımları uygulamalı olarak gösterilecek.
Constructor Overloading ile bir sınıfın farklı yapılandırma parametreleri ile nasıl oluşturulacağına dair örnekler yapılacak.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 11 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Inheritance (Kalıtım) konusu ele alınacaktır. Haftanın hedefleri şunlardır:

Kalıtım (Inheritance) kavramını anlamak ve nesne yönelimli programlamada nasıl çalıştığını öğrenmek
Ana sınıf (base class) ve alt sınıf (derived class) arasındaki ilişkiyi kavrayarak, alt sınıfın üst sınıf özelliklerini nasıl devraldığını görmek
Java, Python ve C# dillerinde kalıtım mekanizmasını incelemek
Kalıtım türlerini (tek kalıtım, çoklu kalıtım) ve bunların dillerdeki implementasyonunu anlamak
Method overriding (metot ezme) ve super keyword (super anahtar kelimesi) gibi kalıtım ile ilgili temel kavramları öğrenmek
Kalıtım kullanarak yazılımda kod tekrarını azaltmak ve daha sürdürülebilir, esnek bir yapı geliştirmek
Polymorphism (çok biçimlilik) ve inheritance arasındaki ilişkiyi kavramak ve uygulamalı olarak göstermek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuyu öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Kalıtımın temellerini anlatan notlar
Method Overriding ve super keyword gibi kalıtım özellikleri hakkında detaylı açıklamalar
Java, Python, ve C# dillerindeki kalıtım implementasyonları
Videolar:
YouTube ve Udemy gibi platformlardan inheritance ve method overriding üzerine dersler
Polymorphism ve inheritance arasındaki ilişkiyi anlatan video dersler
Java, Python, C# gibi dillerde kalıtım ve polymorphism üzerine örnek projeler
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda inheritance ile ilgili alıştırmalar yapma
Java, Python veya C# kullanarak kalıtım özellikleri ile küçük projeler geliştirme
Kitaplar:
"Java: The Complete Reference" – Herbert Schildt
"Python Programming: An Introduction to Computer Science" – John Zelle
"C# 9.0 in a Nutshell" – Joseph Albahari
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Kalıtımın ne olduğu ve nesne yönelimli programlamada nasıl çalıştığı anlatılacak.
Ana sınıf (base class) ve alt sınıf (derived class) arasındaki ilişki detaylandırılacak.
Single Inheritance (tek kalıtım) ve Multiple Inheritance (çoklu kalıtım) konuları ele alınacak.
Method overriding ve super keyword kavramları detaylı şekilde açıklanacak.
Polymorphism ve kalıtım arasındaki ilişki vurgulanacak.
Pratik Kısım:
Java, Python ve C# dillerinde inheritance kullanarak sınıflar oluşturulacak.
Method Overriding ve super keyword kullanılarak uygulamalı örnekler geliştirilecek.
Java, Python ve C# dillerindeki polymorphism ve inheritance ilişkisi üzerine örnek projeler yapılacak.
Kodlama Görevleri:
Inheritance kullanarak sınıflar oluşturulacak ve nesneler yaratılacak.
Method Overriding uygulanarak, üst sınıfın metodunun alt sınıfta nasıl değiştirildiği gösterilecek.
Polymorphism kullanılarak, aynı işlevin farklı şekillerde nasıl çalıştığı gözlemlenecek.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 12 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Encapsulation (Kapsülleme) konusu ele alınacaktır. Haftanın hedefleri şunlardır:

Encapsulation (Kapsülleme) kavramını öğrenmek ve nesne yönelimli programlamada nasıl kullanıldığını anlamak
Veri gizleme (data hiding) ve veri erişim yöntemleri (getter ve setter metodları) ile ilgili bilgileri kavramak
Java, Python ve C# dillerinde kapsülleme kullanarak sınıf yapıları oluşturmak
Private, public, protected gibi erişim belirleyicilerini kullanarak nesne verilerini nasıl koruyabileceğimizi öğrenmek
Access modifiers (erişim denetleyicileri) ve kapsülleme ile ilgili temel kavramları derinlemesine incelemek
Encapsulation kullanarak kodun sürdürülebilirliğini ve güvenliğini artırmak
Kapsülleme ile veri üzerinde yapılan değişikliklerin sınıf dışından kontrol edilmesi ve güvenli hale getirilmesi
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuyu öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:
Ders Notları ve Sunumlar:
Encapsulation kavramını detaylı şekilde açıklayan ders notları
Getter ve Setter metodlarının nasıl oluşturulduğu ve veri erişiminin nasıl güvenli hale getirildiği üzerine açıklamalar
Private, public, protected gibi erişim belirleyicilerinin kullanımını anlatan dokümanlar
Videolar:
Encapsulation üzerine YouTube ve Udemy gibi platformlardan dersler
Java, Python, C# dillerinde kapsülleme ve erişim belirleyicilerini kullanan örnek uygulamalar
Veri gizleme ve getter/setter kullanımına yönelik video dersler
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda Encapsulation konusuna dayalı alıştırmalar yapma
Java, Python veya C# kullanarak kapsülleme özellikleri ile küçük projeler geliştirme
Kitaplar:
"Java: The Complete Reference" – Herbert Schildt
"Python Programming: An Introduction to Computer Science" – John Zelle
"C# 9.0 in a Nutshell" – Joseph Albahari
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Encapsulation kavramı detaylı şekilde tanıtılacak.
Getter ve Setter metodlarının ne olduğu ve nasıl oluşturuldukları açıklanacak.
Private, public, protected erişim belirleyicilerinin sınıflarda nasıl kullanıldığına dair açıklamalar yapılacak.
Data hiding (veri gizleme) ve access modifiers (erişim belirleyicileri) arasındaki ilişki üzerinde durulacak.
Encapsulation ile veri güvenliği ve sürdürülebilirliği nasıl sağlanır konularında örnekler verilecek.
Pratik Kısım:
Java, Python veya C# dillerinde kapsülleme (encapsulation) ile ilgili küçük projeler geliştirilecek.
Getter ve Setter metodlarını kullanarak nesne verilerini güvenli şekilde nasıl erişebileceğimiz ve değiştirebileceğimiz gösterilecek.
Private, public, protected gibi erişim belirleyicilerini kullanarak sınıf veri gizliliği sağlanacak.
Kodlama Görevleri:
Getter ve Setter metodları kullanarak sınıflar oluşturulacak ve veri erişimi sağlanacak.
Encapsulation kullanarak nesne verileri dışarıdan müdahaleye karşı korunacak.
Farklı dillerdeki kapsülleme uygulamaları arasında karşılaştırmalar yapılacak.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 13 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Polymorphism (Çok Biçimlilik) konusu ele alınacaktır. Haftanın hedefleri şunlardır:

Polymorphism (Çok Biçimlilik) kavramını öğrenmek ve nesne yönelimli programlamadaki rolünü anlamak
Method Overloading (Metot Aşırı Yükleme) ve Method Overriding (Metot Ezme) arasındaki farkları kavramak
Java, Python ve C# dillerinde polymorphism uygulamaları yaparak çok biçimliliği anlamak
Runtime Polymorphism (Çalışma Zamanı Çok Biçimliliği) ve Compile-time Polymorphism (Derleme Zamanı Çok Biçimliliği) arasındaki farkları öğrenmek
Polymorphism ile yazılımda esneklik ve sürdürülebilirlik sağlamak
Inheritance (Kalıtım) ve Polymorphism arasındaki ilişkiyi anlamak ve bu iki özelliği birlikte nasıl kullanacağımızı öğrenmek
Polymorphism kullanarak, bir metodun farklı sınıflarda nasıl farklı şekillerde işleyebileceğini görmek
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuyu öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Polymorphism kavramını anlatan teorik ders notları
Method Overloading ve Method Overriding arasındaki farkları açıklayan materyaller
Runtime Polymorphism ve Compile-time Polymorphism arasındaki farkları ele alan belgeler
Videolar:
Polymorphism üzerine YouTube ve Udemy gibi platformlardan dersler
Java, Python, ve C# dillerinde Polymorphism ve metot aşırı yükleme / ezme uygulamaları
Inheritance ve Polymorphism arasındaki ilişkiyi açıklayan video dersler
Kodlama Pratiği:
LeetCode, HackerRank gibi platformlarda Polymorphism ile ilgili alıştırmalar yapma
Java, Python ve C# dillerinde Method Overloading ve Method Overriding örnekleri yazma
Runtime Polymorphism kullanarak küçük projeler geliştirme
Kitaplar:
"Java: The Complete Reference" – Herbert Schildt
"Python Programming: An Introduction to Computer Science" – John Zelle
"C# 9.0 in a Nutshell" – Joseph Albahari
Haftalık Öğrenme Etkinlikleri Açıklama Öğrenme süreci şu aşamalardan oluşacaktır:

Teorik Kısım:
Polymorphism kavramı anlatılacak ve nesne yönelimli programlamadaki rolü açıklanacak.
Method Overloading ve Method Overriding arasındaki farklar detaylı bir şekilde açıklanacak.
Runtime Polymorphism ve Compile-time Polymorphism arasındaki farklar öğretilecek.
Inheritance ve Polymorphism arasındaki ilişki üzerinde durulacak ve bu ikisinin birlikte nasıl kullanıldığına dair örnekler verilecek.
Polymorphism kullanarak yazılımın nasıl daha esnek ve sürdürülebilir hale getirilebileceği anlatılacak.
Pratik Kısım:
Java, Python ve C# dillerinde Method Overloading ve Method Overriding kullanarak örnekler geliştirilecek.
Runtime Polymorphism ve Compile-time Polymorphism uygulamaları üzerinde çalışılacak.
Polymorphism kullanarak küçük projeler geliştirilecek ve metodun farklı sınıflarda nasıl çalıştığı gözlemlenecek.
Kodlama Görevleri:
Method Overloading ve Method Overriding kullanarak nesne yönelimli programlama örnekleri yapılacak.
Runtime Polymorphism ile farklı sınıflarda aynı metodun farklı biçimlerde çalışması sağlanacak.
Polymorphism kullanarak daha sürdürülebilir ve esnek bir yazılım yapısı geliştirilecek.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.
Hafta 14 .Hafta
Konu
Haftalık Kapsam ve Hedefler Bu hafta Abstraction (Soyutlama) konusu ele alınacaktır. Haftanın hedefleri şunlardır:

Soyutlama (Abstraction) kavramını açıklamak ve programlama dillerindeki uygulamalarını anlamak.
Soyutlama prensibini kullanarak, gerçek dünyadaki karmaşık sistemleri daha basit ve anlaşılır hale getirme becerisi kazanmak.
Java, Python, C# dillerinde soyut sınıflar ve arayüzler (interface) kullanarak soyutlama işlemlerini gerçekleştirmek.
Soyutlama ve encapsulation (kapsülleme) arasındaki farkları öğrenmek.
Soyutlama ile daha esnek, bakımı kolay ve sürdürülebilir yazılımlar geliştirmek.
Design Patterns (Tasarım Desenleri) içinde Soyutlama'nın rolünü incelemek ve uygulamalarını görmek.
Soyutlama uygulamalarını kullanarak yazılım geliştirme sürecinde performans ve bakım kolaylığı sağlamanın yollarını keşfetmek.
Haftalık Öğrenme Etkinlikleri/Kaynakları/Videolar Bu konuyu öğrenmek için aşağıdaki etkinlikler ve kaynaklar kullanılacaktır:

Ders Notları ve Sunumlar:
Abstraction (Soyutlama) kavramı hakkında detaylı açıklamalar ve örnekler
Soyut sınıflar ve arayüzler (interface) üzerine anlatımlar
Java, Python, C# dillerinde Soyutlama uygulamalarına dair örnekler
Soyutlama ve Kapsülleme arasındaki farklar
Design Patterns (Tasarım Desenleri) ve Soyutlama üzerine bilgiler
Videolar:
Abstraction üzerine YouTube, Udemy, ve Coursera platformlarındaki eğitim videoları
Soyut sınıflar ve arayüzler hakkında uygulamalı video dersler
Java, Python, C# dillerinde Soyutlama kullanarak yazılım geliştirme üzerine anlatımlar
Kodlama Pratiği:
LeetCode, HackerRank, ve Exercism gibi platformlarda Soyutlama üzerine alıştırmalar
Java, Python, C# dillerinde soyut sınıflar ve arayüzler ile küçük projeler geliştirme
Design Patterns üzerine alıştırmalar ve soyutlama uygulamaları oluşturma
Kitaplar:
"Design Patterns: Elements of Reusable Object-Oriented Software" – Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
"Python Programming: An Introduction to Computer Science" – John Zelle
"Effective Java" – Joshua Bloch
Haftalık Öğrenme Etkinlikleri Açıklama Bu hafta Abstraction konusu üzerine yapılan etkinlikler şu şekilde olacak:

Teorik Kısım:
Soyutlama (Abstraction) kavramı tanıtılacak.
Soyut sınıflar ve arayüzler (interfaces) hakkında detaylı açıklamalar yapılacak.
Soyutlama ve kapsülleme arasındaki farklar tartışılacak.
Soyutlama prensibini kullanarak, yazılımda daha esnek ve sürdürülebilir bir yapı oluşturmanın avantajları gösterilecek.
Design Patterns (Tasarım Desenleri) ve soyutlama ilişkilendirilecek.
Pratik Kısım:
Java, Python, C# dillerinde soyut sınıflar ve arayüzler kullanılarak uygulamalı projeler geliştirilecek.
Soyutlama kullanarak küçük yazılım uygulamaları yapılacak.
Design Patterns üzerinde çalışarak, soyutlama ile daha sürdürülebilir ve genişletilebilir yazılımlar oluşturulacak.
Kodlama Görevleri:
LeetCode, HackerRank gibi platformlarda Soyutlama üzerine problemler çözülerek konunun pekiştirilmesi sağlanacak.
Java, Python, C# dillerinde soyut sınıflar ve arayüzler kullanılarak yazılımlar geliştirilecek.
Haftalık Ölçme-Değerlendirme Etkinlikleri Ödev, Laboratuvar,
Haftalık Ölçme-Değerlendirme Notlandırması/Ödev Teslim Süreleri Değerlendirme Kriterleri ve Puanlama:
Kodlama Ödevi/Proje / Uygulama Ödevi: Öğrencilerden; konu ile ilgili verilen ödevlerden, lab çalışması ve kodlar yazmaları beklenir.
Puanlama: Dönem boyunca verilen ödevler değerlendirilerek arasınav notuna %50 etki eder.
Katılım ve Tartışmalar Ders içi tartışmalarda algoritmaların analizi, zaman karmaşıklığı gibi konuların ele alınması gerçekleştirilir.
Ödev Teslim Süreleri:
Lab Çalışması/ödev ve proje niteliğinde verilen ödevlerin bir kısmı o günkü lab süresinde, diğer kısmı 1 haftalık süre içerinde (1.sonraki hafta ders saatine kadar) teslim edilmelidir.
Katılım ve Tartışmalar: Hafta boyunca aktif olarak devam eder.