I had forgotten how much time is involved in teaching a new programming course. The last few years I have been teaching Programming I with Small Basic. This year I have a new course using Visual Basic, and a new text. The course is offered by the local College of Technology and the kids can get three college credits for it. I am a bit rusty with VB and am doing the problems with the students as they go. These problems are the black hole of time. I like to program so I end up spending way too much time working on a problem and not enough time correcting papers, writing math tests, fixing computer issues around the school, you know, the other stuff the job requires. Of course it does not help when in one of my classes all of the students can write a solution twice as fast as I can. Smart kids can be embarrassing.
Archive for September, 2010
I am off to National Guard for two weeks. I built my sub plans last week. Poor sucker. The Stats class will be a piece of cake. Everybody has a book, the class is all fairly motivated seniors and they are pretty smart. The three programming classes are going to be another story. The sub is not a programmer. I have one copy of the text. For one of the Advanced Programming classes this is no big deal; three students that have been programming for a couple of years and are really into it. Give them the assignment and let them go. The other Adv Prog class is a different story. The five students have very little experience with VB and need to read the book closely. As usual they do not want to read, they want to hammer keys. The sub cannot demonstrate then have the kids do it. I had to give my Prog I class to the other programming teacher. He now has two classes at once. Usually this is no big deal, this is a small school and this happens fairly often, but the three kids in the Prog I are orangutans with ADD. A 30 second attention span is not conducive to good programming. Did I mention I am also the school system admin and computer fix it guy? Should be an interesting two weeks. I better keep my phone charged.
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.