| 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 |