Yönetim Bilişim Sistemleri | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu: | MIS2005 | ||||||||
Ders İsmi: | Nesne Tabanlı Programlama | ||||||||
Ders Yarıyılı: | Güz | ||||||||
Ders Kredileri: |
|
||||||||
Öğretim Dili: | TR | ||||||||
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ü: | Dr.Öğr.Üyesi Melike KARATAY | ||||||||
Dersi Veren(ler): | |||||||||
Dersin Yardımcıları: |
Dersin Amacı: | Bu dersin temel amacı, nesne yönelimli programlama paradigmasının ileri düzey kavramlarını Python programlama dili aracılığıyla detaylı biçimde öğretmektir. Öğrencilerin yazılım geliştirme sürecinde nesne tabanlı yaklaşımı etkin ve doğru bir şekilde kullanabilmeleri hedeflenmektedir. Ders kapsamında sınıflar ve nesneler, kalıtım (inheritance), çok biçimlilik (polymorphism), kapsülleme (encapsulation) gibi temel OOP ilkeleri derinlemesine ele alınacak; ayrıca istisna yönetimi, dekoratörler, jeneratörler, özel veri yapıları, yazılım test teknikleri, tasarım desenleri ve çok iş parçacıklı programlama gibi ileri düzey konulara odaklanılacaktır. Böylece öğrencilerin sürdürülebilir, yeniden kullanılabilir ve ölçeklenebilir yazılım çözümleri geliştirebilmeleri amaçlanmaktadır. |
Dersin İçeriği: | Python Programlama Diline Giriş Nesne Yönelimli Programlamanın (OOP) Temelleri Sınıflar ve Nesneler Kapsülleme ve Veri Gizleme Kalıtım ve Kodun Yeniden Kullanımı Çok Biçimlilik ve Dinamik Bağlama Soyut Sınıflar ve Arayüzler Hata Yakalama ve Güvenilir Program Tasarımı İleri Seviye Özellikler: Dekoratörler, Jeneratörler ve Yineleyiciler Python’da Özel Veri Yapıları Tasarım Desenleri (örn. Singleton, Factory, Strategy, Observer) Kodun Yeniden Yapılandırılması (Refactoring) ve En İyi Uygulamalar Birim Testi ve Test Odaklı Geliştirme Hata Ayıklama Teknikleri ve Araçları Python’da Eşzamanlılık ve Çok İş Parçacığı (Multithreading) Ölçeklenebilir ve Sürdürülebilir Yazılım Sistemleri Geliştirme Uygulamalı Projeler ve Gerçek Dünya Senaryoları |
Bu dersi başarıyla tamamlayabilen öğrenciler;
|
Hafta | Konu | Ön Hazırlık |
1) | Python kurulum, temel söz dizimi, veri tipleri, değişkenler, operatörler, giriş/çıkış işlemleri | Python resmi dokümantasyonu (python.org), “Python Crash Course” giriş bölümleri. Python ve bir IDE (PyCharm, VSCode) kurulumu, temel terminal komutlarını öğrenme. |
2) | OOP kavramları (nesne, sınıf, özellik, metot), neden OOP kullanılır, prosedürel ve nesne yönelimli farkı | UML sınıf diyagramları, basit sınıf örnekleri. “What is OOP?” yazıları, Python’da ilk basit sınıf denemesi. |
3) | __init__ metodu, self parametresi, nesne oluşturma, örnek metotlar ve özellikler | Örnek Python sınıf uygulamaları. Basit “Kitap” veya “Öğrenci” sınıfı örneği yazma. |
4) | Public, protected, private alanlar; getter ve setter metotları; property dekoratörü. | @property kullanımı örnekleri. Mevcut sınıflara veri gizleme ekleme çalışması. |
5) | Temel kalıtım, çoklu kalıtım, super() metodu, is-a ilişkisi | Kalıtım örnekleri, UML diyagramları. “Araç” sınıfından türetilmiş “Otomobil” ve “Motosiklet” sınıfları yazma. |
6) | Metot geçersiz kılma (override), duck typing, abstract base class mantığına giriş | Python abc modülü örnekleri. Farklı alt sınıflar için aynı metot adını kullanarak polimorfizm denemesi. |
7) | Soyut metotlar, arayüz benzeri yapı, çoklu soyutlama | abc modülü detaylı anlatım. Bir “Şekil” sınıfı tasarlayıp alt sınıflarda alan/çevre hesaplaması. |
8) | try-except-finally, özel exception sınıfları, hata yönetimi | Python exception hiyerarşisi tablosu. Kullanıcıdan alınan verilerde hata kontrolü ekleme. |
9) | Dekoratörler, jeneratörler, yineleyiciler (__iter__, __next__). | Örnek dekoratör uygulamaları, generator comprehension. Basit bir logging dekoratörü yazma. |
10) | namedtuple, deque, defaultdict, Counter, OrderedDict, özel sınıf tabanlı veri yapıları. | collections modülü dokümantasyonu. Küçük bir öğrenci not sistemi veri yapısı tasarlama. |
11) | Singleton, Factory, Strategy, Observer desenleri. | Python ile tasarım desenleri kitap/örnekleri. Basit bir “Factory” deseni ile nesne üretme. |
12) | Refactoring teknikleri, PEP 8 standartları, modüler kod. | “Refactoring” kitabından bölümler, Python PEP 8 rehberi. Önceki ödevlerden birini yeniden düzenleme. |
13) | unittest modülü, test odaklı geliştirme, hata ayıklama araçları (pdb). | unittest dokümantasyonu, Pytest giriş. Basit fonksiyonlar için test senaryoları yazma. |
14) | threading, multiprocessing, async/await yapısı; öğrenci projelerinin sunumu. | Python concurrency dokümantasyonu. Proje kodunu bitirme ve sunuma hazırlanma. |
Ders Notları / Kitaplar: | |
Diğer Kaynaklar: | 1- Fluent Python: Clear, Concise, and Effective Programming Yazar: Luciano Ramalho 2- Python 3 Object-Oriented Programming Yazar: Dusty Phillips 3- Mastering Python Design Patterns Yazar: Kamon Ayeva, Sakis Kasampalis |
Ders Öğrenme Kazanımları | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Program Kazanımları | ||||||||||||
1) Türkçe ve İngilizce dillerini kullanarak mesleki, güncel ve gelişen eğilimleri takip edebilmek; gerekli bilgileri yazılı ve sözlü olarak aktarabilmek. | ||||||||||||
1) Bilgisayar donanımını tanıyabilmek; parçaların teknik özelliklerini ayırt edebilmek, karşılaştırabilmek, sınıflandırabilmek ve uygun donanım seçimini yapabilmek. | ||||||||||||
1) Projelerde YBS uzmanı olarak tasarım yapabilmek; projelere yönetici veya çalışan olarak katkı sağlayabilmek ve yenilikçi fikirler üretebilmek. | ||||||||||||
1) Bir bilişim sistemi probleminin takım çalışması ile çözümünde, problemin her aşamasında bireysel sorumluluk alabilmek, takıma katkı sağlayabilmek ve gerektiğinde liderlik yapabilmek. | ||||||||||||
1) Bilgi Teknolojileri ve İşletme Bilimi alanlarında edindiği bilgileri karar verme amacıyla uygun araçlarla kullanabilmek. | ||||||||||||
2) Alanında edindiği bilgi ve becerileri farklı disiplinlerle entegre ederek eleştirel bir bakış açısıyla değerlendirebilmek. | ||||||||||||
2) Yazılım türleri, yazılım seçimi ve temini konularında bilgi sahibi olmak; yazılım geliştirme süreçlerini planlayıp yönetebilmek. | ||||||||||||
2) Farklı disiplinlerin Yönetim Bilişim Sistemleri (YBS) tabanlı problem çözümünde veri ihtiyaçlarını belirleyebilmek, bu verileri temin edebilmek ve verileri derleyerek bilgi üretebilmek ve kullanıma hazır hâle getirebilmek. | ||||||||||||
2) Mesleki çalışmalarda toplumsal ve etik değerlere uygun hareket edebilmek. | ||||||||||||
3) Bilgi sistemi gereksinimlerini belirleyebilmek, sistem analizi yapabilmek ve tasarımını gerçekleştirebilmek. | ||||||||||||
3) Uygulamalar için gerekli olan veritabanı tasarımını gerçekleştirebilmek. | ||||||||||||
4) Bilgisayar ağ sistemini kurabilmek; ağlar ve donanımlarla ilgili karşılaşılan sorunları çözebilmek. | ||||||||||||
4) Bir YBS veya sosyal problemin çözümüne yönelik proje tasarlayabilmek ve alternatif çözüm yöntemleri önerebilmek. |
Etkisi Yok | 1 En Düşük | 2 Düşük | 3 Orta | 4 Yüksek | 5 En Yüksek |
Dersin Program Kazanımlarına Etkisi | Katkı Payı | |
1) | Türkçe ve İngilizce dillerini kullanarak mesleki, güncel ve gelişen eğilimleri takip edebilmek; gerekli bilgileri yazılı ve sözlü olarak aktarabilmek. | |
1) | Bilgisayar donanımını tanıyabilmek; parçaların teknik özelliklerini ayırt edebilmek, karşılaştırabilmek, sınıflandırabilmek ve uygun donanım seçimini yapabilmek. | |
1) | Projelerde YBS uzmanı olarak tasarım yapabilmek; projelere yönetici veya çalışan olarak katkı sağlayabilmek ve yenilikçi fikirler üretebilmek. | |
1) | Bir bilişim sistemi probleminin takım çalışması ile çözümünde, problemin her aşamasında bireysel sorumluluk alabilmek, takıma katkı sağlayabilmek ve gerektiğinde liderlik yapabilmek. | |
1) | Bilgi Teknolojileri ve İşletme Bilimi alanlarında edindiği bilgileri karar verme amacıyla uygun araçlarla kullanabilmek. | |
2) | Alanında edindiği bilgi ve becerileri farklı disiplinlerle entegre ederek eleştirel bir bakış açısıyla değerlendirebilmek. | |
2) | Yazılım türleri, yazılım seçimi ve temini konularında bilgi sahibi olmak; yazılım geliştirme süreçlerini planlayıp yönetebilmek. | |
2) | Farklı disiplinlerin Yönetim Bilişim Sistemleri (YBS) tabanlı problem çözümünde veri ihtiyaçlarını belirleyebilmek, bu verileri temin edebilmek ve verileri derleyerek bilgi üretebilmek ve kullanıma hazır hâle getirebilmek. | |
2) | Mesleki çalışmalarda toplumsal ve etik değerlere uygun hareket edebilmek. | |
3) | Bilgi sistemi gereksinimlerini belirleyebilmek, sistem analizi yapabilmek ve tasarımını gerçekleştirebilmek. | |
3) | Uygulamalar için gerekli olan veritabanı tasarımını gerçekleştirebilmek. | |
4) | Bilgisayar ağ sistemini kurabilmek; ağlar ve donanımlarla ilgili karşılaşılan sorunları çözebilmek. | |
4) | Bir YBS veya sosyal problemin çözümüne yönelik proje tasarlayabilmek ve alternatif çözüm yöntemleri önerebilmek. |
Yarıyıl İçi Çalışmaları | Aktivite Sayısı | Katkı Payı |
Toplam | % | |
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI | % 0 | |
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI | % | |
Toplam | % |