Thursday, January 24, 2019

Computer Science Standards and Frameworks

I’ve been thinking a lot about computer science standards and frameworks the last couple of days. It’s all Mark Guzdial’s fault because he posted Frameworks and Standards can be limiting and long-lasting: Alan Kay was right Following Mark’s post are (as I write this) 38 comments. Some of the longest and most thought provoking have been from Alan Kay. Yes, that Alan Kay

This was hard to read for me because I was involved in writing the Framework and invested a lot of time in it. I thought I was doing a good thing. But I can see some of the flaws with the benefit of time and an outside view from many smart people.

I was also on the CS 2013 task force so I have seen two different processes for two very different documents. I do, and always did, wish the Framework process could have been more like the CS 2013 process. I feel like the reviews between drafts of the CS 2013 were done better with solid input from many and varied outside reviewers. There were both too many and two few people involved in the  K12 CS Framework. Too many doing the actual writing and perhaps too few doing reviewing.

For an other thing, I felt like the Framework writing became a lot more about how things were said (worded) than what was said. Not that what was said wasn’t important but that politics drove the working. Perhaps that is because I joined the writing team late in the process but I still wonder if the emphasis was right.

I’m still thinking about some of the comments from Alan Kay on Mark’s post as well. Especially the section below from his comment on my comment.

I’ve always been a big enthusiast about Jerome Bruner’s idea that *for every learner you can (and need to) find an intellectually honest version of a subject they can learn if you heed their level of development”.

In order to do this, I think you really need to have a good picture and as good as possible a definition of the subject before trying to find “intellectually honest versions of it” for different kinds of learners.

This was not done for the CS Framework. If the subject were physical sciences, one would first start with top scientists to put together a workable picture of the sciences as the best people in the field see them at that time.

So how to I look at the existing framework and standards (either CSTA or as adopted by my state)? Should I write my own “standard” or more accurately named “Alfred’s list of what I think high school students should know about computer science at graduation?” It might be an interesting intellectual exercise but would it be valuable?

As a classroom teacher I don’t spend a lot of time looking at how my curriculum matches a standard or a framework. Maybe I should. My wife can tell you all the standards she is working to follow in her curriculum.

Teaching at a private high school I have more flexibility and self determination than I suspect teachers at public schools have. I have also spent a long time in the computing field as both an educator and an industry professional so I have a sort of confidence (ego perhaps) that I can decide what students need to know. Students seem to be well prepared for university, or so they tell me, so I can live with that for now.

The problem is what to specify for newer, less experienced (more modest?) teachers. The Framework was one attempt and it was well-meaning I am sure. What we need to do is not so much focus on its flaws but discuss where to go from here. And who should lead the way!

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.