Why do many colleges and universities insist on scaring away curious or uncertain people who could become excellent developers and Information Technology professionals? Take a look at the way many of them teach an introduction to Computer Science class and you can see how it might look intimidating and cause people to think they can’t be programmers and never go any further. They could use these courses to show poeple just how easy it is to get a computer to do their bidding and increase the population of people who call themselves Computer Programmers.

I use my own daughter as an example. She is a Psychology major with a math minor and one of her Psychology professors encouraged her to take a Computer Science class. You can imagine how thrilled I was to hear of this. Unfortunately, her university teaches intro to Computer Science using Java and Eclipse. I’m not going to say that Java is a bad language, but I don’t think it is suitable for an introductory course. It definitely has use cases, but the syntax isn’t friendly and it forces students to learn concepts that are better suited to an cntermediate or advanced environment. I’d say the same about C++, so don’t think that I’m singleing java out.

Instead of dealing with compiler errors and excessively criptic syntax, new Computer Science students or people that are simply curious should be learning the more basic programming concepts. I’d like to see a curriculum that shows algorithm development and the basic programming cncepts. Not specific Algorithms mind you, but how to break a problem down into the basic steps needed to get a program running. Disecting the problem statement into the bite sized chunks that allow us to write programs that do useful work.

Following a block on disecting the problem, students nhould be introduced to the other basic concepts that almost all languages share. These include variables, loops, other control structures, presenting output, and taking input from users. Instead of difficult concepts like classes and inherritance, and all the complexity that goes along with it, we should be teaching recursion, functions, and return values. I’m not saying we should teach them a visual programming tool like Scratch, but why do so many schools insist on a compiled language for an introduction to programming or computer science in general?

Python, Ruby, or other scripting languages do a much better job of providing the basic concepts of programming without bogging down in minutae that isn’t that important to people who may just want to know what this programming is all about. I would even go a step further and introduce them to JavaScript as a first language. It doesn’t require anything more than a text editor and a browser. There is no need to dedicate a class or lab time to installing the development environment. Almost every single modern computing device is preconfigured to do beginning JavaScript development.

I have to disagree with any academic that ever tells me “It’s the language that corporate America wants us to teach.” If you ask a manager if they want a programmer that knows everything a lot about Java or someone who has done some work in a wide variety of languagues, I’m betting the smart ones mill pick the person that learned to program and to learn languages. So not only should colleges not start with Java or C++, halfway through the introductory course they should change to something that allows more complexity and teach students that computer programming is all about learning and exploring the next language. You nver know what tool is the best one for the job, but if you understand the basics and can learn a new tool you can always find the right one!