GERİ DÖN

Ders Öğretim Planı


Dersin Kodu Dersin Adı Dersin Türü Yıl Yarıyıl AKTS
SGM102 TEMEL PROGRAMLAMA II Ders 1 2 5,00

Önlisans


Türkçe


Bu ders ile öğrencinin, programlama bilgi ve becerilerinin temel seviyeden ileri seviyeye getirilmesi amaçlanmaktadır. Öğrencilere Python’da ileri düzeyde nesne yönelimli programlama uygulamaları yapmak, modül ve paketler oluşturmak, çok prosesli ve çok iş parçacıklı uygulamalar geliştirmek, soket uygulamaları geliştirmek gibi beceriler kazandırılması amaçlanmaktadır. Bunun dışında bu derste aynı zamanda temel düzeyde C programlama da öğretilir.


Öğr. Gör. Onat Tanrıöver


1 Sihirli metotlar (magic methods), özyinelemeli (recursive) fonksiyonlar, fonksiyon dekoratörleri, üreteçler (generators) ve bağlam yöneticilerini (context managers) nesne yönelimli programlama kurallarına uygun biçimde kodlayarak modüler yazılımlar geliştirebilme.
2 threading, multiprocessing ve queue modülleri ile süreçler arası iletişim (IPC) yöntemlerini kullanarak sistem kaynaklarını optimize eden, paralel ve eşzamanlı çalışan çok iş parçacıklı programlar tasarlayabilme.
3 Soket programlama teknikleri ve Scapy kütüphanesini kullanarak ağ trafiğini dinleyen (sniffer), ham paket analiz eden ve paket manipülasyonu (ARP önbellek zehirleme vb.) gerçekleştiren güvenlik odaklı ağ betikleri üretebilme.
4 Web uygulamalarındaki HTML yapılarını ve form bileşenlerini ayrıştıran (parsing) kütüphaneleri kullanarak otomatik veri işleme ve kaba kuvvet (brute-force) test betiklerinin çalışma mantığını analiz edebilme ve uygulayabilme.
5 C programlama dilinin temel sözdizimi, veri tipleri, karar mekanizmaları, döngüler ve fonksiyonel yapılarını kullanarak algoritmik problemleri çözen C programları yazabilme.
6 C dilinde değişken ömrü/kapsamı (scope), diziler ve göstericiler (pointers) arasındaki bellek adresleme ilişkisini analiz ederek bellek erişim hatalarını ayıklayabilme (debugging) ve doğrudan bellek manipülasyonu yapan işlevleri yürütebilme.
7 Yüksek seviyeli dinamik bir dil (Python) ile düşük seviyeli sistem dili (C) arasındaki bellek yönetimi, çalışma zamanı performansı ve donanım erişim farklarını değerlendirerek verilen teknik bir problem için en uygun programlama yaklaşımını ve dilini seçebilme.

Birinci Öğretim


Yok


Yok


Python: Sihirli metotlar, Özyinelemeli fonksiyonlar, Fonksiyonlarda ileri konular, Modüller ve paketler, İteratörler, generatorlar ve iterasyon, Context management protokolü, Komut satırı argümanları, Dosya/dizin adresleri üzerinde işlem yapan fonksiyonlar, pickle modülü, Paralel işleme giriş, fork-exec ile yeni proses oluşturma, İş parçacıkları, _thread ve threading modülleri, queue modülü, Programların çıkış kodları, Prosesler arası iletişim yöntemleri, Multiprocessing modülü, Soket programlamaya giriş, Soket programlama ve ağ dinleyicileri, Scapy ile paket manipülasyonu, Hedef web uygulamalarını parse etmeye yarayan modüller C: C'ye giriş, operatörler, kontrol yapıları, döngü yapıları, C'de değişkenler, Değişkenlerin bilinirlik alanları ve ömürleri, Diziler, Fonksiyonlar, Göstericiler (Pointer), Stringler


