Matematik altyapisi:
Discrete Math -> Kriptografi ve Graph Teori ile ilintili. Ek olarak Big Data calisacak birinin de kesin bilmesi lazim.
Lineer - Istatistik -> Sayisal alanda calisacak herkesin bilmesi gerek. Ozellikle data science icin olmazsa olmaz.
Calculus -> Ressamin bile bilmesi gerek.
Hashing fonksiyonlari icin Sayilar teorisine hakim olmak gerek.
Reference Source
Ornegin C# String hash fonksiyonlarini incelersen 5381 gibi "magic number" kullanimlarini gorursun. Asal sayilarin hash fonksiyonlari icin anlamini ve tum bunlarin background'unu number theory ile ogrenirsin.
DB ve implementasyonlari icin Set teori bilinmeli. Ama zorunlu degil, zaten lisans derslerinde olmaz.
Teknik altyapi:
Algorithms - Data Structure -> Bu ikili cepte zaten. Bazi okullarda ikisi ayni derse de yediriliyor ama algoritma analizi ve gelistirme konusu programlamadan bagimsiz dusunulebilir. Daha matematiksel bir kavram. Zaten ortada programlama yokken vardi, Algebra - Algorithm bunlar Araplarin bilimde ileri seviyede oldugu zamanlardan kalma bize : )
OS -> Isletim sistemleri. Cogu "Yazilim Muhendisligi" programinda bulunmaz Turkiye'de. Temel *nix - MS yapisi farkliliklari, disk ve dosya yapilari gibi farklar islenir. DIskte yer var ama dosya kaydedemiyorum diye 3 gun ugrasan developer'lar var. Inode diye bir seyden haberdar olmadiklari icin cirpiniyorlardi.
en.wikipedia.org
Udemy'de anlatilmaz bunlar.
Network -> Olmazsa olmaz. OSI Layer, protokoller, RFC spesifikasyonlari, propagation ve transmission zamanlari vs.
Logic - Elektronik -> Teknik okullarda daha sert verirler bu dersleri. Hatta ufak bir islemci bile tasarlatirlar. Bazi okullarda "Computer Architecture" diye verirler ki bence gereksiz basite indirgenmis. Temel yapiyi bilmesi gerekir CS'cinin. Embedded programlamaya ve hardware - software iliskisine girisin de yolu acilir.
Programming Languages -> Cogu kisinin "Python vs Fortran" gibi sacma kiyaslara girismesindeki temel eksiklik. Paradigmalar, compilation, interpretation, parse tree, tokenization, linkinng vs bir programlama dilinin calisma mekanizmasinin tamami. Kendi dilini yazarsin bu derste.
Theory of Computation / Automata Theory -> Favori derslerimden biriydi kendisi. Turing Machine'den girer, computasyonun ne oldugunu ve bilgisayar calisma seklini teorik olarak ele alirsin.
Distributed Systems / Software Engineering -> Bu ikili daginik yazilim gelistirme prensipleri, fail-safe metodoloji, election algoritmalari, yazilim muhendisligi esaslari ( Agile, Waterfall vs ) uzerine bilgi verir. Kismen yuzeyseldir, fazlasi icin grad school gerek.
Database Systems -> Isletim sistemlerinden bagimsiz veri tabani yapilari, ACID , NoSQL vs sistemleri ogretilir. Onemlidir. Cogu insanin veritabani denilince aklina sadece MySQL gelmesindeki temel cehaletin sebebi bunun noksanligidir.
---
Tum bu yazdigim derslerin hicbirini bilmeden sektore girebilir, para da kazanabilirsin. Muhtemelen hicbirini bilmeden emekli olan insanlar da olacak. Cunku her yazilim sistemi bu tarz detayli bilgiye gereksinim duymaz, duydugu alanlarda nasil calistigini bilmedikleri bir library/framework kullanip islerini hallederler. Ornegin yukarida biraktigim hash fonksiyonunu yazan da "yazilimci", Muhittin kuruyemis'e wordpress ile web sitesi gelistiren de.
Ek olarak bilgi - para arasinda dogru oranti yok. Adini yazamadan milyonlar kazanan insanlar var, 10 tane matematik profesorunun toplam kazancindan fazla kazanan pideciler var. Yani idealist degilsen bunlari kastirmana hic gerek yok.
Okul sart mi tartismayi bayiyor beni aslinda, cunku "sart" cok guclu bir kelime. Degil elbette.
Hic tip fakultesine gitmemis dolandiricinin doktor olmadigini bile aylar sonra anliyorlar, burasi Turkiye, kalifiye insan zaten milyonda 1. Ama bizim sektorde Turklerle degil, dunya ile yarisiyorsun, bileceksin ; eger iddialiysan