// you’re reading...

Education

Keeping students interested in Computer Science

Computer media lab

Hello! First I’d like to take this time to introduce myself. My name is Clayton Shier and am currently completing Grade 11. I love computer science and anything to do with it. I’ve been an active poster on the CompSci.ca forums for a while now, and I’ve asked Tony to allow me to contribute to his blog. He has graciously given me permission to do so. Thanks Tony.

Every year, it seems that computer science classes start off relatively full. Just like any other class, throughout the semester, some students will inevitably drop the course. With computer science classes however, this dropout rate seems much higher compared to other classes. Indeed, many schools actually do not offer upper level (Grade 11 or 12) courses for computer science due to a “lack of interest” from the general school population. I think that there are many reasons for this, but I believe the mains ones are:

  • Teacher’s Style
    This is a big one. If your computer science teacher is uninteresting and un-engaging, students will be bored and less apt to find computer science interesting. The teacher must have some way of keeping students paying attention to them, they must be passionate about the subject which they teach, or they will have no hope of keeping students enthralled by the subject.
  • Teacher’s Ability in the Programming Language used
    While this may seem like an obvious one, many teachers don’t keep up with the language they are teaching. Using coding styles from when teachers were in University is not the same as styles today. Teaching students to use depreciated methodology makes it harder for others in the programming community to help out. Keeping up with the current standards, additions and syntax changes can go a long way to making it easier and more enjoyable for students learning to program.

    In a more common than it should be situation, many high school teachers are new to the programming language that they teach. They simply receive the curriculum that they are to follow, and are expected to be able to teach a class. This kind of situation is not helped through the use of proprietary software such as Ready to Program with Java (RTP). RTP comes with a bunch of proprietary classes that high schools make use of. This totally reneges on the point of learning Java, as the students would have to basically re-learn Java again, if they were to use it anywhere outside of the class. Not what I call great.

  • Course Material
    Most students coming into a high school computer science course are expecting to be able to program mind blowing 3D games within a semester. When most find out that they won’t be able to come close to doing so within their single course of computer science class, most bid adieu to it and move on. Students learn that playing video games is a very small subset of computer science, and find this fact discouraging. This is where many students also lose a lot of interest in computer science. They don’t care about sorting through arrays or lists of data, or coming up with algorithms to solve problems. For this reason, a balance must be found between teaching computer science concepts, and applying the learned concepts in an engaging manner.

I personally think that addressing these issues would go a long way in keeping students more interested in computer science. If nothing else, it will keep the computer classes from being cut out of school’s programs. This may give those students who are considering programming as a career a better chance at getting where they want to go.

Thoughts? Seeing as this is my first post, any thoughts, comments or concerns will be appreciated.

Read more



