Saturday, March 28, 2020

Teaching From Home–Day 10B–Plan? What Plan?

When administration announced we were moving to remote teaching I started adjusting my plans. Now understand that when the semester started I had a plan for every singe school day for every one of my classes. They were great plans. Several of them have been used as recently as this past fall semester. Now I had to adjust for a schedule that had classes meeting 5 out of 10 school days rather than 7 out of 10. Oh boy!

So one sets priorities. In the case of AP CS Principles, what do I need to get covered for the exam and how do I get the last performance task in by the due date from the College Board. For my other classes, what are the key concepts that I need students to lean to feel like the course was a succes. I planned accordingly. Then of course the schedule changed again.

We’re not going to have school this Wednesday. Everyone needs a little time away from screens. Don’t tell anyone but I am likely to use some of the day figuring out how to teach some things. So I adjusted again.

The College Board announced changes for my AP course. No exam. AP grades will be based on the Performance Tasks and we have a later deadline for those. Great! Now what am I going to do with the time I scheduled for test review in May? At lease I have some room for the performance task. I’m still going to try and get that in before April break because who knows what comes next.

I have plans for my other two courses. I think they’re ok. For now at least. Will we even have a full school year? I don’t know? Will we have finals? I don’t know. I figure that my plans are solid for no more than a week at a time.

This uncertainty is the biggest stressor for me tight now. I suspect I am not alone.

Teaching From Home–Day 10A –I'm One of the Lucky Ones

There has been a lot in the news about schools being closed and how schools are dealing with it. There seems to be everything for regular online synchronous teaching like my school is doing to no school at all. A range in between. The school district I live in is posting assignments on Monday to be completed by Friday. That's it. No interaction with teachers.

I don’t know who that is harder on – students who are doing boring work without teachers to help, teachers who struggle to find meaningful work that students can do without a teacher, or parents who are having to make sure their kids do the work.

Teachers are not trained for this sort of teaching. Not any of it. It’s not like a MOOC where someone spends months planning things, recording videos, developing special tests and exercises. This is new.
Teachers have been asked to do more with less as long as there have been schools though. Teachers are resilient and innovative. Its a necessity even in good times. And so teachers are doing amazing things and trying to maintain learning and some sort of connection to students.

I’ve got great internet. My students have great internet. I’m hearing stories of teachers having very poor internet though. Rural areas in the US, like in many other countries, don’t have the same quality and speed that more heavily developed areas do. So I’m lucky.

Training and preparation are another area where I feel lucky. We had a short introduction to teaching from home and some tools to do so at least two weeks before we actually moved to remote teaching. We were told to think about how we would be teaching remotely and we did. Then there was a full day of training before we started. Training seems to run the range for several days (yeah!) to none at all.

Even still there is a lot of figuring things out as we go. It’s amazing how helpful Facebook has been though. Teachers are sharing ideas and tools like crazy. In spite of physical separation it feels like teachers are building community rather than losing it. This may turn out to be a good side effect.

Friday, March 27, 2020

Teaching From Home–Day 10–When Remote is Really Remote

For the last several years I have had international students in some of my classes. Most from China but also South Korea, Viet Nam, and Cambodia. This year I have had two from China who have gone home already because of COVID-19. Both of them joined today’s class from hotel rooms in China where they are in quarantine. It has been interesting to talk to them about their returns to China.

They haven't seen their families yet for one thing. One student told me that a bus meet him at the airplane and took him directly to the hotel. He was the only passenger on the bus.

Because of the 12 hour time difference they are sleeping late and going to bed late. Effectively its like they are living on Eastern US time. It will be interesting to see how long that keeps up when they get out of quarantine.

Having them is class is not really any different for me than it is having my US students in class. It speaks to the wonders of technology for sure. I still miss seeing them in persona and talking to them outside of class.

We had a brief class conversation after students finished today’s quiz. It started about the quiz itself. They say it was too easy and seeing the grades they are either right or they cheated. I choose to believe it was too easy. Though I do worry a lot about cheating. See yesterday’s post about back channels.

The most interesting thing said though was that students were finding fewer distractions taking class at home.That seems counterintuitive to me as their rooms, from what I see in the cameras, appear to be full of distractions. I think the real distractions are the other students in the class though. The poking and joking and chit chat that students seem unable to stop when they are together. I suspect that when the crisis is over young people are going to be gathering in record numbers to actually be together in real life.

Well, one more class and week two of remote teaching is in the record books. Stay safe everyone.

Thursday, March 26, 2020

Teaching From Home–Day 9–Students Backchanneling

My good friend and peer teacher, Tom Indelicato and I share a morning homeroom. It’s online now of course but we join early and stay late to touch base with each other. We’re both teaching sections of our school’s freshmen computer science class and we often start a topic a day before the other because of the schedule. This morning chat is a good time to learn from each other about how things work in this new way of learning.

This morning we talked a bit about student backchanneling. Tom noticed that all of his students had muted his class meeting but many were still talking. One student explained that they were helping each other. Today’s students are communicators. Many of us older people see them on their phones and assume they don’t like to talk; that they play games or watch videos. They sure do do those things but they really do communicate.

Students are big users of all sorts of online chats from Facetime to Google Meet to text messages to who knows what. It probably helps them these days with self imposed physical isolation. During a normal class we might encourage peer tutoring and students working together but demand that they put away their phones but these are not normal times. I’m glad that they have alternate ways to communicate these days.

On the down side, one student admitted that in some classes that he doesn’t care a lot about he “can just play games.”  It’s pretty hard to police that without using some sort of tool that is probably much more invasive of privacy than I, for one, what to implement. That’s some pressure on teachers to hold student attention and to find ways to motivate students to care.

Someone once said, “if people are going to stay away there is nothing you can do to stop them.” The same is true of students who sign into a meeting but are not mentally present.  But as Father Andre Coindre, founder of the Brothers of the Sacred Heart who run the school where I teach, said “When you have done all that you can, you have done all that you must.” And so it goes.

Wednesday, March 25, 2020

Teaching From Home–Day 8–Online Teaching Stations

We sure are learning a lot about online classes these days. Teachers at my school are using Google Meet and Zoom in about equal numbers. This means that students are seeing a lot of both tools. At some point there will be a lot of good data about what does and doesn’t work. What is clear is that tools designed for companies and their conference calls is not automatically a good fit for schools.

There has been some chatter about privacy and data security for both but I am seeing more concern about Zoom so far. Privacy is a big deal for everyone of course but schools have some different concerns because the data we are talking about involved children. This needs to be addressed.

Students I have talked to see some of what I do when comparing Zoom and Meet and that is power verses complexity. If we could limit the complexity side to the teacher/meeting creator role that would be a good thing. We need things to be intuitive and easy for students so that they can participate fully.

I’m using both tools – Google Meet for two courses and Zoom for a third. I really like the simplicity of Google Meet but it lacks the controls I like from Zoom. Zoom also lets me see more faces than Meet. That’s a big deal for me.

Another lesson I am learning is that one screen is not enough. It’s not enough for me and it is not really ideal for students. It is hard for students to switch between what I am asking them to do and to what they are actually doing. For me I’d like to see their faces, what they are seeing from me, and my work screen all at the same time. I also like a window open for things like attendance taking and showing my notes. This would probably work with one large screen but it would have to be a lot larger than what most teachers currently have.

A lot of teachers are sharing pictures of their home teaching stations. Like me, many are showing two computers or a computer with a second monitor. I can’t see getting by with less.I have two laptops side by side but I am considering adding a second monitor to one of them. At least I have the option. Many teachers do not.

It’s probably to early to understand everything we need to do this right. Hopefully, once things calm down and some sort of normal settles in we can all compare notes and make some solid recommendations. Smart companies will take note.

Tuesday, March 24, 2020

Teaching From Home–Day 7

Well this is the new normal I guess. We had snow last night and several students missed homeroom this morning. I am assuming it is because of power outages in the area. No calling a snow day or even a two hour delay.

My big effort today was getting all of my freshmen connected to our virtual machines so we could start with Visual Studio. I’ve though about trying some other online programming environment but there really isn’t time to plan everything all over again on a new platform and in a new programming language

The good news from today is that all of my freshmen were able to connect to the virtual machines and run Visual Studio.  The less good news is that getting a first program to make sure it all works took the whole hour..

I think part of the problem is that students usually have to switch windows from the presentation to their own projects. Wouldn’t it be great is students had two monitors on their computers at home? Not happening of course. Still most of the students were able to create a working program. I still have to check if all of the projects were saved in the right place. I know that one was not. That one was also created in C# and not Visual Basic. That always happens. Both saving in the wrong place and starting with the wrong programming language.

Next on my agenda today is making a recording of what I wanted students to do today so that a few students who fell behind can watch it and catch up. I have a hunch someone may have walked away from his computer thinking he wouldn’t miss anything important. I wonder if I am going to wind up recording a lot of things. Recording the whole class doesn’t seem like it would work. There is too much extra stuff going on. Recording a special tutorial may be faster and easier than editing the meeting file.

So the learning goes on.

Monday, March 23, 2020

Teaching From Home–Day 6

Boring post title I know. But I am not really concerned about attracting eyes in these crazy time. Over the weekend I found out that my international students (two from China and one from South Korea) are heading home. I sure can’t blame them for wanting to be home or their parents for wanting them home. I will miss them though.

In theory the students going to their home countries will be working from there. There is a 12 hour time difference and they will probably be facing a 14 day quarantine with no guarantee that they will have internet during that time. So who knows what they will be able to do. They are all in my APCS Principles course so should have access to everything they need.

A lot of my student turn off their cameras during class. Maybe bad hair day, maybe they are wandering away, who knows what else. I can’t see any good way to require that the camera stay on. At least one student doesn't have a camera on his desktop computer. Zoom shows me that.I keep mine on all the time though. I think it is important that students see my face and know that I am there and engaged. I’ve had some private chats with my international students who have not yet left.

For my Programming Honors course, I have recorded a number of my presentations and most materials are already online.  I am regretting that I didn’t put more effort into learning GitHub though. Just one more example of how teaching from home is changing how I think about sharing resources with students and others.

BTW, Mike Zamansky had a guest post by JonAlf Dyrland-Weaver at Guest Post - Missing out on a great opportunity in education It’s about how important is it for educators to share resources and information about what they are learning at this time. Think about starting a blog of your own. Or even offering a guest post for this one. But really think about sharing what you are doing.

Friday, March 20, 2020

Teaching From Home–Day 5

As one of my co-workers put it it's been a long year this week. I might ease up on that easier say a long month this week. It sure has been a learning experience.

Today’s big learning was that setting up a virtual machine for students you have to be careful about not just setting up the apps but file permissions and extra folders. I’m still not sure what happened with one of the apps we use. It’s a home grown app that was written by one of the other CS teachers. I don’t have the source for it so right now I am thinking there is some little thing I don’t know about it that is causing me problems. These things are always harder to solve when you are doing so much asynchronously and are not in the same location.

We’re going to move on from that unit early anyway because we are having fewer class meetings and something has to give.

My freshmen will be starting programming next week. Visual Studio on this virtual machine has been working quite well for my Programming honors course so I feel ok about that. Having students share a screen with me has also been working well for trouble shooting.

For now, it is the end of a long week and I am looking forward to relaxing a bit. The differentness of teaching online is a bit more stressful than I am used to. It is like starting the school year all over in a new school. But the kids are being great so I have that going for me.

Oh and I have started playing with Microsoft Teams. It looks really powerful and has a ton of options I am only starting to explore. I wish I had tried it out sooner. I’m not ready to switch in mid stream though. At least now so far.

Thursday, March 19, 2020

Teaching From Home–Day 4

I have no idea how long or how consistently I will be writing these posts. I guess when I have something to say. In some ways I think of this as a sort of record of what I am doing for myself and maybe for people who will be going through this themselves.

My students are already wondering how long we will be continuing online. They miss their friends and the face to face contact. I don’t blame them. I doubt we’ll be back before May and even that seems iffy at best. So we continue on.

Today went as smoothly as I could have hoped for. My Programming Honors students have been great. The virtual machine they connect to has handled 21 Visual Studio uses at once brilliantly.  I was worried about that but our IT person has done an outstanding job of support us in this area. I don’t know what I would do without these virtual machines.

