This past weekend I thought about the dilemma that resulted from expecting J to do the insertion sort exactly how it was detailed online. Today I tried something new. And it worked!
Today’s whiteboarding session was a selection sort. Easy stuff right? Instead of giving J a problem to whiteboard immediately, I wrote down the word Firefox and cut up the paper so each piece had a single letter. I had J sit down and I put the letters in front of him.
Then I explained the selection sort algorithm. As he did the first pass through the letters, I adapted the lesson on the fly and asked him to “Narrate the decisions your finger is making as you move through the list and select the items to sort.”
He pointed out his finger and pulled out the “e” first.
I asked him, “How did you know that the ‘e’ was the first character to pull out? He said, and pointed with his finger, “I go through the list. And the ‘e’ was the lowest letter. So I pulled it out.”
As we went through the sorting algorithm J asked, “What do I do with the array when I pull it out? Do I compare the rest of the elements with the now empty space in the array?”
This caused me to pause.
“It’s kind of dependent on the language you’re using,” I answered. “When someone asks you what language you’re most familiar with, what do you tell them?”
He thought for a bit and responded, “Java.” Then I asked another question, “What language are you programming in now?” He said, “We’re doing operating systems right now, but even that is in Java.”
I was about to pivot and ask him to write out the pseudo code on the whiteboard in Java. Then I thought to ask another question, “Are you still interested in pursuing secure computing?”
Then we launched into a conversation about how he’s not being asked to program that much during this, his last semester of undergraduate work.
Keeping my thoughts to myself, I said, “Ok, we’re going to pursue C programming from now on.” With his interest in pursuing a career in secure computing, digital forensics, and national defense, we’re going to spend the rest of our time together, focusing on pointers, addresses, null-terminated strings, and the rest of the C gotchas I struggled with (and still struggle with).
“Amor fati. Love everything that happens to you.” – Seneca