Kerem için

Bilgisayardan Uygulamaya: Kerem için Yazılım Kitabı

İçindekiler (Syllabus)

Bu kitap bir binayı temelden çatıya anlatır. Önce bilgisayarın kendisi (temel ve taşıyıcı sistem), sonra yazılım geliştirme (inşaat), en sonda yapay zekâ (merak katı). Her bölüm bir öncekinin üstüne kurulur; hiçbir bölüm henüz anlatılmamış bir kavrama dayanmaz. Bir kavram ilk kez geçtiğinde Türkçesi yazılır, İngilizcesi parantezde verilir, çünkü dokümantasyonu İngilizce okuyacaksın.

Her bölümün başında iki satır var:

Her bölümün sonunda geri çağırma soruları (retrieval) var: kitabı kapatıp cevaplamaya çalışırsın, sonra kontrol edersin. Takıldığın her yeri yapay zekâ öğretmenine sorabilirsin; bu kitap bir sohbetin yerine değil, sohbetin omurgası olarak yazıldı.

Örnekler mümkün olduğunca bizim uygulamamızdan: hukuk öğrenmek için Duolingo benzeri bir uygulama (bölümler, puan, seri/streak, leaderboard). Bugün vanilla HTML/CSS/JS prototip, yarın Expo + TypeScript ön yüz, Go arka uç, Postgres veritabanı, Redis önbellek.


KISIM I — MAKİNE: Elektrikten tarayıcıya

Kerem'in sorusu: "HTML'e gelene kadar neler var?" Bu kısım o merdiveni basamak basamak çıkar. Detaya değil, her katın işine ve komşu katlarla bağına odaklanır.

Ana kaynaklar: CS50x ders notları (Hafta 0–5), Nisan & Schocken, The Elements of Computing Systems (Nand2Tetris), Charles Petzold, Code, Arpaci-Dusseau, Operating Systems: Three Easy Pieces (OSTEP), Bryant & O'Hallaron, Computer Systems: A Programmer's Perspective (CS:APP), Computer Science from the Bottom Up, MDN, Ilya Grigorik, High Performance Browser Networking.

Bölüm 1. Büyük Harita: Bilgisayar nedir, katlar nasıl üst üste biner (The big picture)okunabilir

Bölüm 2. Bit ve Byte: Her şey sayıdır (Bits, bytes and representation)okunabilir

Bölüm 3. Elektrikten Mantığa: Transistör ve mantık kapıları (Transistors and logic gates)

Bölüm 4. Kapılardan Hesaba: Toplayıcı ve ALU (Arithmetic: adders and the ALU)

Bölüm 5. Hafıza: Bir devre nasıl hatırlar (Memory: flip-flops, registers, RAM)

Bölüm 6. İşlemci: Komutları çalıştıran makine (The CPU)

Bölüm 7. Makine Dili ve Assembly (Machine code and assembly)

Bölüm 8. Bellek Hiyerarşisi: Hız ile kapasitenin pazarlığı (Memory hierarchy)

Bölüm 9. İlk Gerçek Dil: C ve derleyici (C and the compiler)

Bölüm 10. C ile Belleğe Dokunmak: Dizi, adres, pointer (Arrays, addresses, pointers)

Bölüm 11. Veri Yapıları ve Algoritmalar: Düşünme araçları (Data structures and algorithms)

Bölüm 12. Açılış: Firmware, BIOS/UEFI ve önyükleme (Firmware and booting)

Bölüm 13. İşletim Sistemi: Donanımın idaresi (What an operating system is)

Bölüm 14. Süreçler ve İş Parçacıkları (Processes, threads, scheduling)

Bölüm 15. Sanal Bellek (Virtual memory)

Bölüm 16. Dosyalar ve Dosya Sistemleri (Files and file systems)

Bölüm 17. Donanımla Konuşmak: Sürücüler ve giriş/çıkış (Device drivers and I/O)

Bölüm 18. İşletim Sistemleri Ailesi ve Terminal (macOS, Linux, Windows and the shell)

Bölüm 19. Ağ: Bilgisayarlar nasıl konuşur (Networking fundamentals)

Bölüm 20. İnternet ve Web: HTML'e varış (The internet, the web and the browser)


KISIM II — İNŞAAT: Yazılım geliştirme (Development)

Makineyi tanıdık. Şimdi üstüne bina dikiyoruz: önce ön yüz (frontend), sonra arka uç (backend), sonra veriyi saklama, güvenlik, yayına alma ve mimari. Her bölüm bizim hukuk uygulamamızın bir parçasını kurar.

