Friday, June 25, 2021

Is Picking a First Programming Language the Hardest Problem in CS Education?

All of a sudden the subject of the first programming language is getting discussed everywhere. OK, maybe not every where but it is in Twitter, Blogs, and Facebook. At least. Mark Guzdial gets part of the blame (credit?) for this with his conversation starting post on the Blog@ACM Why Did We Ever Think the First Programming Language Didn't Matter? It’s hard to find the conversations on Twitter but several of the CS education groups on Facebook have conversations around this post. For example, the Computer Science Teachers group here.

Now this a a topic that comes up regularly. I’ve made reference to it myself several times. Back in 2017 I asked the question How important is the first programming language really? and answered that I thought it was important but that curriculum and the teacher were more important. The language has always mattered though.

In 2016, I posted a link to an article called How Your First Programming Language Warps Your Brain One can find similar opinions widely spread on the Internet with special attention paid to Dijkstra

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

I think we have always known that a person’s first programming language has a major impact on how they view programming. My first language was FORTRAN and it took me a long time before I stopped writing FORTRAN programs in different languages.

What does this obvious importance of the first programming language mean for CS educators? Well, its complicated. For one thing,Elementary and middle school have different constraints than high schools which have different constraints from universities.

I had a conversation with a middle school student recently. She attended after school programs at a university near her that taught her Scratch. She loved it. At the same time she saw older students (she’s a rising 7th grader) using a text based language and found it intimidating. She’s not convinced that she can handle what she called “real programming.” I tried to encourage her but one conversation only goes so far.

Research tells us (the professionals) that block based language are a good first programming experience but if students don’t see it as authentic they may think that is as far as they can go. While block based languages give many the confidence and concept base to move on and advance are some students falling into the trap that it is not real enough? I don’t know.

I’ve taught a number of language as a first programming language over the years. Visual Basic, Java, C#, PASCAL, and I’m probably forgetting some language.I am not ready to say that there is one best first language though. It really depends on ones goals.

Selecting the right language is important. Important decisions are seldom simple or uncomplicated.

1 comment:

Garth said...

I have found that if high school kids get too comfortable with their first "easy" language (Scratch, Small Basic, etc) they do not want to advance to a more advanced language. And why should they? 90% of my first year students only take the one programming course. They are not there to start a career, they are there out of curiosity or because they have to take a computer course to graduate. The other 10% are just a bunch of geeks and are happy with anything and love programming. Weird kids. My goal has always been to get some of that 90% to hang in there, to find something to tempt them into another semester. Something to turn them to the weird side. Someday I may actually find a fool proof method