Domain-Specific Exercises

These challenges are for individual students who voluntarily requested practice with more advanced topics. They are of varying difficulty based on the backgrounds of the students I designed them for.


Inspiration credit due to

Math1: Open Problems and the Collatz Conjecture
 | pdf
Math2: The Fibonacci Sequence
 | pdf
Math3: Sum of Cubes, Cube of Sums
 | pdf
Math4: Series of Self Powers
 | pdf
Math5: Champernowne's Constant
 | pdf


Inspiration credit due to

Bio1: Reconstructing DNA Strands
 | pdf
Bio2: RNA Transcription
 | pdf
Bio3: GC Content of DNA
 | pdf
Bio4: Translating RNA into Proteins
 | pdf
Bio5: Calculating Protein Mass
 | pdf


Crypto1: One-Time Pad with Known Key and Somalian Pirates
 | pdf
Crypto2: One-Time Pad with Unknown Key and Somalian Pirates
 | pdf
Crypto3: Repeating-Key XOR and State Secrets
 | pdf


Chem1: Tuples and Propane Combustion
 | pdf
Chem2: Octane Combustion
 | pdf


Python1: Lists and Tanzanian Leaders
 | pdf


Linux1: Basic Web Page with Nginx
 | pdf

Hacking / InfoSec Exercises

These exercises are for students interested in learning about hacking into servers and computers; they assume familiarity with the command line and basic knowledge of computer programming. Needless to say, every target mentioned herein is mocked up and independent of actual production systems.

1. Cracking UNIX Password Over SSH to Gain Shell Access
2. Cracking UNIX Password Over SSH to View PHP-Hardcoded Credentials
3. Breaking WEP Encryption on a WiFi Router
4. Website Session Hijacking via Base64 Encoded Credential Cookie
5. Exploiting Buffer Overflow in a C Program to Bypass Password Prompt
6. Database Fundamentals in SQLite

Minecraft and Python

In which students use Python to programmatically interact with the popular Minecraft game. This is Form 1's first exposure to text-based programming, using a customized implementation of Google's Blockly to bridge the gap from block-based programming. Form 2 already knows the basics of Python but will hopefully benefit from continuing to learn Python in an environment like Minecraft.

Forms 1 and 2

Daily Plans and Reflections

Lesson Plans

These are traditional-style lesson plans that I designed and used when first starting out. I eventually found this manner of teaching to be too rigid and inflexible, instead choosing to adopt log-style plans and reflections for topics spanning at least one month of instruction (i.e., Blockly, Scratch, Minecraft, etc.).

Form 1

LP1: Introduction to Lab
LP2: Typing Practice
LP3: Typing Assessment
LP4: Typing Reinforcement
LP5: Typing Reassessment
LP6: Independently Finding MS Word Features
LP7: Independently Finding LibreOffice Writer Features
LP8: Word Processing Assessment
LP9: Introduction to MIT Scratch
LP10: Independently Working with Sprites in MIT Scratch
LP11: Introduction to Scripts in MIT Scratch
LP12: Concept of an Algorithm
LP13: Independently Drawing Shapes with Scripts
LP14: Graded Assessment of Shape Scripts in Scratch
LP15: Discussion of Project Ideas

Form 2

LP1: Review of Form 1
LP2: Introduction to Networking
LP3: Basic Commands on Lab-wide Network
LP4: LAN Chatting with Netcat and Wireshark
LP5: Web Server Introduction with Nginx and Wireshark
LP6: Assessment of Networking Fundamentals
LP7: Using Network Sockets in Python
LP8: Group Problem-Solving with Network Sockets
LP9: Fundamentals of Threading
LP10: Using Threads in Python
LP11: Group Problem-Solving with Threads
LP12: Introduction to the PyCharm IDE
LP13: Chatrooms with Python
LP14: Modified Chatroom: Identify Senders by IP
LP15: Discussion of Project Ideas

Group Projects

Students recommended and chose project ideas of their own interest, then joined together in long-term groups to implement those ideas.

Form 1

Game in MIT Scratch
Movie in MIT Scratch
Blockly Games

Form 2

School Website
Python Game
School ID Cards
Facebook Lite
Academic Grade Calculator

Class Discussions

Internet Connectivity

I gave the following maps of Tanzania's submarine Internet links to groups of students and had them identify the countries connected by each link. Groups wrote their lists up on the board and discussed the purpose of the links and how they are used. Three of the five will be complete in 2018, so discussion also touched on what that will mean for Tanzania and what it says about government and economic priorities.

Africa-1 Link Map
Djibouti Africa Regional Express Link Map
East Africa Submarine System Link Map
Liquid Sea Link Map

Economics Case Study

Students were given the following article about two schools in Oklahoma - one with increased funding due to Google's construction of a data center in their town, and the other without. Class discussion centered on the differences between the two schools, comparisons to similar situations in Tanzania, and the global effects of increased use of technology without the concomittant employment of increased numbers of people.

"Google Effect Rubs Off on Schools in One Rural Oklahoma Town" (credit NYTimes)


GitHub repository: EducationalSoftwareLabApplications

A block-based web interface forked from an existing project that aims to make the transition from MIT Scratch to Python coding easier. I made several changes based on my particular requirements and situation. For more details, see this page.


GitHub repository: EducationalSoftwareLabApplications

An application that allows students to competitively build web pages using HTML, CSS, and JavaScript. For more details, see this page.


GitHub repository: EducationalSoftwareLabApplications

An application that allows students to competitively write SQL queries and progress independently through dataset challenges of increasing difficulty. For more details, see this page.


GitHub repository: EducationalSoftwareLabApplications

An application that allows students to competitively create a game in Python using the retro game engine Pyxel. For more details, see this page.