I was given the opportunity by my AP Calculus teacher, Mr. Kurashige, to teach programming for the final six days of school. What do I teach Calculus students about programming? It wasn't C/C++ or Java. It wasn't PHP or MySQL. It wasn't HTML, CSS, or JavaScript. Instead, I taught TI-Basic on the TI-83 and TI-84 graphing calculators.

Teaching vs. Tutoring

Teaching was not new to me. I taught William Ingold Java and helped many other people establish a foundation for programming. It was easy teaching a single person by catering to their learning style and developing on their strengths and weaknesses. I helped Brett get started with PHP so that he could begin writing his own avatar engine for Wishtides. I pointed Devontrae to the right direction whenever he fumbled on MVC patterns for Chloria.

This opportunity was different. I was teaching a class of over thirty students and I had to compete for their attention especially at the end of the school year. I had to outline lesson plans and manage time effectively. I had to set up an overhead projector and improvise whenever altercations occurred. I had to stand up in front of the class and speak with perpetual clarity while drawing smooth diagrams and writing TI-Basic code.

I am not a multi-tasker but this experience has shown me that I'm capable of multi-tasking in a productive environment.

I Don't Usually Deal with Crowds

This was also different from my time at MetaZaku. We could create bug reports and handle them individually of each other while the only direct management involves creation and updating project descriptions, requirements, and deadlines. A moment of praise for Git, Redmine, and multi-server system administration at MetaZaku.

Teaching combined both my experiences at MetaZaku as a leading developer and also as a guide for people that required special attention. In a class, I can't expect people to be wholly independent as my trained developers but I also can't spoon-feed everyone with individual attention. I needed a balance.

The Students

They were my peers but they weren't angels as I already knew. This was, however, an AP class, so they were naturally intuitive but not perfect.

Many would attempt programming but soon quit. There were some who would listen and become distracted moments later. Very few had an abundance of questions and concomitant interest. Only three of them followed along perfectly.

My lectures weren't entirely interesting although the results were fascinating. Many programmers I know today were fascinated by the very same occasion where they held an ulterior desire to create something interactive, play with it and modify it to their content. A simple "Hello World" in a dark terminal was enough to captivate my own interest.

I had difficulty captivating interest and teaching simultaneously. They might be indirectly related. Whenever we took a step toward the final program, we produced a noticeable result that inspired awe in the students yet writing in TI-Basic appeared tedious and difficult.

Our Goals and Objectives

Personal Goals

I had a personal objective to learn effective communication and presentation skills in a time-constricted environment. Programming was my forte so I could easily teach the content; however, effective teaching was different.

I used my diaphragm to speak, projected my voice toward the audience, and juggled between presentations, demonstrations, and personal attention for students. I also understood when an audience was lost and how to regain their attention.

Class Objectives

My objectives weren't entirely selfish; I wanted to teach these students programming to establish a foundation for future engineering students and efficient science students. Matlab or some other programming elective is almost always required for all engineering majors. Science and programming are becoming closely integrated because of its inherent efficiency.

I also used my programming and calculator skills early in Chemistry where we needed to memorise over fourteen arbitrarily constants to the second decimal. For the homework and tests, I assigned the constants to variables and sometimes created a function to handle repetitive work. Now you know my secret for shaving off fifteen minutes on an hour-long test.

It wasn't enough that programming was a necessary skill for success and efficiency. I needed to convince these students that programming is interesting; thus, I introduced the classical game of Pong.


Teaching was my threshold into a productive reality that differed from my experience in a distributed virtual reality. I learned to communicate with real people instead of communicating commands to IRC bots.

A few people are interested in just Pong in their graphing calculators, so I'll write up the full source into a tutorial in my following post.