Previous slide Next slide Toggle fullscreen Open presenter view
CEN429 Güvenli Programlama · Ön Gereksinimler
Ön Gereksinimler
CEN429 Güvenli Programlama — 2026-2027 Güz
Dr. Öğr. Üyesi Uğur CORUH
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Bu ders sizden ne bekliyor?
İlk haftadan itibaren C/C++ programlarını kendi bilgisayarınızda derleyip çalıştırıyorsunuz
Projeyi Git ve GitHub üzerinde yürütüyorsunuz
Güvenlik önlemlerini birim testleriyle kanıtlıyorsunuz
Dersin resmî ön koşulu: CEN107 Algoritmalar ve Programlama I
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Bu sayfanın planı
Algoritmalar ve Programlama I'den gelenler (zorunlu)
C programlama temelleri (zorunlu)
Derste kısaca hatırlatılan ön bilgiler
Bilgisayarınızda kurulu olması gerekenler
Kendinizi sınayın (ilk dersten önce)
Kural: CEN107'nin ilk haftalarındaki geliştirme ortamı, Git, birim test ve şablon kullanımı bu derste
bilindiği varsayılarak kullanılır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
İlk dersten önce
Aşağıdaki 5. bölümdeki denetimleri kendi bilgisayarınızda yapın.
Bir adımda takılırsanız ilgili Algoritmalar ve Programlama I sayfasına dönün; hâlâ çözemezseniz ilk derste
sorun.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
1. Algoritmalar ve Programlama I'den gelenler
Bu dört konu CEN107 Algoritmalar ve Programlama I (eski kodu CE103) dersinde öğretildi
Burada tekrar anlatılmaz ; bilindiği varsayılarak doğrudan kullanılır
İsteğe bağlı başlangıç: CEN107 (CE103) Hafta 1 — Giriş ve geliştirici yol haritası
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Geliştirme ortamı
Nerede öğretildi? CEN107 (CE103) Hafta 2 — Geliştirme ortamları
Derleyici: GCC / Clang / MSVC
IDE, Windows'ta WSL
CMake ile derleme
Bu derste nerede kullanılıyor? Her haftanın demoları; 1. hafta laboratuvar kurulumu
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Git ve GitHub
Nerede öğretildi? CEN107 (CE103) Hafta 3 — Git ile sürüm yönetimi
Depo oluşturma, clone, commit
Dal (branch), çekme isteği (pull request)
.gitignore
Bu derste nerede kullanılıyor? Proje rehberi (plan, kurulum, teslim); 1. hafta değişiklik yönetimi;
12. hafta sürüm kimliği
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Birim test ve kapsam araçları
Nerede öğretildi? CEN107 (CE103) Hafta 4 — Birim test ve kütüphaneler
Test yazma
ctest ile çalıştırma
Kapsam (coverage) raporu
Bu derste nerede kullanılıyor? Projede S16 test sonuçları; 4. hafta sanitizer ve fuzzing; 12. hafta test planı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Proje şablonlarının kullanımı
Nerede öğretildi? CEN107 (CE103) Hafta 2–4
Şablondan özel depo oluşturmak ("Use this template", fork değil)
Derlemek
Testleri ve dokümantasyonu üretmek
Bu derste nerede kullanılıyor? Proje rehberi § 2 Proje kurulumu — şablon:
cpp-cmake-ctest-template
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
2. C programlama temelleri (zorunlu)
Demoların hemen hepsi C ile yazılmıştır ve güvenlik hataları çoğunlukla bu temel yapıların yanlış
kullanımından doğar. Şunları rahatça okuyup yazabilmelisiniz:
İşaretçiler (pointer), diziler ve dizeler (char[], sonlandırıcı \0)
Dinamik bellek (malloc, calloc, free) ve yapı (struct)
Dosya okuma/yazma (fopen, fread, fgets)
Birden çok kaynak dosyalı bir programı derlemek ve komut satırı argümanlarını (argc, argv) kullanmak
Yoğun kullanım: 1. hafta (bellek, taşma) ve 4. hafta (C/C++ sağlamlaştırma)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
3. Derste kısaca hatırlatılan ön bilgiler
Aşağıdakileri bilmiyorsanız sorun değil.
İlgili haftanın "Başlamadan önce" bölümü kısa bir hatırlatma yapar; önceden göz atarsanız ders daha
rahat geçer.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Terminal ve sayı sistemleri
Terminal: PowerShell ve Linux/WSL'de cd, ls, dosya yolları, ortam değişkenleri
— gerekli: 1. hafta ve bütün demolar
Binary ve onaltılık sayılar, bayt, XOR
— gerekli: 3., 9., 11. haftalar
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Ağ ve diğer temel bilgiler
Temel ağ kavramları: istemci–sunucu, TCP/IP, HTTP
— gerekli: 3. ve 10. haftalar
Basit SQL (SELECT … WHERE), Java ya da Python 'da temel sözdizimi
— gerekli: 5. hafta
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
4. Bilgisayarınızda kurulu olması gerekenler
Dizüstü bilgisayar gereklidir. İlk derse şu araçlar kurulu gelin:
C/C++ derleyicisi: Windows'ta Visual Studio 2022 (C++ ile masaüstü geliştirme), Linux/WSL'de GCC
ya da Clang
CMake , Git ve bir GitHub hesabı
Windows kullanıyorsanız WSL2 + Ubuntu
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Kurulu olması gerekenler (devam)
OpenSSL 3 , SQLite , Python 3 , JDK 21
Dönem içinde ayrıca GoogleTest , SoftHSM2 ve Tigress kullanılır; kurulumları ilgili haftada
anlatılır.
Demo kodlarının kurulum kılavuzu: code/README.md
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
5. Kendinizi sınayın
İlk dersten önce
Aşağıdaki komutların her biri bir sürüm numarası yazmalıdır (sayılar farklı olabilir).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Windows (PowerShell)
git --version
cmake --version
wsl --status
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
WSL / Linux
git --version
cmake --version
gcc --version
openssl version
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Şablonu deneyin
Proje şablonundan kendi özel deponuzu oluşturun ("Use this template → Private", fork değil), derleyin ve testlerini çalıştırın:
git clone https://github.com/<kullanici-adiniz>/cpp-cmake-ctest-template.git
cd cpp-cmake-ctest-template
cmake -S . -B build
cmake --build build
ctest --test-dir build
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Sözlük
Terim
Anlam
WSL
Windows Subsystem for Linux — Windows içinde Linux çalıştırma
CMake
Çoklu platform derleme sistemi üreticisi
CTest
CMake ile gelen test çalıştırıcı
Use this template (şablondan depo)
Şablonun dosyalarıyla, geçmişi olmayan yeni bir depo açmak; özel (private) yapılabilir
Coverage (kapsam)
Testlerin kodun ne kadarını çalıştırdığının ölçümü
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Ön Gereksinimler
Hazır mısınız?
Bu adımların hepsi hatasız bitiyorsa derse hazırsınız.
Ders sitesi: ucoruh.github.io/cen429-secure-programming
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
Konuşma notu: Bu sunum, ders sitesindeki "Ön gereksinimler" sayfasının sunumudur; ilk dersten önce öğrencinin kendi kendine denetleyebileceği bir kontrol listesidir.
Konuşma notu: Bu bölümdeki dört kalemin hiçbiri CEN429'da yeniden öğretilmez; öğrenci CEN107'yi hatırlamıyorsa ilgili haftaya dönmesi gerektiğini vurgulayın.
Konuşma notu: C temellerini bilmeyen öğrenci 1. ve 4. haftada ciddi zorlanır; bu slaytı vurgulu geçin.
Konuşma notu: Bu üç komut bloğu, öğrencinin ilk derse gelmeden kendi bilgisayarında çalıştırması gereken tam kontrol listesidir; canlı gösterip her satırın ne beklediğini açıklayın.