Geeks With Blogs
Susan Canaga Computer Science Teacher (Former Software Dev Manager)

A request of IT and computer science professionals.......

High school teachers are looking for an industry perspective on what programming languages should be taught in high school....

Some teachers feel that Visual Basic is not useful in industry. Others find that jumping into C# and Java is too much for a student that has no exposure to programming. Another discussion is that some do not agree with the AP Board's decision to switch from C++ to Java. They feel C++ is important because of the demand in industry. I'm also reading that .NET skills are becoming increasingly important.

What thoughts do you have on this?

Posted on Thursday, January 11, 2007 1:26 PM | Back to top

Comments on this post: High School Computer Programming Languages

# re: High School Computer Programming Languages
Requesting Gravatar...
I am a firm believer that the students should learn C# or Java before any other language. These C based languages embrace current programming standards such as object oriented design and inheritance ideas. Concepts regarding memory and performance are best communicated using Java especially. VB can rapidly create applications and that is not what should be taught first. We want to teach the fundamentals of computer science, not how to put a button on a page and handle a click event.

Regarding Java vs. C++: Java is the correct choice. While there are many merits of C++, Java shares the important ones. Further, Java still has wide industry support whereas C# is taking over for C++ (in the MS world). The University of Washington teaches it’s first two CS classes in Java as well. One major downside of using Java is that it’s IDE support pales in comparison to C++ with Microsoft’s IDE support. I do not see a large enough different between the two languages to teach in C++. C++ also uses outdated semantics for working with inheritance.

I consider C# superior to Java in that it can make complex projects very easy to code. Java is excellent for teaching about memory, performance, and data structures, but if you actually want to teach how to connect a database to your application, C# comes with everything needed out of the box. Never once have I had to write my own sorting algorithm out here in the real world. C# does it for me. (I value greatly my knowledge of how to do that, however.)

