Friday, September 21, 2018

What Makes A Great High School Computer Science Program

Not long ago someone asked on Facebook for great HS CS programs to visit. Three schools came up quickly and repeatedly. Two are large magnet high schools and one was an impressive private high school. I know something about all three schools and they are doing really good things. They all have an edge though. Some selectivity in students for one thing. The public schools are large with multiple computer science teachers. These are not always things that are possible. Many schools are small, underfunded, take anyone, and have other limitations. So what is the hope for them?

What is a great computer science program? How do we define it?  Can it exist in a smaller school?  Does it require lots of courses and lots of students? Is Advanced Placement a requirement for a great HS CS program? It all boils down, in my thinking, to what result does a great HS CS program show.
Perhaps I should start with my idea of what great outputs are. I think the best programs turn out students who a) really want to study more computer science and b) are well prepared for learn with a solid base of understanding.

Not that all students go on to take more CS. No, I don’t want everyone to take CS. There are a lot of other interesting and important things to study. But if some students decide to take more CS that’s a great thing. If we give them a head start with knowledge that is probably the difference between an adequate CS program and a good CS program.

Great? Hum, what more is there? Perhaps a great program give students the opportunity to learn and produce outside the box if the standard curriculum.

How do you get there? The more I think about it the more I think that the difference between adequate and good and on to great is the teacher. What is a great CS teacher? I think there are several factors. I think domain expertise is very important. I think teachers who are great teachers can get very good results without great subject matter expertise but I’m not sure they can have a really great program. Not until they learn more themselves. Yes, this is a problem. But a workable one.

I think great teachers are willing to admit that they don’t know everything. I know that seems contradictory with the last paragraph but it is not. Computer Science is too big for one person to know it all. A poor teacher, confronted with a question they can’t answer, says “we’re not going to get into that.” A good teacher says “let’s learn about that together.” or “Here are some resources. Come back and teach me.”

A good teacher may teach the same, solid way every year or every semester.  A very good teacher changes what they are doing constantly. Seeing what works and refining it and tossing what doesn’t work. And they don’t count on just their own expertise. They seek out professional development, they read blogs and research papers, and they participate in the larger CS education community.

What about curriculum? I have mixed feelings about the Advanced Placement curriculum. Some days I love the range of topics in AP CS Principles. Other days I wish I could go far deeper into specific areas.  AP CS A, well, let’s just say I am not a fan. At the same time I am realist enough to know that the AP designation plays well with parents, students, and administrators. It is the only way some schools will ever get an advanced CS course.

Can an AP course be part of a great HS CS program? Probably. A lot of people define at great HS CS program as one where a lot of students get 4s or 5s on the AP exams. I find this a narrow definition but I also think that teachers can do some creative things even with the nature of the AP program. It’s just harder.

Career Technical schools often don’t offer AP courses. On the other hand they also have students for 2 or even three solid years with the flexibility to cover things their own ways. Students come out of these programs ready for, if not jobs, paid internships. They also have good preparation for the CS part of higher education and strong motivation. Like the magnet schools I wrote about above they are largely self-selecting though. I think teachers in comprehensive schools can learn from these programs though.

At Career/Technical schools there is a clear purpose, a practical purpose, for what students learn – a job. We don’t often “sell” the reasons for what we teach in CS in comprehensive schools. “It will help you in college” is a bit abstract sometimes.

A great HS CS program helps students find their own motivations. This means projects that are meaningful to students. Students have some agency in selecting their projects, the concepts they are learning, and the tools for that learning. This too takes some courage on the part of teachers. I think it also takes some willingness on the part of administrators to allow for some courses that are atypical. Perhaps even dropping AP CS! Great CS programs will know about the boxes but be willing to move outside of the boxes when it is appropriate. Or to expand the size of the boxes they live in.

How do you define a great HS CS program? Are you part of a great CS program? If you are part of a program that is good or just OK, what do you think you need to make the program great?


Mike Zamansky said...

Just want to say that the large public magnet schools didn't necessarily have an edge.

I started the Stuy program - one of the schools you're alluding to. When I started there was pretty much nothing - just a math teacher who taught APCS because someone had to and a couple of teachers teaching "programming classes" as a way to basically not teach.

I was the only guy with CS knowledge when I started and I had an administration that was not particularly supportive, kids with jam packed schedules, established departments vying for students (take AP Bio, take AP Chem,..) and entrenched interested (the old tech department). The creation of that program has been described as "hacking the school." It can be an easy road with the right people in place and a supportive administration but without that, big or small school, magnet or not, it's a tough road and a long road.

I can't speak for the other large public magnet school.

Garth said...

For a small school (150-160) with a teacher with almost no formal training in CS I think we have a great program. I have determined this by the number of students that go on to college CS, complete the program and come back and tell me they were well prepared for the rigors of a college curriculum. We offer no APCS, no "advanced" courses, we just have some fun with CS. What we do is offer fundamentals and teach the kids how to think and problem solve. They really do not need more than that to succeed at college in any field. I wish we had the resources to offer a broader curriculum so the kids could see more of what CS entails but it just is not going to happen. Stay with the fundamentals and be sure the kids see the enjoyment in CS. It works.