Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm not talking about countryside colleges/unis.

  • Are there any thought-out procedures in top-ranking institutions based on formal criteria, actual statistics or demand from the industry?
  • If so, what are the criteria used?
  • Are the decisions to drop certain languages and introduce others made systematically or in a haphazard manner?
share|improve this question

closed as too broad by Justin Cave, GlenH7, MichaelT, Glenn Nelson, World Engineer Jul 7 '13 at 22:15

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers 3

up vote 16 down vote accepted

If we're talking about, say, top 10 ranked US colleges and universities (other countries will likely have different traditions and people will have wildly different definitions of a "countryside college or university"), no. A community college will generally choose what languages to teach based on what languages employers in the geographic area served by the college use. The top-ranked universities, on the other hand, generally have much more idiosyncratic criteria. For example, when I went to MIT, the primary languages used were Scheme (because professors Abelson and Sussman wrote Structure and Interpretation of Computer Programs) and CLU because Prof. Liskov designed it. Neither of these have ever been particularly useful languages for professionals though LISP, at least, has some users in academic fields like AI. The top-ranked universities see themselves as teaching computer science, not programming, and since they generally assume that you'll use many different languages over your career, the particular languages that get taught are not particularly important. Community colleges are in the business of teaching programming so they generally prefer languages that are in more common use.

From time to time, universities do change the languages they teach. That's generally going to involve a lot of faculty meetings and discussions but it's hard to know whether that would qualify as "systemic" or "haphazard" in your definitions. In general, the criteria will be pedagogical, not practical. That is, the professors are much more likely to care about what languages make teaching the underlying concepts easier and what languages they view as promoting beautiful code rather than what languages employers demand.

share|improve this answer
2  
+1 I think this describes the process very well. Side note I can't express the amount of envy I feel when I hear you learned with actual real life Sussman and Liskov :) Not that the place I went lacks big names or anything. –  Benjamin Gruenbaum Jul 8 '13 at 0:01

Most "higher-ranked" universities don't focus on particular technologies or languages, because they are teaching concepts of Computer Science. Their primary goal is not to prepare graduates to do enterprise software development.

So while their introductory courses might all use the same language for consistency's sake, it's not like they chose it based on how popular it is in the software industry.

As for courses later in their programs, my experience has been that teachers just use whatever they're familiar with. They don't care as much that you learn Python, for example, as much as they care that you learn the theoretical concepts they're teaching. Programming languages are generally just a vehicle professors use to hammer home what they're really interested in teaching.

share|improve this answer

Most colleges that I know of teach Java as the introductory language. Talking to one of my professors about how our department chose that language (and why it can't be replaced by something else), he said:

  • Java is portable. Write once, run everywhere.
  • It's strongly-typed
  • It's a managed language (most first-year CS students get very confused with pointers)
  • It's old, which means there are plenty of resources for it
  • It shares a C-like syntax, making it broadly applicable
  • Getting a basic working program in Java takes very little time and code

He said that there are no other languages that provide those benefits in such a way to provoke the department to change. I argued for C#, but he contended that it's not truly portable and even though .NET has far better support for things like generics, it's not enough to prompt a change.

share|improve this answer
2  
Isn't OO one of the main java features? –  ott-- Jul 7 '13 at 19:20
2  
"Getting a basic working program in Java takes very little time and code" Really? I think that it takes more than most languages. I think Java is taught because because it's free , popular and it's being pushed. A lot of places are dropping it (at least here) in favor of Python in recent years. –  Benjamin Gruenbaum Jul 8 '13 at 0:02
    
@BenjaminGruenbaum getting Hello World written in Java is no more complex than in any other language. Just typing "Hello World" on a Python or Ruby console and seeing it echoed isn't programming... –  jwenting Jul 8 '13 at 9:57
3  
@jwenting First of all - sure it is. Second of all - What I meant isn't the length of code, I meant the concepts you don't understand you go through. In order to get 'hello world' in python you do print "hello world". In Java, you use public static void main(String... args){ with a System.out.println not knowing what public means, static means, void means, String means, ... (or []) means. On top of that you put it in a class, inside a package (neither of which you understand), you top it with some imports to stuff you don't get and you're done. That's more than most languages imho. –  Benjamin Gruenbaum Jul 8 '13 at 10:01
1  
@mgw854 Are you sure you've done Python before? Because from a pedagogical standpoint I don't see what "you can't apply" to other languages. Don't get me wrong, I'm not saying Java is a bad choice for a first language for an intro course (in fact, it doesn't even really matter). I'm saying that "easy to use" is not a good argument. In your linked-list example - a Java program would require either implementing your own data structure or using Collections which would require understanding generics (not in Python it wouldn't!). This is another 'advanced' concept (along with all the others). –  Benjamin Gruenbaum Jul 9 '13 at 6:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.