TEMEL PROGRAMLAMA EĞİTİMİ
Temel Programlama eğitimi, programlamayı "satır satır kod yazma" sandığı yerden çıkartıp düşünce disiplini olarak kullanmak isteyenler için tasarlandı. Algoritmik düşünce input, process ve output zincirinde kurulur; değişken, tip, scope ve lifetime kavramları sezgisel örneklerle çalışılır.
Eğitim sonunda katılımcı, karar yapılarını ve döngüyü net yazar; fonksiyon, parametre ve return value ile kodu yeniden kullanılabilir kılar; array, list, dictionary ve set ile veri yapısı seçimi yapar. try/catch ile hata yönetimi disiplini ve Git ile clean code prensipleri eğitimin pratik kazanımıdır.
Katılımcı Profili
Bu eğitim, programlamayı düşünce disiplini olarak kavramak isteyen rollere yöneliktir:
- Yeni Başlayan Geliştiriciler: Programlamaya sıfırdan başlayan roller
- Kariyer Değişimi Yapanlar: Yazılım dünyasına geçen profesyoneller
- Bootcamp Adayları: Programlama temellerini oturtmak isteyen katılımcılar
- Üniversite Öğrencileri: Pratik programlama deneyimi arayan öğrenciler
- Lise Öğrencileri: Üniversite öncesi sağlam temel kurmak isteyen adaylar
Ön Gereklilikler
Bu eğitime katılım için yazılım deneyimi gerekmez; aşağıdakiler yardımcı olur:
- Bilgisayar ve dosya yönetimi konusunda temel rahatlık
- Mantıksal düşünme ve problem çözme alıştırmalarına ilgi
- Bir metin editörü (VS Code, Sublime Text) ile temel rahatlık
- Klasör ve dosya yapısı hakkında temel bilgi
- Düzenli alıştırma yapmaya istek ve sabır
Süresi ve Tarihi
Süre: 3 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.
Kazanımlar
Bu eğitim sonunda katılımcı, programlamayı "satır satır kod yazma" sandığı yerden çıkartıp düşünce disiplini olarak kullanır:
- Algoritmik düşünceyi input, process ve output zincirinde kurar
- Değişken, tip, scope ve lifetime kavramlarını ayırt eder
- Karar yapıları (if/switch), döngü ve kontrol akışını net yazar
- Fonksiyon, parametre ve return value ile kodu yeniden kullanılabilir kılar
- Array, list, dictionary ve set ile veri yapısı seçimi yapar
- try/catch ve assertion ile hata yönetimi disiplini kurar
- Versiyon kontrol ve clean code prensiplerini günlük rutine alır
Eğitim materyalleri ACM Computing Curricula 2020 referans alınarak hazırlanır.
Temel Programlama Eğitimi Konuları
1. Algoritma ve Pseudocode
- Problem çözme adımları
- Pseudocode yazım kuralları
- Top-down ve bottom-up yaklaşım
- Algoritma karmaşıklığı: Big-O temeli
2. Akış Diyagramı (Flowchart)
- Standart semboller (terminal, process, decision)
- Karar ve döngü gösterimi
- Mermaid, draw.io ile dijital diyagram
- Akış diyagramı → kod dönüşümü
3. Değişken, Sabit ve Veri Tipi
- Bellek ve değişken kavramı
- Primitive: integer, float, string, boolean
- Tip dönüşümü (casting)
- Naming convention (camelCase, snake_case)
- Const vs let vs var
4. Operatör
- Aritmetik: +, -, *, /, %, **
- Karşılaştırma: ==, !=, <, >
- Mantıksal: AND, OR, NOT
- Atama operatörleri ve compound
- Bitwise temel kavram
5. Karar Yapısı - IF, ELSE, SWITCH
- Tek koşullu if
- if/else ve else if zinciri
- Switch/case yapısı
- Ternary operator
- Guard clause pattern
6. Döngü - FOR, WHILE, DO-WHILE
- For loop ve sayaç
- While ve do-while farkı
- Break ve continue
- Nested loop ve performans
- Infinite loop önleme
7. Dizi (Array)
- Tek boyutlu dizi
- İndeks ve eleman erişimi
- Çok boyutlu dizi (matrix)
- Dinamik dizi vs sabit boyut
- Yaygın algoritma: sort, search
8. Fonksiyon - Parametre ve Return
- Fonksiyon tanımı ve çağırma
- Parametre vs argüman
- Default parametre değeri
- Pass by value vs pass by reference
- Return value ve void
9. Scope, Lifetime ve Variable Shadowing
- Global vs local scope
- Block scope
- Variable shadowing
- Closure kavramı (giriş)
10. String İşlemleri
- Concatenation ve template string
- Length, substring, split, join
- Search: indexOf, contains
- Replace ve trim
- String immutability
11. Liste, Sözlük (Dictionary), Set
- Liste (List/ArrayList): sıralı koleksiyon
- Dictionary/Map: key-value
- Set: tekil eleman
- Tuple ve immutable koleksiyon
- Iterator ve foreach
12. Hata Yönetimi - Try/Catch
- Exception kavramı
- try, catch, finally bloğu
- Hata tipleri ve hierarchy
- Throw ile manuel hata fırlatma
- Defensive programming
13. Nesne Yönelimli Programlama Giriş
- Class ve object
- Property ve method
- Encapsulation: public, private
- Inheritance temel
- Polymorphism kavramı
14. Dosya Okuma ve Yazma
- Text file: read, write, append
- CSV ve JSON parsing
- File I/O ve resource leak
- Encoding: UTF-8, ANSI
15. Modülerlik - Import, Module, Package
- Kod organizasyonu
- Module ve namespace
- Import ve export
- Library vs framework
16. Sürüm Kontrolü - Git Temelleri
- Repository, commit, branch
- git add, commit, push, pull
- Merge ve conflict çözümü
- GitHub/GitLab ile remote
- .gitignore
17. Test Etme Mantığı
- Unit test kavramı
- Test pyramid
- Assertion ve test runner
- TDD (Test-Driven Development) giriş
18. Debugging ve Code Review
- Print debugging
- Breakpoint ve step-through
- Stack trace okuma
- Code review pratiği
- Clean code prensipleri
TEMEL PROGRAMLAMA EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
Eğitimde hangi programlama dili kullanılır?
Genelde Python tercih edilir — okunabilir syntax, hızlı sonuç, geniş kullanım alanı. JavaScript veya başka dil de ekibin hedefine göre seçilebilir. Kavramlar dil-agnostik öğretilir: değişken, döngü, fonksiyon, OOP. Tek dilde derinleşmek ileride başka dile geçişi kolaylaştırır.
Değişken, scope ve lifetime arasındaki ilişki nedir?
Değişken veriyi bellekte tutan named referansıdır. Scope değişkenin görünür olduğu kod bloğu (function, block, global). Lifetime ne kadar süre bellekte tutulduğu — local değişken function dönünce silinir, global program boyunca yaşar. Bu ayrım hafıza yönetimi ve hata önlemenin temeli.
Karar yapıları (if, switch) ve döngü (for, while) nasıl seçilir?
if/elif/else koşula göre dallanma — birkaç koşul varsa okunabilir. switch (Python'da match) çoklu sabit değer karşılaştırma için daha temiz. for sayı veya koleksiyon iterasyonu için. while koşul-temelli (bitiş belirsiz, koşul kontrolüne göre). break ve continue akış kontrolünü inceltir.
Array, list, dictionary ve set arasında ne zaman hangisi?
List sıralı, indeksli, çoklu erişim — sıra önemli koleksiyon için. Dictionary key-value lookup — anahtar tabanlı arama. Set tekil değerler, üyelik kontrolü hızlı. Array sabit tipte ve boyutta — performans-kritik low-level kullanım. Doğru veri yapısı performansı 10-100x değiştirir.
Hata yönetimi try/catch ile if/else arasında neden farklı?
if/else önceden bilinen koşulları kontrol eder. try/catch beklenmedik runtime hatasını yakalar — dosya bulunamadı, network timeout, zero division. Defensive programming her ikisini doğru yerde kullanır. Exception'ı sessizce yutmak (empty catch) anti-pattern; loglama ve gerekirse re-raise.
Git ile programlama öğrenirken neden günden bir kullanmalı?
Git versiyon kontrol — bozulan kodu geri alabilme, deneyleri branch'lerde izole etme, ekip çalışmasında merge. Yeni başlayanın 'çalışan kodu yeni özellik denerken bozma' korkusu git ile çözülür. GitHub commit geçmişi öğrenme yolculuğunun da kanıtı; istihdam ararken görünür portfolio.



