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 code.org 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.