Welcome to MSDN Blogs Sign in | Join | Help

Computer Science Teacher - Thoughts and Information from Alfred Thompson

Alfred Thompson's blog about teaching computer science at the K-12 level. Alfred was a high school computer science teacher for 8 years. He has also taught grades K-8 as a computer specialist. He has written several textbooks and project books for teaching Visual Basic in high school and middle school. Alfred is the K-12 Computer Science Academic Relations Manager for Microsoft and is trying to be the Microsoft Education Blogger.

Syndication

News


Featured in Education.AllTop.com



TwitterCounter for @alfredtwo




Calculators and the Self-Taught Programmer

Recently there was a tread on the Advanced Placemen Computer Science (AP CS) teacher mailing list about students who were teaching themselves to program using programmable graphing calculators. There were some strong feelings about this trend and they were not positive.

The limitations of these calculators in the way the programming language was structured was given as being a big part of the problem because it taught bad development practices. For example students had their code print out results rather than develop methods (functions) that returned values.

There may be some truth to that of course. But I wonder if the real problem is just the fact that students are teaching themselves in a vacuum. Just as a lawyer who defends himself is said to have an idiot for a client I wonder if someone who teaches themselves often has a poor teacher.

I do think that someone can learn a lot on their own using books, mentors and other resources. But I don't think one can do a good job of learning programming using just a language reference guide and a few bits of sample code. That is how I believe most or at least many self-taught programmers are learning how to program. Even with a great programming language there is more to programming than just knowing the syntax of the language and some basic concepts. There is a lot of theory and best practices that are very hard to reinvent from scratch. Someone learning to program on their own is likely to fit programming into their own limited experiences at problems solving and algorithm development. They are not going to reinvent a whole set of best practices which they might easily learn in an organized class with a well-trained and experienced teacher and a textbook.

Of course I have run into many self-taught professional programmers in my career. But I think that it is safe to say that they have learned a lot from other, more experienced and professionally trained programmers, from books, from reading a lot of other code and from long periods of trial and error. Most of them would have been better still if they had more formal training. In fact many of the best started out learning informally but added formal training later in their careers.

I think that most students who are learning how to program using programmable calculators are learning bad practices not just because of the limited capability of their calculators but because they are learning without proper guidance. People do write great code in assembly language which is far more limited than calculator languages but they do so with some training and guidance. We offer training in computing and programming late in the educational process. We could teach students to program in middle school. Problem solving and computational thinking could come even earlier. But because we don't do that some students are going to try to figure it out on their own using less than ideal tools. We should not blame the tools but the system which has let these students down.

 

Technorati tags: , ,

Published Wednesday, October 04, 2006 2:21 AM by Alfred Thompson

Comments

# re: Calculators and the Self-Taught Programmer @ Wednesday, October 04, 2006 12:09 PM

I tought myself. I started with a QBasic language reference and just a friend to ask questions when I couldn't find the answer. Sure, I wrote some crappy code back then, but I think I am an excellent programmer because of the fact that the only way I could learn was by being dedicated to it.

When someone else is teaching you, it's a chore. When you're doing it for yourself, if you can even get past a few months and you're still sticking to it, then you know it's the job for you. It means you WANT to learn.

I've come a long long way from my QBasic days, but I learned alot from other people's code and MSDN. Also I have a ton of books but they're mostly used as reference. My particular favorite is Design Patterns.

Now where I do feel I missed out big time was the basic computer science fundamentals. I would never cut it in this business 20 years ago because I'm not good at writing my own high performance sorts or talking to hardware devices directly. I am a high level, object-oriented developer.

In one sense, I agree that just a compiler and a language reference will not get you very far. You need to exchange ideas. But I think a college classroom is hardly the best way to do that.

Anyhow, most people I know that went to school for programming suck, and all the really good programmers I know taught themselves so...

Josh Einstein

# re: Calculators and the Self-Taught Programmer @ Wednesday, October 04, 2006 1:47 PM

