Amit egy 4 éves informatika szakon megtanul

Nemrég írtam egy cikket arról, hogy szüksége van-e informatikai diplomára ahhoz, hogy munkát szerezzen a technikában. Úgy gondoltam, hogy hasznos lesz átírni az átiratomat. A tanultak megvitatása remélhetőleg segít az embereknek. Szeretném, ha mindenki a lehető legalapozottabb döntést hozhatná, amikor a technológiai karrier folytatásának útját választja.

Jogi nyilatkozat : Ezt az óráimra való emlékezésem és egy mobil fejlesztő szemszögéből írtam. Ezen órák sok témája specializálódhatott és karrierváltoztathatóvá vált. Tehát ezek mind fontosak a világon valakinek. Az én szemszögemből és annak szemszögéből írok, aki a mobil fejlesztő karrierjét választotta.

Programozás I, II

Ez volt a húsa mindennek, amit megtanultam, és amivel elindítottam a programozással. Ezek voltak azok az órák, ahol megtanultál programozni. Mielőtt részt vettem ezeken az órákon, még csak alig programoztam. Próbáltam előnyt szerezni, de nem jutottam sokkal tovább, mint a hurkok.

Ez az osztály egy üres fájl létrehozásával és egy IDE-ben történő fordítással kezdődött (Code :: Blocks-ot használtam). És egészen a saját szöveges csatajátékunk megalkotásáig dolgoztunk. Visszatekintve az általam írt kódra zavarba hozok. Azóta hosszú utat tettem meg. Itt van a repo, ha nevetni szeretnél (csak egy main.cpp fájlt használok 1063 sornyi kóddal).

Szóval mit tanultam itt? Mindent el akarok mondani. Ezek a tanfolyamok őrületesen értékesek voltak, és megszerezték a programozóként való szakszerű munkához szükséges tudás legalább 70% -át. Megtanultam, hogy utasítások, ciklusok, logikai logika, osztályteremtés, struktúra létrehozás, interfészek létrehozása, polimorfizmus, öröklődés és még sok más. Néhány alapvető adatstruktúrát is alkalmaztak, például tömböket és vektorokat.

Diszkrét szerkezetek a számítástechnikában

Ezt az osztályt azért vették fel az átiratba, hogy az emberek hozzászokjanak a logikai logikához. Amit az óra első két hetében leéltünk. Nekünk, gyanútlan hallgatóknak sajnos elég messze megy a nyúl lyukán. Íme néhány témakör, amelyekre kiterjedt: „logika, halmaz és halmaz műveletek, bizonyítási módszerek, rekurzív definíciók, kombinatorika és gráfelmélet”.

Ezek mind hasznos tudnivalók. De az a kérdés, hogy a tanulókat arra bíztatták, hogy korán vegyenek részt ebben az órában. Általában az I. és II. Progamozás mellett. És ezek néhány haladó téma. Most megküzdenék a matematikai bizonyítási módszerek alkalmazásával. És emlékszem, akkoriban nagyon küzdöttem. Emellett csak gugliznom kellett, mi is a kombinatorika, így nyilvánvalóan nem használom őket túlságosan.

Tény, hogy sok olyan dolog, amit ezen a tanfolyamon tanítottak, nem tűnt alkalmazhatónak az informatikus karrierre abban az időben, amikor a tanfolyamot elvégeztem. Most már tudom, hogy a logika, a halmaz és halmaz műveletek, a rekurzív definíciók és a gráfelmélet hasznosak lehetnek. De ez csak azzal a visszagondolással jár, hogy néhány évig programozó lehetek.

Amit a jelenlegi karrierem során naponta alkalmazok, az a logika, és talán a műveletek beállítása. A rekurzív definíciók és a gráfelmélet valóban csak az interjúk során voltak hasznosak. De vegye ezt egy szem sóval, mert mobil fejlesztő vagyok. A háttér-fejlesztők valószínűleg nagyon hasznosnak találnák a gráfelméletet.

Adatszerkezetek

