Teaching computer science in lecture halls? Boring! We prefer active learning methods. That's why we created the Stack: an open-source collection of teaching activities for understanding and practicing CS concepts. Each activity in the Stack features a thorough description, printable handouts, and supporting materials for teachers to easily use in their classes. For free.
This is the full list of activities in the Stack divided into several categories. The activities within each category are listed in the alphabetical order and include a brief description.
Tested in practice many times, iteratively improved, and nicely designed, these are the activities we're especially proud of.
- Encryption modes -- Learn block cipher modes of operation, their properties and use cases from scratch.
- Incident handling: A suspicious e-mail -- Spot an e-mail scam within a corporate scenario that actually happened.
Activities to learn theoretical aspects of computer science and mathematics.
- Properties of functions -- Practice the concepts of injective, surjective, and bijective functions.
- Pumping lemma for context-free languages -- Practice Pumping lemma on four progressively harder proofs.
Bordering theoretical CS and practical programming, activities in this section deal with conceptual as well as applied aspects of algorithms and data structures.
- Data structures in Python -- Practice properties and use cases of basic Python data structures.
- Live sorting algorithms -- Fun activity in which the students experience sorting algorithms.
If you teach programming, this is the right section for you.
- Data types in Python -- A brief practice of basic Python data types.
- Exceptions in C# -- Understand exceptions in C# and when to throw/catch them
- Pairing students based on file commands -- Quickly group students based on pairing Python file commands with their description.
- Pairing students based on list comprehensions -- Quickly group students who have a Python list comprehension that generates the same list.
- Recursion with turtle graphics -- Interactive activity for understanding recursion by using turtle graphics in Python.
- Rubric of introductory programming skills -- A self-assessment of core skills at the start of an intro programming course.
- The good, the bad, and the ugly -- Categorize pieces of code as good, bad, or ugly.
- Turtle graphics drawing -- A pen-and-paper drawing exercise that subsequently translates to code.
Translation from Czech in progress:
Networks, operating systems, information technology, and other practical aspects of informatics and computer science.
- Network flow monitoring -- Understand and practice the concept of network traffic flows.
Cryptography, network security, and human aspects of computer security.
- Encryption modes -- Learn block cipher modes of operation, their properties and use cases from scratch.
- Incident handling: A suspicious e-mail -- Spot an e-mail scam within a corporate scenario that actually happened.
These activities are content-agnostic and can be easily adapted for teaching various topics.
- Creating quiz questions -- A homework activity for students to create own exam questions.
- Mutual practice exam -- A set of activities for students to prepare for exams.
- Ideas for new activities -- feel free to develop them!
- A list of processes and artefacts (Czech)
- External resources
Feel free to contribute your own activities (by creating a pull request). Please, use the template for new activities and look at the flagship activities above to see an example of how the description is structured. If you are unsure about your English, we gladly accept submissions in Czech or Slovak language, too!
We also appreciate suggestions for improvement, notes on your experience, or any other comments. Please, email Valdemar at valdemar@mail.muni.cz.
The Stack was conceived and is maintained by Valdemar Švábenský, a member of the Teaching Lab community at the Faculty of Informatics, Masaryk University.
However, the Stack wouldn't exist without the significant contributions of other Teaching Lab members, especially Martin Ukrop and Ondráš Přibyla.
We also thank the authors of the activities (in alphabetical order): Radka Cieslarová, Jaroslav Čechák, Lukáš Daubner, Jan Horáček, Karel Kubíček, Martin Macák, Michaela Pokludová, Vlasta Šťavová, Martin Ukrop, and the CSIRT-MU team.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. When using an activity, please credit "Teaching Lab, Faculty of Informatics, Masaryk University".