Fornisce i concetti fondamentali per la progettazione e l'analisi di algoritmi e strutture dati efficienti. Il programma copre le strutture dati di base (array, liste collegate, pile, code, alberi, grafi) e le tecniche algoritmiche (ordinamento, ricerca, ricorsione, programmazione dinamica). Gli studenti imparano a valutare la complessità algoritmica e a selezionare le strutture dati più appropriate per problemi computazionali complessi.