First programming language hoopla

The first language discussion is warming up again.  Universities seem to be abandoning Java for something else and the conversations start (see here and here).  Even the University of Montana is switching their intro CS major language from Java to Python.  The news folks and non-educators (professional programmers are always the best) start coming up with all these “great” suggestions as to what should be the first university level language.  If you read comments by the people that actually teach (two of which are the here and here above) they will pretty much agree that IT DOES NOT MATTER!!!  A good teacher who understands who he or she is teaching to can make almost any language do the trick.  Yes, there are better languages for teaching and some may be a bit too limited to really be a good first college level language but the number that would actually do the trick is pretty high.  I think I understand why UM is switching.  Montana suffers a major shortage of high school programming courses.  Most Montana schools offer nothing in the area of programming.  Incoming college kids looking at CS are coming in with little to no background in programming.  Stepping into a full blown Java course with that background is guaranteed to reduce the number of students looking at CS as a major.  I can still remember (admittedly vaguely) my first CS programming course in the early 90s (the FORTRAN in the early 70s does not count).  I sat down with about 100 college freshman.  By the end of the quarter there were maybe 25 of us left.  The instructor was one of the worst I have ever had in my long college experience.  He knew Java in and out but could not understand we did not know Java in and out.  The first programming language should not be intended to reduce the number of possible CS students.  It should be something tempting, interesting and an introduction to a possible future.  It should be taught by an instructor that understands how to teach, not a very smart CS adjunct that has no idea of how students learn.  Years ago I saw some statistics on the percentage of freshmen that change majors from CS after the first semester.  If that first programming course is intended to keep the shortage of CS majors steady, it is working well.

That first language really does not matter.  What does matter is the objective of the course, (rite of passage or introduction to CS) and the quality of the instructor.  If we want more students looking at CS we have to have a gentler introduction to CS than the usual “death by Java” type intro class.  I was a math adjunct at the University of Montana for ten years.  The math program had courses stating at the very bottom, about middle school math, so an incoming student had about four levels to step into depending on their math background.  Those bottom level courses would not give college credit but they prepared students with poor backgrounds for entrance to college math.  They were taught by middle school or high school teachers working on masters degrees or retired teachers.  CS needs a scheme like this to attract students and keep students (although the extreme shortage of CS teachers might be a bit of an issue).

As Mike Zamansky said in his post “There’s no single best universal answer. Each choice giveth and each choice taketh away.”  Remember, no matter what that intro language is, it will not be the language some employer the student interviews with is using.


4 Responses to “First programming language hoopla”

  1. gasstationwithoutpumps Says:

    I agree that almost any decent programming language can be used as a first intro (I started with FORTRAN, BASIC, and assembly language around 1969), some do lend themselves to better pedagogy more easily. (PERL has way too much arcane syntax and special cases, for example, while Python allows a minimal set of features to be taught one at a time.)

    I don’t think that any CS department is currently facing “a shortage of CS majors”. Just the opposite—they’re drowning in majors. They may be facing a lack of diversity, though, which is exacerbated by the problems you describe.

    • gflint Says:

      The three major universities in Montana are having a numbers problem in CS. The first course seems to thin the students out a bit too much. UM has had to cut courses because number were getting so low. MSU is doing a bit better because they are more applied: robotics and app development type classes. MontTech has had to go to a special scholarship program to get CS students. But Montana is not a hot bed for CS.

  2. Mrs.Pollard Says:

    I agree that the language doesn’t matter and learning to think logically, algorithmically is key. “Think like a computer” as Seymour Papert said. Not everyone will be a software engineer, but everyone should know the basics.

    Sadly, my daughter can’t get into a CS class at her University (a major one in Boston, MA) even as a senior because the classes (even intro classes) are only available to CS majors.

    My first CS class in college was Pascal. It was a big leap from that to OOP Java/Python and the multi-threaded or event driven languages like Scratch/Actionscript. As to whether I can teach it well, at least I’m trying.

    • gflint Says:

      At the K-10 level I thing a CS background is not needed. Just a willingness and interest. A CS background does not give any pedagogy which I think is the big need at those levels. Being willing to try is all you need. Oh, and late hours digging up materials.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: