What should a K – 12 CS teacher know?

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.

  1. 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.
  2. 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.
  3. A CS Ed degree if one can be found in your State.  I am still looking.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.


Elementary school

  1. A BA in Elementary Education is a must just to get a job.
  2. A BS in CS.  No.
  3. 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.
  4. 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.
  5. 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?
  6. Have excellent classroom management skills.  Twenty to thirty 5th graders in a computer lab can get a little unruly if not managed well.
  7. 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.

3 Responses to “What should a K – 12 CS teacher know?”

  1. Laura Says:

    Thanks for this post. I just started teaching Technology/CS classes for middle and high school. I do not have a CS degree. I am, right now, a beginner programmer (I don’t have to teach programming courses until next semester). I was nervous taking this job for that reason, but so far, most of the other CS teachers at this level that I’ve met don’t have a CS degree and taught themselves programming. Thanks for confirming that I have the skills to take this on.

  2. Sheri Says:

    I disagree with your statement that a high school CS teacher should not have a CS degree. The best way to turn students off of computer science is to show that you are not comfortable yourself. How can you teach what you do not understand yourself? How can you incorporate real-world examples without having experienced them?

    With my CS degree, I understand how to evaluate various programming languages and how they best fit with the needs of my students. I can switch from multi-media to databases to programming with my eyes closed and one hand tied behind my back. Is teaching high school students as intellectually stimulating as supporting hand-held wireless devices using a SQL Server database and connecting to other applications to extract data and push data to a warehouse? Is it as cool as supporting a geographical-based application? Is it as mundane as an old IMS/CICS COBOL application with JCL? No to all those questions. But it is MUCH MORE FULFILLING to see the enthusiasm of these high school kids as they create programs and understand the basics of breaking apart a program. It is so much fun to watch them sharpen their critical thinking skills and begin to apply logical thinking to other classes. And, it is rewarding to watch them grow into productive young adults. That is something a computer program can never give you.

  3. gflint Says:

    I have to agree with everything Sheri says. I also believe the job of a CS teacher can be done without a CS degree. I have examined the CS BS requirements at a few Universities in the northwest and a huge amount of the course work is not going to be relevant to an average high school programming course or CS curriculum. I have a BA in Mathematics and a Master in Math Ed. I use none of the math learned in my higher level University courses in the classroom but the advanced math does give me an understanding of what my students need to know if they go the math/science direction. Can a teacher do an excellent job teaching math without Ordinary Differential Equation or that awful course on Group Theory? You bet. In fact, that first year of teaching math I had to relearn all the math I needed to teach. FOIL and finding the slope-intercept form are not covered in advanced calculus or ODE, and knowing how to do it does not mean you know how to teach it. My feeling about a CS degree is basically the same way, a lot of knowledge that is way out there but in the long run really does not help a CS teacher teach. There are undoubtedly high schools that teach courses that will use the knowledge acquired by a BS in CS but I think they might be few and far between. The background acquired with a CS degree would be invaluable but the marketability of a pure CS degree for the average teacher might be a bit iffy. Of course my whole argument is based on the region I am familiar with, Montana. A really big school here is 1500 students with the average school population in the low 100s, and the school may offer a couple programming classes. From conversations with other teachers across the nation this is not that exceptional. A degree in business or math and a little programming background will get you a job. A CS degree would be a huge advantage in teaching CS at any level but a degree in CS simply will not fill most school’s needs.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: