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.
- Code puzzle -- An advanced Parson's problem in C#.
- Incident handling: A suspicious e-mail -- Spot an e-mail scam within a corporate scenario that really 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.
- Follow the links -- Understand references to lists in lists in a hands-on activity.
- Live sorting algorithms -- Fun activity in which the students experience sorting algorithms.
- Recursive sorting of a list -- Students sit in a row and cooperate to recursively sort a list of numbers.
If you teach programming, this is the right section for you.
- Code review -- Students program a task individually and then review their solutions.
- Code puzzle -- An advanced Parson's problem in C#.
- 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.
- Test-driven development -- Practice writing code and tests in TDD.
- 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.
Software specification, design, and analysis.
- Correcting a textual use case specification -- Correct mistakes in a description of a use case.
- Software requirements warm-up -- Classify requirements as functional or non-functional.
- State diagram created together -- The whole class creates a UML state diagram for a given use case.
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 really happened.
- Stages of cyber attacks -- Match the four stages of a cyber attack with their definitions and examples.
- Vulnerable source code -- Find vulnerabilities and propose fixes in C code snippets.
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.