Predictions on Future CS1 Languages

January 24, 2011 at 7:38 am 20 comments

A recent article in InfoWorld on up-and-coming languages got me thinking about the future of CS1 languages.  They went on at some length about Python, which I think most people consider to be the up-and-coming CS1 language.

There seems to be two sorts of people who love Python: those who hate brackets, and scientists. The former helped create the language by building a version of Perl that is easier to read and not as chock-full of opening and closing brackets as a C descendant. Fast-forward several years, and the solution was good enough to be the first language available on Googles AppEngine — a clear indication Python has the kind of structure that makes it easy to scale in the cloud, one of the biggest challenges for enterprise-grade computing.Python’s popularity in scientific labs is a bit hard to explain, given that, unlike Stephen Wolframs Mathematica for mathematicians, the language never offered any data structures or elements explicitly tuned to meet the needs of scientists. Python creator Guido von Rossum believes Python caught on in the labs because “scientists often need to improvise when trying to interpret results, so they are drawn to dynamic languages which allow them to work very quickly and see results almost immediately.”

via 7 programming languages on the rise | Developer World – InfoWorld.

There have only really been three “CS1 languages,” the way that I’m using the term: Pascal, C++, and Java.  All three programming languages were used in a large (over 50%) percentage of CS1 (intro CS for CS majors in post-secondary education in the US, and AP in high school) classes.  All three were AP CS languages.

Pascal at one point was probably in over 80-90% CS1 courses.  Not everyone jumped immediately to C++, but C++ was in the majority of CS1 classes.  I know that because, when our Java MediaComp book came out, our publisher said that Java had just pulled even with C++ in terms of percent of the market — that means C++ had to have been in lots of classes.   Java is the dominant language in CS1 classes today, but it’s declining.  Python’s market share is rapidly growing, 40% per year the last three years.  While it’s not clear that the new AP CS nor the AP CS Level A would ever adopt Python, Python might still gain the plurality of all CS1 languages.  I doubt that any language will ever gain more than 30-40% of the CS1 market again — there are (and will be) too many options for CS1 languages, and too many entrenched interests.  Faculty will stick with one, and may skip a plurality, e.g., I’ve talked to teachers at schools where they stuck with C++ but now are switching to Python.

I have two specific predictions to make about future CS1 languages, based on observations of the last three and the likely fourth.

  • All future CS1 languages will be in common use in industry.
  • No language will gain a plurality of CS1 courses unless it existed at the time of the last transition.

The transition from Pascal to C++ led to the greatest spike in AP CS Level A tests taken in Georgia.  Until 2010, that was largest number of AP CS exams taken in Georgia.  The transition from C++ to Java had nowhere near that kind of impact on the test numbers in Georgia.  What might have led to so much more interest in the Pascal -> C++ transition?  Pascal was a language that was not (perceived to be) common in industry, while C++ was.  I don’t think that people perceived such a huge difference between C++ and Java.  I believe that the sense that C++ was vocationally useful, was approved of by industry, had a huge positive impact on student interest in the test.

In this blog, we have often touched on the tension between vocational and academic interests in computer science classes.  Vocational most often wins, especially in the majority schools.  The elite schools might play with BYOB Scratch in their intro courses (but notice — even at Harvard and Berkeley, it’s for the non-majors, not for those who will major in CS), and community colleges might use Alice to ease the transition into programming, but the vast majority of schools in the middle value industry-approval too much to adopt a pedagogical language for their CS majors.

The implication of the first prediction is that, if Scratch or Alice are ever adopted for the new AP CS, only schools on the edges of the distribution will give CS major credit for it, because most schools will not adopt a CS1 language that isn’t useful for programming in industry.  That isn’t necessarily a bad thing for the new AP CS — to succeed, schools must agree to give some credit for it, not necessarily CS major.  Another implication is, if my prediction holds true, Scheme will never gain a plurality in CS1 courses.

The second implication is based on an observation of the timing of the four languages.  Each existed as the previous was adopted for the AP CS Level A, which is a reasonable point at which to claim that the language had reached plurality.  C++ existed (since 1983) when the AP CS Level A was started in Pascal (1988, I think).  C++ was adopted in 2001, and Java came out in 1995.  AP CS Level A shifted to Java in 2003, and Python 1.0 came out in 1989, with Python 2.0 (the one receiving the most interest) in 2000.  It takes a lot of time to develop that industry use, and to build up the sense that the new language may be worth the pain in shifting.