Ana kaynaklar: MDN Learn, javascript.info, TypeScript Handbook, react.dev, Expo ve TanStack belgeleri, Pro Git, A Tour of Go / Effective Go / Go FAQ, PostgreSQL belgeleri, Redis belgeleri, OWASP, The Twelve-Factor App, Martin Fowler'ın yazıları, roadmap.sh, CS50x notları (Hafta 6–9).

Bölüm 21. Programlama Dilleri Haritası (The landscape of programming languages)

Bölüm 22. Uygulama Türleri (Kinds of applications: web, mobile, desktop)

Bölüm 23. HTML ve DOM: Belgenin iskeleti (HTML and the DOM)

Bölüm 24. CSS: Görünüm ve yerleşim (CSS: styling and layout)

Bölüm 25. JavaScript: Bir dil olarak (JavaScript as a language)

Bölüm 26. JavaScript ile Sayfayı Canlandırmak (DOM manipulation and events)

Bölüm 27. Modüler Kod (Modules and code organization)

Bölüm 28. Git: Kodun hafızası (Version control with Git)

Bölüm 29. Araçlar: Node, npm ve derleme zinciri (Tooling: Node, npm, bundlers)

Bölüm 30. TypeScript: Tiplerin güvencesi (TypeScript)

Bölüm 31. Framework'ler, React ve Bileşenler (Frameworks, React, components)

Bölüm 32. Mobil: React Native ve Expo (React Native and Expo)

Bölüm 33. Sunucu Verisini Yönetmek: TanStack (Server state with TanStack)

Bölüm 34. Arka Uç Nedir: Sunucu ve API (What a backend is: servers and APIs)

Bölüm 35. HTTP, JSON ve REST (HTTP, JSON and REST in depth)

Bölüm 36. Go: Neden Go (The Go language and why we chose it)

Bölüm 37. Go ile API Yazmak (Building an HTTP API in Go)

Bölüm 38. Veritabanları ve SQL (Databases and SQL)

Bölüm 39. Postgres Pratikte (PostgreSQL in practice)

Bölüm 40. Önbellek ve Redis (Caching and Redis)

Bölüm 41. Kimlik Doğrulama ve Güvenlik (Authentication and security)

Bölüm 42. Test ve Kalite (Testing and code quality)

Bölüm 43. Yayına Alma: Sunucu, konteyner, bulut (Deployment, containers, cloud)

Bölüm 44. Mimariler (Software architecture: monolith, microservices, layers)

Bölüm 45. Uçtan Uca: Uygulamamızın tam haritası (Our app, end to end)

Bölüm 46. Yapay Zekâ Agent'larıyla Geliştirme (Developing with AI agents)


KISIM III — MERAK: Sinir ağları ve büyük dil modelleri (Neural networks and LLMs)

Son kat. Birlikte çalıştığın yapay zekânın içinde ne var? Andrej Karpathy'nin micrograd ve makemore anlatımları metne çevrilerek izlenir: önce sezgi, sonra minik bir motor, sonra isim üreten bir dil modeli, en sonda LLM'ler.

Ana kaynaklar: Karpathy, micrograd ve makemore depoları (README ve kod), "Neural Networks: Zero to Hero" ders transkriptleri ve notları, Karpathy, "Hacker's guide to Neural Networks", 3Blue1Brown'un yazılı ders sayfaları, Jay Alammar, "The Illustrated Transformer", Vaswani vd., "Attention Is All You Need".

Bölüm 47. Yapay Zekâ Haritası (AI, machine learning, neural networks)

Bölüm 48. Matematik Sezgisi: Eğim ve türev (Slopes and derivatives, intuitively)

Bölüm 49. micrograd 1: Değerler ve hesap grafiği (Values and the computational graph)

Bölüm 50. micrograd 2: Geri yayılım (Backpropagation)

Bölüm 51. Nöron, katman, çok katmanlı ağ (Neurons, layers, MLP)

Bölüm 52. Eğitim: Kayıp ve gradyan inişi (Training: loss and gradient descent)

Bölüm 53. makemore 1: Harf sayarak isim üretmek (Bigram language model by counting)

Bölüm 54. Modeli Ölçmek: Olabilirlik ve kayıp (Likelihood and negative log-likelihood)

Bölüm 55. Bigram'ı Sinir Ağıyla Kurmak (The neural-network bigram)

Bölüm 56. MLP Dil Modeli ve Gömme (MLP language model and embeddings)

Bölüm 57. Dikkat ve Transformer (Attention and the Transformer)

Bölüm 58. Büyük Dil Modelleri (Large language models)

Bölüm 59. Kapanış: Agent'lar ve kitabın tamamı (Agents and the whole map)