Hafta Konular (Teorik) Uygulama Öğretim Yöntem ve Teknikleri Ön Hazırlık
1 Ders işleme şekli ile ilgili bilgilendirme, Python’da sihirli metotlar Sihirli metotlarla ilgili programlama sorularının çözümü Anlatım, Gösterme, Tartışma, Problem çözümü https://realpython.com/python-magic-methods/
2 Özyinelemeli fonksiyonlar, Fonksiyonlarda ileri konular Özyinelemeli fonksiyonlar ve fonksiyon dekoratörleriyle ilgili programlama sorularının çözümü Anlatım, Gösterme, Tartışma, Problem çözümü https://realpython.com/python-recursion/ | https://realpython.com/primer-on-python-decorators/
3 Modüller ve paketler Yazılan kodları modüller halinde düzenleme uygulaması Anlatım, Gösterme, Tartışma, Problem çözümü https://realpython.com/python-modules-packages/
4 İteratörler, generator’lar ve iterasyon İteratörler ve iterasyonla ilgili programlama sorularının çözümü Anlatım, Gösterme, Tartışma, Problem çözümü, Quiz https://realpython.com/python-iterators-iterables/ | https://realpython.com/learning-paths/generators-and-generator-expressions/
5 Context management protokolü, Komut satırı argümanları, Dosya/Dizin adresleri üzerinde işlem yapan fonksiyonlar, Pickle modülü Haftanın konularıyla ilgili programlama örneklerinin çözümü Anlatım, Gösterme, Tartışma, Problem çözümü https://realpython.com/python-with-statement | https://alemsbaja.hashnode.dev/demystifying-python-paths-a-comprehensive-guide-to-the-path-module-for-effortless-file-and-directory-management | https://realpython.com/python-pickle-module/
6 Paralel işleme giriş, fork-exec ile yeni proses oluşturma, İş parçacıkları, _thread ve threading modülleri Çok prosesli ve çok iş parçacıklı uygulamaların tasarımı çalışması Anlatım, Gösterme, Tartışma, Problem çözümü Lutz (2020) Böl. 5 s. 177-204
7 Queue modülü, Programların çıkış kodları, Prosesler arası iletişim yöntemleri Prosesler arası iletişimle ilgili programlama sorularının çözümü, çok prosesli bir uygulamanın geliştirilmesi Anlatım, Gösterme, Tartışma, Problem çözümü Lutz (2020) Böl. 5 s. 204-236 | Lutz (2020) Böl. 5 s. 240-243
8 Arasınav Subjects of the first 7 weeks
9 Multiprocessing modülü, Soket programlamaya giriş Çok prosesli bir uygulamanın multiprocessing modülü ile geliştirilmesi Anlatım, Gösterme, Tartışma, Problem çözümü Lutz (2020) Böl. 5 s. 243-258 | Seitz, Arnold (2021) Böl. 2 s. 9-34
10 Soket programlama ve ağ dinleyicileri Bir ağ dinleyicisinin tasarımı ve geliştirilmesi Anlatım, Gösterme, Tartışma, Problem çözümü, Quiz Seitz, Arnold (2021) Böl. 3 s. 35-51
11 Scapy ile paket manipülasyonu Scapy kullanarak ARP cache poisoning saldırısı gerçekleştirme Anlatım, Gösterme, Tartışma, Problem çözümü Seitz, Arnold (2021) Böl. 4 s. 53-70
12 Hedef web uygulamalarını parse etmeye yarayan modüller Bir HTML formuna kaba kuvvet saldırısı düzenleme uygulaması Anlatım, Gösterme, Tartışma, Problem çözümü, Quiz Seitz, Arnold (2021) Böl. 5 s. 71-91
13 C’ye giriş, C’de operatörler, Kontrol yapıları, Döngü yapıları Bu hafta işlenen konularla ilgili programlama sorularının çözümü Anlatım, Gösterme, Tartışma, Problem çözümü Deitel, Deitel (2022) Böl. 2, 3, 4 s. 55-178
14 C’de değişkenler, Değişkenlerin bilinirlik alanı ve ömrü, Diziler Bu hafta işlenen konularla ilgili programlama sorularının çözümü Anlatım, Gösterme, Tartışma, Problem çözümü Deitel, Deitel (2022) Böl. 6 s. 243-308
15 C’de fonksiyonlar, Göstericiler (pointer), Stringler Bu hafta işlenen konularla ilgili programlama sorularının çözümü Anlatım, Gösterme, Tartışma, Problem çözümü Deitel, Deitel (2022) Böl. 5 s. 179-242 | Deitel, Deitel (2022) Böl. 7, 8 s. 309-448
16 Final sınavı Bütün dönemin konuları

Mark Lutz, Programming Python, 4th Edition, O’Reilly, 2020. Paul Deitel, Harvey Deitel, C How to Program: With Case Studies in Applications and Systems Programming Global Edition, 9th Edition, Pearson, 2022. Justin Seitz, Tim Arnold, Black Hat Python: Python Programming for Hackers and Pentesters, 2nd Edition, No Starch Press, 2021.


Anlatım, Gösterme, Tartışma, Problem çözümü, Quiz


Yarıyıl (Yıl) İçi Etkinlikleri Adet Değer
Ara Sınav 1 70
Quiz 3 30
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

Yok


Etkinlikler Sayısı Süresi (saat) Toplam İş Yükü (saat)
Ara Sınav 1 2 2
Final Sınavı 1 2 2
Quiz 3 1 3
Derse Katılım 14 3 42
Uygulama/Pratik 14 2 28
Bireysel Çalışma 14 3 42
Ara Sınav İçin Bireysel Çalışma 1 8 8
Final Sınavı içiin Bireysel Çalışma 1 12 12
Toplam İş Yükü (saat) 139

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
ÖÇ 1 4 2 3 2
ÖÇ 2 4 5 3 4
ÖÇ 3 4 5 5 4 3
ÖÇ 4 5 4 3 3
ÖÇ 5 4 3 2
ÖÇ 6 4 5 3 3
ÖÇ 7 3 4 3 2
* Katkı Düzeyi : 1 Çok düşük 2 Düşük 3 Orta 4 Yüksek 5 Çok yüksek