I wonder if it is only the extremely talented self-taught programmers who make it into the profession though? A great many never develop the skills they need. On the other hand a college trained programmer can generally easily make the starting bar at the professinal level. Once the career is started everyone pretty much learns the rest on the job.

I had the basics when I left college (31 years ago) but what I learned about being an OS developer I learned on the job. I went back to school to learn about compilers and such. So it was a mix of self-taught (on the job) and formal education that worked best for me.

Alfred Thompson

# re: Calculators and the Self-Taught Programmer @ Wednesday, October 04, 2006 6:09 PM

In some sense everyone is self taught -- it is a question of what they are ready to learn and how they find that ... Even the formal education processes won't 'sink in' if the student isn't receptive.

The challenge with our calculator groupies, or more perhaps with our video game groupies is to find a way they can connect into the right resources when they need to take that next step. ...

Hmm ... future XBOX program: "Grand Auto Programer" -- or something like that -- moving up a level requires demonstration that you have mastered concepts from the level below -- nothing new for gaming -- just the topic and such.  (Differs from Alice if it is done right, by having 'mentor' avatars who suggest resources and methods at key times...)

Jim Isaak

# re: Calculators and the Self-Taught Programmer @ Wednesday, October 04, 2006 6:31 PM

I think if you focus on the formal education level of the programmer you are missing the most important qualities.  Those qualities are the ability and willingness to both learn and to teach.  Good programmers know that they can learn from everyone and they share their knowledge willingly.  While two of the worst programmers I have ever worked with both had Masters, the reason they were bad was because they didn’t think they needed to learn anymore.  Basically, they thought they already knew everything and this was reflected in their inability to learn real world programming practices.  Their arrogance was their downfall.

I have also worked with self-educated engineers and have found most of them to be very good.  Because as Josh pointed out, they have a passion for the technology and they were also willing to learn and to share.  And to even out the good engineer scale for those who get a formal education, I recently had the pleasure of working with a programmer who has several Doctorate and Master degrees.  Not only was he really smart, but he was a great teacher and student.  A joy to work with, a good designer, and very productive.

Kim Greenlee

# re: Calculators and the Self-Taught Programmer @ Wednesday, October 04, 2006 7:24 PM

Wow, this is a great topic, and brings back memories. Back in a year of college (in a rather advanced school called Digipen) I was in the same group as a very bright guy who already had a BA in CS; while I had been self-taught in C++ about 4-5 years, up to this point the only real course in school on programming I had took was one on Java. However, what shocked me is that I ended up spending a fair amount of my free time helping this person with his homework for the programming classes, explaining most of the stuff to him.

On the other side of the coin though, around the same time I also was granted developer access on a large public cross-platform library for a year or so (perhaps "mistakenly" :D). The thing had to support around 20 different compilers and run on 6+ different platforms. Now one is working with several other Phd.s and all of those missing skills are simply assumed and your bad development practices are front and center; if that new feature you introduce causes bugs or breaks on one of the other 19 compilers, you do not get someone trying to help you out; instead you get a note from someone wondering why you broke their program :D. This gets worse if it is one of those things you should have learned in school but your book never really emphasized (like order of operations), so someone else will end up fixing it and they will not be happy and, since it is assumed you know it, they will probably not bother explaining it to you :\. Granted this is a "formal training" of sorts, but probably not preferable since each little thing learned becomes its own seperate war story :D.

So, I think "more experienced" is really a relative thing here; I don't really see either the informal or formal as a "bad" way of doing things (although I can definately see this point of view). I imagine eventually either way through trial and error one will learn eventually.

WikiServerGuy

# re: Calculators and the Self-Taught Programmer @ Thursday, October 05, 2006 8:09 AM

The obvious next question is should more people have a formal education in programming/computer science if the best programmers are self taught? Or does the formal education make things worse?

Alfred Thompson

New Comments to this post are disabled
Page view tracker