Thursday, January 10, 2019

Lecture As Performance Art

Mark Guzdial posted a link to an article about him (The social justice case for computing: transforming tools for some into a language for all  – you should read it) that had a picture of him teaching. His comment on Twitter was that “Pictures of me teaching look like I'm either a preacher or a Jazzercise instructor.” Shuchi Grover suggested “Bollywood’s greatest actor.” Now Mark is a great speaker, very dynamic. And really dynamism is a hallmark of good presenters.  A number of professors have large YouTube audiences because of the way they present material.entertained

Now I know there is often pushback from teachers saying that their job is to teach and not to entertain. Let’s face it though, all the “teaching” in the world is of little use if no one is paying attention.

Not everyone is a great entertainer. Lots of them are in the “lecture is dead” school of thought too!  There is a lot of pressure to be the “guide on the side and not the sage on the stage.” Personally I think most material needs a mix of the two though. Students need somewhere to start and often that means a lecture of some sort. BTW showing a video is a form of lecture not matter how cool the sound and graphics are.

If we’re going to stand in front of an audience we owe them our best efforts. I’m a firm believer that part of what makes a teacher, and a lecture, a good one is the presenter's enthusiasm for the topic. If you are really enthused it will show and it will be contagious.

I’m always amazed at how little formal training most educators get in presentation skills. One would think that would be a regular occurrence. When I worked in industry I was given a mandatory presentation skills training about every second or third year. Eventually I hope to get good at it. I’ve noticed at events with both educators and industry people presenting the industry people are often the most polished and, yes, entertaining, presenters.  Industry speakers often get salary reviews based on the reviews they get from giving presentations. Educators are evaluated differently of course. And that’s not bad.

With as many distractions as students have today we really have to up our presentation game though. No, we are probably not entertainers by a strict definition perhaps but at least we have to be interesting. And give students some reasons to stay awake.

Wednesday, January 09, 2019

Everything Old Is New Again

I try not to throw code away. I have punch cards in my attic that are over 40 years old. I also have a bunch of code from my university days on a magnetic tape (a DECtape) that I will probably never be able to recover. But a lot of code since the PC era I still have in accessible form. Today, Facebook memories reminded me of a blog post I wrote 10 years ago today. Next step was to look though my archives for the code it referenced.

I haven’t thought about the project, parsing a string to evaluate its strength as a safe password, in  some time and thought I might want to use it in one of my courses. Honestly, I didn’t remember my algorithms and while I could think of several ways to do it I thought a memory boost would be fun.

It turns out I have a second example that someone else, another teacher who shared his projects with me, had written. Comparing the two programs was interesting. There are, as usual, more than one way to solve a problem like this one.

With two very different solutions and some other options that have popped into my mind while thinking about the project I am rethinking how to use this project.

Typically I would just assign the project and see what solutions students come up with on their own.

On the other hand, I could provide a structured set of recommendations. Various ways of implementing scaffolding would leave more or less flexibility for the student. Still musing over that.

Another option is to provide students with several code examples and ask them to evaluate them. I see a couple of benefits to this plan. Students would get some valuable practice in reading other people’s code. We don’t do enough of that in my opinion. It would also show different techniques (tools if you will) that they may want to incorporate in their own future projects. And it would allow us to have some conversation about efficiency.

I’m still noodling on these ideas but I thought I would toss my thinking out for comment. What do you think of these various ideas? What would you do?

Tuesday, January 01, 2019

Happy New Year 2019

I’ve been thinking about this post for the last several days. My usual practice has been to start the year with a list of things I want to watch in CS education during the coming year. As I look at last year’s list (see Looking Back on CS Education in 2018) I don’t see a good list for this year. The things I’ve been watching have largely matured. The next big growth area is not clear to me.

Sure we’re making progress in getting computer science education for more and more people. Of course there is more to do and room for growth but it feels like momentum is going to carry us through.

So this year I am thinking about what I can do to give my students an edge. What can I shoehorn into my curriculum that will go beyond the average. There are people who way ahead of me of course. Doug Bergman and David Renton at Porter-Gaud School are doing amazing things. A number of the career/technical schools I know of have room in their curriculum for a lot of things I haven’t been able to fit into mine. Likewise, there are a number of magnet schools covering some really advanced topics. Most of these have more room in their curriculum for CS than my school. That means I need to do things differently.