I used Zoom for the first time with my APCS Principles class. It worked pretty well. I was using technology to try to solve a people problem and that always has its challenges. Being able to mute students and not let them unmute themselves or mute me has, I’m sorry to say, been a necessary feature..

 Mike Zamansky has a great review of Zoom in his first day of teaching online blog post. It has a lot of good features that Google Meet does not. I feel like after a few more sessions I will have a wish list of what I want in an online classroom. Some of it Google Meet and Zoom already have. Some they don’t. Or I haven’t discovered. I’m doing a lot of just in time learning.

Basically for me Google Meet feels more light weight and easier to use than Zoom. Zoom has more features but is a little more complicated to use. I’ll probably spend some more time experimenting with both. Some schools are using Microsoft Teams and I really should try that out just to see if it has some features or ease of use that I don’t know I need.

This while experience has me thinking about teaching paradigms. I prefer desktop apps to cloud apps for the most part. Maybe because I am set in my ways. I think though that teachers have to give a lot more thought to teaching CS using cloud based development tools. Not strictly web based but hosted in the cloud.

Microsoft and Amazon have options. that look good to me. They are still mostly set up for professional developer organizations and, for education, university CS departments with good professional support. The first one to create an inexpensive (ideally free) cookbook solution that secondary school teachers or part-time IT support in schools can use is going to be a hero.

A cloud hosted solution will solve the problems of student having different kinds of computers at home, installation of software (license issues made easy), and open up learning and projects to expand beyond the computer lab. In my opinion as lot of the web based development/teaching tools are good but that we need to go to a next level of power and flexibility.

Wednesday, March 18, 2020

Teaching From Home–Day 3

I miss my students. It’s hard talking and not seeing or hearing any reactions. Are they getting my jokes? Even polite laughter and pretending I am funny would be a help. My schedule is weird as well. A lot of extra time. I’m part-time this year and have three regular classes and a study hall. Obviously the study hall is not meeting. With the blocks we are using I have advisory (home room) and then one class at noon on A days. On B days I have the advisory (at 8), a class at 9:25 and a class at noon. Lots of time in-between.  That is far more than I am used to since I usually meet with students two to four times a day plus advisory.

Of course I am not driving to school either so there is more time I get back. As you might expect a lot of that time is useful for planning. I have to figure out what I can get in with fewer meeting times. What are the priorities? For my AP CS P class I have to figure out how to handle the Explore Performance task. That has to be handed in before the end of April (unless the College Board changes deadlines). How do I demonstrate the required in-class time? Lots of other adaptions as well.

I’m also getting some long delayed home projects done as well. I guess that is a plus.Maybe this will help me work into retirement.

Things didn’t quite go as smoothly as yesterday.  Adapting things so that they work on PCs, Macs, and Chromebooks can get a little tricky. We’re working on solutions but this is just one example of why making a big change mid-semester is not as easy as flipping a switch. Well, we’re learning.

Tuesday, March 17, 2020

Teaching From Home–Day 2

My advisory (homeroom) was interesting. For one thing I realized that there isn’t the chatter between students in the room. I’m pretty sure they are texting and what not but even these “digital natives” like to talk in real life. I did get to talk to them a bit. These students are juniors and this is the third year they have advisory with me so I’ve gotten to know them. That personal relationship would be hard, if not impossible, to have if we’d been meeting online this whole time.

Students are finding it a bit hard to go to school online. Someone else will have to figure out what about it is hard. But I do think it is too much screen time. Time of a different sort than playing games or watching TV. I wonder if it is a bit easier because there has been time to build a face to face relationship with teachers though. It has been my experience that even a little “in real life” time interaction makes online interactions run better and with less friction.

We’re going to stick with four classes a day rather than go to six a day as we had originally planned. I think that is wise. It will be more consistent compared to a rotating schedule that we are used to. We’re also going to be starting classes later than we did in person. I can see advantages to that already as kids are getting more sleep just not having to travel to school.

So far I have discovered one disadvantage of Google Meet. Anyone can mute anyone else, take over presenting from anyone else, and drop anyone else from the meet. Only a problem if you have jokesters in the class. You can guess how I learned this. Zoom has a free option and I may try that. It comes highly recommended.

In a cooperative class things went very well in deed though. I found that having students share their screen when they had issues with code let me model some debugging for the whole class. I did a bit of one to one this way after the class was finished. It’s almost easier than running around the room, tripping over bookbags, and looking at a screen from a bad angle.

Presenting online has a whole different feel to it. One can’t see the faces of the students. I really miss that. I feel very disconnected. That may be the biggest downside for me. I actually like being with my students.

Monday, March 16, 2020

Teaching From Home–Day 1

Well, we’ve started. Today we only had half the classes in the rotation meet. Tomorrow we will have the second half. It’s all about getting adjusted to the new way of school. I started with my advisory period (home room to many people).

All of my students showed up. Some of them were actually awake. It was nice to chat with some of the early arrivals. They’re adjusting and seem ready to give it a go. We’re trying to keep things as normal as possible so we started the day with a prayer and the pledge of allegiance as we do in a normal day. Note: Catholic school so pray is an important part of our day.

One plus of having advisory this morning was that it gave all of the students a chance to try out Google Meeting in a way that is less stressful than a regular class. Students are fairly used to video chats as they use Facetime, Skype, and other video tools for their own communication. Some of the teachers seem a bit less comfortable. I’m now almost glad I had all those conference calls and video calls while I was working in industry.

Mixed results with the first real class. On the plus side, everyone showed up. Almost everyone was able to connect to the virtual machines at school. The person who had trouble was using Chrome and a Mac. I need to look into that. We had some issues with some files not being available where we expected them to be which is not uncommon when some files are on a local drive and some are in the cloud somewhere. The good news is that this class doesn’t meet again until Thursday so I have some time to work out the kinks.

The students were all awesome though. Not afraid to try things and not upset when things didn’t work perfectly the first time. Hopefully that positive outlook holds up.

Tomorrow’s classes will be very different. Mostly upperclassmen while today was freshmen. That may be easier in some ways. May be harder in other ways. In any case, the adventure continues.

Friday, March 13, 2020

Teaching From Home–Day 0

Well it happened. Like so many schools and school districts, Bishop Guertin has decided to close the building because of COVID-19. I say closing the building because we are going to attempt to continue teaching online. Today only teachers reported to school where we worked on learning more about he tools we will be using to replace face to face teaching in real life.

Let me answer the big question first. What about students without computers or Internet at home? Well, to be honest we don’t have many in that category. We may not have any at all in fact. We’re a private Catholic school with a tuition that means that if you can afford to come here you probably have the money for a computer and Internet at home. If families do have an issue our administration will work with them to help out.

