Daily Archives: April 22, 2018

I Had a Pretty Good Day

Some days are better than others… and April 5 was a pretty good day for me at work.

The night before, it wasn’t looking like it. I’ve been behind in grading, in part because I’ve been working on developing some new assignments, and the one I’d been working on for my Advanced Topics class—The Elevator Project—hadn’t been coming together as quickly or as neatly as I’d hoped it would. After an hour or two wrestling with it, I crawled into bed with the idea that I’d have to rearrange the course calendar a bit…

Today was a Day 2, which means I get to see all of my students: AP Physics, and later on in the day AP Computer Science, followed by Advanced Topics.

AP Physics

It was already going to be a good day—a bit of lecture, followed by a fun lab activity—and just as I was getting going, I received a FaceTime call on my phone. I apologized to the students for the interruption, looked down to see who was calling, and didn’t recognize the 626 number. “Is one of you all pranking me?” I asked the class. I’d given my number out to all of them earlier in the week as an emergency contact for our field trip to Six Flags Magic Mountain.

I answered the call, and the face of Turner, a student in that class who was out sick for the day, appeared on the screen.

“Hi, Mr. White! Sorry to interrupt class. Did you get my email?”

“Uh… no. When did you send it?”

“Oh, about three minutes ago!”

“Yeah, I’m afraid I haven’t had a chance to read that yet. What’s up?”

“Would it be okay if I FaceTimed our class today so I don’t get behind on anything? If you could just prop your phone up there, I can see what’s going on…”

It was a good idea, and I applauded her initiative. “My phone is going to die if I FaceTime with you for the next hour,” I pointed out, “…but I’ll be happy to set up a GoToMeeting session with you. Look for an email from me with a link in it in two seconds.”

“Okay, thanks! Bye…”

I launched the app, got the screen pointed toward the board I was developing on, and a few minutes later Turner was following along from home, just as if this was something that we do every day.

Pretty cool.

Then it was time for our lab. Students were arranging magnets in various configurations, placing a clear piece of plastic over them, and sprinkling iron filings on the plastic in order to discover what the magnetic fields around those magnets looked like. One of the students in class, Nick, kindly volunteered to work with Turner, and for the next 30 minutes or so, there they were, looking at the magnetic field effects, making drawings, and discussing whether or not what they’d observed made sense, just as if she was in class.

When people talk about distance-learning, they’re often talking about a model in which a student watches a video lecture, and then maybe “interacts” with other students by leaving a few messages on an online discussion board. It doesn’t sound like a very robust way to teach/learn, and I think most people I know have a natural (and perhaps well-founded) distrust of the experience offered by taking an online class.

What I loved about my experience with Turner this morning was the natural way that the distance-experience occurred within the context of our regular class. And the fact that she was interacting with her teacher and peers in real-time was cool, too.

This isn’t something that can scale. This isn’t an experience that anybody is going to be able to monetize in any real way (I don’t think).

But it was awesome, and a great way to start my teaching day!

AP Computer Science

The AP Computer Science this year is overfilled, and the difference in the ability level of students varies pretty widely. The “Goldilocks” experience in there that’s just right for most students will be too easy for the more capable students, and require significant support for the students who are still coming along.

Today, as students were still struggling to recover from ten days off for Spring Break, I was trying to bring to a close our conversations around Sorting algorithms, recursion, Big-O notation. The Merge Sort was the topic for the day… and I wasn’t looking forward to it.

In the past I’d given them a template for this algorithm and had them try to fill in the missing pieces, or in tough years I’d forego this particular algorithm altogether. Today, I was having none of that. Today, I’d decided, I was going to develop it with them in class, step-by-painful step.

As I considered the lesson and how I wanted to run it, I realized that the timing was actually just about right for developing this moderately-challenging sort. One part of it consisted of keeping track of three separate pointers, one for each of three separate lists, and if I could do a good job of managing our development, it might be a solid introduction to some of the challenges they would face on the typical AP problem… and the test is coming up in just four weeks or so. I made some brief notes on what I wanted to do, and headed down to the classroom…

It worked fantastically. After a few moments settling into class—one student wanted to show me the new Tiger Woods video and update me on the current scores in the Masters—I grabbed a marker and took them through a quick review of the Merge Sort process itself. And then I was writing a bit of code for the first part of the sorting process. I targeted specific students with specific questions, and everybody was keeping up, more or less. I left the room at one point to let them work on their own for a bit, typing what we’d developed by hand into the computer. I came back to develop the tail end of that sort process… and then we were in to the business: the merge method that would pull each pair of recursive arrays back together.

And that, too, worked. They were on it, with insightful questions, and understanding nods when I explained how the thing they’d been thinking about was a good idea but wouldn’t work in this case because…

