August Countdown

The beginning of August is, of course, the beginning of a type of countdown for most teachers. The beginning of August signals that there are just weeks to go before school starts again–just days for some teacher–and it’s time to start getting one’s act together.

There are calendars to be planned, although that’s a bit trickier this year, given the uncertainty most of us are facing: Will students be coming back to school in person? If not, how will remote learning be managed? If they are, how will health and safety be managed?

My personal checklist of to-do items looks a little different from years past, and it helps to negotiate some of that with colleagues. Yesterday I had two Zoom sessions–one with a math teacher who is going to be taking on a section of AP Computer Science this year, and one with the two other 12th-grade Physics teachers–and we’re all having conversations around how things are going to work this year. We’re going through the process of coming up with something that we think will work for us… and we’ve explicitly given ourselves permission to accept the inevitable mistakes that we’ll make along the way.

26.2 miles to go

More than any other year, it’s a year for kindness and forgiveness to be at the forefront of everything we do.

It is still summer, however, so I’m taking a little time to take care of myself and the people around me.

I organized a virtual 24-hour marathon for some friends.

I took a road trip through Utah and Colorado with my son.

Somewhere in southwest Utah

I finally got started on my summer reading.

There’s still time before classes start… but not much. Looking forward to discussing quite a few things here over the course of the next couple of weeks, before things get really busy.

See you online.

Two Monitors

You need two monitors to run your distance-teaching platform.

I was going to say “you need an extra monitor,” but that would imply that it’s an option. You just really need two monitors, end of story.

My primary monitor, which is being shared with my students via Zoom:

My secondary monitor, which has students’ faces, class list, to-do list, calendar, and email window:

Even with two monitors, you’ll find plenty of opportunity to keep multiple tabs open, multiple application windows, etc. Having two monitors won’t solve all of your problems.

But it will solve some of them!

We’re not animals. Get a second monitor.

Pandemic Teaching Toolbox

Okay, that last post was a bit cheeky. Sorry/not sorry. Let’s get serious.

While it’s true that we don’t know much yet about how our classes are going to be running in the fall, we do know this:

  • Distance-teaching and distance-learning are going to be part of our jobs for the near future, at least.
    Whether it’s because we’re dealing with a combination of students in-school/at-home, or because of students who are quarantined or being kept at home by parents, we need to be able to deliver our teaching to people who are not in our classroom. We need to be able to deliver our teaching simultaneously to those two groups: in-class and at-home.
  • Our materials need to be digital.
    If you haven’t yet converted all of your materials to some digital form–Word docs, Google docs, webpages, a Google site, a spreadsheet, a text document, etc.–that’s your summer assignment. If you can’t email something or provide a link to it, it’s not going to be useful to you under these new conditions. (If you’re reading this blog, chances are you’ve already done this.)
  • Communication skills will be in demand.
    Email is king here. You need to be rock-solid in emailing people, managing emails to groups of people, writing good Subject lines for your emails, not hitting Reply-All when you didn’t mean to… Email may not be the best tool for some jobs, but it is the default tool for communication now, like it or not.
  • There are hardware tools that you need to assemble to be able to do your job.
    At the bare minimum this will be a laptop, webcam, and internet connection for distance teaching. You’ll almost certainly want more than that, including an extra monitor, an external keyboard, a stylus pad for writing on-screen, an external hard drive for backing up your system.
  • There are software tools that you need to be proficient in to be able to do your job.
    Google Docs, Microsoft Office/LibreOffice suite of applications, a text editor for quick notes, a Calendar app, and a clipboard app for the massive copy-pasting you will be doing, screencasting/videorecording software, videoconferencing software (Zoom, Skype, or Google Meet).
  • You’ll need to develop proficiency in using these tools.
    This will come with time, but it would be nice to have these skills sooner rather than later.
  • You should have a plan for how you want to do your Distance Teaching.
    Your students, your subject, your individual teaching situation all inform how you think you should best go forward with your teaching. Brainstorm plans, strategies, and workflows that will help you do what you need to do. Ideally, develop those in conversation with respected colleagues.
  • Be prepared to have to do something different.
    Whether it is an administrator or circumstances, it’s practically certain that your plans, your strategies, your workflows, will not survive contact with the enemy. That enemy may be the pandemic, or it may be an administrator who has other ideas about how this all needs to happen. Try to be flexible to the extent you can.