Likewise, none of our students are going to miss out on meals as far as I know.

SO what we are trying is clearly not going to work everywhere. I hear that New York City schools have something like 100,000 students who are homeless. Can you imagine? And in America? That needs fixed but that is a topic for a different post.

I will be largely dependent on two pieces of technology. We’re using Google Meet for meeting virtually with our students. Why? well, that is what IT came up with. It’s free and easy to use. Is it Zoom which a lot of schools use? No. But we’ll see how it goes.

The second big tool is a bunch of virtual machines we self-host that students can connect to using VMware Horizons. This will allow students with Macs, PCs, Chromebooks, and Linux boxes to use a setup that looks as if they are logging into a computer in our labs. That means they can using Visual Studio, access our network drives, and any other software we have at school. This should make my life a bit easier.

I’ve been recording presentations for my Programming Honors course for a couple of weeks now. Originally I was doing so so that students who missed school could view them and so that who ever teaches the course next year would have a reference. Now I think that it will be good for students to have access to them for review. I just have to get them into the learning management system and record a couple more. I’m screen recording some of my demos as well. Not quite live coding but at least it will be a resource.

My Advanced Placement Computer Science Principles course (APCS P) uses the code dot org curriculum so we’re largely online already.  I’ll have Google Meet to introduce topics, answer questions, and basically mentor students.

My freshmen explorations course needs some work. I only teach one of those sections and other teachers teach the other five. I’m letting them take the lead on that planning for now. We’ll be doing some programming in Visual Basic in a couple of weeks so the virtual machines will get some use then if we are still closed.

I looked at several options on my own but time was not on my side. I looked at Small Basic Online for my freshmen class but decided I really did not have time to rewrite my curriculum around it. I looked at a bunch of Microsoft Azure related options and honestly they looked really promising. But they are complicated and their student package is designed for university students and a minimum age of 18. Azure Labs looks great but it was also complicated  to set up. The credit card was scary as well. I don’t have experience on how much it would cost to use over an extended period of time. There is Visual Studio and VS Code Online but they also require Azure accounts. Complicated and I didn’t have time to work it all out.

Speaking of VS Code, it has a lot of potential since it runs on PCs, Macs, and Linux boxes. If I could have found a simple tutorial on creating a new C# project using it I might suggest that in the future. Maybe I am old or something but I could not figure it out in the time I wanted to spend.

Lots of Microsoft people on Facebook and Twitter sent me links and suggestions. I do appreciate that but I could have used a nicely packages set of how tos aimed at HS CS teachers. Most of us are not pro developers. Nor do we have a lot of time when we get 24-48 hours to move to something new.

I know that Microsoft is really committed to helping educators at this time of difficulty. The special needs of CS teachers who want to use Microsoft tools and languages are not a priority though. I miss the days when Microsoft had a person dedicated to helping HS CS teachers teach using Microsoft products. Oh well. That’s life.

Wednesday, March 11, 2020

One Compile a Day

There is a lot of talk about teaching debugging going on there days. Amy Ko of the University of Washington did a podcast a short time ago on the subject. Amy Ko on teaching debugging. and that started some conversation on social media. Mike Zamansky gave a review and additional thoughts at CS Ed Podcast 3 – Debugging. I left a comment on Mike’s post about the “good old days” when CS students were lucky to get more than one compile a day.

I can hear people thinking “OK boomer” and expecting me to ask people to remove themselves from my lawn.

Seriously though, there was a time when we had to read our code very closely and we had to really try to understand the error messages we were getting.  That wasn’t such a bad thing. Today I see a lot of students throwing code in almost randomly in hopes that it will fix a problem they have not really taken the time to understand.

If you are teaching beginners to program you have almost certainly had a conversation like this:

Student: I am getting an error.
Teacher: What is the error message?
Student: I don’t know. I didn’t read it.

You can ask them to read it but they tend to do so as if for your benefit and not out of an attempt to understand it themselves. Now this is not all students of course but it is fairly frequent. They are somewhat spoiled in a way by having a teacher who can explain what an error means to them. This is unlike when I was learning and there was no one around the computer lab (One computer room one computer) to explain error messages.

How do we get students to understand error messages? How do we get them to look closely at their code. So they find the 1 that should be an I or l themselves? It’s a struggle we all face.

SO we try to model good debugging practice. We demo debuggers. We help students understand the error message and ask them to figure out how it relates to their code. And we let them struggle a bit before coming to the rescue before they get to frustrated and give up completely.

Sure there are lots of benefits to being able to compile dozens of times an hour. It lets students experiment and get creative. But sometimes I do miss those one compile a day days.

Monday, March 09, 2020

What is The Best Way to Provide #CSforAll?

Getting more computer science education to more people is something I think about a lot. Mark Guzdial, I want to be him if I ever grow up, has me thinking in new directions lately. Take his recent blog post for example - Defining CS Ed out of existence: Have we made CS too hard to learn and teach? You really should read it and the comments as well. I started to write a comment but WordPress “ate” it so I’m writing some more thoughts here.

The primary way we have been trying to get CS for everyone in the US is through stand alone computer science courses. It seems great in theory but we have a couple of thorny problems. One is fitting it into the curriculum. Another is finding enough teachers. Mark lays out some other problems or potential problems in his blog post. the tl;dr of it is that doing it this way is really hard and may not be the best way anyway.

One thing Mark has been talking about lately (I try not to miss his posts on Twitter or Facebook) is how Norway is moving in CS education. Basically, Norway is moving to teach CS in context with a bunch of other subjects rather than as a stand alone course. I really want to learn more about his but in general I like the idea.

For many years I have been talking about the value of using CS to help students learn other subjects. In y early teaching days, 20+ years ago, when I thought programming might be out of reach I was suggesting using spreadsheets in math and social studies. How better to process and analyze data than a spreadsheet? And graphs? A computer spreadsheet can let a student look at the same data with different graph types in a short period of time.

These days with have block languages like Scratch, Alice, Snap!, and more that can be used to program by young students. Telling stories to build up language skills. Analyzing data and showing it in interesting ways. Well, you get the idea.

Maybe if we did this in the early (primary grades and middle school grades) students would see computer science as something they can handle in secondary school. Maybe we could even go deeper into CS concepts if we didn’t have to teach secondary school students what a loop is all about. And much more.