I suspect that most teachers at comprehensive or college prep schools have some similar time limitations. We have room for only so many courses. In may case I have what seems like a lot of options. We teach some programming in our freshmen course (it’s only one semester long and we cram a lot in already). I have a one semester honors programming and a one semester mobile application programming course. In both of those we get students to the point that they can do interesting things and then the semester is over.

We offer both Advanced Placement Computer Science courses. They're both a full year long but it feels like they are pretty constrained. I only teach the Principles version so playing with APCS A is a moot point for me.

The AP courses are a problem of sorts. As they say, a blessing and a curse. Parents and administrators love them. They help make schools look good to parents. They make students look good to college admissions officers.  There is lots of well-developed curriculum and professional development for teachers. What’s not to like?

But you wind up teaching to the test. It’s almost unavoidable. Your curriculum plan has to be approved by the CollegeBoard for starters.  While you can get clever about things like projects, tools, and for APCSP even languages there is always that constraint about what is on the test that you have to focus on. If APCS is the only course one teaches you probably have the type and energy to get really creative. If you teach four different courses (as I do) it can be a bit overwhelming to make big changes to the AP CS course.

The path of least resistance (for me teaching APCSP) is to use the developed curriculum and teach using that. The APCSP curriculum, which I am using,  is pretty amazing for teaching that course. Since I have two other courses I teach alone based on self-developed curriculum there is some strong motivation to spend time on those.

What I want to squeeze in somewhere are cloud computing, Artificial Intelligence, and Virtual Reality development. I don’t really know enough about any of these to know how hard it will be to fit any of them in or where they would fit logically. If I had a year long course after my honors programming class that wasn’t constrained by the AP curriculum I would recruit a group of smart curious students (plenty of them around) and we’d all learn together. Alas, that is not currently an option for me.

My current thinking is to try and learn more about one or two of these on my own and by the summer have an idea where I can fit some of it. Amazon Web Services has AWS Educate which I have signed up for. It has a bunch of free resources and training. Seems like a good place to start learning the cloud. It looks pretty well set up for teachers as well. SO that is the cloud piece.
Next is either VR or AI. VR requires some hardware to do right as far as I can tell so I have to factor that in. Both AWS and Microsoft have some AI that can be used. Since I already know about the AWS resources I may start there with AI.

VR is pretty exciting as well and there are some great resources for using Unity with C# for that. I already teach C# using Visual Studio so going the VR route may be a good option.

I hope to get my current semester long courses in good enough shape during the school year that I can really deep dive into the cloud, AI, and VR over the summer. Not that I will wait until then to start but that will be when I can get deepest. And of course the search for resources for my own learning, for teaching, and for making this stuff fit goes on all the time. Let me know if you have links to share.
So basically my message is, 2019 has some serious potential.

Monday, December 31, 2018

Looking Back on CS Education in 2018

The last few years I have written start of the year posts about things I want to track in Computer Science education in the new year. Last year’s post is at Computer Science Education Things I'm Watching in 2018 At the end of the year, like today, I write about how those things tracked over the year.

The first thing I wrote about last January was Advanced Placement Computer Science Principles. I was half way through the year teaching it for the first time at that point. Now I’ve been through a whole year and am half way through the second. APCSP grew a lot and continues to grow. Curriculum from, Beauty and Joy of Computing (BJC) from UC Berkeley, and Mobile Computer Science Principles (Mobile CSP) from MIT continue to be top curriculum in use. It’s a heady time for AP CS. At this point APCS P is pretty settled into many schools and looks to grow even more. The existing “canned” curriculum and related training are key factors.

The next big item I was following was K-8 Computer Science Education. This is still an up and coming area. The #CSK8 twitter chat has been my best window into this area and it continues to grow. The first chat of 2019 will be 2 January 2019 at 5pm PT and 8PM eastern US time. I didn’t attend ISTE in 2018 and that is usually my other deep dive into K-8 CS. But K-8 CS continues to grow as the CSTA Annual Conference and local professional development events like the 2018 CSTA New England Regional Conference.

State Standards continued to grow as more and more states adopted them. In the last year or so my home state, New Hampshire, adopted new CS teacher certification guidelines, state standards, and passed a law including computer science as part of the definition of an adequate education. Other states moved forward as well. I confess I spent a lot more time looking at NH than other states.