The first year I was offered a position teaching an AP class, I took it as an opportunity to get my act together, to up my game, to finally get organized… to get professional about this whole teaching thing.

The coronavirus is an opportunity for us to reconsider what we do, and how we do it. Changes will have to be made. And there are going to be sacrifices made, of course. In my personal opinion, I don’t think distance teaching is going to be as effective as in-person teaching.

But I’m going to try! Let’s go!!!

What I can still do

Even as things have clearly changed in my classrooms (due to the whole distance-teaching thing), some things haven’t. It all feels SO different, but I’m trying to assess how much of that is just my impression, and how much is reality.

Here is a list of What I Can Still Do, even online or in a Zoom session. Caveat: some of these things exist in a highly modified form, and may be less effective than in a face-to-face setting. But still, some version of these things exists. I can:

  • Talk to students (more easily as a group)
  • Encourage learning (does it feel as sincere over a video feed?)
  • Present information (sync and async)
  • Ask questions, have conversations (Sort of. Video is different, right?)
  • Ambush students with questions in class
  • Assign work (formative evaluations like homework)
  • Collect work (via uploads, copy-paste, etc. Is that the same?)
  • Evaluate work (Painful if I’m evaluating digitally, and also if I’m evaluating with a pen and then scanning)
  • Return work (via email)
  • Give tests (summative evaluation, but zero test security)

What I am unable to do:

  • Impose/Impress/engage with my physical presence
  • Say something funny and not have to have students unmute to so I can hear them laughing
  • Have a spontaneous conversation
  • Be easily interrupted by a spontaneous question
  • Wander the room, asking my students one-by-one if they have a question or need any help
  • Get to know new students in a “normal” social setting (ie. face-to-face)

One of the things that has made the Zoom videoconference solution so impressive and useful to teachers is the set of classroom-similar capabilities that have been built into the interface: strategies for raising a virtual hand, a system for virtually “clapping” for someone, breakout rooms that students can be easily assigned to… It’s so well done, and I understand that there are security issues around some aspects of the service. Most of those, I believe, have been addressed in recent updates.

My classes have done a surprisingly good job adapting to our new circumstances, and although there’s no doubt that things have been disrupted (especially in my Physics classes), we’re going to survive to the end of the school year.

I am engaged in ongoing conversations with peers, however, about what we might have to do at the beginning of the school year if we’re still under some sort of restrictions, as we almost certainly will be. That bears some consideration.

Fortunately, most of my summer plans have been cancelled so I’ve got some time to think about this….

The Transition

Moving my in-person teaching strategies and workflow to an online version was, as it has been for all of us, a little rough. We’re all making a go of it, of course, but it’s been easier for some of us than for others.

