1. Úvod do metod pro studium programování: Co lze vlastně zkoumat na programovacích jazycích?
2. Pohled do historie programovacích nástrojů: Zapomenuté myšlenky které stojí za znovuobjevení
3. Programování z pohledu designu: Návrh nových interaktivních programovacích systémů
4. Studium návrhu programovacích systémů: Případové studie, uživatelské studie a empirické metody
5. Matematický pohled na programování: Formální modely programovacích jazyků
6. Důkazy o programovacích jazycích: Typy a vlastnosti funkcionálních programovacích jazyků
Cílem předmětu je ukázat studentům jak navrhovat lepší programovací jazyky, vývojářské nástroje, programátorské frameworky a knihovny. Předmět se zabývá systematickými přístupy pro design programovacích jazyků a knihoven, od formálních metod založených na logice a teorii programovacích jazyků po metody human-computer interaction založené na kvalitativních a kvantitativních uživatelských studiích.
Přemět je vyučován jednou za dva roky. Výuka předmětu alternuje s předmětem NPRG077.