As you may have noticed from my blog articles this is one of my favorite topics. This is because I teach high school CS and I am well aware of what I am lacking in CS education and knowledge. What bothers me the most is I have no practical or affordable way of making significant improvements in either. I mentioned in a previous blog that I am attempting to write a methods course for computer science teachers but sleeping and eating is cutting into my time. Much easier said than done. What really slowed me down was reading other blogs by other high school CS teachers and truly realizing where my programming knowledge level is. There are some really sharp high school programming teachers out there. So I started thinking about what a K – 12 CS teacher really needs. So here is the beginning of a list of thoughts. Hopefully some readers have some ideas/comments to add.
High School first.
- A BA in Secondary Education. A must for certification. Contrary to what some parents I have met believe, a person really cannot (should not) walk in off the street and start teaching. Having knowledge of a field does not mean you know how to present it to others. Not that an Education degree guarantees that skill but it does improve the chances.
- A BS in Computer Science. I would definitely say no. 90% of the required course work for a CS degree is not going to end up being useful in the average K-12 classroom. Would a CS degree hurt? Definitely not, but getting a degree in CS and a degree in Education gets pretty expensive and time consuming. It probably not improve hiring chances enough to justify it. I my area of the US there are not enough CS classes offered in schools to hire a CS teacher so the school hires a Business, Math, Technology, or something teacher that is willing to teach a CS (programming) course or two. Personally I would love to work for a CS degree just for the added knowledge. A teacher should always know more about the subjects they teach than the basics they need to teach it. But there are certain economic realities involved.
- A CS Ed degree if one can be found in your State. I am still looking.
- Some programming language courses. I do not think the language is that critical. It is the thought process as how to learn a language that is important. Does a high school teacher need to be proficient at a particular language? Does the typical CS teacher have time to become proficient? What is meant by proficient? The typical CS teacher to me teaches 3 programming courses, 3 math courses, is on the math curriculum committee, the text book purchasing committee, is the building emergency tech guy when something dies, requests a student teacher every other year, and is helping coach at least one sport. (My background is small schools. For a small school this is typical.) I feel a HS CS teacher should be able to operate to some extent in several languages. Being able to program at the commercial level may be expecting a bit much.
- Be a programming geek. You have to like to program on your own just for fun. You have to like to play with programming languages just for fun. You know you are a programming geek when every now and then while working on a cool idea you look at the clock, it is 3 AM, you are still at school and you have an 8:00 class. Or half way through the Stats class you are teaching you have an epiphany about a program you have been working on, you tell the kids to hold on for a moment while you scribble down some pseudo-code before you lose the idea.
- Be able to select a decent programming language book or educational source. You are going to end up teaching yourself a lot of what you are going to need for the job. Understand that “Learn Java in 24 Hours” is a catchy title, not a statement of truth.
- Have lots of links to lots of CS education blogs. You will learn more from these CS teachers than any University course could ever do.
- Teaching a programming class is the black hole of time. Realize that one prep period is not enough time to teach yourself a new language, grade math papers, plan for next week’s classes, and trouble shoot the lab computer that suddenly will no longer log in. Be ready to put in some non-union hours.
- A BA in Elementary Education is a must just to get a job.
- A BS in CS. No.
- Know applications; all sorts of applications. CS at the elementary level is lots of apps and, if you are lucky, a little programming. The classroom teachers are not too interested in programming; they are interested in something that will help them achieve their subject goals.
- Be expert enough in all subjects so you can help the classroom teachers design lessons using the available technology. This is not too CSie but it is going to be a big part of the job.
- Be able to plan in intimate, gruesome detail every minute of the class period. A class of 25 7th graders with 15 minutes of free time and a computer can get, ahh, entertaining?
- Have excellent classroom management skills. Twenty to thirty 5th graders in a computer lab can get a little unruly if not managed well.
- And most important be very imaginative. Be able to dream up interesting projects for kids that have a direction. I avoid K-8 like a rabid dog.