Thursday, June 29, 2017

Finished Advanced Placement Computer Science–Now what?

This question is now more complicated since we have two AP CS exams again. Does CS A follow CS P? Should it be one or the other but not both? But let’s put that aside for the moment. Suppose a student takes one of the AP CS courses as a junior (or younger – it happens) where do you go from there?

This may seem related to How Many Times Can You Teach Loops? but it’s not really. We’ll assume that these students have some solid understanding of computer science and programming. Not undergraduate major level but really solid for a high school student. What do you do with them if they want more? And many will want more!

There are a number of options as I see it. One is that you could have a domain specific course. Perhaps network programming. Or web backend programming? Maybe something like a cryptography course? (OK that one I would like to take.) Or go a bit more Information Technology with a system management course. Perhaps network security? Actually you could probably look at the average college catalog and get even more suggestions. All of them are good and interesting. I’ve been thinking along a different line though.

How about a major project course were each student or group of two to four students take on some major programming effort? I’m thinking they should have a customer. Perhaps an app for the school or for a local non profit. That’s the ideal perhaps. But maybe it would ok if they thought about some real tour de force that required them to learn a lot of new things. Maybe even learn some hardware.

What I’d really like to see is a self directed research sort of project. It would take motivated students and a teacher willing to let things get messy. Grading would be a challenge especially if one has to give regular grades to keep administration happy. I’m not really sure how it would work but I’ll bet some students would learn an awful lot.


Mike Zamansky said...

A couple of points - one in the case of APCS-A - the kids SHOULD have knowledge and understanding of an undergraduate major who completed their first in major sequence course - that's what APCS-A is. Same for AP Bio, Chem, etc.

This is of course another discussion but if we have students taking APCS-A and they're not coming out with the equivalent with CS1 (language and non-standard programs notwithstanding) then we should drop any charade that APCS-A is a college level class. Of course, if the kids are coming out as strong as students completing CS1 then that's another story.

I've always taught my version of the old AB curriculum and I still think that some data structures / algorithms are important after the current APCS-A but they can be integrated into other classes as appropriate as needed.

The other comment I wanted to make was on a projects course -- I'm all for projects - all the senior classes I designed were projects based and my SoftDev course had students ready to jump into any startup in NYC but there was also a large amount of "course" in the course, not just shepherding projects. I think that's an important point. If a school is going to teach a course - particularly a public school - there must be value added in that course by the teacher.

I've seen plenty of classes, not just limtied to CS, where the kids either use computer based training or just work on their own to learn or discover - without real support of the teacher. I've seen plenty of cases of constructim and discovery learning - things that take considerable preparation and effort to set up and do right and up being "let the kids play with stuff because I don't know what I'm doing."

Something to watch out for - particularly when you have some autodidacts in class who make the outcomes seem good.

Garth said...

Need a course or project? Blender and Unity. Kids actually get jobs because they can run these. They are also fun and require a lot of problem solving.