ASP.NET is an amazing thing. It can be used to connect people to data very easily in only a few clicks. Don’t teach HTML by itself, that’s a waste of time. Teach ASP.NET. I still don’t know everything about HTML, but Visual Studio does. Visual Studio can write most of the HTML for me, so I use that. It cannot write the simple business logic (C#) powering the page and it is there that I get paid to spend my time.

I started programming in C++ and that gave me a massive advantage over those who were taught VB. After C++, Java was a breeze and C# easier still. If I had started in VB, I might still not know what a class was or why inheritance mattered.

SQL is extremely important. Just teach some basics and they can figure out the rest. Students need just enough to insert, update, delete, and read from the database.

Don’t go Open Source. Don’t do MySQL or PHP or any other open language. Why? Microsoft. Microsoft will give us deals, support, and could possibly hire these kids later. Let Microsoft help fund this stuff and once the students know the principles of software development, let them move onto open projects on their own. I fully support Open Source projects, but if we can get M$ to help pay for stuff…
Left by Eli Thompson on Jan 11, 2007 2:08 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
I actually teach both VB and Java. The VB is for the non-college bound and the Java is for the college board in our distict.

I'm a big advocate for Visual Basic.

The prime reason, is that some form of Basic has supported my husband and myself for the past 25 years. He started with Business Basic and now programs in Fox Pro Visual Basic.

My next reason is the motivation factor. My VB students are writing their first game next week. A full functioning, other people can play and enjoy game.

My Java students aren't close to that -- and the AP I kiddos just did their first game after a year and a half.

Additionally, one of my VB students was able to write an application for a parent the first month of school -- one that she needed -- a BMI calculator. She was impressed. Anything that will impress parents wins friends for me.

By the way, many of our college bound end up in VB due to scheduling problems, and they do just fine in AP the next year.
Left by Kathleen Weaver on Jan 11, 2007 3:51 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
If comments from random web surfers are welcome, here's my two cents:

I recommend Python as a good first programming language; one made with teaching in mind.

Python doesn't have the well known "public static void main" problem of Java and similar languages. (That refers to forcing first-time programmers to digest a lot of abstract concepts before they can understand a hello-world program.) Python also allows more freedom in the approach you want to take. It supports procedural, functional, and OO paradigms nicely. Java and C# are somewhat stuck in OO and weaker in other paradigms.

It's worth noting that MIT just switched from Scheme to Python for their introductory CS course. They describe the curriculum as "a practice-theory-practice model: First, a task is presented and students work on it. Then, students learn the theory that underlies the problem presented, and finally the students tackle the problem again, given these better techniques." Google makes it a point to hire Python programmers, including Guido van Rossum, the developer of the Python language.

Also, you might have a look at the book: "Python Programming: An Introduction to Computer Science". I've heard good things about it.

There are plenty of languages to choose from. Most of what can be said about Python probably applies to Ruby, a "hot" language at the moment. Second to those, Java or C# would make reasonable choices, although you have to ask your students to take a lot on faith at first.

Whatever language you choose, it will be obsolete soon anyway. Teach concepts. Real knowledge has a much longer shelf-life than the latest tech-triva and it's a lot more fun to learn and to teach.

In an early class I took, we built a graphing scientific calculator as a project: enter an algebraic formula and the program graphs it. I remember nothing about Pascal, the language we used. But it incorporated parsing (for the linguistically oriented), algebra (for the mathy), and pretty pictures (for everyone).

As an aside, I have to say that the previous poster's comments about avoiding open source are completely silly. I am a professional software engineer. I use open source software and commercial software daily in my work. There is no advantage to limiting yourself to one side or the other in that debate.

Sorry to rant. Good luck and have fun.

Left by cbare on Jan 11, 2007 3:52 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
Well, I'll chime in with my two cents. The college I went to chose the route of not teaching ANY programming language and instead focused on development theory and practices given that development languages change and evolve.

Their reasoning was that by learning the basics of development and understanding the theory, you were then prepared to pick up any language quickly.

It seemed to work for me and I've had no trouble learning any language at this point and have just over 8 years as a software developer now. So there's potential that it would work for high school students as well.

I think if more people were taught development theory instead of a specific language we'd have less of these holy wars over which language is best and less hesitancy at being proficient in a couple languages.

Left by George on Jan 11, 2007 3:57 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
Here are my 2 cents...

I am a self taught programmer. No formal "programming" education. My high school didn't offer any courses, so I taught myself. I started with basic writing my idea in some pseudo code, and then translating into whatever language I thought would work best. This has allowed me pick up new languages quickly, all I need to learn is the syntax and I am off and running. I've managed to learn (reasonably well) VB6, VB.NET, C#, C, Pascal, Turbo Pascal, C++, PHP, VBA using this method.

I would suggest you teach theory and principals in pseudo code format, and then let the students decide what language they want to implement them in. The key in this method would be just having the tools available for the kids. This would work well for the college bound and AP route. For the rest, VB.NET will keep them going quite well.
Left by thorkia on Jan 11, 2007 4:32 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
The nice thing about VB is that for those just starting out, its easy to understand. The language used is much more english-like than C# IMO.

I got a kick out of Eli's post as well. He talks about how C# and Java can teach teh "fundamentals" better than VB, yet tells you to skip HTML, which IS important for web development regardless if you use a code generating tool like Visual Studio and ASP.NET: HTML is fundamental to web development.

George is right on though: it would be nice to create a generation of developers that aren't arguing about VB vs. C# vs. Java, and just use whatever tool is best for the given situation.

As an example, I prefer VB. But if I'm working on a project that I know is going to be taken over by a client's IT department and they're a Java shop, I'd code it in C#. Language preference gets trumped by what's the best value for the customer; in this case, giving their employees something that's easier to pick up.

But I digress...we're talking high school students. I'd say stick with VB. You can still teach OO principles with VB, and its not the second hand language some make it out to be. Besides, it all gets compile into the same IL...

Left by D'Arcy from Winnipeg on Jan 11, 2007 7:23 PM

# re: High School Computer Programming Languages
Requesting Gravatar...

I am not surprised that you have drawn a vast array of opinions. Some opinions exhibit the language bigotry that exists in the industry. Many of us within the IT community have tried to dissolve this bigotry particularly among the VB.Net/C# languages as they are both based upon the .Net framework.

So to address your particular statement "Some teachers feel that Visual Basic is not useful in industry" I would disagree with those opinions. I have provided VB.Net, C#, and ASP.Net applications to multibillion dollar global clients for years. VB.Net should not be diminished as an insignificant screen designer. You can write the same object oriented multi tier applications in VB.Net that you can in C#.

There is a limited set of constructs that you can use in C# that you cannot readily use in VB.Net and in some instances the Visual Studio does a little more hand holding for VBers. But designer/development tools is a whole different discussion.

With the right discipline you can achieve the same proper code in either language to achieve the same sophisticated functionality and reusable code. In fact, I am an Architect/Team Lead consultant and I usually try to find team members that can handle both languages.

I do agree with most respondents to your post that say programming theory is important. In fact a good lesson in Logic is probably the best first step. From there I would let the students build small apps in either VB.Net or C#. The nature of a classroom exercise does not dictate the choice of language. Most of my colleagues seem to have missed the mark in this regard. You are not building an Enterprise strength application, you are trying to teach students fundamental programming skills.

I have responded primarily from a .Net perspective, and your comment, "I'm also reading that .NET skills are becoming increasingly important." strikes me as funny. There have been many career surveys over the past year that have indicated that .Net developers are among the most saught after, highest paid developers in the industry (for the moment).

Here is something to think about. When I was in College my first language was a 10 or 20 command language that was completely made up by my professor. Of course it wasn't meant to teach the complexities of object oriented development, but it clearly conveyed the skills needed to think logically.

So to conclude, I would say language does not matter. C++, Java, .Net, Assembler, Cobol, PHP, javascript.... whatever! These and many more languages are still actively used in Fortune 500 companies today and they are all valid languages. A good programmer is someone who can understand a problem and come up with a logical solution to that problem. The language is secondary.

Left by --Chip Lemmon on Jan 11, 2007 8:39 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
In this day and age, programmers MUST know multiple languages in order to be competitive. I recommend:
one Macro Language, one Mainstream language, one web-Scripting, one mainstream Scripting language and a sincere familiarity with a web-only language.

- VBA (Excel Edition)
- ANY .NET language (or Java)
- JavaScript (or VBScript)
- Ruby (or python)
- ASP (or PHP)

With that said, the easiest language for a student to learn with a great IDE and a great help system is VBA. Yes -- VBA.
Students can watch the results happen immediately without all of the compiler McNasties.

BTW, my (current) languages are (self-taught):
Visual C++6 (MFC), C++ 2005, C#,
Ruby, VBA, ASP
Left by Tom Hines on Jan 12, 2007 4:40 AM

# re: High School Computer Programming Languages
Requesting Gravatar...
No shortage of opinions on this one. There are a few on my blog as well. When I am totally objective (as much as possible) I tend to think that the most important things are first teacher knowledge and interest and second ease of learning the language and its IDE.
You can't force the first. Python is attractive on several levels. I have been a big VB supporter for years and I still think it is a good choice.
I don't understand the comments about using C# over VB "because the VB students will spend too much time on the UI" BTW. The UI stuff is just as easy (in fact just the same) for C# as VB. Managing that sort of distraction is a teacher issue not a software one.
Left by Alfred Thompson on Jan 12, 2007 9:28 AM

# It shouldn't be brand names - re: High School Computer Programming Languages
Requesting Gravatar...

Every time this topic comes up, we end up swapping brand names, which is fair enough when it is a matter for making a list for people to choose from, but (to Eli Thompson) it is NOT computer science, it is the habit of common computer scientists you are talking about. So the questions when posed are a question of choice at levels. VB versus C++/C#/Java/Python is a matter of tea versus coffee (Java, C++, C#, Python are descendants of a compromise algorihtmic description system between the representatives of ACM and GAMM in the creation of the three Algols; Basic was essentially an attempt to get the expressivity of Fortran to be interactive, with an addition of features found in JOSS and Algol60 developed by two visionaries at Dartmouth).

Python versus Java is more like Coke versus Coffee. Java versus C# is like Coke versus Pepsi.

Dijsktra himself said computer science is about computers like astronomy is about telescopes.

So the question really is - do you want a programming language that best prepares children to learn how to work with computers (choose a language sold by a big company that will assure work: Java, VB, C#) or a language that expresses current ideas about programming design (C# or Python or Fortran 2003).

Then there is the question of the IDE - the more handholding and help the better. Intellisense in Visual Studio is hard to beat.

Then there are those that are designed to teach computing science in a clear manner: Scheme, Squeak, Haskell. But they hold you back at getting work.

There are incredibly powerful systems like the APL languages that enable powerful and laconic expression of thought without destructive reductional thought, but are hard for many people to read/understand.

Utility languages like SQL, PERL, PHP, Javascript are incredible powerful in their domain, but fall away from that position of power when building up to applications.

Then there are systems designed to express complicated logical problems easily - Prolog, Simscsript, Snobol: these are hard to bend to workaday programming.

None of these are /good/ programming languages though. But if you want to teach kids how to write algorithmic programs in a way that avoids bad habits, Python is the least worst as it was designed to this precisely, it is the Dartmouth Basic of our time, and Van Rossum put a lot of thought into it to achieve that goal.

But I question (like many others) where teaching people reductive thought leaves experimental computer science. There are no "pen and pencil and paper" equivalents for computer science. Everything buys into a particular genre of the computing zeitgeist - brandnaming, faddism, traditional approaches, ease of establishment.

Disclaimer: I am a historian of programming languages and have examined well over 10,000 of them in the last 14 years. I have read too many empty statements by manufacturers and programming pundits that say the same thing about different systems. And rather sadly, many things that were once possible to achieve in computing are no longer because of the prevailing reductive/algorithmic paradigm.

(this failed to post the first time, so I am reposting JIC)
Left by Diarmuid Pigott on Jan 15, 2007 6:42 AM

# re: High School Computer Programming Languages
Requesting Gravatar...
Just background: I've been programming for about a third of a century now, first in academia and then in industry. I currently use C#, C++, Visual Basic 6, Perl, SQL on a regular basis.

I don't think it makes the slightest difference which language you teach first, so long as it's complete enough to teach what you need to teach. Those who are interested and good at it will be able to learn others quickly, and those who aren't will forget all about it.

What you need to teach include algorithms, data structures, O-O, state machines, writing comments, proper design, etc.

For any given language name or buzzword like .NET, throw a rock and you'll hit a dozen people who can do it. But I've seen so many fragile ad hoc solutions for problems that could be more easily solved by well known algorithms that I sometimes want to shake people by the throat.
Left by Eric Pepke on Jan 25, 2007 7:45 AM

# re: High School Computer Programming Languages
Requesting Gravatar...
Hello y'all. I learned in the old days with fortran, pascal, and cobol. I used to program for commodore 64 with my friends - ever hear of smurf target practice. I teach high school programming and have struggled with this question: what language should we study? Currently students think that CS classes should mean doing whatever you want on a computer: surfing, blogging, youtubing, etc. I have a hard time getting students to sign up for CS classes in the first place - most students think that programming means playing or designing games. They are shocked to find in Web Design class that something like HTML even exists - they thought they'd play games .... I guess that my current conclusion is this: if the class introduces students to programming, the language probably doesn't matter ... if they hate the class though, they will tell their friends - and it will no longer be offered unfortunately ...
Left by Jimmy Smithson on Mar 27, 2008 3:38 PM

# re: High School Computer Programming Languages
Requesting Gravatar...
I'm looking for programmers who knows any computer language or any new programs and can teach.
I study to "progammer" at university in Kyrgyzstan(Osh).I think, if I'll find some teacher I talk to our Dean to make a contract with him
Left by Said on Nov 08, 2008 12:10 AM

# re: High School Computer Programming Languages
Requesting Gravatar...
i like it your work and your interest in permoting these such type of good work because i like programming very much and i am a very good programmer and i have devlop and design lots of programs
Left by robinglow on Jul 20, 2010 7:58 AM

# re: High School Computer Programming Languages
Requesting Gravatar...
Left by TAREL on Sep 26, 2011 11:18 AM

Your comment:
 (will show your gravatar)

Copyright © Susan Canaga | Powered by: