Sunday, May 13, 2018

Does It Matter What Programming Languages We Teach in High School

I’m tempted to just leave this post blank and see what sort of comments it gets. But I am incapable of that. Sorry.

Assuming we are preparing high school students for university and other advanced education and not for jobs right out of high school, what difference does it make what languages we teach? After all, concepts are what really matters. It is hard to pick what languages our students will be expected to learn when they get to higher education.

Universities are using C++, Java, Python, Scheme, and who knows what else as their first programming language.Can we teach them all? Not hardly. Often we only have students for a semester or two. If we’re lucky three or four semesters. A few students in a few schools will have more. But still there is an awful lot we could and probably should be teaching them. Overloading the languages is not likely to be helpful.

There is some indication that the second programming language is the hardest to learn so maybe we try to teach two and not worry too much about which two. At least they will be well situated to learn what ever their university professors throw at them.

On the other hand some would argue that with limited time we should go all in on just one. One or two the question becomes which one or two? Does it matter as long as the basic concepts are taught?


Anonymous said...

Prioritize a combination of a language that is enjoyable to use, a pretty IDE, and something that prototypes quickly so students feel like they're making progress. When I first learned to code in high school I was taught Java, which was boring + lame and I felt like I put in alot of effort to hardly make anything. I took one look at Android Studio and decided that making apps was for boring old nerds. It wasn't until I discovered Swift that I realized how fun coding could be and how quickly I could bring my ideas to life. Of course, Xcode is not without its fair share of issues either.

Anonymous said...

(Same person here) Netbeans? Eclipse IDE? please murder me. IMO "falling in love" with programming is far and away more important than fundamentals at the beginning. So either making a cool app or an experience that resembles mainstream media's misinformed perception of hackers as much as possible.

Garth said...

I am a believer in teaching my students how to learn a language. Like you say, who knows what the flavor of the month will be when they hit college. Every time I talk to a university programming instructor they all say the language is unimportant, the ability to think and problem solve is. I like doing the same program in two or three languages. Spend a lot of time in design for the first language, then play with syntax for the next. I also think that HS language depends greatly on the teacher. If a teacher feels they can teach with the language, that is the best language to go with. From Scratch to Java, other than syntax, they all require the same teaching strategy.

If I were teaching for industry my teaching languages would be very different. More like Swift, HTML, Android Studio, JavaScript and other app writing languages. If a language cannot write phone and tablet apps its future is limited. Luckily I am not teaching to industry.

Brian Sea said...

I'm mostly with Garth on this one; Though I approach it differently. I attempt to instill that language is mostly unimportant. In the first course, I'm more interested in getting students to think through a problem, abstract patterns, design solutions, think about how solutions break, and putting the pieces together. Students then do projects in whatever they want. Sometimes, they have to learn parts of a new language.

I teach two intro courses -- one in a functional language (JS) and one in an OO language (Java). The languages were chosen because of the topics covered (Server/Client/Web vs. Android). Both lead into a Data Structures course. That means I get students at least seeing more than one language, and they begin contemplating why some languages are better than others for particular problems.

The skill of Programming is way down on my priority list, unless I know I students actively looking for internships.

Edward Bujak said...

I wholeheartedly agree with Garth and Brian. The programming language is less important than the valuable topics, strategies, and techniques learned that can extend and be easily mapped to all languages. That being said there are different languages that can and cannot be used to demonstrate important computational thinking concepts. Imperative, procedural languages, OOP languages, functional languages, deductive logic languages,.... illustrate different features well with different computer concepts.