The course will discuss (1) the nature, foundations, and richness of computer science in relation to its educational objectives; (2) specific pedagogical aspects related to teaching computer science; (3) learning programming and its main didactic issues; (4) a selection of research topics in the field of computer science education.
Part 1 — Historical/epistemological foundations of computer science
- Computer science as a tool vs. computer science as a discipline.
- The nature of computer science: mathematical, scientific, and engineering perspectives.
- Computational thinking.
Part 2 — Pedagogical aspects
- Constructivism and constructionism.
- Peer instruction, pair programming.
- Problem-based, inquiry-based, and challenge-based teaching.
Part 3 — Teaching programming
- Notional machine
- Misconceptions
- Role of variables and elementary patterns
- PRIMM method
Part 4 — Research topics
- Computing Education Research — state of the art.