We know that students make decisions in middle school that greatly impact their trajectory in later education steps. If CS is part of their environment, and is a learning tool they are comfortable we’ll get more students in deep pure CS courses. Even better, they’ll have CS as a powerful tool in secondary school as well.

This can’t happen over night of course. There is a lot of work. Teachers have to be taught. Curriculum has to be written. And that curriculum has to be interesting, relevant, and shown to promote learning of more than just CS tools., Maybe teaching CS as incremental steps and in context will help teachers and students alike to be less intimidated by it.

Saturday, March 07, 2020

Moving CS Education Online

Covid-19 is motivating schools all over the world to close. Many other schools are looking at options in case they have to close their facilities. My own school has been looking at options to try to continue teaching in the event the government askes us to close. This is far from a trivial decision. Sure there is a lot of online education going on. There are MOOCs and virtual schools and other on line options already. Moving an existing  program online in the middle of a semester is not the same as starting off online.

Doug Peterson took a good look at a lot of the issues on a blog post at It's not that simple. And there are plenty of things to consider. For one thing do all your students have broadband internet and a computer that can support the needs? And can the school’s networking infrastructure support all of the people accessing the system.

Beyond the problems common to all teaching there are problems particular to specific subjects. I don’t know how teachers will run art classes or physical education classes for example. Personally,, I’ve been thinking about how to teach computer science.

Lectures appear to be easy. Even demos are not bad. My school is looking at using Google Meet and that seems like it should work. Others have been suggesting Zoom which has both free and paid options. Paid looks like it would be required for most schools.  Microsoft is making Teams available to schools who need to close for free. I’ve recorded many of my presentations (PowerPoint is great for that) so I can use them as well. But lecture is a small part of my teaching.

My AP CS Principals course used code.org curriculum which is all online already. So that is fairly easy though a lot of the pair work will be harder without students being in the same room. I suspect that they can do some coordination via texts messages and other apps that teens are already using for peer to peer communication. Lynn Langit has written a fairly detailed blog post (Remote Pair Programming) on how she works with interns she is mentoring online. Looks interesting.

One option that I have played with a bit is  Live Share which is available with VSCode and Visual Studio. This would allow pair programming of a sort. It would allow me to look at student code and make suggestions. It’s not going to be as seamless as moving from student to student in the classroom though.

While the software is free making sure students have appropriate computers. VS Code runs on Mac and Linux as well as Windows so that’s good. I’ve been using Visual Studio though so getting students up to speed on VS Code will take some work. I can see some support issues coming up if the switch is made without serious preparation.

Everything is possible but a switch mid semester looks to be rough.  I hope it doesn’t come to that.

Tuesday, February 18, 2020

Working Through the Stages of Debugging

I found this Tweet by Katerina Borodina @ctrlshifti that claimed that the 5 stages of grief apply perfectly to debugging code

  1. Denial "The compiler is wrong" 
  2. Anger "Why the hell isn't it working?"
  3. Bargaining "If I use enough print statements I'll figure this out"
  4. Depression "I will never fix this bug"
  5. Acceptance "It's a feature"

We see students going through these stages al the time. Well, actually what we often see is them not making it all the way through. As teachers we need to help them through. Learning to deal with debugging is an important, if under acknowledged, part of the job.

Denial is where many students start to ask for help. After all if the compiler is wrong there is nothing they can do to fix it is there? Sometimes this is expressed as “my code is the same as [yours/theirs] but mine doesn’t work.” Of course the code is never the same but the student is not looking closely enough. At this point a teacher has to decide if they should point out the error or ask the student to keep looking. Or ask them to have another student look at it. We need to find that balance between promoting self sufficiency and letting frustration build up to far.

If we’re lucky they move on to anger. Yes, anger is not always bad. It can be motivating. We do have to keep an eye on it though and at some point help with some debugging suggestions so that they keep trying.

Bargaining is when a lot of learning goes on. We can show them how to use breakpoints in the IDE, make suggestions at where to look, and so on. Bargaining in this case is where the real effort comes into play.

Depression is where I think a teacher really needs to step in. In fact this is the point where I think automatized hint systems will never replace teachers. Students need encouragement. They need to know that they are not stupid and that many others have the same issues. They need to know that they just need practice and perhaps a bit more knowledge. And they need to know that they are not alone.

Deciding that it is a feature may, in rare occasions, be acceptable though it really is more of a standing joke than reality. I see acceptance as understanding that sometimes we all need help and that is ok. Helping students accept that programming can be a “team sport” is an important lesson. Getting the bug fixed is very satisfying. That leads to self acceptance which is where we really want our students to get.

Tuesday, February 11, 2020

Are Large Classes The Answer To a Computer Science Teacher Shortage?

Another teacher reported on Facebook that they were going teach AP CS Principles and that this was the first time they are teaching computer science and their students have no earlier CS class. I wanted to scream. Or cry. Or something. It’s happening a lot these days as we, those of us in the CS for All camp, continue to promote the need for more CS in schools. The shortage of qualified teachers in computer science is real. Catching up with demand is going to take a while.

But, hey, universities are running into the same problem. Can we learn from them? So far most universities seem to be coping by creating larger and larger classes. Listen (or read the transcripts) from interviews on the CS Ed Podcast (highly recommended) and learn about university CS classes with hundreds and even thousands of students. Whoa! And you thought 35 was bad.

Now my first hand experience with large classes is 48 years old when I took a one month intense world history course as an undergraduate. I credit reading the 1,200 page textbook twice with my A more than the lectures. While that seemed to work for me it was history and not computer science. I don’t think it would work for CS.

Now I believe that there are TAs and lab assistants who help university students outside of class but is this really a good way to teach computer science? I’m not so sure it is but even if it does work in university would it work in high school or middle school? I really doubt that. Our students are not quite that mature. And we’ll never get TAs and out of class lab time.

Amy Ko, University of Washington, expresses some concern about this scaling at the university level in a post called The false dichotomy of teaching and research. University administrators are interested in reducing costs and increasing tuition revenue so they probably like the large classes. And MOOCs.

I wonder what the difference is between a class of 2,000 students in a huge lecture hall is from a MOOC with 2,000 online students? I suspect not much beyond, perhaps, lab assistants and TAs in a campus computer lab. Seems like a lot of extra internal motivation is required in either case. I see a shortage of that in high school students especially in non-major courses.