They were on it!

For just a moment there, I felt like a real teacher.

Advanced Topics in Computer Science

And following directly on the heels of that was the class for which I’d attempted to flesh out the Elevator Project, and more or less failed. I’d decided earlier in the day to re-frame it as an open-ended project. A few days before I’d had students fill out a Course Evaluation form and the results of that, while generally positive, also suggested that there was room to push the students a bit more. An open-ended project that gave students a bit more latitude to explore, fall down, and ultimately (one hopes) succeed might be just the thing.

I had typed up a brief two-page handout with a general description of the project: they needed to write a class-based simulation of a Hotel with a single Elevator that would move up and down between floors, picking up each Passenger from their current floor and delivering them to a requested floor. I passed out the blue photocopy of the assignment while explaining the general idea, and pointed out that this was a classic introductory Computer Science assignment and that I’d be working on my own version of the project at the same time they were.

“And… I don’t know about you, but whenever I’m about to write a simulation, I like to spend a little time with the actual thing so I can better understand some of the details of what I’m going to have to code. So…”—I started edging toward the classroom exit—”I’m going to ride the elevator for a little while.”

“Ummm… what?”

“Wait! I’m coming, too!”

“Come on you guys, let’s go…!”

And next thing you know, there is me along with thirteen Advanced Topics students crammed into the three-story elevator of the Poly building, traveling up and down.

Teacher: “So, are we going to write a Button class for the elevator buttons, or can we leave those out?”

Student 1 (with worried look on face): “What about the ‘Open Door’ and ‘Close Door’ buttons? Do we need to model those?”

Teacher: “You can if you want. I think I’m leaving those out of mine.”

Student 1 (relieved): “Oh. Okay. Me, too.”

Student 2: “Wait, let me off at floor 1. I’m going to run upstairs and hit the buttons for ‘Up’ and ‘Down’ at the same time. Don’t go yet! Wait for me to get there!”

Student 3 (in the corner, fists clenched in excitement): “This is so much fun!

Ah, my little Computer Geeks.

We got off the elevator a few minutes later and returned to the classroom, armed with ideas on how we might put together a solution to this problem. For the rest of the period, there wasn’t much beyond the sound of typing as people began working their way into the challenge.

Yup. It was a Pretty Good Day.

The Growth of CS Education at My School

by Richard White

2018-04-22

I’ve worked at four different high schools in my career as an educator, and taught computer science courses at two of them. I was the lone CS teacher at those schools, as are many of us. It gives us a lot of freedom in some ways, but it also makes teaching CS a bit lonely sometimes: as a science teacher, I enjoy lunchtime conversations with colleagues in that department, and benefit from having a colleague who teaches the same course I do (AP Physics C).

Computer Science is different. It’s not what many teachers consider a “core competency,” I don’t have a department chair to advocate for me, and having a single teacher of that subject implies that the classes offered by the school are limited to subjects with which I have some familiarity: I am comfortable offering an Intro to Computer Science course in Python, an AP Computer Science A course, and an Advanced Topics in CS (data structures) class, but I don’t offer classes in mobile application development, networking, or game development.

After several years of encouraging the school to increase the number of sections of CS offered, I am so excited that we made the decision to hire someone for a Math/CS position, and that I’ll soon have a colleague with whom I’ll be sharing CS teaching duties.

It’s a time of transition for the school, and for me as well. I’ve never had a CS colleague before! The courses currently offered at the school have all been designed by me, and taught by me for so long that I suppose I might be forgiven for being a little possessive of them. And yet (at this point, anyway) I don’t feel too worried about that.

It may help that I’ve seen our new hire teaching a CS class and I appreciated the way he worked with the students. Or maybe I’m just looking forward to having conversations with a colleague with whom I can discuss curriculum ideas, teaching strategies, projects, etc.

This new hire is relatively young, and although he has a decent amount of experience programming in a variety of languages, this will be his first experience formally teaching CS.

At this point, the challenge facing me is this: how do I share what I’ve done with these classes with the new teacher?

  • Course description? (of course)
  • Course syllabus?
  • Course calendar from last year?
  • Lesson plans?
  • Activities and projects?
  • Assessments (tests, quizzes)?
  • Teaching strategies?

I’m happy to share some/all of these things, but it’s also important for a teacher to be able to develop their own materials, and find their own way of teaching a class. I’ve worked with student teachers in the past, and giving them the freedom to find their own pedagogical identity is one of my favorite parts of that experience.

We’ll see how it all works out! In the meantime, I’m just so pleased that my school–a relatively small, independent institution–recognizes that providing CS experiences for as many students as possible is increasingly important.