Ez az osztály jó volt. Nagyon jó. Az adatstruktúrákat az egész számítógépes programozásban használják, és ezek alkotják a legtöbb gerincét az embereknek. Lehetővé teszik számunkra az adatok tárolását az általunk írt programok számára hasznos módon. Nagyon hasznos képesség, hogy megnézheti az adatokat és megismerheti az idő és a tér teljesítményének legjobb tárolási módját.

Megtanultam tömbökről, halmokról, összekapcsolt listákról, duplán összekapcsolt listákról, fákról, grafikonokról, kupacokról és ezen adatstruktúrák mindenféle ízéről (például az önkiegyensúlyozó fákról). Ez az osztály nemcsak az adatstruktúrák megértésében segített, hanem a tárolt adatok jobb rendezésében is.

Ezt az órát C-ben végezték, ami még érdekesebbé tette. A C nagyon finom lehet, de nagyon erős is, ha helyesen használják. Nagyon vigyáznom kellett, hogyan osztottam ki és tisztítottam meg a memóriát, ami szintén nagyon jó volt a memóriakezelés tanításához.

Annyi hasznos dolog volt ebben az osztályban, hogy nehéz mindegyiket lefedni. Nem is említettem azt a tényt, hogy ez a technológiai interjúk kulcsfontosságú eleme. Ha ingatag az adatstruktúrákban, akkor kezdjen el ecsetelni néhány alapot, mert ezek nagyon fontosak.

Algoritmusok elemzése

Ez az osztály némileg hasznos volt. Az algoritmusok hasznosak. Ők vezetik a világ legjobb szoftvereit, és elég erősek ahhoz, hogy relevánsak maradjanak a modern világban. De ennek az osztálynak volt néhány kérdése.

Ennek leghasznosabb része a Big O jelölés megtanulása volt. A nagy O jelölés lehetővé teszi a kód kiértékelését és annak megértését, hogy mennyire jól teljesítene idő és tér szerint. Általánosságban elmondható, hogy ha egy vállalatnál méri a kód teljesítményét, akkor időzítővel követi az interakciók közötti időt. Ez lehetővé teszi, hogy lássa, milyen jól teljesít a szoftvere. Ehhez meg kell írnia a kódot, és utána ki kell értékelnie az eredményeket.

A Big O jelölés lehetővé teszi a kód teljesítményének értékelését a kód megnézésével. Nem akarok ebbe belemenni túl sokat, de ha nem tud a Big O jelölésről, olvassa el ezt a blogbejegyzést.

A tényleges algoritmusok, amelyeken átmentünk, nem voltak olyan hasznosak. Csak a hátizsák és az utazó eladó problémájára emlékszem. Ezekhez csoportokban is kódot kellett írnom, ami nem volt jó, mert a csoportomban volt egy ember, aki túllépett azon, amiért megválasztották. Ez azt jelentette, hogy végül kevesebb kódot írtam a végső megvalósítás felé, mint szerettem volna.

Hasznos lehet a híres algoritmusok, azok céljának és megvalósításának alapvető ismerete (főleg interjúk készítéséhez). A nagy O jelölés itt a kulcs. Nagyon hasznos a munkahelyen, és hihetetlenül hasznos interjúk során is.

Webfejlesztés

Ebben az osztályban voltak a legtöbb olyan képességek, amelyek közvetlenül alkalmazhatóak voltak a műszaki munkában. Megismertem a HTML-t, a CSS-t, a JQuery-t, a JavaScript-et, a PHP-t és a JSON-t. Megtudtam, hogyan küldik el a kéréseket a weboldal kezelőfelületéről a háttérbe, hogyan dolgozzák fel a kérelmet a hátoldalon, majd visszaküldik a válaszra a kezelőfelülettel. Megtanultam, hogyan kell létrehozni a felhasználói felületet, és hogyan kell együttműködni egy olyan adatréteggel, amely aztán kölcsönhatásba lép a hálózattal.