So tl;dr I don’t think large classes or MOOCs are the answer. We really need to be preparing more teachers. And there are no shortcuts.

Tuesday, February 04, 2020

Iowa Caucus 2020–What Happens When Software Doesn’t Work?

It’s too early to tell exactly what went wrong with the Iowa caucus this year but I suspect it will wind up being a case study in several ways. Political Science will look at it for sure. So, I believe, will computer science and software engineering people. We’re hearing complaints that the app, used for collecting the results, didn’t work. As is often the case early on we don’t know exactly what “doesn’t work” means or where the fault lies.

The Iowa Democratic Committee made the counting more complicated for one thing. That may have driven the need or assumption of need for an app. Was that complexity part of the problem? It could be. If the app wasn’t intuitive (cue to HCI people) or the users were not trained well enough than complexity could be a problem.

Was the app itself faulty? Were the communications protocols not robust enough?  Was it the servers on the backend? Little about that is public yet. I guess we’ll find out eventually.

Eventually there will be results as there is a paper trail for all of the voting. Or so we are told. The biggest problem long term is trust. Trust in the Iowa Democrats to run a solid caucus process. Trust in the company who wrote the app to do a good job. And maybe even damage to trust in apps for reporting election results as a concept.

While some are content to make fun of the Iowa Democrats others are crying about conspiracy and about manipulating the vote. The political science people will have a field day with that I suspect. I tend to suspect incompetency over malice. Malice is hard to do in secret.

For us teaching computer science I think the lesson we need to take and to share is that there are big stakes in developing software. The consequences of the software working correctly are big but the consequences of the software not working can be even bigger. And harder to predict.

Monday, February 03, 2020

Check Out The CS Ed Podcast

I first heard about the CS Ed Podcast back when I wrote on debugging. Amy Ko of the university of Washington talked about teaching debugging in a recent interview. I listened to that interview, which I recommend, but did not take the time to dig into previous podcasts. Earlier today I read a post by Mark Guzdial which brought this resource back to my attention.

Welcome to The CS-Ed podcast, hosted by Dr. Kristin Stephens-Martinez at Duke University. This is a podcast where we talk about teaching computer science, with computer science educators, to learn how they teach and manage their classrooms. Find all of our episodes here, along with transcripts and helpful links!

So far there are four podcasts

I haven't been through all of these yet. So far just the Amy Ko and Dan Garcia ones. I read the transcripts for the most part and really appreciate that I can choose between reading and listening. Those of you who listen to podcasts may have a different preference. But I agree with Mark Guzdial's recommendation that these are valuable resources for anyone teaching computer science.

Friday, January 24, 2020

The System Knows Who You Are

True confession – give me an app that plays with interesting and personal data and I’ll play for a while. The amount of data available to us today is astounding and computer programming lets us do some really amazing things. Big data is all the rage. The US Social Security Administration has lots of data and it’s all more or less personal. So I guess is it not surprising that people do interesting things with it. For example, Guessing Names Based on What They Start With

It had some trouble with my name because even in the decade I was born in my name was not that common. As I added letters it was able to get it – not that surprising. Although for the decade my grandson was born it never did get it – Alfredo is a lot more common than Alfred. A sign of changing demographics which makes for an interesting topic of its own.

I’ve toyed with the idea of making this into a project for my students but I’m not sure I have the time. Basically because I would probably want to aggregate the raw data myself first and while I could write some code to do that I am not sure I want to. It still makes an interesting demo and I will probably use it that way when we talk about big data in my AP CS It’s a good example of how a system can make some assumptions based on limited information.

We like to think that we are pretty unique and in fact we really are. The fact that this name app can identify us is not really contrary to that. Yes, we have similarities with many people but we also have differences. This app made me think of an app I had students program a couple of times that uses demographic information from the school’s student information system (anonymized). I wrote about that a couple of years ago at Programming Projects Should Be Personal

That project took sex, birthday and zip code information to report on how many individuals in the school had that birthday and lived in that zip code? Could we combine the age guess and the name guess code to identify which student we were looking at? Maybe. Is that good or bad? Maybe. I can see this being a good discussion topic.

Increasingly companies collect more and more personal data about us. And they share this data with other companies. These app give a clue as to how identifiable we are even when we think we are not identifiable. It’s only going to get – is it getting better or worse? A lot depends on how it is used. Students need to understand the possibilities if they are going to understand the world around them. Let’s talk about it with them.

Thursday, January 23, 2020

Should We Use the Technology in the Classroom?

I confess that I would love some augmented reality device that showed me the name of the student I was looking at. I am horrible with names. I like to think that something like this would help me a) learn student names faster and b) establish better connections earlier. On the other hand there is some technology that I worry would hurt relationships more than help them.

For example, an AI and cameras that would tell a teacher who was and was not paying attention. Are Your Students Bored? This AI Could Tell You I can see where having an indication of where you start losing student attention could be helpful. On the other hand, maybe as a teacher I should be paying attention to the people in front of me. That is not impossible in a small classroom like a normal high school room. Maybe it is a lot in a large lecture room but that is an example of not building connections in the first place.

Or tracking students using their phones? Colleges are turning students’ phones into surveillance machines, tracking the locations of hundreds of thousands Sure I hate taking attendance and having the computer do it is tempting. Is that really the sort of intrusion that we want to get students used to though? I’m not so sure it is.

As with so much of technology, the question is one of balance. Do the down sides overshadow the up sides or not? This is not an easy question and I think wide open to debate. As technology grows our students are going to have to decide more of them as time goes along. The question is not “can we do it” but “should we do it?” Making those decisions requires understanding of the technology for sure. It also requires a solid ethical foundation and a willingness to question and discuss. Are these “soft skills?” Perhaps but they are becoming more essential rather than less.

Wednesday, January 22, 2020

Thinking and Teaching about Technology Policy Issues

What are the top technology issues for the 2020s? Brad Smith, Microsoft President, wrote an interesting post about a month ago called Dawn of a Decade: The Top Ten Tech Policy Issues for the 2020s