The implication is that, whatever the next CS1 language will be (after Python), it exists today, as Python reaches plurality.  Maybe Ruby, or Scala –more likely Ruby, given the greater industry penetration.  Any language that we might invent for CS1 must wait for the next iteration.  Scratch, Alice, and Kodu are unlikely to ever become CS1 languages, because it is unlikely that industry will adopt them.  Few professional programmers will get their jobs due to their expertise in Scratch, Alice, or Kodu. That absolutely should not matter to CS1 instructors.  But it does.

About these ads

Entry filed under: Uncategorized. Tags: , , , , .

Revisited: My Students Know Far Less Somewhere, C.P. Snow is smiling

20 Comments Add your own

  • 1. Bonnie MacKellar  |  January 24, 2011 at 11:24 am

    Python is a niche language in industry, and I suspect it will remain there. You don’t mention at all the language that seems to be most dominant in industry right now – C#/.NET. You also forget that in industry, it isn’t just the programming language that is important, but rather the entire ecosystem – J2EE, .NET, Rails, Android, etc, etc.

    One problem I keep seeing, and I have seen this at several schools now, is that if you teach a language like Python first, there is tremendous pressure to teach more useful languages later on. I know the computer science mantra is that students should learn these on their own as part of CS topic courses, like object-oriented design, or AI. But it doesn’t work that well in practice.
    We teach non-OO C++ as our first language now, and then have later courses in Perl, Java, and in .NET. We end up with CS majors taking a hodge-podge of language courses instead of important CS topics. You could say that this is just a fault of our school, but I have seen the problem at the two other schools where I have taught, and I see it when I look at course catalogs for lots of programs. There are strong reasons – pressure from students and pressure from faculty who find it hard to teach a whole new language in the context of a course that is already jam-packed with material. And there is also enrollment pressure – if you offer a course that is just Java or just Ruby, you can get industry professionals to sign up for the course. So the reality is that lots of schools end up reteaching programming over and over in a series of languages. I think that is a bigger problem than the choice of CS1 language, in fact.

    Reply
  • 2. Mark Guzdial  |  January 24, 2011 at 1:27 pm

    Bonnie, I didn’t say anything about the choice of CS1 language as a function of the dominance of a language in industry. I only predict that a CS1 language will not reach plurality if it’s not common in industry, even if niche.

    Reply
  • 3. Peter DePasquale  |  January 24, 2011 at 10:23 pm

    Often we are driven by market forces (industry) directly and indirectly. There is not an open house that goes by that potential students ask what our first year language is and what other languages we get into later. They are savvy shoppers… If we said “Visual Basic” they would likely run from us…

    As you point out, this does not necessarily mean we are picking the best for pedagogical reasons, but *some* schools have to be very careful about what they choose. I think larger schools can handle the outlying languages better. UPenn is always (?) leaning toward functional languages (not yet in CS1, but it might change) as they want a pipeline of student researchers as soon as they can get them.

    Reply
  • 4. Mike McMillan  |  January 24, 2011 at 10:43 pm

    Of course, the best solution to this problem is to start teaching computer programming as early in the K12 curriculum as possible so that by the time a student gets to college they have learned Scratch, Alice, Logo, Basic, and two or three scripting languages. When the student gets to college and majors in Computer Science, they’ll be ready for whatever language industry is favoring at that time. They will also know enough to have a healthy disdain for that language as well ;).

    Reply
  • 5. Peter DePasquale  |  January 24, 2011 at 10:59 pm

    Why is it that this approach is done in high schools for other science disciplines such as math, biology, chemistry and physics, yet computer science in many cases hits the ground cold when the students get to college?

    Reply
  • 6. gasstationwithoutpumps  |  January 24, 2011 at 11:53 pm

    I believe that you are starting your history rather late. I was graduating from college when Pascal first came out, so it certainly was not the first CS1 language. I believe that honor goes to Fortran, though Fortran and BASIC duked it out for a while before Pascal came on the scene. I believe that Pascal and C competed for CS1 dominance for quite a while after C became popular in industry, long before C++. I don’t believe that C++ was ever a dominant CS1 course: I think that most places that taught C++ as the dominant language started with C.

    I think that there will be some resistance to teaching a single-vendor system like C#, particularly for a first course.

    “Python’s popularity in scientific labs is a bit hard to explain, given that, unlike Stephen Wolframs Mathematica for mathematicians, the language never offered any data structures or elements explicitly tuned to meet the needs of scientists.”

    Python has provided very easy extensibility and the NumPy and SciPy packages provide most of the operations that scientific programmers need, in a more comprehensible form than most of the C++ and Java packages for them. Even simple things like complex numbers are hard to do well in Java.

    Having seen what a Scheme CS 1 course looks like (my son had one), I doubt that many instructors will opt for it. The programming style and mindset that Scheme encourages are not common among programmers or programming instructors.
    I think that it makes some concepts easy and some very hard to teach—deliberately so. But most CS1 instructors do want to teach iterative loops and assignment, usually before recursion, which is not the way systems like Dr. Scheme are designed.

    Reply
    • 7. Mark Guzdial  |  January 25, 2011 at 10:36 am

      I thought that “CS1″ was invented in 1978 in ACM Curriculum Committee on Computer Science. “Curriculum 78: Recommendations for the undergraduate program in computer science.” Communications of the ACM, v.22.3, March 1979. Pascal was the most common first language at that time, wasn’t it?

      Reply
      • 8. gasstationwithoutpumps  |  January 25, 2011 at 11:32 am

        Maybe so, but the ACM was merely codifying standard practice, not inventing courses from the whole cloth.

        Reply
  • 9. Andy Kuemmel  |  January 25, 2011 at 9:25 pm

    Thanks for this post, Mark, I really enjoyed it !

    You wrote: “The implication is that, whatever the next CS1 language will be (after Python), it exists today, as Python reaches plurality. ”

    Any chance Javascript could be a future CS1 language?

    Reply
    • 10. Lloyd Smith  |  January 26, 2011 at 1:57 am

      What will drive the next change in CS1 language? My impression is that Pascal replaced FORTRAN/BASIC because it was structured; C replaced Pascal because it was useful; C++ replaced C because it was object oriented; Java replaced C++ because it was simpler. Now Python is replacing Java because it is simpler yet and there is some concern about the way Oracle is managing Java.

      If the next catalyst is a desire to teach programming in a web context, Javascript could be it, although it seems like a step back in syntax. If there is a move to teach programming using animation, Processing could be a candidate, although it has the baggage of Java underlying it. I predict that the next big CS1 language will be one that makes it easy to write parallel programs. Just as we now have those who call for objects first, we will have those who advocate parallel first.

      Reply
    • 11. Mark Guzdial  |  January 26, 2011 at 7:48 am

      My crystal ball is pretty fuzzy. Could be!

      Reply
  • [...] This post was mentioned on Twitter by Greg Wilson, James. James said: RT @gvwilson: Mark Guzdial's predictions for the future of introductory programming languages: http://tinyurl.com/6gwrkgr [...]

    Reply
  • […] order to prepare students for the working world, most schools use a language for novices that is widely used in industry. This is how C++ and Java came to supplant Pascal, a popular language for teaching programming in […]

    Reply
  • […] has been getting more popular as the first language to teach novices. Three years ago, Mark Guzdial blogged about the rise of Python as a teaching language and predictions for future teaching languages. […]

    Reply
  • […] order to prepare students for the working world, most schools use a language for novices that is widely used in industry. This is how C++ and Java came to supplant Pascal, a popular language for teaching programming in […]

    Reply
  • […] order to prepare students for the working world, most schools use a language for novices that is widely used in industry. This is how C++ and Java came to supplant Pascal, a popular language for teaching programming in […]

    Reply
  • […] 已经成为越来越多美国顶级大学的计算机编程入门语言了。三年前,Mark Guzdial 曾撰写博客,预测 Python […]

    Reply
  • […] order to prepare students for the working world, most schools use a language for novices that is widely used in industry. This is how C++ and Java came to supplant Pascal, a popular language for teaching programming in […]

    Reply
  • […] It’s reasonable to say that an AP will only succeed (e.g., students will take it) if they can get credit or placement for the exam in college or university.  Typically, colleges and universities give credit for courses that are currently taught.  Will we see colleges and universities start teaching CS Principles?  Will they give credit for a course that they don’t teach? For languages they don’t teach?  Maybe we’ll see more of an influx of CSP languages and courses into colleges and universities. I predict that we won’t. […]

    Reply
  • […] years ago, Mark Guzdial blogged about the rise of Python as a teaching language and predictions for future teaching […]

    Reply

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Recent Posts

January 2011
M T W T F S S
« Dec   Feb »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Feeds

Blog Stats

  • 966,212 hits

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 3,135 other followers

CS Teaching Tips


Follow

Get every new post delivered to your Inbox.

Join 3,135 other followers

%d bloggers like this: