Datastrukturer. De moderna programspråken har färdiga klasser för Fält, Lista, Tabell, Stack, Kö, Träd, Mängd och Graf. Här tittar vi på hur de är konstruerade för att sedan själva kunna bygga dessa strukturer från grunden.
Analys av algoritmer. Alla lösningar på ett programmeringsproblem är inte lika effektiva. Studenten får vana vid att bedöma vilken teknik som är bäst för ett givet problem.
Rekursion är en teknik man måste behärska för att senare kunna bygga mer komplicerade algoritmer.
Backtracking är en direkt tillämpning på rekursion. När man försöker hitta ut ur en labyrint kan man hamna i en återvändsgränd och tvingas gå tillbaka (backtrack) till senaste vägval.
Glupska algoritmer innebär att man i en given situation väljer det lokalt bästa alternativet och hoppas på att det till slut skall ge det globalt bästa resultatet.
Söndra och Härska innebär att man bryter ned ett större problem i en mängd mindre (söndra). Så små att de blir triviala att lösa. Denna mängd av lösta småproblem slås sedan successivt samman tills man får en lösning av hela problemet (härska).
Dynamisk programmering är en generell metod för att lösa optimeringsproblem. Man löser bara ett delproblem en gång och lagrar dess resultat i en tabell. När samma delproblem dyker upp igen hämtar man helt enkelt resultatet i tabellen.
Sortering och Sökning är viktiga tillämpningar som ofta konstruerats med hjälp av ovan nämnda tekniker.