His list is:

  1. Sustainability - Tech’s role in the race to address climate change

  2. Defending Democracy - International threats and internal challenges

  3. Journalism - Technology needs to give the news business a boost

  4. Privacy in an AI Era - From the second wave to the third

  5. Data and National Sovereignty - Economics meet geopolitics

  6. Digital Safety - The need to constantly battle evolving threats

  7. Internet Inequality - A world of haves and have-nots

  8. A Tech Cold War - Will we see a digital iron curtain down the Pacific?

  9. Ethics for Artificial Intelligence - Humanity needs to govern machines

  10. Jobs and Income Inequality in an AI Economy - How will the world manage a disruptive decade?

I see a lot to agree with and a lot that requires some serious and deep thought. I wonder, for example,  how to square the concerns in 2, 4,8, and 9 with Microsoft’s businesses in China. It’s a topic well worth discussing.

OF course any of these issues, alone or in conjunction with others, are great topics for discussion in a class. Artificial Intelligence factors in with many, maybe most, of these issues. Are we preparing students for thinking about the reality of a world with AI is a major force in technology and eventually our daily lives?

Any way, I recommend the post.  It is long but worth the read. Maybe read it more than once. I plan to.

Monday, January 13, 2020

Having Fun With Computer Science

There is no question that there are a lot of ways to have fun with computer science. Some of them are inexpensive. Some of them cost a lot of money. You can do a lot for a little bit of money. But some interesting things cost more money for computer hardware (especially graphics cards and CPUs), for special software (not everyone offers free versions for schools) or special hardware (A Micro:Bit is pretty inexpensive but an Oculus Quest is serious money).

So what is a teacher to do? Well, there are grants out these. Often very competitive though. There is Donors Choose which is not an option if you are at a private school with a budget that makes public schools look rich. There is teacher spending their own money. Or there is just offering what your school can afford even is that is old hardware and free software.

Now you can do a lot on the cheap. No question. But what I wonder about, as with many things CS education related, is access. Who gets access to the state of the art, bleeding edge stuff and who gets to see “where we were 10 years ago?”

Who gets to program virtual reality stuff and who gets to program the next Pong? When we look at costs for computer science we tend to think mostly about teacher costs or finding room in the building or the schedule. Computers come next but someone who spends their who life on their phone or a web browser may not appreciate why students need a computer with a lot of memory, a fast CPU, and a late model graphics card. Maybe when today’s students become school administrators or school board members that will change but right now getting more money for hardware can be a tough sell.

We’re used to vocational students needing state of the art resources. Computers for reading diagnostics for the automotive students. The latest silkscreen equipment for the graphic artists. The latest medical learning tools (have you see the CPR training dummies lately?) for the medical prep students. But somehow we don’t always see the need for the latest for computer science students. Especially in comprehensive high schools. Some serious CS students might be better off in a career/technical high school for CS. Seriously, some of them are really good at getting the latest stuff for learning CS.

Which brings me back to access. CS is more than vocational. A lot more. How do we show students the real potential if they only have access to what is cheap?

Note: This post inspired in part by Garth Flint’s blog post (Computer Science on the Cheap does not always work), a comment on that post, and things David Renton is doing with his students and Virtual Reality.

Friday, January 10, 2020

How Do Teachers Without CS Experience Debug Student Code

My Programming Honors students are wrapping up their semester projects today. Actually they should all have been handed in by now but I’ll give them until the end of the day. In any case, my students have come up with some interesting and difficult to solve bugs. One involved a png file that had an unexpected transparent  section. The other was more confusing and I’m not sure I could have solved it without a good bit of CS knowledge. Even then it was not obvious. (Long story short – passing addresses can be tricky )

I wonder how less experienced teachers handle the really hard debugging tasks. I’ve been writing code since 1972 and teaching beginners for about 15 years. I have seem a lot of errors. A LOT! Often I can debug code without even looking at it. Some errors are that common. And of course I have developed a lot of ideas about debugging. The debugger in Visual Studio is very familiar to me as is how to use it to narrow things down. Students are very good at finding new ways to mess things up though.

I saw a Facebook post from a teacher who has been assigned to teach AP CS A but who has no coding or CS experience. No, really, I’m not making this up. How in the world will they be able to help debug code? And forget about teaching/modeling debugging practices.

Over the years I have had a number of teachers ask me to help with debugging student code. I saw a very interesting recursion problem once. Doing a stack trace was key to that one.

Debugging may be the single biggest reason to say that one week crash courses are not enough for professional development of new CS teachers. A full semester course would be a good start but without experience a new teacher is going to be just barely staying ahead of their students.

But how to you teach debugging? Have you ever had a course or even just a class on debugging? I haven’t.  How would such a course run? Anyone know of a syllabus for a course like that?  I’ll have to think about that one. In the long run though they is no substitute for experience.

Tuesday, January 07, 2020

What does “doesn’t work” mean?

Every computer science teacher has heard it “My program doesn’t work. What is wrong with it?” Sometimes they will show you the code without any more explanation than “it doesn’t work.”  One generally replies with something like “define ‘doesn’t work.’” Or you are told the program is giving an error. When you ask “what error?” you get a blank stare. The student has shut the error message away without reading it. Somehow you, the teacher, are supposed to know the answer without really knowing the question.

Debugging seems to be the hardest thing to teach students. To be fair, debugging is hard. One quote on my bulletin board is:

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”

- Brian Kernighan

There are a few good, and easy, places to start though. One of them is actually reading the error message. For some reason that doesn’t seem to occur to many students. Of course they often don’t read the directions either so I probably shouldn’t be surprised.

Giving some serious thought to the error message is often enough. To be fair, I like to be fair, some error messages are less than helpful. Helping students to understand the error message is better in the long term than just telling the student what they did wrong. Why do you think the computer doesn’t think that variable exists? Did you spell it right? Did you declare it in the wrong place? Remember when we talked about scope?

Another helpful technique is to explain what the program is supposed to do, how it is going wrong, and how you think the code is executing. Many teachers use the rubber duck scheme and ask students to explain all of this to the duck. This works for some people and some errors. I don’t have a classroom set of ducks but do have students explain that to peers. Sometimes that is enough. Sometimes it is not.

When they explain things to me I often prompt with questions. Often students are wrong in their explanations. I remember one student telling me that of course the code did something because here it was in the comments. There was no code to execute what the comment described but the student thought the compiler actually read the comments. Sigh.

In all cases it starts with knowing what should be happening and what is or is not happening. The more detailed one can explain that the easier debugging becomes.

Thursday, January 02, 2020

A Brief Career Memoir