Going into all of this I had a huge advantage in ways that I have to acknowledge right from the start. All of these are reasons why “your mileage may vary” when you consider whether or not any of this may apply to your situation.

  1. I have a new laptop.
    I was ecstatic to hear in late-2019 that Apple had finally decided to ditch their butterfly keyboards on new models. My beloved-but-aging 2013 MacBook Air was hanging on quite nicely, thank you, but when the MacBook Pro 16-inch was announced, I ordered up one with maximum specs immediately. That machine has given me a head start when it comes to capturing and delivering multiple video streams, capturing stylus activity, keeping multiple windows open on multiple screens, keeping tabs open on multiple browsers… If teaching requires multitasking, teaching from home requires LOTS of multitasking, and a maxed out computer makes that all easier.
  2. I have fast Internet.
    I don’t have optical fiber or anything, but I’ve got a solid connection from a local provider, and it’s more-or-less reasonably priced. My partner and I both do videoconferencing on a regular basis, and we haven’t had any issues at all.
  3. I have awesome students.
    While some school districts are wondering what happened to to their students, mine are still showing up every time I schedule a synchronous meeting with them on Zoom. We’re all struggling a little bit, of course, but they’re making the effort. I wouldn’t be able to even begin teaching them if they weren’t in the classroom in the Zoom meeting.
  4. I have a website that students have been using all year.
    When a teacher already has most of their material organized and available in an online format, and has been using that with students in class, it’s much easier for students to make small adjustments to that routine. For example, I already had an online calendar of classroom and homework activities that students were accustomed to working with. That calendar would see some adjustments in response to events, but the calendar itself existed, and was already part of our day.
  5. I work at an awesome school.
    Our administration’s response to having to work with students who are home-bound has been well-reasoned, well-communicated, and well-handled. From online faculty meetings to communication with parents to support for teachers at a difficult time, our school has been at the top of its game.

So yeah, I have a bit of a head start. Acknowledged. But that doesn’t mean I didn’t still have some adjustments to make.

Stuff that needed doing/getting