Az óra végén elkészítettem egy saját weboldalt, és kezdeményeztem az Angular megtanulását. Az Angular-t használtam, hogy webhelyem mutatós legyen, ami végül megszerezte az első szakmai gyakorlatot. Jól megértettem azt is, hogy egy weboldal hogyan működik a motorháztető alatt.

Ez a tudás önmagában nagyszerű volt, de megtanultam egy ismeretlen nyelv, keretrendszer vagy adatformátum felvételét és elsajátítását, valamint menet közbeni munkát. Sokat gugliztam ezeken a témákon, hogy konkrét példákat láthassak. Megtanultam, hogyan használhatom a dokumentációt és az online vizsgálatot, hogy jobban megértsem azt a koncepciót, amelyet rövid időn belül közvetlenül alkalmaznom kellett. Ez kulcsfontosságú készség ahhoz, hogy ügyes programozó legyünk.

Bevezetés az adatbázisokba

Leginkább csak az SQL-t tanultam ebben az osztályban. Biztos vagyok benne, hogy átgondoltunk néhány más fogalmat, például az aprítást és a klaszterezést, de nem emlékszem rájuk. Néha az aktuális munkám során használom az SQL-t az adatok lekérdezéseinek futtatásához a naplózott eseményekhez. Az SQL vagy szerves része lesz a munkájának, vagy alig fogja használni. Ha szüksége van rá, tanulja meg és váljon szakértővé. Ha nem, akkor ne aggódjon túl sokat emiatt.

Szoftvertechnika I, II

Szintén egy másik osztály, amelyre nem igazán emlékszem. Úgy gondolom, hogy egy csomó tág fogalmat éltünk át ebben az osztályban. Kitértünk a Scrum és a Waterfall projektmenedzsment módszereire. Átnéztük a tesztelést és az összes különféle típusú tesztet. Kitértünk néhány használhatósági és hozzáférhetőségi koncepcióra. Ez valójában csak egy fogás volt azoknak a koncepcióknak, amelyek nem igazán illettek a saját osztályaikba.

Az osztály patchwork jellege miatt egyik fogalmat sem igazán internalizáltam túl jól. Jó volt egy alapos áttekintés a lefedett fogalmakról, de szeretném, ha több időt fordítanánk az egyes fontos témákra, például a tesztelésre.

Számítógép-építészet és szerelési nyelv

Élénken emlékszem erre az órára. Ez az osztály a számítógép működésével foglalkozik. Hogyan küldik el és dolgozzák fel a számítógép a gépi utasításokat. Azt is meg kell írnunk néhány kódot a MASM-ben, amely egy olyan összeállítási nyelv, amely nagyon szorosan kölcsönhatásba lép a gépi kóddal.

A legtöbb programozási nyelv, amelyet ennek az osztálynak a megszerzésére használtam, magas szintű nyelv volt. A magas szintű nyelvek általában közelebb állnak az emberi nyelvhez, mint a gépi kód. A MASM nagyon közel áll a gépi kódhoz, és azt mondanám, hogy közelebb áll a gépi nyelvhez, mint az emberi nyelv.

Ennek az osztálynak a legfontosabb része, hogy képet kapjon arról, hogy mi történik a kóddal, miután az összeállt. Nagyon érdekes volt megismerni a számítógép különböző logikai egységeit és azt, hogy a kód hogyan kezeli őket.

Gyakorlati célokból nem hiszem, hogy ez az osztály nagyon fontos szerepet játszott volna a technikai karrieremben. Eddigi pályafutásom során nem sokat használtam fel az ebben az osztályban megszerzett ismereteket.

Operációs rendszer

Őszinte leszek, nagyon nehezen emlékszem arra, amit ebben az osztályban tanultam. Az egyetlen dolog, amire emlékszem, egy olyan üzenetküldő program létrehozása, amely a socket programozást használta C-ben a kommunikációhoz. Megtanultam a fájlok megnyitását és a mappák szkriptek használatát is.

Szeretnék előre szólni arról, amire emlékszem a diplomámból, és az a tény, hogy nem sokat emlékszem ebből az osztályból. Egyszerűen nem használtam fel a belőle szerzett tudást a jelenlegi karrierem során.

Bevezetés a számítógépes hálózatokba

Ez az óra nagyon hasznos volt. Áttekintette a számítógépes hálózatok működését. Ez magában foglalta a hálózati protokollok - például HTTP, HTTPS, TCP, IP, FTP, IMAP, POP3, SSH és DNS - áttekintését. Megismertem, hogy mire használják ezeket a protokollokat, hogyan hajtják végre őket, és megértettem, miért hozták létre őket.

A fent említett hálózati protokollokat a modern szoftver kritikus funkcióihoz használják. Ez magában foglalja az e-mailek kezelését (POP3 és IMAP), a hálózati kérelmek küldését az ügyfél és a szerver között (HTTP, HTTPS) és az eszközök biztonságos kezelését a hálózaton keresztül (SSH). Ez valóban megértést ad az internet működéséről és arról, hogy a világszerte működő készülékek hogyan tudnak kölcsönhatásba lépni egymással.

Ez nemcsak lenyűgöző, de hasznos is lehet. Az ebből az osztályból tanult dolgokat olyan problémák hibakeresésére használtam fel, amelyekkel akkor találkoztam, amikor hibákat kaptam a hálózattól. Pontosan meghatározhattam azokat a problémákat, amelyekbe belefutottam, és segíthettem a háttérfejlesztőnek, akivel dolgoztam, megtalálni a hibát a végén.

Bevezetés a használhatósági technikába

Ez az óra azt járta körül, hogyan lehet intuitív alkalmazást létrehozni, de azt is, hogy miként lehet hozzáférhetővé tenni egy alkalmazást vagy webhelyet. Az akadálymentesség azt jelenti, hogy egy szoftvert mindenki számára használhatóvá kell tenni, beleértve a fogyatékkal élőket is. Ez olyan dolgokra terjed ki, mint a szövegfelolvasás és a szoftverek tervezése, amelyek nem teljesen függnek csak a hangelemektől.

A tárgyalt témák hasznosak voltak, ha még soha nem hallott az akadálymentességről. Legalább elgondolkodtatta ezeket a dolgokat, amikor szoftvereket tervez. Ez arra is késztetett, hogy valóban elkezdjek gondolkodni a felhasználói élményen és azon, hogy mennyire fontos a jó szoftver szempontjából. Ha senki nem használja az alkalmazás legfontosabb funkcióit, mert zavaró, akkor a szoftver végül elveszíti az összes felhasználót.

Bár az ismeretek érdekesek voltak, a felhasználható és hozzáférhető szoftver létrehozásának konkrét megvalósításai a platformtól függenek. Például az Apple rendelkezik saját felhasználói felület-irányelvekkel, amelyek leírják az általános tervezési elveket és annak részleteit, hogy miként kell megterveznie az Apple bármelyik platformján futó szoftvert.

A platformonként szükséges speciális információk miatt nem vagyok biztos abban, hogy ez az osztály hihetetlenül hasznos volt. Szép bevezető volt, de végül meg kellett tanulnom az Apple kezelőfelületének irányelveit, amelyek áttekintették az osztály összes témáját.

Mobil és felhőszoftver fejlesztés

Rövidre fogom tartani ezt. Már mobilmérnök voltam, amikor ebbe az osztályba jártam. Néhány óra alatt készítettem egy gagyi mobilalkalmazást, hogy befejezzem ASAP diplomámat. Ezen a ponton már elértem azt a célomat, hogy szoftvermérnökként állást szerezzek, de csak befejeznem kellett a comp sci diplomát, mivel majdnem végeztem. A szívem ezen a ponton nem foglalkozott a tanulással.

Még ennek ellenére sem hiszem, hogy ezt az osztályt jól irányították volna. Lustán megtervezték. Arra bíztatták az embereket, hogy írjanak kódot egy Windows Phone alkalmazáshoz ebbe az osztályba, és ezekre a munkákra sokkal alacsonyabb a kereslet, mint másokra. És úgy érzem, csak azért bátorították, mert a környezetet könnyebb beállítani, és a kód JavaScript-be írható, és hasonlít a webfejlesztésre.

Emellett egyértelmű volt számomra, hogy az osztályt vezető személy nem tud minden mobilalkalmazás-platformról. Fel kellett írnunk egy kis hátlapot, de nagyon nem akartam. Végül hamisítottam egy webes kérelmet azzal, hogy inkább lemezről olvastam, és néhány másodperc múlva visszaküldtem egy konzervált választ. Ez azért működött, mert csak egy demót és a forráskódot kellett benyújtanom. És úgy érzem, hogy az osztályozó csak a demót nézte.

Összességében elmondható, hogy az osztály elavult és nem használt technikákat tanított, nem értékelték megfelelően, és valóban nem sok útmutatást nyújtott. Ez nem volt túl jó osztály.

Capstone szoftver projekt

Ha már az elavult technológiáról van szó, akkor ez a projekt megkövetelte, hogy készítsünk egy GUI-t az adatbázis átkokkal történő eléréséhez. Itt van a teljes projekt, ha érdekel. Nem azt választhattuk, hogy mi a csúcskő projektünk, hanem nekünk rendelték. És mindenkinek ugyanazt a projektet kellett elvégeznie. 3 fős csoportokban is megtörtént, így valóban csak a projekt egy kis részét fedezte le. Ez egy nagyon rosszul sikerült osztály volt.

A tanárral való interakció jóformán nem létezett. Nem érdekelt a projekt, és amit tanultunk, abszolút haszontalannak tűnt. Egy téma iránti érdeklődés felkeltése érdekében meg kell engednie az embereknek, hogy legyenek némi szabad akaratuk, amikor kiválasztják, mit tanulnak. Csak butaság, ha nincs választási lehetőség a kőépítési projektben. Ez a projekt a karrier többségében haszontalan, és nincs értelme az emberekre kényszeríteni.

Az osztálynak meg kellett volna tennie, hogy minden hallgató nyújtson be javaslatot, hozzávetőleges becsléssel, annak ütemezésére, hogy mikor fejezi be a projekt egyes részeit. Ez két dolgot valósít meg: arra készteti az embereket, hogy kezdjék el gyakorolni a munka becslését, és lehetővé tegyék az emberek számára, hogy dolgozzanak azon, ami érdekli őket. Az osztály százszor jobb lett volna így.

Végső gondolatok

Nem vehettem volna részt az órák jó részén, és továbbra is a szoftvermérnök lehetek. De úgy gondolom, hogy ezeknek a tanfolyamoknak a kimaradása óriási rést hagyhat a fejlesztői ismereteiben. A témák szerintem minden szoftvermérnöknek rendelkeznie kell némi ismerettel az adatstruktúrákról és az algoritmusokról.

A többi osztály a választott karriertől függ. Ha úgy döntött, hogy beágyazott fejlesztésbe kezd, akkor ismerje meg a számítógép architektúráját. Ha úgy dönt, hogy elöljáró mérnök lesz, meg kell tanulnia a számítógépes hálózatokat.

A legfontosabb elvitel itt az, hogy egy jó mérnök folyamatosan tanul. Ha hiányzik olyan tudás, amelyről tudod, hogy hasznos és alkalmazható lenne a munkádban, akkor menj el egy osztályba, hogy megszerezhesd ezeket a tudásokat. Így jobb lesz a jó kódírás. Mindig tanulj.

Tetszett, amit olvastál? Nézze meg a többi cikkemet

Technikai karrier indítása a semmiből.

Válassza ki magának a legjobb technikai karriert - Dev Ops, mobilmérnök, adatkutató, projektmenedzser és kezelőfelület.

Tippek az első technológiai interjúhoz.

Számítástechnikai diplomát kell szereznie?

Swift vs. C-objektív