Blame Mike Zamansky for this one. In my last post I mentioned that I am planning on retiring from the classroom this spring. Mike wondered how my perspectives have changed over the years and through different aspects of my career. Now my career (so far) has four main parts. I worked in the computer industry, mostly developing software, for about 18 years. After a big layoff I went into teaching for about 9 years. Microsoft hired me away to work with educators. My job was to promote Microsoft products for teaching computer science. I spent 9 years there. Seven of them awesome. Management and priorities changed and I found myself leaving Microsoft and after a brief hiatus returning to the classroom seven years ago. It’s been a ride for sure.

During my first 18 years I didn’t see computer science as something for everyone. Education was important and I was involved. I was on the board of a private Catholic K-8 school for 6 years. I was twice elected to 3 year terms on the local public school system’s budget committee. I mostly saw computers and something students needed to be literate in. That meant applications. I believed, and still do, that computer applications can be powerful learning and teaching tools. I saw computer science mostly as vocational. It was, after all, my vocation.

After a layoff, the school I had been on the school board for hired me “while I thought about what I wanted to do” as a part time computer teacher. For the most part, in K-8, that meant typing and computer literacy. I picked up another part time role at a K-6 school and worked at those two schools for a year. My son was in a private Catholic high school and one night at parent teacher conferences I had a long talk with their computer science teacher. I started teaching there the next school year. I stayed for eight really goods year.

I was hired to teach HS CS in 1995 and it was rare for a high school to have one computer science teacher let alone two. But the administration believed that computers and computing was important. It was important to parents as well and we developed a good program. We still taught a lot of computer literacy and applications use but we were having some fun teaching real computer science as well. I still saw it mostly as an elective though.

We moved from a mini-computer (PDP-11 running RSTS/e) to PCs during my first few years there. I posted about many of the changes were were making to curriculum and tools to social media (mostly email lists of course) and caught the eye of someone at Microsoft. We were using Visual Basic for programming and Office for applications. This lead to some side gigs with Microsoft as I helped other teachers learn about teaching CS with Microsoft tools. I got a lot of training and previews of software during that time. Microsoft was developing the .NET Platform and the C# language both of which I adopted for my own use. In my eyes, C# fixed the things I didn’t like about Java.

Microsoft was forming a new group of what they called Academic Developer Evangelists whos job was to promote Microsoft platforms and tools to university professors.  Eventually they hired me on. Note that I joined Microsoft because I believed that Microsoft tools were good teaching tools.  My combination of technical knowledge and education experience was a natural fit for one of these rolls. Over time I expanded my portfolio from New England Universities (I joked that my territory was from Dartmouth to Yale) into high schools.

Computer science was growing in high schools and I really wanted to help make that happen. In my role at Microsoft I was able to give away a lot of software and help create free curriculum resources. I also met with teachers all over the country. The big lesson that I tried to bring back to corporate was that teachers wanted to teach concepts not tools. Curriculum had to be content and concept based not product based.  Sure you need to know the tools and I did a lot of workshops on using them. Using the tools to teach concepts was more important to me, and still is, than the tools themselves. I like to think that the resources we created and gave away were help in teaching more than the tools themselves.

During this time people were starting to talk about computer science as being more than vocational. Not so much at companies but by educators. Microsoft saw computer science as the environment that they lived and did business in. They saw promoting computer science education as not to provide them with more workers, they could get all they wanted, but to help their customers and prospective customers get trained people for their businesses. Still pretty vocational of course.

Others, ACM and the fledgling CSTA were starting to promote CS education as being more about understanding the world around them. I really wanted to be involved in CSTA and I was. I was lucky enough to serve on the conference committee for a couple of years. I have no doubt that my being at Microsoft was at least responsible for that but I didn’t care. I was involved. The conference was and is important.

When I left Microsoft I ran for and was elected to the CSTA Board. That was awesome!

Microsoft moved on in priorities but happily  they gave a lot of support to Kevin Wang and the TEALS program he created. My perception is that Microsoft’s support for K12 CS has moved from product based to supporting CS education more broadly. MS Philanthropies made a huge contribution to CSTA not long ago. I still wish they had someone in my old role but that’s life.

But I digress. 

Leaving Microsoft  and returning to the classroom was interesting. Over the previous years I had met, talked to, learned from, and made friends with CS educators all over the US. I was anxious to bring what I had learned from them into my own classroom.  I was also starting to see the need to computer science to move from the vocational to the core of a good liberal arts education. My years at Microsoft had let me see how teachers were doing more cross curricula learning. Bootstrap, perhaps being the best example – learning math and programming/computer science as mutually supportive. Emmanuel Schanzer is one of my heroes for his work at Bootstrap. So how do we make computer science relevant for everyone? And how do we get schools to make the learning happen?

Over the last decade I have been privileged to work on a couple of curriculum initiatives. The ACM/IEEE CS 2013 Task force which gave me great insights into higher education curriculum and the broad field that Computer Science has become. The  K12 Computer Science Framework which really opened my eyes to the possibilities of computer science before high school. I was also a part of committees who put together CS Teacher certification and K-12 standards for the state of New Hampshire.

It’s been a journey but I see computer science as a lot more than a vocational track in schools. With things like artificial intelligence, Machine Learning , virtual and augmented realty, big data, cloud computing, and the Internet of Things growing in importance in our daily lives I see understanding CS as being as important as understanding some basic physics, chemistry, biology, and yes, even math.

Wednesday, January 01, 2020

A 2020 Vision

Sorry. You may be as tired of the 2020 jokes and puns about the new year as I am. I’ll try to avoid them in the future. This is the time of year I look at the last year and think about what I should try to do in the new year. This year is a bit different. I am planning on retiring from the classroom in the spring. I’m not sure exactly how I will be filling my time after that. Part of me wants to find some other type of job. At the least I want to stay current with computer science education and help teachers and student where, when, and how I can. So this blog will continue.

I’m also presenting at this summer’s CSTA Annual Conference. I’m looking forward to that. The conference itself as well as my presentation. Looking at the program, I think I will be looking at different sessions than in the past though. Usually I would focus on sessions that have the most applicability to the courses I would be teaching in the next school year. This time it will be all about my personal interests without concern about specific courses. I have to keep learning.

Monday I go back to school. One more semester of teaching. I’m going to do my best to make it the best year yet. After that? Well, a lot of possibilities. Should be fun.