Discussion

  1. Posted by llama112 | April 6, 2007, 8:14 pm

    I agree with you, I am in a gr 11 CS class right now and we’re learning Java. But our teacher really doesn’t know much about Java and he can’t help us. Most of the students in that class are only in it because there isn’t much homework and because they can play computer games all class. There are about three people in that class who actually care about CS and want to learn (me included), and so I personally don’t think it is very useful.
    By the way, excellent first entry!

    Reply to comment

  2. Posted by AMailer | April 6, 2007, 9:41 pm

    Woohoo, I’m glad that someone not only in my grade but also still in high school is beginning to blog. Not that tony blogs were bad, but having to read stuff that you can relate to (like this one) makes it so much more interesting :D

    My compsci class, grade 11 is a bore. The teacher seemed to think that no one in the class has any experience in programming what so ever so her teaching style is for absolute beginners, and there are several people in the class who already have had experience so it gets really boring!

    In my old school they would make students fill out a portfolio of some sort, and depending on what the teacher saw he/she would have assigned different stuff that might have interested you, but you would still have to do the course material. But at least is better than getting bored.

    Anyhow, i’ll be watching for more blogs from you.
    NIce work (this would be my longest and probably the only productive comment ever, um, see? your already at a good start :P )

    Reply to comment

  3. Posted by Craige | April 6, 2007, 9:53 pm

    Congratulations on the first blog post Clayton.

    I completely agree. I’m also a finishing up my year as a grade 11 student, and have been enrolled in my first programming class for this semester. The programming department at my school is pretty low standard. Currently, I don’t think they have any computer science classes until you reach grade 11, due to lack of interest, and thus they are forced to teach grade 11 students programming (Visual Basic) from the ground up.

    I didn’t want to walk that road, so I got myself pushed ahead to the grade 12 class. It was so small, that the 11 and 12 classes were actually combined into one room, with one teacher. To put a visual to that: there are 4 students in the grade 12 class, and myself and another are actually pushed ahead from the grade 11 class.

    We started off learning with Ready to Program in Java; it was really depressing. Fortunately, After a couple chapters, we started learning from a new text book: A Guide to Programming in Java. It moves pretty slow, but it has a good deal of theory as well, and lots of exercises. So, in that sence, it’s good for a programming class. As well, it teaches Java 5, which is also good.

    My teacher though is a boring fellow too, and I’m not sure he’s completely up on programming. He’s not as bad as the stereotypical Computer Science teacher, but still not the best either. I was talking to him the other day, and I mentioned something about design patterns, and he said he didn’t know what I was talking about. I’ve also written a few lines of code that he didn’t think was possible (such as combined variable initialization).

    I could go on, but I think I’m starting to ramble now.

    Once again, congratulations on the blog post Clayton; it was very well written.

    Reply to comment

  4. Posted by Clayton | April 6, 2007, 10:20 pm

    Thank you both! It’s always nice to know that something of yours is appreciated :D

    @AMailer: It seems to me that many teachers have to take the idea that the students in his/her class are new to programming. I don’t think that this is because that all are, but because of the fact that a) the majority of the students are actually new to the idea of computer science, and hence need to go slower, b) some students are just there because they believe computer science will be an “easy” credit, or c) the teacher is/was forced into teaching a subject that they do not want to teach.

    This portfolio thing that your teacher had worked up sounds like a good idea. Although it can be a bit rough, it potentially could make it easier for all students to do something that they want to do. I know I don’t like doing assignments that I have no interest in for computer science.

    @Craige: To me, it seems that the general consensus in many schools is that computer science is most often swept under the rug. I think this hurts the entire idea of comptuer science, and attracts negative attention. That being said, many students then don’t want to take the course because either they’ve heard from other students that have taken the course that it “sucked” due to the teacher, or that it was too hard because the teacher was expecting too much of them and teaching the subject poorly. I have gathered that the circumstances to make a split class of Grade 11 students and Grade 12 students is more widespread than I initially thought. These classes I think discourage students as well because the less talented/able students feel that they are just shoved off to the side while the (usually) older students stand in the spotlight.

    Reply to comment

  5. Posted by Craige | April 6, 2007, 10:45 pm

    Clayton, you’re right. Computer Science is often swept under the rug in most schools, and it’s a shame. Many young people in Computer Science have great potential, but lack the proper guidance.

    Also, it’s hard to have a curriculum for a computer science class. When people are first picking up new concepts involved in the subject, they all learn at different speeds. I know people in my class (well, the grade 11 class) who are struggling, and others who are finding it easy.

    Just the same, I think the teacher need pay more attention to the class. My teacher doesn’t pay much attention to the grade 12 class at all. I’ve sat in the class for days not actually doing any work (Not because I don’t want to, but because it’s difficult for me to use those comupters. I use the Dvorak keyboard layout here at home, and I type like a handicap at school). I also know that two of the other grade 12 students have hardly written line of code all year. They keep managing to get their hands on the teachers source code, and simply changing the variable and method names (how he doesn’t notice, I’ll never know)

    Reply to comment

  6. Posted by Martin | April 6, 2007, 11:48 pm

    Pretentious motherfucker.

    I kid! I kid!

    Reply to comment

  7. Posted by ericfourfour | April 7, 2007, 12:08 am

    Nice job Clayton! It’s refreshing to see people my age blogging about things relative to their education rather than what their favourite colour is.

    I must say, all three of those points are true and that is why most people in my computer science class(es) dropped the course. It really requires a lot more dedication from the student if any of those are missing (in any class actually).

    Good luck with future posts Clayton.

    Reply to comment

  8. Posted by Tony | April 7, 2007, 1:13 am

    Well done Clayton. I’ve told you this in chat already, but impressive start! I love the kind of response you’ve sparked up. Everyone’s is star quality (except Martin’s…).

    AMailer points it out best – this authorship mix allows for a wider set of audience to connect, and as a result we all learn just so much more. Good stuff.

    One thing I can add from my personal experience is that during my grade 12 year, a lot of my classmates (it was a new school, we knew everyone /- 1 grade level) took grade 11 Computer Science just for the purpose of an easy grade. They’ve spend most of their time playing video games instead (someone figured out how to get Unreal Tournament to work over the network).

    Now the teacher was actually pretty competent, and had some software development history behind him. He even went through some extra training himself, so that he could offer me the AP level course (I was the only one doing it). Though due to the poor performance of every other student in the school, he resigned from teaching Computer Science right after my graduation. True story. I think they got an English teacher to fill in afterwards.

    Reply to comment

  9. Posted by Arron | April 7, 2007, 12:08 pm

    To Address your Course Material Concern you should check out Jython Environment for Students: http://coweb.cc.gatech.edu/mediaComp-plan/94. I am currently using it in a class at college and I have found it to be a solid platform for learning to program. The main advantage is that within the first day you are already building what amount to photoshop filters for photos and later you can get into sounds and movies. As an added bonus you use the very powerful language python to create some pretty cool stuff.

    I have to say that any school that doesn\’t use this to teach programming is severely hurting their students, particularly those that are just learning how to program and may or may not be interested in a career in computer science.

    Reply to comment

  10. Posted by Craige | April 7, 2007, 1:00 pm

    Arron: While I see your point about students being able to create something the first day, but then what about the more advanced students? What about the students who have programmed in C or C before? I would imagine they would grow quickly bored of the class, and possibly drop it.

    Personally, from my experience, it is with how the school goes about teaching the subject. My school, for instance, dropped both the grade 10 programming class the last two years, due to lack of interest. But this class is in fact needed to give students a little bit of a background in programming, before they go move into a grade 11 class. A grade 11 class should not just be teaching students what variables and loops are. They should already know by that point.

    Reply to comment

  11. Posted by Arron | April 7, 2007, 2:15 pm

    Craige,

    I’ve programmed in PHP before and am very confident with programming principles. I found that class to be boring at first, but because you have all of python available to you, there really is no holding you back. For example, say the assignment was to manipulate a picture, you can write very advanced algorithms to change it.

    You could write an algorithm using the urllib that gets the present temperature of the area you are at and then changes the photo to make it appear more blue (cold) or more red(hot) based on that number. The language of python is very flexible and if you have past programming experiences you can build on top of it and do very advanced things. While this is a relatively easy program to write, it would definitely give that ‘wow’ factor and the code would be understandable to most students after about half way through the course helping them to learn as well and inspire them to push their programming abilities.

    Also, The teacher plays a huge part in it as well. Right now I have one of the best professors I’ve had throughout my college career teaching this class, so that helps considerably, but I still feel as though JES is a great way to introduce programming in a way that allows people to do more than ‘hello world’ and run a for loop that adds ‘i’ on to it self every time.

    I’m in America and in my experience most schools in America don’t have a programming class that extends beyond HTML. So my advice is more for a class in which you have various levels of computer and programming understanding. If someone already knows C, then they could use the class (using JES) to learn python, how media manipulation works, and to practice their communication skills in helping fellow students to understanding core programming concepts as well as going above and beyond what the assignment stated.

    Reply to comment

  12. Posted by Connor Wilson | April 7, 2007, 7:07 pm

    This is entirely right. I finished grade 10 Computer Science (Visual Basic) and my teacher was boring, couldn’t program or keep the kids without previous experience interested. He was a business teacher more or less, but still, he could’ve done a better job. Not to mention he only gave me like an 85 :(

    Reply to comment

  13. Posted by Tony | April 7, 2007, 8:40 pm

    @Arron – you present a good argument, though I think the point here is that the course is structured in such a way as to give more flexibility to different levels of students. This is not, by any means, limited to a specific programming language or environment.

    By the way, Arron – since HTML is as close to programming as digital art, it would have been more appropriate to use a general term of “computer class”. Still, it’s sad to see such lack of interest from either students or schools. Computer Science is definitely much more applicable in everyday use than say Biology, Chemistry, or Earth and Space sciences.

    Reply to comment

  14. Posted by Tom | April 7, 2007, 9:18 pm

    I found this link on dzone.com. I just got out of university in the U.S. and I’m surprised (okay, blown away) to see a group of very motivated grade school students intelligently discussing this topic.

    I went to a relatively small high school in the Midwest and they only had one programming-related course. I think they used Visual Basic. Anyway, I had to skip it because it conflicted with jazz band.

    I’ve thought about this off and on over the years, and I think the best solution is to probably offer three courses in parallel for students:
    1) A general “Computer Programming” course that uses a high level language like VB or Python, and gets students into writing fun/useful interactives applications right away. You’ll still have to cover basic concepts like variables, loops, and functions, but it shouldn’t be demanding from a theory level and it should heavily encourage creativity (as opposed to copy/pasting instructor’s code for a complete solution). If students can get used to writing useful code in a high-level language environment, that gives them an extremely useful skill for any job, not just software development.

    2) An AP Computer Science course as a college prep class. It should have an emphasis on theory and be a hybrid between a math course and a programming class. Obviously from the name, it should get you ready to take the AP Comp Sci exam and get some college credit. The school can also pitch the course as a good course to take for prospective math majors. Tragically, there will probably be a low interest in this type of class and most schools probably can’t afford to offer it. Still, it should exist, and maybe schools could partner with colleges or other districts to offer it. These days you could even set aside a room and have students listen in to lectures through streaming video, webcam, etc.

    3) Local trade school/community college partnership. I think most trade schools and CC’s offer some kind of IT courses involving programming these days, and there’s no reason why grade 11, grade 12, etc. students shouldn’t be able to sign up for them. The problem is that these classes tend to conflict heavily with grade school schedules, and force you to sacrifice many other classes to attend them.

    Given the cost involved, and the lack of quality teachers, I think high school students in the U.S. who want to take a decent computer science course are in tough luck for a long time unless they happen to live next to a university. It sounds like the situation north of the border is similar. The silver lining is that given the nature of the field, and the growth of online communities like this one, over time it’s becoming easier to be self-educated.

    Reply to comment

  15. Posted by Tony | April 7, 2007, 9:42 pm

    Tom – thx for stopping by and sharing your insightful view. You’re absolutely right, it’s becoming easier to become self-educated in the field – in fact, most motivated computer science students are. With community such as ours (besides this blog, we also have an active forum and an upcoming programming contest platform to encourage practice.

    Though the bottom line is that there needs to be that initial programming course to spark a student’s interest. The sad reality is that a poorly executed course is likely to ruin that silver lining of an interest that could have encouraged the pursuit of self-education.

    Reply to comment

  16. Posted by Clayton | April 7, 2007, 10:06 pm

    Wow. I must say I am extremely surprised by the amount of feedback that has been put forward to this post.

    @Arron, to continue what Tony was saying, learning to program in any given language is becoming easier and easier to do with more and more newsgroups, forums and mailing lists forming over the internet. This is not just focused on Python, but an entire plethora of languages.

    @Tom, your theory is good, but again, courses would be cancelled due to class sizes being too small (I don’t know if this is the case in the US, but it is most of the time in Canada). Unless of course you mean that all the seperate courses would be taught, in which case, very few teachers would consider it unless they were extremely dedicated and passionate about computer science.

    Be sure to look for a follow-up article to this post.

    Reply to comment

  17. Posted by cbright | April 8, 2007, 12:11 am

    My high school offered computer/information science classes for grade 11 and 12 in the same room. I found they were largely self-taught, so you got out of them what you put in. Sure they could have been more efficiently taught, but that’s a criticism of high school classes in general.

    Sometimes the material was a bit out-of-touch with the students, e.g., the first two chapters in the grade 11 class was an introduction to Windows. Our test had questions like ‘How do you empty the recycle bin?’ (not joking). The next year I think the teacher caught on that most everyone had already used Windows before and skipped these chapters.

    I was one of two people who took the grade 12 class, ended up teaching the teacher some things I think, and got 100 in the course. I thoroughly enjoyed the class but could’ve used more of a challenge. There was a whole chapter on using the shape control in Visual Basic (I wish I was joking).

    For every assignment I would try to think of ways in which the project would be extended, and then add in the most interesting features. So my advice is: when you get a project, do everything that’s required, plus any other extra features you can think of, even if you don’t get credit for them. As I said, you get out of the class whatever you put in.

    Reply to comment

  18. Posted by Arron | April 8, 2007, 3:39 am

    You’re both right in that it isn’t platform specific, but what JES does is it creates a jython enviroment with special functions coded in Java. For example(sudo-code):

    def samplecode(picture):
    loop through (getPixels)
    getColor(pixel) and set red to 255

    getPixels and getColor our special functions, along with many others that allow one to more easily manipulate media. My point was that a platform exists(Jes Specifically) that can be used very effectively to teach programming to different skills and abilities. With C and Java you need to define if something is a string or a float, and with Jes, that isn’t the case so if you know that ‘2′ as a string is different from 2.0 as a float then that’s great, if you don’t it’s no real concern until it’s needed and you eventually get to the strings chapter, much later in the book.

    I agree that learning online is getting easier, but it’s not the best way to learn ( for many) and with a platform available for free that can be used, why not take advantage of it?

    Reply to comment

  19. Posted by Bobrobyn | April 8, 2007, 1:31 pm

    It was exactly the same at my highschool. We did have a grade 10 to grade 12 class, but grade 11 and 12 was always split. There was 5 people in my grade 12 class, and one of us, unfortunately, failed (lack of work ethic, really).

    What Tony said about Computer Science being more applicable to everyday life than “Biology, Chemistry, or Earth and Space sciences…”, and I’m inclided to agree. I would almost think that there should be a required grade 9, or 10, Computer Science class…or at the very least, a section of a science/math class should be directed at learning programming. Learning programming also helps with problem solving, logic, and just general reasoning ability….so it would be beneficial to everyone.

    I was lucky in my discovering of Computer Science: I took Computer Science course by accident, and thought that putting “Hello World” on the screen was stupid…why not just use a piece of software to do that (yes, I was ignorant)? So I ended up failing that class….although, it also happened to be the same semester as the one where I lost all motivation, so that could have been part of it as well. However, afterwords, I took a Computer Engineering course. We had to learn BASIC for some of the stuff we were doing, and I noticed that I was loving it. I started to play with it on my own, and once I discovered I was spending more time on the programming part of the projects than the actual engineering, I decided I’d take compsci class again. And now here I am, taking compsci at the University of Guelph.

    I think that part of it is discovering Computer Science as an interest for some people, but I know that it’s unrealistic to expect most students to form an interest in it. But can’t the same be said for other areas of schooling, like Visual Arts, Chemistry, Biology, and so on, which we were forced to take, even though we didn’t necessarly enjoy them? There really should be a required course or part of a course on it. Also, since very few people end up taking Computer Science in grade 11 and 12, maybe there could be some kind of standard distance education course, especially for those high schools that don’t have a computer science course in grade 11 and 12.

    At my university, there is such a wide range of compsci students. There are those that have never programmed before, and then those that have been programming since they were 10. Some kind of standard — some kind of distance education course, would be nice, because that way students that are interested in compsci could learn on their own time, and get credit for it, at the same time. *shrugs* I’m just brainstorming here. This is an important issue that needs to be resolved, not ignored, in my opinion.

    Reply to comment

  20. Posted by McKenzie | April 8, 2007, 9:35 pm

    Interesting discussion. As some of you already know I’ve been teaching High School Computer Science for 12 years. I think that first you are right about the quality of the teaching having a huge affect of the program. Unfortunately I think as far as teaching is concerned the old expression “Those who can, do. Those who can’t teach” actually has some relevence. The reason being is that it isn’t that hard to get a good job in the field with a CS degree, whereas some other degrees present a real challege when it comes to making money with your degree. Over and over again I see teachers teaching CS who don’t have a CS degree. The only way that this problem will be “fixed” is if a CS degree become less employable, which will push more qualified graduates into teaching.

    The shift from 5 years to 4 years in high school has had a huge impact on CS. Many of the best and brightest students don’t take CS because they can’t fit it in their scheduals. What was even worse about the “new” curriculum was that grade 10 was not a pre-requisite for grade 11. Which means the grade 11 can either drown those who didn’t take gr 10 or bore those who did.

    As an aside, there are new draft documents floating around talking about making Computer Science it’s own department and having seperate College and University streams. I really don’t see how this will work; as most of you are saying many schools can’t fill the current classes.

    Reply to comment

  21. Posted by Tony | April 8, 2007, 11:29 pm

    @Arron – I see what you’re talking about, and it sounds a lot like Processing. Tuning down the syntax and the exposed complexities in favour of working with media. Great stuff for an interactive media course, or to even capture a student’s attention. It only goes so far in terms of Computer Science though.

    @Bobrobyn – some excellent suggestions. Computer Science is really about a creative, yet absolutely logical expression of an idea. This fundamental idea is not getting the attention it deserves. You’ve also sparked quite an idea for offering distance education courses – I wonder if we could leverage our existing community to offer, or at least encourage such an opportunity.

    @McKenzie – another alternative would be to actually make teaching computer science a desirable position. I’d love to teach programming to a bunch of bright kids, but it is going to be “teachers college and dealing with whiny kids” vs. other alternatives such as “software development for a fun startup at 3 times the pay”. I suppose it’s too bad we’re in our 2nd dot.com bubble.

    Reply to comment

  22. Posted by Mike | April 9, 2007, 7:48 am

    Those who can’t do, teach. Nice post.

    Reply to comment

  23. Posted by Rohit | April 9, 2007, 7:47 pm

    First of all congratulations on you’re first blog post! :)
    Unfortunately Mike beat me to what I wanted to say – Those who can’t do, teach. That’s all there is to it. I’ve noticed that most of the bad comp sci teachers can’t do anything themselves and hence are always frustrated. They rely on the textbooks and can’t think beyond the scope of the book while giving examples or explaining concepts. It’s a shame because I noticed that in the field of physics it’s usually the ‘Best in the field’ teaching the future best. Well at least that is what happens in the better universities. I would love to see that happen in comp sci as well :) .

    Reply to comment

  24. Posted by Mike Minutillo | April 10, 2007, 4:08 am

    Great first post Clayton. I’ve been reading Tony for a while and I always find something interesting here.

    Although it was 10 years ago now, I graduated from a class of just 4 CompSci students. At the time, the rumors floating around were that Australian Universities actually preferred candidates who had not taken Computer Science as secondary school CS teachers were teaching too many bad habits.

    Of course, back then we were learning Pascal which wouldn’t actually allow bad habits :) . I had a great teacher anyway (so good I actually left university to go and work for him for a while) and I learned a lot. I would actually go so far as to say I learned more programming from High School than I did from my first year at uni.

    Reply to comment

  25. Posted by Jeff Brown | April 10, 2007, 1:38 pm

    This is quite the interesting discussion here. I am a 26 year old Web Design teacher in the great state of Maryland. I disagree with some of the statements made here.

    Those who can’t, teach

    I think this is an unfair statement. I think that everyone (ideally) finds a job suited on their strengths. I feel I am a strong programmer and a great communicator of information. I do not rely on one strength to be the reason I teach, granted there are many teachers unqualified to be teaching computer science, I think this happens for the following reasons.
    1. CS is in it’s infancy compared to other sciences. This is a relatively new field, not every generation had the opportunity to learn about Java in CS undergrad. I am a great example. I’m a fairly young guy whom attended a local state university. When I attended, my college was making the transition from teaching Ada to Java. I was one of the few whom escaped without learning Java. What a travesty this was. And I don’t buy the argument of those 40 somethings who earned CS degrees. CS was not even close to what it is now.
    2. Teaching is a standardized profession. Meaning that there are stringent rules about becoming, guiding, and even firing a teacher. Every year guarentees a step up in pay, 3 years (in my area) gives a teacher tenure thus making it very hard to get rid of them. For teachers, we know that when you are involuntarily tranferred that’s pretty much the same as being fired. Because of these rules it allows those people you are referring to (the ones who don’t know anything) to be put in situations where they are guarenteed a job because they have tenure but the school is in a damage control situation. One where they have to make this person fit into the schedule. This is sad. This is the death of public ed.
    3. It’s a dry subject. Let’s be honest, it is. It’s not easy to teach CS, you have to make it illusively exciting with rich examples and great resources. Which requires effort from the teacher, some aren’t willing to go that far.

    I propose that teaching be more business like. That teacher’s jobs rely on yearly evaulations. What’s that you say? There already are evaluation systems in place? Yes, but how many times does a teacher need a bad evaluation before a ‘warning stage’ goes into effect, then how many more do they need to finally be asked to leave. The only teachers we hear of being fired are the ones doing REALLY stupid things like having sex with the students or stealing money.

    I think that a teacher should be a good communicator, a strong leader, and passionate about the subject they teach. With those simple three things you can make the classroom an enjoyable place to be.

    Reply to comment

  26. Posted by Tony | April 11, 2007, 10:27 pm

    Right along the lines of Steve Jobs:

    I believe that what is wrong with our schools in this nation is that they have become unionized in the worst possible way. This unionization and lifetime employment of K-12 teachers is off-the-charts crazy.

    Ok, so that has upset a lot of teachers, but all of this does point out a flaw that it’s difficult to bring in new qualified teachers.

    Actually I would think that this problem appears in every classroom, and is not limited to programming. The only reason that this is so much more apparent with Computer Science is that there is so much out-of-class interest and self-learning going on. If a few enthusiastic students were to go home and play with lasers every day, I’m sure that they’ll start calling out on less-than-ideal Physics teachers just as much.

    Reply to comment

  27. Posted by Bobrobyn | April 13, 2007, 12:56 am

    Alright, it seems that we’ve identified a problem. Does anyone have any suggestions on how to fix it?

    Here are a couple of random points I’ve come up with:

    (1) For compsci, I think it would be neat to go the distance education root, like I mentioned above. The only way I see this happening, is if some colleges/universities pressure school boards, or something — especially a university like Waterloo, they have a lot of push.

    (2) The job security is just too good. I think it should be more like a university. A teacher gains tenure, and can loose tenure just as easily. That way, only competent teachers will stay on, and they’ll be less likely to burn out and just stop caring anymore. I have no idea how one would actually go about changing this, I just know that it probably should be done.

    “Computer Science is really about a creative, yet absolutely logical expression of an idea. This fundamental idea is not getting the attention it deserves.” — Tony

    That’s exactly why I think that the grade 10 class should be required. I know that’s asking a lot, but isn’t the point of highschool to get a round education? It would help with creativity, math, and science, all at the same time. I will admit that many students would hate it, but many students hate a lot of things. Not only that, but it would expose students to compsci, so they would see if they wanted to take more classes in it later on — just like grade 9 and 10 math and science classes! They do exactly the same thing.

    “It’s a dry subject.” — Jeff Brown

    A lot of classes in highschool can be dry subjects. It just matters who you talk to. However, I’m personally glad I took all the classes I did in highschool. It allowed me to see what I liked, what I was good at, and of course, what I hated and was no good at. Many students actually enjoy the CS classes material. I know that 80% of my grade 12 class did! (Okay, 4/5 people….but still!)

    Reply to comment

  28. Posted by McKenzie | April 13, 2007, 2:07 pm

    @Jeff Brown – “Those who can, do. Those who can’t teach” – No it’s not an unfair statement at all. It’s an old expression, obviously. All I’m saying is that for Computer Science, there is real money out there for those who are talented. That’s not to say that there are no talented teachers who are teaching Computer Science. I don’t like tooting my own horn, and for the most part, around here, I don’t have to. There are enough members of this community that have gone to Massey who can attest to the fact that I have both the technical and social skills required to deliver a program that is second to none.

    “It’s a dry subject” – are you joking? No, seriously. Is this some sort of humour that is even too dry for me to get? I can’t imagine another subject where you can use whatever content you want to teach the vital mechanics. Ask some of the Massey crew. Sure you can teach class stucture by talking about bank accounts and transaction fees, but you can also teach it by talking about Squirtel slapping Bulbasaur, or Grey squirrels chasing black squirrels in the park, or Dolfins with lasers on their heads detecting sea mines. I don’t recall the last day that has gone by that I havn’t had a good full-belly laugh due to something that has come up in my classes. Dry? … only if you let it be.

    @Bobrobyn –
    “Does anyone have any suggestions on how to fix it?”
    Well, I think the slowing of the economy will cause people with real skills to consider teaching as a viable option. I think you are right though. It is too secure of a job. Now, it’s nice to know that an administrator can’t simply get rid of me because I’m a pain in their butt, because I challenge their ideas and hold them accountable. The problem is I’ve been taught by, and have taught beside teachers who should not be teaching. I knew a teacher that was such a drunk that he got a DUI on the way TO WORK in the morning. This guy would “sneak” out during class, go to his car and have a drink. Teachers like that need to be fired, but we also need to do everything in our power to ensure Computer Science teachers are competent in the field before letting them in front of a class. That is very hard to do in practice.

    Reply to comment

  29. Posted by wtd | April 15, 2007, 11:27 am

    For those fearing CS is a dry subject, I also sincerely recommend The Poignant Guide.

    Reply to comment

  30. Posted by Jeff Brown | April 19, 2007, 9:17 pm

    @McKenzie –
    We are saying the same thing in regards to the old quote. but yes, it is unfair, it’s a stereotype, which in your case isn’t true, and in my case as well. It summarizes all teachers.

    It is a dry subject. Why do you find yourself reaching so greatly for profound and meaningful examples? It’s like a good steak, I love a good steak. After all my experience with eating steak I don’t need any condiments, but I remember when I was a wide-eyed youngin’ tasting my first steak. It needed salt, alot of salt.
    To drop the analogy, I needed those rich examples and sexy teaching schemes to get me interested, but now nothing’s more exciting than sitting down to code.
    It’s fun and exciting and kids need to just give me a week and I’ll prove that to them but it takes effort. It’s hard to show them the fun and exciting side.

    I feel like we are agreeing here. I think we’re saying the same thing but differently.

    Reply to comment

  31. Posted by Carl Michaels | April 23, 2007, 11:28 am

    Perhaps another teacher’s perspective would be appreciated. I have B.Sc. (Math) with minors in computer science and psychology. I have been teaching computer science for 15 years.

    Things I think matter:

    Students do not know what computer science is. They see “computer” in a course name and think its going to be another applications course. This is the single biggest problem. It behooves us to educate potential students properly about what to expect.

    Teacher’s ability. No argument here. I might offer a twist on the old cliché: programmer’s program. It’s easy to loose one’s problem solving ability if one is always following answer keys.

    Passion. This isn’t any different from any other field. How often have we all heard teachers say, “Well I don’t like this next unit very much but we’ve all got to get through it.” My students know I love computer science.

    The difficulty of the material. The sad reality is that too many students don’t have the desire to challenge themselves. Many are looking for the easiest options that will fill their timetable. There’s no point to watering CS down to make it more palatable to these students. Moderately sized schools like mine (650 students) will usually have trouble keeping their CS program viable due to lack of numbers. Too often I find myself teaching split classes (two courses in the same room at the same). This isn’t a good situation for anyone, but what choice do I have? It’s that or no CS at all.

    Things that matter very little:

    What programming language is used. This is a can of worms I’m sure we could discuss endlessly. Any non-specific high level language is fine.

    Coding styles. I don’t know anyone that uses flowcharts anymore so I assume this isn’t one of the methodologies Clayton was talking about. Structured programming vs. OOP might be a topic for discussion. I will not entertain OOP in a first course. I would loose too many students. I do follow current conventions, but I don’t see how it would be “easier or less enjoyable to program” without following them, especially since most students are unaware of anything outside the classroom. I teach current conventions so students can more seamlessly move on to post-secondary study.

    Reply to comment

  32. Posted by Jason R. | April 24, 2007, 8:04 am

    There is an excellent graphics programming library out there called Allegro. Its really quite easy to learn and it illustrates basic C++ programming concepts while keeping students interested. My professor, some fellow students, and I put together a game programming workshop where we taught high school students how to use the library. There were several kids that attended who barely had any programming experience. In the end, they all managed to create fun little 2D games.

    Reply to comment

  33. Posted by Lawrence Meyer | April 24, 2007, 8:04 am

    Well let’s see – I teach CS at the college level, often to dual enrolled HS and College students. here are my observations:

    “Computer science classes however, this dropout rate seems much higher compared to other classes”

    Drop out rate runs at least 50% or more regardless of the teacher. Why? Who knows? this is one of the biggest things all colleges and universities are having. I think it id directly related to the fact that CS is just flat out hard. Math, Physics, Logic and the ability to abstract problems – not many folks can do that successfully.

    “The teacher must have some way of keeping students paying attention to them, they must be passionate about the subject which they teach, or they will have no hope of keeping students enthralled by the subject.”

    People say “The teacher is boring” – get over it. you try being engaging and fun 24/7 – regardless of the problem set this stuff is not easy. I personally try to make my classes fun, I use current games and algorithms as well as problems that are current (not from 30 year old text books) and still students just don’t even try. Too many hours playing games vs. coding them. You are responsible for your education. No one else is. find something fun to code. Do some work on your own, heck heaven forbid you read the book/websites/whatever. Stop blaming the educator.

    “Most students coming into a high school computer science course are expecting to be able to program mind blowing 3D games within a semester.” Get real, that’s like expecting to take Chem 1 and expecting to do full blown gene sequencing and recombinant dna work. get a grip. You don’t have the math, algorithms or skills to even approach that. Not even with some of the tool kits. And if you can’t do it fast and quit – well I guess anything that is hard will force you to quit too. I takes years to become competent in any field, and more to become an expert.

    @Jeff Brown – “Those who can, do. Those who can’t teach” – No it’s not an unfair statement at all. It’s an old expression, obviously. All I’m saying is that for Computer Science, there is real money out there for those who are talented.

    Well, no. I did the “do” for years, commanded a real good salary and busted my butt. As I get older I realized that 60+ hours a week (on a light week), 52 weeks a year isn’t worth it. I teach because I enjoy teaching and the time (summer) that I get to work on my craft with personal projects. I no longer have weekend beeper calls, full blown design meetings with people that couldn’t design a cup and teams that can’t open an automatic door. You want money go for it, you want a life, hmmm good luck.

    “@Bobrobyn -
    “Does anyone have any suggestions on how to fix it?”
    Well, I think the slowing of the economy will cause people with real skills to consider teaching as a viable option. I think you are right though. It is too secure of a job. ”

    Secure a job? well maybe. Depends on where you are teaching and at what level. Almost all the teachers I know are dedicated to learning more about their specialty and field. The field is always changing, especially compared to most other static fields. So somehow you think the ability to fire someone will make them better? Good luck with that. Let me tell you, even with a slowing economy I could double my salary in an instant if I left teaching – I do this for the love of the field. Not because it’s stable ha!

    Reply to comment

  34. Posted by Deodiaus | April 27, 2007, 8:11 am

    Great thoughts kids. I am about 25 years older. I know what it is like.
    When I went to school, CS was not taught in HS at all. I took a summer class at a university. That was fun, but an awful lot of work for a “B”. I took honor’s calc and got an “A”. Later on in college, I stopped taking CS altogether because it was so much work. For example, each assembler assignment would take me 40 hours to complete. Instead, I took math and physics.
    When I graduated, it came time to get a job. Guess what, the only things I could find were programming jobs. Over the years, I took additional classes and filled in my knowledges with lots of stuff. I have work in computer graphics and CAD/CAM. This was all interesting, but some places, e.g. Intergraph treated me as a slave who wanted to work 70 hrs per week getting paid for 40.
    Fortunately, the boom times came in the late 1990’s, and I found a couple of interesting assignments at IBM Research. After that, the internet bust hit.
    Now, I am a sysadmin doing nothing worth discussing. I should have became a lawyer.

    Reply to comment

  35. Posted by Akmed | April 28, 2007, 5:12 pm

    @ llama112 – Are we in the same class? Honestly it is exactly the same at my school. 3 of the 8 students in my Java class care and the others play games all hour. We follow a book in my class because there aren’t enough students to have a formal teacher and a chapter takes about 2-3 days max (not doing any for homework) but the class takes 1-2 weeks per chapter because students rather play games than program, I’ve taken to using it as a study hour and completing all my homework. Because we are moving so slow myself and the 2 other students who do work decided to take an Advanced Placement (AP) Java class online along with the normal one provided by the school. Unfortunately the registration process has taken longer than anticipated so we will probably take the class over the summer.

    Reply to comment

  36. Posted by Doug Blank | June 10, 2007, 7:52 pm

    Thanks for the post, Clayton, and all of the comments. Very useful for us!

    I think that you have identified some of the key issues in high school CS education. We have some ideas about how to fix this, and it involves robots. Take a look at out stuff at http://myro.roboteducation.org/ and give us some feedback.

    Thanks again!

    Reply to comment

  37. Posted by Aziz | July 31, 2007, 1:43 pm

    I’ve only read half of the replies (there’s a lot, damn), so excuse me if this has already been said.

    I’ve finished my first year of Computer Programmer at St. Clair College, and I must say I was disappointed in the programming classes. They taught VB.NET, and it was agonizingly slow. I had already had much experience with programming, though no VB. I bought the textbook about 1 week before classes started and read a bit of it. These half dozen chapters were taught in the first 2 months. It was slow. No real theory concepts were introduced, and we were taught more of how to use VB rather than program. Not to mention, my second sememster teach Mrs. Dupuis had experience programming in the career-world, however had no knowledge of any standard practices and was hung up on VB6. It was common for me to point out something to her in class and her be “Oh, my, that’s new!”. And it was within the first 2 chapters of the text book. Another example is how we used OLD controls. We had to add the old controls to the toolbox (MainMenu comes to mind, rather than the MenuStrip that was already there).

    Well, that was half rant. Anyways, my point being that a student will have to delve beyond the classroom in order to succeed. My grade 10-12 computer teacher taught me my first programming using Turing, and I’ve learned on my own since. Of course, I’ve wanted to program since before grade 8, so motivation was not an issue for me.

    Reply to comment

  38. Posted by James (StealthArcher) | November 13, 2007, 12:55 am

    Heh, little late, but just found this one.

    I moved to a new city about 2 years ago, in february, and went to a school to play football of all things, signed up for a class whose name i didnt understand. And next thing I know I’m in the almost exact same situation. People trying to hard simply to go straight to game making. We had an assignment to make a mini story game (was supposed to be a few decisions with consequences and could all be in text), most people tried too hard and wound up with low low marks by trying to figure out the sprite module ( we used turing), while me and the two others in the class who actually came because we were interested made text based ones, and mine scored 98 and you could actually equip fight run, and a few other things(I’m not going to mention the pain it was to make this without knowing arrays yet…). Sure it was all text but it was fun to most, and *key point* it ran. Out of 26 students, only 8 of the programs ran, and 4 of them almost always crashed halfway through.

    Enough bragging about me though, My teacher was better than this article states, knows vb and turing decently well enough to help you, and could understand what i was doing when i started copying from you guys. Now I learn on my own, and am heading bacxk to another class(now gr 12) in jan., Learning vb, I cannot wait to see what happens this time XD

    Motivation was not an issue once I started, I’ve always liked computers, and figuring out what makes them run is one more thing I can learn.

    Reply to comment

  39. Posted by Dave | January 21, 2008, 6:19 pm

    Bah ! You kids have it easy these days !

    When I was in the 12th Grade computers class the teacher was reading a book on Pascal out loud to us. Pascal ! I got the feeling that was about as large a conceptual leap as he could manage from FORTRAN. He didn’t even bother to read ahead the day before and hence he frequently mis-understood concepts in the book and explained completely the wrong thing to us. He was actually a Maths teacher who had been thrust into computing because he had the least charisma and self-confidence of the Maths department.

    If you wanted to learn, you’d have been better off doing it on your own.

    We had another computers teacher who was also a Maths teacher but who actually loved computers. Unfortunately, he was better with the younger kids and didn’t teach 10th, 11th or 12th Grade.

    When I got to University, my Dad gave me his PDP-11 handbook and all his old punch-cards. (Then they taught me Java… Oh well.)

    Reply to comment

  40. Posted by Increasing interest in Computer Science: Programming is about manipulating data | April 15, 2008, 2:15 am

    [...] in Computer Science: It’s up to youComputer Science at Waterloo: the new Scheme of thingsKeeping students interested in Computer ScienceMIT highlights for high school studentsComputer Science at Carleton [...]

  41. Posted by protospike | August 14, 2008, 1:25 am

    I agree that the instructional style matters. It matters a terrible lot.

    However there is also another ingredient. Internal motivation. Everybody has their own motivation for taking up a course in CS (computer science), SE (software engineering) or CSSE. I’m doing a CSSE course, kinda like a mutated version of a plain vanilla CS course ;-)

    Anyway, my motivation comes from my interest in building stuff. I want to create something that people can interact with, something that humans can use. Sure, the process of getting to the final product is very interesting too, but I love just _creating_ shit.

    Other people don’t care about the final product. They care purely about the challenge of programming. It’s not a means to and end. They are interested in the logic, the math, and the dark esoteric corners of programming languages.

    I think people should understand what their motivation is. Motivation is diverse – you don’t have to be a math freak to love CS :-) . But if you figure out they don’t have one, then it’s probably not a good idea to be studying CS, SE or CSSE :-)

    Reply to comment

  42. Posted by Amaterashu | August 17, 2008, 10:27 pm

    I’m CS student and I learn java now.. i have my favourite programming teacher..
    he always encourage us to learn and learn.. and what i like the most is he’s funny..
    well, programming is hard, so in the middle of lesson. he always make joke..

    So, to make student interested in CS and programming is. don’t make it looks difficult and serious lesson

    Reply to comment

  43. Posted by Excelling in Computer Science: It’s up to you | CompSci.ca/blog | June 30, 2017, 2:27 am

    [...] a week ago, I wrote an article on keeping students interested in computer science. After that article was published, there was a record breaking amount of feedback concerning it. [...]

  44. Posted by Brandon | September 30, 2020, 8:29 am

Post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>