| Dersin Kodu | Dersin Adı | Dersin Türü | Yıl | Yarıyıl | AKTS |
|---|---|---|---|---|---|
| BGT-102 | NESNE TABANLI PROGRAMLAMA I | Ders | 1 | 2 | 4,00 |
Önlisans
Türkçe
Bu ders, Bilişim Güvenliği Teknolojisi programı ön lisans öğrencilerine Python programlama dilini kullanarak nesne tabanlı programlama (NTP) temellerini öğretmeyi amaçlar.
Dr.Öğr.Üyesi Özgür KALAFAT
| 1 | Python ve C# programlama dilleri için ihtiyaç duyulan derleyici ve editör ortamlarını kurup kullanabilir. |
| 2 | Koşullu ifadeler, döngüler ve fonksiyonlar gibi yapısal programlama kavramlarını kullanarak basit Python kodları yazar ve çalıştırır. |
| 3 | Nesne Tabanlı Programlamanın temel ilkeleri olan sınıf, nesne, miras ve çok biçimlilik kavramlarını özetler ve ayırt eder. |
| 4 | Python programlama dilinin temel sözdizimini, veri tiplerini ve operatörlerini tanımlar ve açıklar. |
| 5 | Python'da sınıflar ve nesneler oluşturarak, güvenlik senaryolarına yönelik basit nesne tabanlı uygulamaların taslağını hazırlar ve gerçekleştirir. |
| 6 | Dosya okuma/yazma işlemlerini kullanarak temel veri manipülasyonu yapar ve programlarda oluşabilecek çalışma zamanı hatalarını yönetir. |
| 7 | `os`, `sys`, `datetime` gibi temel Python kütüphanelerini kullanarak sistem etkileşimli ve siber güvenlik senaryolarına yönelik basit betikler geliştirir. |
Birinci Öğretim
Yok
-
Bu ders, öğrencilere programlama mantığı, temel veri yapıları, kontrol yapıları ve fonksiyonel programlama becerilerini kazandırırken, NTP'nin temel prensipleri olan sınıf, nesne, miras ve çok biçimlilik kavramlarını pratik uygulamalarla pekiştirecektir. Öğrenciler, siber güvenlik alanındaki gerçek dünya problemlerini çözmek için Python betikleri geliştirebilecek, mevcut araçları anlayıp özelleştirebilecek ve temel otomasyon görevlerini yerine getirebileceklerdir. Bu ders, temel bilgilerin zihinde tutulması, kavranması ve bu bilgilerin somut durumlarda uygulanması üzerine odaklanarak, ön lisans akademik standartlarına uygun bir öğrenim deneyimi sunar.
| Hafta | Teorik | Uygulama | Laboratuvar |
|---|---|---|---|
| 1 | Nesne Tabanlı Programlama için gerekli geliştirme ortamlarının kurulum ve ayarlarını yapmak | Geliştirme ortamlarının kurulumu ve ayarlamaların yapılması | |
| 2 | Değişken tanımlama kuralları ve atama işlemleri. Temel veri tipleri: Sayılar (integer, float), Dizeler (string), Boolean (doğru/yanlış). Tip dönüşümleri (casting). Aritmetik, karşılaştırma, mantıksal ve atama operatörleri. | Kullanıcıdan girdi alma (input() fonksiyonu) ve çıktılama (print() fonksiyonu) pratikleri. | |
| 3 | Program akışını kontrol etme: `if`, `elif`, `else` blokları. İç içe `if` ifadelerinin kullanımı. Mantıksal operatörler (`and`, `or`, `not`) ile karmaşık koşullar oluşturma. Siber güvenlik senaryolarına yönelik örnekler: Basit parola doğrulama, erişim kontrol mekanizmaları. | ||
| 4 | `for` döngüsü: `range()` fonksiyonu ve veri yapıları ile kullanımı. `while` döngüsü: Belirli bir koşul sağlandığı sürece tekrar etme. `break`, `continue`, `pass` ifadelerinin döngülerdeki işlevleri. İç içe döngüler. Güvenlik odaklı örnekler: Log dosyalarını tarama, basit kaba kuvvet denemesi mantığı. | ||
| 5 | Listelerin oluşturulması, elemanlara erişim ve değiştirme. Liste metotları (append, insert, remove, pop, sort, reverse). Tuple'lar: Tanımlama, elemanlara erişim ve değişmezlik özellikleri. Liste ve Tuple kullanımı arasındaki farklar. | IP adresi listesi yönetimi, güvenlik anahtarları veya konfigürasyon parametreleri depolama. | |
| 6 | Kümeler (Sets): Tanımlama, eleman ekleme/silme, küme işlemleri (birleşim, kesişim, fark). Sözlükler (Dictionaries): Anahtar-değer çiftleri, oluşturma, elemanlara erişim, ekleme/silme ve metotları. | Güvenlik politikası kurallarını anahtar-değer çiftleri olarak tutma, benzersiz kullanıcı veya olayları bulma. | |
| 7 | Fonksiyon tanımlama (`def`), parametreler ve dönüş değerleri. Varsayılan ve anahtar kelime argümanları. Lambda fonksiyonları. Modül kavramı ve kendi modüllerimizi oluşturma. Modülleri içe aktarma (`import`). | Tekrarlayan güvenlik fonksiyonlarını (örn. hash hesaplama, veri doğrulama) modüler hale getirme. | |
| 8 | Dönem ortası konularını kapsayan yazılı sınav. Öğrencilerin ilk 7 haftalık konulardaki bilgi ve uygulama becerilerini ölçme. | ||
| 9 | NTP felsefesi ve temel kavramlar: Sınıf, nesne, öznitelik (attribute), metot (method). NTP'nin avantajları (yeniden kullanılabilirlik, modülerlik). Python'da sınıf tanımlama (`class`). Nesne oluşturma, `__init__` (yapıcı metot) ve `self` anahtar kelimesi. | Basit bir 'Kullanıcı' veya 'Ağ Cihazı' sınıfı oluşturma. | |
| 10 | Nesne öznitelikleri ve sınıf öznitelikleri arasındaki farklar. Sınıf metotları (`@classmethod`) ve statik metotlar (`@staticmethod`). Kapsülleme (Encapsulation) kavramı: Erişici (getter) ve ayarlayıcı (setter) metotlar. | Bir güvenlik olayını veya bir zafiyeti nesne olarak modelleme. | |
| 11 | Miras kavramı, üst sınıf (parent class) ve alt sınıf (child class). `super()` fonksiyonu ile üst sınıf metotlarını çağırma. Metot geçersiz kılma (Method Overriding). Çoklu miras (Multiple Inheritance) ve Python'daki kullanımı. | Farklı türdeki güvenlik tarayıcılarını veya sensörlerini miras yoluyla modelleme. | |
| 12 | Çok biçimlilik ilkesi: Aynı arayüze farklı davranışlar. Metot aşırı yükleme (Method Overloading) vs. metot geçersiz kılma arasındaki fark. Soyut sınıflar ve soyut metotlar (ABC modülü ile). Arayüz (Interface) kavramı ve Python'daki yansımaları. | Farklı log formatlarını işleyen tek bir basit arayüz geliştirme. | |
| 13 | Hata türleri: Sözdizimi hataları (Syntax Errors) ve çalışma zamanı hataları (Runtime Errors). İstisna kavramı. `try`, `except`, `else`, `finally` bloklarının kullanımı. Kendi istisnalarımızı tanımlama ve fırlatma (`raise`). | Dosya erişim hataları, ağ bağlantı hataları veya geçersiz kullanıcı girdisi gibi güvenlik senaryolarında hata yönetimi. | |
| 14 | Dosya açma, okuma ve yazma modları (`open()`). `with` ifadesi ile dosya işlemlerini güvenli yönetme. Metin dosyaları ve ikili dosyalarla çalışma. Basit veri formatları (CSV, JSON) ile okuma/yazma işlemleri (giriş seviyesi). | Güvenlik loglarını okuma, analiz etme ve raporlama için veri kaydetme. | |
| 15 | `os` modülü: Dizin ve dosya işlemleri, ortam değişkenleri. `sys` modülü: Sistemle etkileşim ve komut satırı argümanları. `datetime` modülü: Tarih ve saat işlemleri (log analizi için kritik). `subprocess` modülü: Harici komutları çalıştırma. | Basit bir sistem bilgisi toplayıcı, dosya bütünlük kontrol betiği veya port tarama (socket modülüne giriş). |
https://docs.python.org/3/
| Yarıyıl (Yıl) İçi Etkinlikleri | Adet | Değer |
|---|---|---|
| Ara Sınav | 1 | 100 |
| Toplam | 100 | |
| Yarıyıl (Yıl) Sonu Etkinlikleri | Adet | Değer |
| Final Sınavı | 1 | 100 |
| Toplam | 100 | |
| Yarıyıl (Yıl) İçi Etkinlikleri | 40 | |
| Yarıyıl (Yıl) Sonu Etkinlikleri | 60 | |
-
| Etkinlikler | Sayısı | Süresi (saat) | Toplam İş Yükü (saat) |
|---|---|---|---|
| Ara Sınav | 1 | 1 | 1 |
| Final Sınavı | 1 | 2 | 2 |
| Derse Katılım | 14 | 4 | 56 |
| Proje Hazırlama | 4 | 4 | 16 |
| Bireysel Çalışma | 14 | 1 | 14 |
| Ara Sınav İçin Bireysel Çalışma | 2 | 3 | 6 |
| Final Sınavı içiin Bireysel Çalışma | 3 | 3 | 9 |
| Ev Ödevi | 4 | 4 | 16 |
| Toplam İş Yükü (saat) | 120 | ||
| PÇ 1 | PÇ 2 | PÇ 3 | PÇ 4 | PÇ 5 | PÇ 6 | PÇ 7 | PÇ 8 | PÇ 9 | PÇ 10 | PÇ 11 | PÇ 12 | PÇ 13 | PÇ 14 | PÇ 15 | PÇ 16 | PÇ 17 | PÇ 18 | PÇ 19 | PÇ 20 | PÇ 21 | PÇ 22 | PÇ 23 | PÇ 24 | |
| ÖÇ 1 | 5 | |||||||||||||||||||||||
| ÖÇ 2 | 5 | 4 | ||||||||||||||||||||||
| ÖÇ 3 | 5 | 4 | ||||||||||||||||||||||
| ÖÇ 4 | 5 | 5 | ||||||||||||||||||||||
| ÖÇ 5 | 5 | 5 | ||||||||||||||||||||||
| ÖÇ 6 | 5 | 5 | ||||||||||||||||||||||
| ÖÇ 7 | 5 | 5 |