Egyetemi/főiskolai programozó szakokon milyen alapokat lehet megtanulni, melyek hasznosak lehetnek a későbbiekben munkahelyen?
Azért kérdezem, mert mindenki ismételgeti ezt, hogy ott lehet megszerezni az "alapokat", de konkrétumok megnevezése nélkül.
Nyílván én is fel tudnék sorolni dolgokat, amik ide tartozhatnak: 1. hardver alapismeretek, 2. számítógépes hálózatok, 3. operációs rendszerek (különösen Linux/Windows működésének alapjai, scriptek), 4. matematikai alapok, 5. algoritmusok és adatszerkezetek, 6. adatbázisok, 7. programozási/modellezési módszertanok ...
De a kérdésem arra vonatkozott, hogy ezek közül melyek azok, amelyeket
1. Tényleg jól megtanítanak az egyetemen.
2. Megtanulásuk könyvből / MOOC-okból lehetetlen vagy nehézkes.
3. Hasznos tudni, akár konkrét lexikális tudásként, akár szemléletfejlesztő háttértudásként, ha valaki helyt szeretne állni programozóként egy munkahelyen.
Nem gondolom, hogy bármelyik témakört is különösebben jól megtanítanák. Inkább csak bevezetést nyújtanak olyan dolgokba, amikkel nem feltétlen találkozol, ha nem kifejezetten azt keresed. Továbbá, az sem igaz, hogy lehetetlen ezeket a dolgokat megtanulni egyetem nélkül, csak ugye, ha nem keresed, akkor nem találkozol velük.
Konkrétan pár példa:
- Adatszerkezeteknél AVL vagy Red-Black tree-t nem feltétlen látsz, bár népszerű programnyelvek használnak Red-Black tree-t valamelyik container típushoz.
- Nevezetes dinamikus programozási problémák (0-1 knapsack, longest common subsequence, subset sums, etc)
- Backtracking nem rocket science, de néha szeretik interjún és bele tudnak zavarodni az emberek.
- Gráfalgoritmusok (flood fill, dijkstra, prim, bellman-ford, ford-fulkerson, edmonds-karp, A* etc)
- Oprendszerek és hálózatok működéséről nagy eséllyel semmit sem tudsz, ha csak hobbi szinten programozol
- Algoritmusok bonyolultságelmélete. Vannak állások, ahol ez kell, bár tény, hogy kevés az ilyen K+F pozi.
- Általában a matematika. Ha érdekel a mesterséges intelligencia, akkor pl neurális hálózatoknál elég hamar találkozik az ember parciális deriváltakkal backpropagation során.
Halmazelmélet,
gráfelmélet,
algoritmuselmélet,
kódoláselmélet,
programozáselmélet,
adatstruktúrák,
boole algebra,
számrendszerek,
számítógép arcitektúrák,
implementációs stratégiák,
hatékonyságvizsgálat,
hibakeresési stratégiák,
algoritmus leíró eszközök,
alkalmazott matematika,
clean kód, stb., stb.
Ezek közül már többé-kevésbé tisztában vagyok a következőkkel:
- logikai alapok: eljutottam kb. Gödel teljességi tételéig, eddig értem is (lekopogom:D); a célom, hogy megértsem Gödel nemteljességi tételének bizonyítását
- halmazelmélet: szerintem pipa, hasonlóan a Boole-algebra és számrendszerek is
- matematika: analízis és lineáris algebra alapjai mennek (tudok deriválni-integrálni-lineáris egyenletrendszereket megoldani)
- gráfelmélet okés; gráfalgoritmusok közül a felsoroltakkal találkoztam, kivéve: flood fill és A*
- dinamikus programozás: ez az egyik kedvencem, egyből rápörgött az agyam
- bonyolultságelmélet: értem az olyan alapfogalmakat, mint determinisztikus / nem-determinisztikus Turing-gép, RAM-gép, P, NP, NP-teljes; végigbogarásztam NP-teljességi bizonyításokat stb.
- kriptográfia: alapok megvannak, pl. RSA
- verziókezelés: már elkezdtem rászokni
- programozás: értelemszerűen ezt folyamatosan gyakorlom (főleg C++, JAVA, Python, Mathematica, de webes cuccok is)
Amikkel kevésbé:
- adatszerkezetekből minimális a tudásom, pár alap dologgal vagyok tisztában egyelőre
- oprendszerek és hálózatok témakörből tényleg nem tudok túl sok mindent :(
- számítógép-architektúrák: 0
- best practice stratégiák (implementáció, hibakeresés, hatékonyság, clean code stb.): na ezeket viszont csak fel lehet szedni élesben, gyakorlat során is, közben utánaolvasgatva a dolgoknak; clean code-ról amúgy láttam MOOC-okat is
Beadtam ugyan a jelentkezést programtervező szakra, de még nem döntöttem el, hogy elkezdjem-e szeptemberben. Már van egy diplomám, ott tanultam deriválni-integrálni is.
Most afelé hajlok, hogy elvégzek 10-12 MOOC kurzust, változatos témakörökben, csinálok pár hobbiprojektet és utána elkezdek jelentkezgetni álláshirdetésekre.
Igazából, a modellezést és az algoritmusokat kifejezetten szeretem, clean code-ot és társait is szeretném elsajátítani mielőtt állásinterjúra mennék.
Egyetlen témakör, amire nem vagyok képes rávenni magam, hogy magamtól nekiüljek tanulni, azok a hardverközeli (gépközeli) dolgok, mint számítógép-architektúrák, hálózatok, oprendszerek. Szóval nem tudom, hogy ezek miatt érdemes-e elkezdeni egy egyetemet.
Mindegyik hasznos. Amelyik nem tűnik annak és azt mondja nép szart se ér, az is. Életem legrosszabb cselekedete volt, hogy hagytam
befolyasoljanak egyetem alatt az életképtelen okoskodó emberek. "sose fogod használni..." szart...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!