This is by far my favorite topic to get excited about. Getting things set up for the CSCI 135 Java dual-credit course for next year got me started again. The person I am coordinating this class with is a friend from the university. He is just starting to delve into the issue of CS in Montana high schools and asked my opinion on the topic. Let’s poke the hornets’ nest. I positioned myself into my usual meditative state (recline in chair and look at ceiling) and thunk a bit.
I see three major issues with CS in Montana high schools, and I think these carry to any high school in the US.
- Incentive for the schools to offer the course.
- Place in an already full curriculum.
- Shortage of teachers.
1. What incentive is there for a high school to offer a CS course? Many administrations and teachers think of CS as a trade similar to auto shop or accounting. Job training and not academics. The argument is the high school claims they are preparing their students for a liberal arts college and not for a technical school. To some extent this is true. Most high school courses teach primarily programming. Programming is a trade.
How about the argument that CS teaches problem solving skills? So there is nothing else in the present curriculum that does this? As a math teacher I beg to differ.
Some folk argue that an incentive would be that there are a lot of high paying jobs in CS. Very few courses in high school prepare students for the job market, except for maybe auto shop and wood shop. None of the math I teach prepares students for the job market. They learned job math back in about the third grade. It is fairly obvious looking at high school curriculums that high schools have very little interest in preparing kids for the job market. If they were there would be less literature or history and more welding and computer tech.
My argument for CS sort of ties in with “Those who don’t know history are doomed to repeat it.” “Those who do not know any Computer Science are doomed to be taken advantage of by those who do.” Computers have become ubiquitous throughout the world. They are starting to control the world. People should know something about an element of their life with so much power over them. Studying CS helps control the thought behind a favorite quote of mine from Arthur C. Clark, “Any sufficiently advanced technology is indistinguishable from magic.” We cannot let American society believe in magic.
2. The list of required courses varies from school to school. My high school requires 4 years of English, 3 Math, 3 sciences, 1 practical art (tech or business) and some odds and ends (history, art, theology). We are considering requiring 4 years of math. Public schools usually require 2 math and 2 science, depending on state requirements. But how many kids interested in CS are only taking the minimums? CS kids are usually the calculus track gang. They are the 4 years of math, 4 science, music, etc, etc. Squeezing another course in an already crammed schedule can be a challenge. Kids of the caliber to take CS are usually buried course-wise and the councilor will point out to them that CS is not a requirement for any college. Pretty much a course killer.
In Montana the majority of the schools are small, less than two hundred kids. It is pretty hard to justify opening a new course when only 4 or 5 kids are going to take the class. The same can be said for using valuable and scarce staff time for the course.
The only solution I can see is a shift in priority and realize that one year of CS is more important than 4 years of English or Math or Science. With the lack of CS emphasis on University entrance requirements that is going to be fairly impossible to implement. Heck, even as a CS proponent I am not convinced that losing one of those 4 years is a good way to go except for kids looking at CS as a college major or minor.
3. Teachers. There are no CS teachers. There is very little inclination by college education departments to offer a CS certification. After all, high schools are not clamoring for CS teachers, colleges are not requiring CS from high schools for entry and there is nobody to teach the course if universities did decide to offer it. There is also very little incentive for a prospective teacher to seek a CS certification, there are no jobs in it.
A solution is in-service training but there is the same shortage of instructors. I do see that CS4HS (http://googlecs4hsonline.org/) is starting some interesting in-service like courses to get teachers that are interested in teaching CS started. There is also a CS Principals for teachers on-line course that looks very useful. I signed up for both since there is no in-service for CS in the state of Montana. It seems most CS teachers learned CS on-the-fly, staying a day or two ahead of the kids (if lucky) so walking into a class with nothing but an online in-service is nothing to be scared about. I do not think trying to teach an APCS course with this type of background is a good idea but a Scratch, Small Basic and beginning Python type course is perfectly feasible. Give it a couple of years before diving into an APCS type course.
Getting CS into schools seems to be a very grassroots movement. There are some political mumblings at the high government levels but it is all words, not actions. The independent nature of the US education system pretty much guarantees any high level government decisions are lost in the system. Grassroots movements are slow. I really do not think the US has time for a grassroots movement. There are too many countries with a centralized education system that have major government support for computer science education. Unless we can get some major fertilizer on that grass the US will fall out of the competition (mowed down?) for being a CS power in the world. That would be bad.