Konstruktionsprinciper för algoritmer: Dekomposition, giriga algoritmer, dynamisk programmering. Algoritmanalys. Probabilistiska algoritmer. Approximationsalgoritmer. Utvalda tillämpningar inom mängder, grafer, aritmetik och geometri. Implementation av algoritmer.
Beräkningsbarhet och komplexitet: Reduktioner. Komplexitetsklasserna P (polynomisk tid), NP (ickedeterministisk polynomisk tid), PSPACE (polynomiskt minne) och BPP (probabilistisk polynomisk tid med begränsat fel). NP-fullständighet och NP-svårighetsreduktioner. Oavgörbara problem.