It was a good year for computer science education in general. Here’s hoping we continue to see progress in 2019.

Friday, December 14, 2018

Sub Goal Labeling in Computer Science

One of the interesting ideas in teaching computer science I have been looking at is sub-goal labeling. I’m experimenting with it but to be honest I don’t feel near ready to share what I am doing.

As a wrote recently (The Problem With CS Education Research ) it can be hard for teachers to take research and adopt it because, well, research papers can be hard to read for some of us. And the world of the university classroom is a little different from that in the high school.

Fortunately for me, and for you, Clark Scholten has been trying things out and blogging about it. I highly recommend his posts.
Anyone have more suggestions of resources for learning how to use sub goal labeling?

Friday, December 07, 2018

Teaching Phone Programming Should be Easier

Garth Flint and I have been independently looking at resources for teaching mobile phone application development. (Garth’s posts are linked below) I’m currently teaching a course using AppInventor which is going ok but not as well as I’d like. Most of my students own iPhones which AppInventor doesn’t currently support. Their iOS support is currently under review by Apple but my course is almost over. Even with Android phones I still have some trouble with connectivity. And the emulator is a mess. Some days I can’t get it working at all. So I’m thinking about what to use to teach next year.

There are other options. I have been testing Thunkable with some of my students. The good is that it supports both Android and iOS. The bad is that this support doesn’t support many sensors and really that is a huge part of what I want students to do. Without sensors its just another desktop app with a tiny screen.

I still need to take a closer look at LiveCode which seems to come up in this discussion so I don’t know much about it yet. Input welcome!

I haven’t tried the platform specific (ie professional) tools yet and I am reluctant to do so. The ones designed for iOS or Android only work on those platforms and I’d like to use both. Since most of my students have iOS devices than going Apple might be a way to go except that that requires developing on Macs. We have a Mac lab but its already used a lot. And they are all Macs which comes with its own complications. I am not a fan. That’s a last resort.

Microsoft Xamarin with Visual Studio is a cross-platform professional option. I’ve looked very briefly at it in the past. Setting it up is non trivial and I do have to have some connection to Macs for the iOS loading. Networking to a Mac or three might be an easy option.  Well, easier than taking over a whole lab. I need more time to work on that option though. I don’t know many teachers using it which is a concern.

I really wish Windows Phones had not died out. I have a Windows Phone and writing apps for it with Visual Studio (2015 or earlier only) is a piece of cake.

Wednesday, December 05, 2018

Where Does Computer Science Fit–Revisited

David Renton is teaching his students at Porter-Gaud how to program virtual reality projects. He posted a video of some of these projects a few days ago.

These are pretty cool, Virtual Reality apps created by [David’s] Porter-Gaud High School senior CS students using Unity for SteamVR. They tested them using HP & Lenovo Windows Mixed Reality Headsets. They each created at least 2 3D models themselves using Maya and imported the other models from the Unity Store and/or They also created at least one sound effect themselves using Audacity. They coded the interactions using C# in Visual Studio.

One project was highlighted on the Microsoft Education blog with a post by the young lady who created it. How a VR trip through the solar system honed my down-to-earth skills – go read it. I’ll wait.

That is a project that involved math, physics, and art into a computer science project. I suspect that the math teacher she approached for help was pretty pleased to get involved. I’ve sent students to math teachers myself over the years. 

We don’t ask where reading fits in the curriculum after some magic line in elementary schools. We teach students to read in large part so they can use it as a tool to learn more about more subjects than just reading. I’ve long believed that computer science can, and should, become a tool that students learn to help them learn other subjects.

Yes, we need students to have a base of CS knowledge first. David’s students have had several years of CS, starting in elementary school, before they get to him. Using that base they can learn more about CS for sure but they can also create projects that interest them and motivate them to learn more, not just about computer science, about a wide range of other subjects.

Like reading, we need to teach enough CS that it can be used across the curriculum. It can’t stay a silo subject if we’re really going to see students use it to their potential.

Edit: See also the Luminous Science curriculum being developed by  Ben Shapiro’s student. Brings together science, art and #computing. Also awesome! Ben is on twitter @bennytheshap