Friday, August 07, 2015

CS50 AP–An Advanced Placement Computer Science Course from Harvard

The last few days were spent at Harvard University attending CS50 Boot camp in Cambridge (Videos of most of the talks should be at that link soon.) It was an interesting experience. A learning experience. Originally I planned three posts about it – one for the pre-work and others for each of the two days of the boot camp[. I soon realized that wouldn’t work for me. I needed to noodle on the entirety and write one post. So this may be longer than usual.

What is CS50 AP you may ask. Well the official answer is:

CS50 is Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for students less comfortable and more comfortable alike. CS50 AP is a free adaptation for high schools that satisfies the new AP CS Principles curriculum framework (that officially debuts in Fall 2016).

This boot camp was one of two sponsored by Microsoft that were run this summer. Interestingly no Microsoft technology is used in CS 50. None. Not even Windows. The CS50 appliance that is used to do the computer work is a virtual machine running on VMware. The OS of the VM is Ubuntu. Mind boggling!

That leads me to the pre-work. Attendees were asked to sign up for CS50x via EdX and complete the first three psets (problem sets.) Some teachers watched all the videos and did some or just a couple of the psets. I skipped the lecture videos and just did the psets. I think I made a mistake doing that. I plan to go back and watch the lectures. The early psets are nothing special and I’ve used most of them in one form or another in the past.  I think the real value for me is how lectures and demos are run rather than the psets.

I was not too pleased with the “appliance.” I had some issues with bouncing back and forth between the VM and the regular Windows. It might have been easier if I printed out the instructions and just stayed in the VM. Interestingly enough things went smoother after I upgraded to Windows 10. I delayed the upgrade until I finished to psets and wish I’d done it before.

The other thing about the appliance was that we did our editing with a text editor with limited functionality compared to Visual Studio which I use for most development these days. And then we had to compile and run in the command line. Oh and the programs were in C. Overall it felt like a giant step backwards. On the last day of the boot camp David Malan, who runs CS50, explained his reasoning for using C. His arguments make sense but I am still thinking about the wisdom of it all for beginners.

Regardless of language I am still not sure why Linux and not Windows. I’m sure Microsoft would let them create a Windows VM with Visual Studio to do what they need. They have a bunch of automation tools that probably don’t migrate off of Linux though.  I also suspect though that, like many others, they may think that using the command line is useful in terms of getting closer to the machine. I tend to think that can wait beyond the first course.

There is a web browser based IDE for CS50 coming soon. It avoids the need to install VMware and download a large VM file. It’s still a lot like using the current appliance though.

CS50 seems to be almost as much about culture as curriculum. I like that idea. David Malan is a very charismatic guy and a great presenter. You’d easily cast him to play himself in the movie.He’s also has had a few years and a great support team to pull it all off.  I’m not so charismatic so can I pull of the cultural aspect? An open question.

The materials that are being made available are remarkable. The videos, both major lectures and smaller walkthroughs, are totally p[professional. The quality of the talks is outstanding. The project descriptions are tested and clear as is the grading plan and rubrics they use. I’m definitely planning on adapting their grading methods to my existing programming courses.

I could see using these materials as a flipped classroom. That is to say assign the lecture videos to be watched at home and follow up with discussions in class. Will students watch hour (or longer) videos? That might be hard. Can I show them in class? Probably but the attentions span problem is still there. Another option which I would consider would be to give lectures myself so I could include the engagement exercises that Prof. Malan uses live with my students involved rather than just watching other students in a video.

The shorter walkthroughs, generally 3 to 5 minutes long, students will watch and I can also use them in class so it is not just me talking. I may try some of them this year in my honors programming class (which is in C#) and even my Explorations in Computer Science class (some of the stuff on Binary for example). This will also let me gage how well they hold the attention of younger students who are not Harvard undergrads.

One last thing I find particularly interesting is the intention to build a larger community of teachers teaching with the CS5t0 AP curriculum to help, encourage and support each other. That could be very helpful in the long run.

Right now we don’t offer AP CS Principles at my school. I’m not sure if we can get it in for 2016/2017 either. There are issues with adding a new AP course. And if we do get it in I am not completely sold on the CS50 model. But I’m going to continue to look at the materials as they become more and more available. The community my school attracts from  (New England parents with ivy in their eyes for their children) may be impressed by the Harvard “stamp.” Ultimately though I’ll have to decide what curriculum I can make work best and that is more complex than where the curriculum comes from. I’ve got a lot to think about.


Brian Sea said...

I'm a little disappointed that you chose to focus more on the tools that CS50 uses over the curriculum itself. You can easily change the tools, including the language, to suit your personal tastes, and I don't think the curriculum changes so much. Besides, isn't the idea behind CS Principles to be language agnostic? My requirements for tools won't be yours, and that could be a good thing.

On the curriculum, I certainly hope what is currently in the Wiki isn't the entirety of it. It seems to missing some rather large portions of Principles (Internet and Society mainly). I've seen Malan's lectures, and they're great, but I hesitate to place them into a high school intro course. Can high schoolers maintain the attention span? Yeah, they could... but should they? Malan deals with 1000 students at once, we don't.

Mike Zamansky said...

Not commenting on CS50AP but rather CS50.

A number of my grads have taken (and I think TAed) the class. They mostly say the same things:

- not much learning goes on.

- projects are carried by kids that have a strong prior background (like my kids) or are autodidacts

- kids die in the follow up course (functional programming in OCAML)

- A big part of the class's popularity is due to profs charisma

- more hype than substance

I mean, learn C in how many days as a complete newbie? Please - besides that's so educationally unsound.

It seems to me another example of places being so anxious to get something popular that no one stopped to actually make a plan to get from start to finish.

I'll look at the AP version at some point but I started out as skeptical and your post makes me more so.

Your closing makes an important point - unfortunately the "Harvard stamp" means a great deal to many people but I always think about what a good friend of mine, a prof at a highly ranked university once said to me "we could really learn a lot about teaching and pedagogy from you guys" - that is us actual teachers.

Alfred C Thompson II said...

Brian I haven't looked at the curriculum as much as I need to. I'll comment more on that once I've been though more of it. What is on the wiki is just a start. Much more is planned and should be there soon. They are shooting for 100% coverage of the AP CS Principles requirements.

The tools are considered an integral part of the materials for teachers to use and that is why I focused so much on that. I would like to adapt a lot of the material to other tools/languages and I am experienced enough to do that. A lot of teachers are not.

Brian Sea said...

Ah, okay. I've always separated the tools used from the curriculum. At PEA, there were only two CS teachers, and we both used different tools (even different languages) within the same term. However, the same curriculum was used. Hell, I even experimented with using three different languages within one class -- which actually worked, and the students learned pieces of the other two (but it was hell administratively). So the idea that the CS50 curriculum is tied to the tools concerns me.

Doug said...

Thanks for sharing your thoughts about the course. I was hoping that you would. I think that you focused too much on the tools. There are a number of things that come to mind as a rationale - leveling the playing field for CS teachers who are proficient in their tools; making the course device independent (you mentioned Visual Studio, a great tool if you're in the Microsoft world but not the Mac or Linux world); and maybe even a reminder of the power of the command line in a GUI world. Who knows? But software can be developed on a variety of platforms.

There's nothing like C to make you feel one with the machine. I agree that it is an interesting choice.

Of course, I haven't seen the videos but I wouldn't use them as a resource in any of the scenarios that you described. If they are of value, I'd play them for 10 minutes or where a natural break comes and then pause for a class discussion or activity to build on the concepts in the video so far.

For those of you who could possibly be teaching that course, I think that kudos need to be given to the developers for the creation and sharing of it. If folks were left to develop the course on its own, it would likely be all over the map with much repurposed from existing courses.

Is this something that the CSTA should be looking into developing a support group for or perhaps a Birds of a Feather session at the conference next year?

Alfred C Thompson II said...

I might have focused on the tools over much. I confess that I found them very awkward and frustrating. Beginners who don't have prior experience might not notice.

Doug, the people behind the course were at the CSTA conference this past summer. I missed their talk. They are actively working on building community and I agree that next year's conference would be a great venue for a face to face Birds of a Feature. I am also hoping that some teacher or teachers who implement the course this year will be able to present their results. Actually having a panel of teachers doing various CSP courses talking would also be very cool.

Brian Sea said...

So I've gotten through the bootcamp videos that have so far been uploaded, and I'm left with an odd feeling. I like Malan's style, I like his ideas behind community, and I like CS50's over arching goals of computational thinking over coding. However, I'm a little struck by how he gets there. I've been through the CS50 lecture videos, and I am continually driven back to my own high school experience where my teacher rushed everyone into coding. Maybe Malan's sections have a different feel.

Also, am I the only one who doesn't like the Peanut Butter/Jelly demonstration? Sure, it was done when I was in high school, but, even then, I thought it was 'off.' I've never been quite sure what it was supposed to demonstrate -- surely, not how to create an algorithm. I also don't like the light bulb demonstration, though I did like the variation of the phone book exercise.

Heh, I feel like I'm over in left field while all the other CS Educators are on second base.

Mike Zamansky said...

Brian -- Don't feel bad about feeling out in left field - I frequently think I'm playing another sport entirely.

Anonymous said...

I think the curriculum is beautifully constructed and an amazing asset to the high school computer science space. We have no agreed upon curriculum in the way that mathematics and other subject areas already have and this curriculum sets a beautifully high bar for students to reach. I am excited to see my students tackle this and I am totally game for using my bigger than life personality to implement many of the activities that Malan recommends. Can't wait to share more of my experience with my kids killing this course this year!