Käyttöjärjestelmien, kääntäjien ja sulautettujen laitteiden voimanlähde
C ei ole vain historiallinen kuriositeetti — se on Linuxin, SQLite-tietokantamoottorin, CPython-tulkin ja käytännössä kaikkien nykyään toimitettavien mikrokontrollerien laiteohjelmistojen taustalla. C:n ymmärtäminen tarkoittaa, että ymmärrätte, miten muisti todella toimii, miten suoritin tosiasiassa suorittaa käskynne ja miksi jokainen korkeamman tason kieli tekee tietynlaisia kompromisseja. Tällä opintopolulla käsitellään C perusteista aina printf-funktion ensimmäisestä käytöstä muistinhallintaohjelman, hajautustaulun, linkitetyn listan ja toimivan tulkin kirjoittamiseen.
Mitä opitte
Aloitatte operaattoreista, ohjausrakenteista, muotoillusta syötteestä ja tulosteesta sekä tyyppimuunnoksista. Sen jälkeen siirrytte standardikirjastoon — math.h, string.h, ctype.h — ja C:lle ominaisiin aiheisiin, kuten luettelotyyppeihin, komentoriviargumentteihin, tallennusluokkiin ja esikääntäjän makroihin. Keskitason osiossa käsitellään osoittimia ja dynaamista muistinhallintaa, funktio-osoittimia ja callback-funktioita, vaihtelevan argumenttimäärän funktioita sekä modulaarisia usean tiedoston projekteja. Toteutatte keskeiset tietorakenteet alusta alkaen: linkitetyt listat, binääripuut, hajautustaulut ja dynaamiset taulukot. Edistyneillä kursseilla käsitellään monisäikeisyyttä ja samanaikaisuutta, socket-ohjelmointia, prosessien välistä viestintää, muistivirheiden jäljitystä Valgrindilla sekä verkkotason ohjelmointia epoll-rajapinnalla.
Oppimispolku
Kolmekymmentäyhdeksän kurssia etenee tasoilta A1–C1. A1- ja A2-kurssit luovat perustan syntaksille, rekursiolle ja standardikirjastolle. Yksitoista B1-kurssia kehittää käytännön taitoja: tiedostojen käsittelyä, bittimanipulaatiota, rakenteita ja unioneita sekä esikääntäjää. Kymmenen B2-kurssia syventää osaamista: dynaamista muistia, lajittelualgoritmeja ja hajautustauluja, ja huipentuu kurssiin C: muistinhallintaohjelman rakentaminen. Seitsemän C1-kurssia päättää opintopolun järjestelmätason aiheisiin: Monisäikeisyys ja samanaikaisuus, C:n socket-ohjelmointi, C:n muistivirheiden jäljitys Valgrindilla, C: yksinkertaisen tulkin kirjoittaminen ja C:n verkkotason ohjelmointi epollilla.
Näin se toimii
Jokainen kurssi koostuu lyhyistä ja keskittyneistä oppitunneista, jotka suoritatte sisäänrakennetussa koodieditorissa ja saatte tulosteestanne palautetta reaaliajassa. Tekoälyohjaaja on käytettävissänne aina, kun jäätte jumiin segfaultiin, linkkerivirheeseen tai osoitinlaskennan off-by-one-virheeseen. Edistyminen tallennetaan oppituntikohtaisesti, joten voitte keskeyttää ja jatkaa eri istunnoissa menettämättä paikkaanne.