Very early on I acquired additional equipment and capabilities that I anticipated would be useful, and in some cases critical, for making teaching-from-home possible.

  1. I bought an Ethernet-to-USB-C dongle so that I could get faster internet speeds in and out of my laptop.
  2. I brought home my laptop stand, external keyboard, external mouse, and external monitor to set up a larger work area. Zooming with students and sharing a work screen is so much easier when you can see them on one screen and what you’re doing on the other.
  3. I connected an external microphone to my computer to improve the sound quality of my teaching. (In experiments, students couldn’t tell the difference between that microphone and my laptop’s mike, so I abandoned the external.)
  4. I bought a small tablet, useful for drawing on screen during presentations as well as annotating PDFs of work that students have turned in.
  5. I bought software (ScreenBrush, Notability, upgrade to ScreenFlow (video capture software similar to Screencastify, but with better tools).
  6. I bumped up the RAM and storage on the virtual private server that hosts my websites.

Other things that happened along the way:

  1. I submitted bug reports to ScreenFlow and Notability on issues with their software. (In the case of Notability, it’s a critical error involving data loss. Data loss as in “I graded students’ papers using the software, saved the annotations, and the software wrote over other students’ papers that I’d already graded. Fun.)
  2. I started backing up my computer a little more frequently: an external hard drive for a local copy of everything (updated nightly), and Backblaze for offsite nightly backups.

Changes to my teaching

I’ve already discussed a little how my day-to-day teaching in the classroom worked before moving to Distance Teaching. Working on-line, typically through a Zoom meeting, is quite similar. At the beginning of a synchronous class session, there’s a check-in with students to see how everybody is doing. There may be a discussion on a previous assignment, a challenge on a homework program, or an interesting aspect of an assignment that hadn’t yet been discussed.

Zoom-based code review

If a new topic is being introduced, I’ll develop that idea, sharing my screen in the Zoom session and scrolling through the webpage on which I’ve placed that material. Individual work time may happen in the context of the larger room or in one of Zoom’s smaller “breakout rooms”. I try to give 15-20 minutes for those rooms, and visit each room over the course of that time to check in with students and offer assistance, if needed.

The challenges

Even if I feel as if what I’m doing in the “virtual classroom” is largely unchanged, there are significant challenges that have to be considered. Among the many:

  1. Reduced ability to gauge student reactions.
    The best classroom teachers I know are experts at “reading the room,” and adjusting what they’re doing in the classroom based on how students are reacting to the material. That’s much more difficult to do, especially when cameras are turned off and microphones are muted.
  2. Physically interactive experiences challenging.
    Some of my favorite activities in a classroom involve interacting with physical objects: writing a Stapler class in Java, for example, while actually holding a stapler and considering how it works. Or cutting out pieces of paper and manipulating them to solve a Parsons problem. Or even just standing at a whiteboard and editing code with partners. It’s certainly possible to interact with others online, but it’s not as easy as picking up a marker, for example, and quickly drawing a data structure.
  3. Reduced contact time.
    For a variety of reasons, the amount of quality time that I have to interact with students is much reduced, and what I do with the time I have is restricted for reasons listed above. This obviously results in less teaching.
  4. Reduced learning for most students.
    Unfortunately, for the majority of students, there is less learning that happens. Reduced teacher contact time means that students are more responsible for managing their learning. This is not to say that online learning or distance learning can’t be useful, but for high school students, who benefit from learning in a more social environment, learning at home is more challenging.
    I should add that this is my impressions–I don’t have any actual data to back that up. I’ll see what I can dig up for you along those lines.

In the meantime, we’re all working as best we can to manage the challenges as they come. And based on what’s happened so far, I think we’ll be able to stagger on into the end of the year without much programmatic (curricular) damage.

Here’s a question to consider. If the school year is going to finish off more-or-less okay, what might the start of a school year look like under these same, distance-learning, conditions? What changes will I need to make if/when the school year starts with me teaching from home?

That is a very interesting question, and it bears some consideration.

Because we might very well have to do just that.

My CS classroom

Part of the impetus for my writing lately is reflecting on what kind of changes have happened to my teaching as I move to Distance Teaching. In order to better understand that, I want to begin with a look at what my teaching looked like before, when I was teaching in a standard classroom.

Then we can talk about what I’m doing now and then do a diff on those two descriptions to see what’s changed.

AP Computer Science students

My school is a Bring Your Own Device school, so all students bring their own laptops to school every day, to be used in all of their classes. The majority of students use Apple laptops, with 1-3 students using Windows machines in any given class. My class sizes for the CS classes range from 8 (very small even for my school) to 18 (the upper end for most classes). Class is held in a standard classroom, with students seated in rows of desks facing the front of the room. I teach from a long demonstration table at the front of the room, with my laptop on one side, and my screen projected (via LCD projector) onto the whiteboard at the front of the room.

Students whiteboarding an Object-oriented design project

What we do in the classroom varies. Some days I’m introducing a new topic. That typically includes me projecting something from our course website–the description of a new data structure, say, and an example of that structure in use. I’ll annotate that projected information using a whiteboard marker, and perhaps develop new examples to either side of the projected image, interactively with students. Once the new topic has been introduced, students are directed to the assignment for the day/evening, also available on the website. I’ll typically give them a few moments to get started, and wander around the room checking in with them individually before returning up to the front of the room to begin my own development of a solution to the problem. Informal interactions and conversations inform our progress, and anything that isn’t finished in class is typically assigned as homework.

Intro to CS students doing a paper-based Parsons problem

Upon completing an assignment, students upload the source code to our course server where I can collect it, run it, evaluate it, comment on it, assign points for completion, etc., depending on the assignment.

Other days I’ll spend more time developing a more complex idea, or spend a few moments describing our next project which might take a few days to complete. Some days are just work days, when students have the entire period to work on a project, on their own or with classmates.

Students competing in a Capture the Flag competition

Reflecting

One of the things I’ve done well in my teaching, I think, is to bring students into the Computer Science tent who might otherwise not have thought to join us. This year, for the first time, we have 50-50 gender parity in the AP Computer Science classes, and although that number is not something that I’ve specifically targeted, I have deliberately made specific efforts to be more inclusive in my teaching and my outreach to prospective students. We should talk about that sometime.

I’ve worked to include things in my CS courses that are a little outside the standard curriculum, perhaps, in the interest of giving students a deeper experience. All students learn to use the Terminal, and all students submit assignments to the course server, giving them an experience beyond that of simply writing code in a browser interface. The Intro class, most years, includes a quick unit on websites, HTML/CSS, and responsive design. I know, I know, it’s not “real” computer science, but it gives them insight into an aspect of our technology-mediated world that they wouldn’t otherwise see.

And they’re so proud of the websites they create!

I’ve got a few areas that I could really stand to improve on. Although I love some of the larger projects I give my students, I don’t have a really big end-of-year project that could act as a sort of capstone for them. I’ve got a pretty good excuse: our seniors are done with school immediately after AP exams in early May, so I don’t have any “free time” with them at the end of it all. Still, that’s a goal of mine, to set up a nice project for them to really dig into at some point during the school year.

A big weakness of mine is giving CS students feedback on their work. I’ll give myself good marks for giving them scores, both for their daily assignments and their projects, but I haven’t yet figured out a good way to give them feedback in the midst of it all.

For some programs I’ll provide testers, and that’s a great automated way of giving them some specific formative feedback as they’re working on an assignment. For larger projects I’ll sometimes carve out an evening when I can sit down, run each student’s code, and provide specific comments on their work. Those remarks are often included in their actual source code as comments, which I’ll then either copy into their directories on the server (where they’ll probably never look at it) or print out and hand back to them in class (where they deride me for wasting paper).

So I guess I have two questions for you.

  1. How do you give feedback to students on their programs?
  2. What efforts do you make to ensure “academic integrity” in your CS program? Are students allowed to work together? How do you catch “cheating” when students are working on relatively simple coding assignments? Does it matter?

Okay, I guess that’s more than two questions. Sorry.

Your website, in one form or another

You need a website.

…or at least someplace to store your stuff. Your content. Your links. Your learning materials for your students.

Let’s take a look at some of your options. These are in subjective order, from most preferred to least.

1. Domain of one’s own

You can call it a “vanity domain” if you like, but it’s my firm belief that every educator should have their own domain, a place where they can hang their educational hat.

Here’s mine. And this one. And the one you’re reading, maybe.

This solution is intimidating for some people, and it’s true, getting a website set up requires some small degree of technology know-how. Purchasing a domain, finding a host, picking a server-style, setting up DNS… and that’s just to get the server running! Then you have to create HTML/CSS documents and upload them to the server… It’s no wonder people just decide to set up a WordPress blog and call it a day.

Still, if you are interested in learning how to manage a server, this is the best solution around.

2. GitHub

If you’re a CS teacher and you know about GitHub, hosting a site on GitHub may be a great option for you. GitHub, now owned by Microsoft, is a relatively stable organization and offers a nice free tier, as long as you don’t mind all your files/pages/materials being publicly available. Of course if you’re posting stuff on the Internet it’s probably all public anyway, so… You can pay them a little money if you want to keep some of your stuff private. (Or, you can just not post it in the first place, right?)

The obvious downside to hosting a website at GitHub is that you (probably) need to know about GitHub a little. Reading about repositories and commits and pushing is a little off-putting for most people, so I’m not sure how practical this solution is for mere mortals. Still, take a look at pages.github.com and see if any of that makes sense to you. It could be just the solution you need.

3. sites.google.com

Google’s venerable website platform hasn’t been yanked yet, but you never know. (Anyone hear remember Google’s Wave project? Reader? The Picasa photo platform? Google+?) Google is well known for killing off projects, so who knows how long sites.google.com will be around, but if you’re willing to take a chance, it’s hard to beat the simplicity of their tools there.

4. Google Doc page

Well, I guess this beats the simplicity of a Google site: a simple page, with links you create to other sites, or other Google Doc pages that you create. This really is about as simple as it gets, as long as you are comfortable navigating Google’s perplexing Drive structure. Make your page public and share the link with whomever you wish. It’s not an actual website, of course, but it’s gosh-darned close. Look at you! You’re on the Internet!

Why now?

There are a variety of other solutions out there as well: WordPress, SquareSpace, and the like. The point is, you really need one place to keep all your educational materials online, both so you can keep it organized and so you can make it publicly available to your students (and their parents?) as needed.

The reason we’re having this conversation now is not that you’ve secretly always wanted to be a webmaster. No, the real reason is that now, in April 2020, we’ve all become distance teachers, and we’re desperately trying to find ways to help out students become better distance learners. Having an online presence gives you a solid way of addressing that need.

It won’t all happen at once. But it needs to start happening now.

Don’t you think?!

My CS classes post-Distance Learning

Full marks to my school for giving great guidance going into distance-learning mode. I was part of a small committee in the Upper School that talked about some contingency plans, and a week before Spring Break was going to happen, our school site closed. Students had Monday of that week off while teachers met in the library, our last time in one room together, and the remainder of the week teachers worked from home, following our regular school schedule.

The biggest change for many of our teachers was an increased emphasis on providing clear, easy-to-follow, communication online that would be used by students and their parents to guide and manage student work. The website that I use for my own classes was already set up to do that, so the only adjustment I needed to make involved a lot of copy-pasting information from my website to the school’s.

Teachers were not required to meet synchronously with students on a daily basis–there’s only so much Zooming a person can stand, and the administration certainly had some sense of this. But daily check-ins of one sort or another were a must: a meeting, an email, a Google form that a student could fill out… whatever. That was left to teachers to manage, which I appreciated. The Monday of that week, teachers had also been given a brief introduction to Screencastify, so that those who wished could record video lessons for asynchronous lessons.

We coasted into Spring Break, had a couple of weeks off (my trips to Colorado and Mexico were both cancelled), and then picked things up again in early April. Our first day “back” was again a professional development day, with additional guidance from the admins on some modifications that they’d made to our plan, and then we were right back into it, providing a combination of synchronous and asynchronous lessons as teachers felt was appropriate for their courses.

I couldn’t have asked for a better response to this crisis from our administration.

What about my classes?

“How have your classes changed in the new distance-teaching environment?” The short answer to that question for my CS classes is, “not much.”

The biggest caveat to this response is the fact that we’re only a few weeks away from AP exams, so my AP Computer A classes are mostly in review mode. Those classes at my school have a surprisingly diverse collection of students, from your classic “computer geek” who loves everything we do, to students who have been academically successful in other areas and who thought it might be good to learn a little CS, to some students who mostly look to this class to be a relatively easy AP to add to their transcript. (It’s true, this curriculum is easier than AP US History or AP Bio, the two other junior AP electives that students can choose from.) I love working with all of these students, and with that diversity comes the need for extra support occasionally.

So coming back from Spring Break, students had a “Spring Decathlon” assignment, a series of assignments designed to review everything we’d covered up to that point in the year. In some cases they were required to write their own testers, but in most cases I provided testers that they could use to assess their own work.

And now we’re going over a variety of problems from years past, either together in a Zoom session (sometimes with breakout rooms so that students can work together), or sometimes in a prepared lesson that students can interact with online at their own pace. (See, for example, this lesson on the Gizmo problem, a practice problem from the Course Description.)

Even if students aren’t learning much new material at this point, in this online-version of my classes they are doing the same thing that we were doing before: engaging with me as I introduce new material, looking at a problem or project that has been posted on the website, and working–by themselves, with other students, or with me–to develop a solution to that problem. We check in with each other as work is being done, solutions are submitted to the course server for evaluation… and then we’re on to the next topic, the next project, the next conversation.

Two concerns

There are two things that bother me at this point. One is that Zoom, or Meet, or BlueJeans, or whatever live videoconference solution one employs, does not provide for a fully interactive experience, at least not the kind that most classroom teachers use. The spontaneous exchange between people is lost to a combination of poor sound, poor video, network lag, glitches, and software-based signal-switching as the platform desperately tries to identify whose voice should get priority in the channel. Conversation is stilted, so it’s a good thing that these students already know me. They still appreciate a solicitous “good morning” from me when we log on, and they still politely snicker at an occasional dad-joke from their instructor.

But it’s not the same as the classroom. As our Upper School director pointed out, acknowledging the challenges of distance-learning, “This is not why any of us chose to go into teaching.”

Related to that, then, is my other concern. What will it look like to begin a school year teaching like this? Nobody at my school has declared that we won’t be returning to classes on-site in the Fall, but of course, it’s not certain that we will, either. Some consideration of future contingency plans is warranted. Just ask San Jose State University. And so I wonder/worry what that might look like, for my students and for me.

It may very well be that there will be substantive changes to my course if that happens. I can envision, for example, a possible reduction in the amount of work assigned, an accommodation for the logistical challenges involved with distance-learning. It’s hard to tell at this point.

For my friends and colleagues who are working with a more sizable at-risk population, perhaps at a public school, things are much more serious. This spring, attendance has already dropped off in catastrophic ways for the very students who stand to benefit from school the most.

Summer plans

In the summer I work with a local public-private school program, Partnership for Success!, and it isn’t known at this time whether or not we’ll be meeting on-site this year. Teaching online, to students I haven’t met face-to-face before, many of them first-generation, will be an important test, both of my ability to develop new strategies for online teaching, and for them to develop new strategies in managing their own education.

As an example of how curriculum might change in a distance-learning context, last year PFS! students learned Computer Science using a text editor, locally installed Python3, and the Processing graphics platform, also locally installed.

This year, if the class meets at all, they’ll be learning CS using JavaScript, written and run in-browser using the repl.it platform.

Things change.

My CS classes before distance teaching happened

I want to talk a little about CS distance-teaching, and I realize that this is kind of a niche topic given that teaching CS at all is a niche endeavor. I teach other classes–I’ve been a high school science teacher for much of my career–but teaching CS is what makes up most of my day now, so I suppose this is a good place to start.

I’ll talk about teaching Physics classes online in another post soon.

Conflated with the question of “what are some great ways of distance-teaching computer science?” is the deeper, darker question that haunts each of us: “Can you just help me identify some great ways of teaching CS under any circumstances, even those not involving a pandemic?” Because I don’t think we’ve really got that figured out yet, either.

There is some great research being done out there, and a lot of it gets presented at the annual SIGCSE convention each year. You need to go. There are other conventions as well, but SIGCSE is arguably the best, and you’ll get some great ideas, meet some great people, and have the chance to reflect more deeply on what we do–teaching CS–and how we might go about doing it better.

For today, I’ll just tell you what I’ve been doing for the past few years in teaching my own CS classes, and after that, we can talk about what changed when I had to start distance-teaching.

For context, after a long career teaching in public schools, I have taught at an independent school in southern California for the last 15 years. I have an incredibly supportive administration that has supported the growth of the school’s CS “program” (three classes) even when that sometimes results in class sizes that are quite small. Just as importantly, I work with an amazing IT director who has provided so much for our program, from hardware to servers to off-campus network access for students. Some key elements of our program wouldn’t be possible without support from higher-ups at my school, and without that, my teaching strategies, and even parts of the curriculum, would look very different.

Another important factor in all of this is the students’ access to technology. The Upper School in which I teach is a Bring Your Own Device (BYOD) school that requires students to have their own Apple or Windows laptop on campus with them every day. Having students work on their own machines, and then take them home where they can continue working, goes a long way toward facilitating the work we’re able to do. Without a BYOD program, I’d be working with a roomful of computers and having students either carry data back and forth on flash drives or interact with data directly on our server. We’d make it work, but it would change some of what we can do.

Some notes on infrastructure

As classroom teachers we know very well that the curriculum for a course is supported by all sort of infrastructure, what a textbook publisher would call ancillary materials.

For my courses, I post the vast majority of the materials I present to materials on a website that is available to them throughout the course. New material is presented in class using an LCD projector displayed on a whiteboard at the front of the room, supplemented with comments and lots of drawing with whiteboard markers. Live-coding demonstrations of syntax and coding strategies, or public decoding of students’ programs, likewise happens using the LCD projector.

Speaking of textbooks, after struggles with availability of a seemingly endless series of editions of Horstmann’s excellent Java Concepts: Early Objects, I chose to move to a free, open-source textbook that seemed to satisfy most of the needs for that course… and subsequently shifted to free, open-source textbooks for the other classes as well.

I include appropriate sections for reading in the course calendar, but most students seem to rely more heavily on the online materials I’ve prepared for presentations anyway.

Intro to Computer Science, AP Computer Science A

These courses are both taught at the introductory level, and both cover approximately the same curriculum. The year-long AP course uses Java, and introduces objects near the beginning of the course and covers object-oriented design principles and algorithms in much greater depth than the Intro class, and students are formally tested along the way. The single-semester Intro to CS class uses Python and blitzes along quite quickly, with an occasional quiz to help keep students honest.

For both courses, programming problems are assigned on a daily basis, and students use the Terminal on their own computers to upload assignments to a server maintained by me. I can run auto-graders on their assignments and/or look at their code as desired.

An important preface to each course is an introductory unit that includes lessons on computational thinking, the filesystem on their computers (mostly Apple, some Windows, an occasional Linux), the and Terminal. As more students come into the course with little experience using local files (music and movies are streamed! Google Docs are in the cloud!), it’s critical for me to give them experience thinking about files and directories for them to be able to manage these courses.

Here then, are the topics covered in both courses, approximately in chronological order.

  1. Introduction
    1. Computer Science vs. Computer Programming
    2. Intro to Computational Thinking
    3. Encapsulation, Binary numbers
    4. The filesystem, using GUI to navigate the system, organizing files in directories
    5. The Terminal
      1. Navigating the local (client) computer
      2. Logging on to a server
      3. Navigating the server
    6. Text editors
    7. Integrated Development Environments (AP course)
  2. Computer Programming Principles
    1. Output
    2. Input
    3. Data Types
    4. Math operations
    5. Implementing classes (AP course only)
    6. Functions (Static methods for AP course)
    7. Conditionals
    8. Loops
      1. while
      2. for
    9. Graphics (using Processing.org)
    10. Object-oriented design principles (AP course only)
    11. String functions
    12. Lists (Arrays, ArrayLists)
    13. Algorithms
      1. Recursion
      2. Sorting
      3. Searching
    14. Objects (for Python course)
    15. Graphical programs (Graphics-based game)

Advanced Topics in Computer Science

This course picks up where either of the other two leaves off. After (re-)acquainting students with Python and object-oriented programming, it covers:

  1. Algorithm analysis; Big-O notation
  2. Recursion
  3. Linear Data Structures
    1. Stacks
    2. Queues
    3. Deques
    4. Linked lists
  4. Algorithms
    1. Sorting
    2. Searching
    3. Hashes (Map or Dictionary)
  5. Trees
    1. Binary Trees
    2. Heaps
    3. Binary Search Trees
  6. Graphs (introduced)

A note on providing a course website

I consider the website for each of my courses to be the logistical hub for what I do–it’s not uncommon for me to begin class by calling up the course calendar from the site and asking out loud, “So, what are we going to be doing today?”

I’m no genius in website design, and at least one of my students will attest to that: in a classroom presentation, he used one of my course websites as an example of “an okay site that could be so much better.”

Thanks for that, Ikenna. :)

And you may not be a rockstar at writing HTML/CSS/JavaScript code, but there are ways of making a website happen.

A course website will have a profound effect on how easily you can transition to distance-teaching.

If you don’t currently have a website that you use as a focal point for your teaching, you might not feel like now is the time to take that on. That makes sense. And yet…

We’ll talk about this more in the next post.