share
Stack OverflowWhat programming languages do the top tier Universities teach?
[+62] [84] Simucal
[2009-03-13 18:51:07]
[ computer-science education university ]
[ http://stackoverflow.com/questions/644099] [DELETED]

I'm constantly being inundated with articles and people talking about how most of today's Universities are nothing more than Java vocational schools churning out mediocre programmer after mediocre programmer.

Our very own Joel Spolsky has his famous article, " The Perils of Java Schools [1]."

Similarly, Alan Kay [2], a famous Computer Scientist (and SO member) has said this in the past:

"I fear — as far as I can tell — that most undergraduate degrees in computer science these days are basically Java vocational training." - Alan Kay ( link [3])

If the languages being taught by the schools are considered such a contributing factor to the quality of the school's program then I'm curious what languages do the "top-tier" computer science schools teach (MIT, Carnegie Mellon, Stanford, etc)?

If the average school is performing so poorly due in large part the languages (or lack thereof) that they teach then what languages do the supposed "good" cs programs teach that differentiate them?

If you can, provide the name of the school you attended, followed by a list of the languages they use throughout their coursework.


Edit:

Shog-9 asks why I don't get this information directly from the schools websites themselves. I would, but many schools websites don't discuss the languages they use in their class descriptions. Quite a few will say, "using high-level languages we will...", without elaborating on which languages they use.

So, we should be able to get a pretty accurate list of languages taught at various well known institutions from the various SO members who have attended at them.

Makes me wish I could attend a good university :( :( :( - Mehrdad Afshari
Since you insist on the Top-Tier criteria, I would say that makes this very subjective. - EBGreen
(1) @EBGreen, there is nothing subjective about it. You could base it off GRE rankings, or USNEWS comes out with rankings each year. Say, one of the top 50. They rarely flucuate from year to year. - Simucal
@Simucal: The top-tier universities have web sites with this information. I'm not sure why you want second-hand data when you could browse your selected university web sites and get authoritative information? What's the value in rumor when you could have had fact? - S.Lott
Oh, you don't mean Top-Tier CS schools? Just Top-Tier based on some arbitrary general education metric? - EBGreen
All it takes is one prof to come along who decides to teach ook# to a small grad seminar class on a lark and your list is shot. - EBGreen
(1) @EBGreen, Go read how USnews calculates its rankings and then come back here. - Simucal
"Each factor is assigned a weight that reflects our judgment about how much a measure matters." - So yeah, like I said, arbitrary metric. - EBGreen
"These rankings are based on two types of data: expert opinion about program quality and statistical indicators that measure the quality of a school's faculty, research, and students. These data come from surveys of more than 1,200 programs and some 14,000 academics and professionals" - Simucal
(1) That data comes from standardized test scores, acceptance rate into their programs, etc. If you look at the top 20, they are all industry accepted top schools in CS. That is what this question is geared towards. I've provided a link to my criteria for top-tier so it isn't subjective any longer. - Simucal
Taking it in context doesn't change it's meaning. You are right that rankings that involve a subjective component will always be arbitrary. Since your stated criteria doesn't seem to have much effect anyway, the issue appears to be moot. - EBGreen
@EBGreen, the only thing that is moot is your discussion in these comments. I'm not interested in pedantics who run around saying everything is relative and arbitrary. I've listed my criteria and I find them to be at least in some ways, representative of a top-tier school. - Simucal
(1) It isn't like I'm claiming I attend one of those, and I'm looking down on everyone. I don't. I attend a very small school, no where near the top 100 list. That doesn't mean I think there is anything wrong with my school and is infact, the point my question. To see the difference in languages taught. - Simucal
Don't see the point of this question. - Shog9
"I'm not interested in pedantics who run around saying everything is relative and arbitrary." - Well, pedantic is an adverb. A person can't be an adverb, so it should be "I'm not interested in pedants who run around saying everything is relative and arbitrary." Sorry, couldn't resist. :) - EBGreen
@EBGreen, Sigh, why do you gotta go and make me laugh? - Simucal
Bonus points if you can find the semi-pedantic issue with my statement. - EBGreen
@Shog9, I don't know how to make any more clear for you. - Simucal
@Simucal: i get that you want this information; don't know why, but don't need to really; it's your question. But i just don't understand how getting it 2nd- or 3rd-hand from random people here beats simply looking up the curriculum of the schools you're interested in. Why not go to the source? - Shog9
@EBGreen, pedantic is an adjective, not an adverb. - Robert S.
Crowd sourcing. It really isn't that simple to look up. If for instance you look at course descriptions, they often say things like "Using higher level programming languages we will..." - EBGreen
Of course the reason that course descriptions are written that way is because the language used will often change from year to year (or even semester to semester). So asking what the language is now won't necessarily mean anything next year. - EBGreen
Oh, and OIS gets the bonus points. :) - EBGreen
@Shog9, right but the information is spread out among 50 different websites. So why ~wouldn't~ I want to have it aggregated into a single source? As far as why I want it, it helps me compare supposed "top" cs programs and the languages they teach. - Simucal
(1) @Shog9, According to Alan Kay and Joel Spolsky the languages that a school teaches reflects greatly on that organization. - Simucal
@Simucal: so you're looking to choose a school? Or a language? Or...? - Shog9
@Shog9, I'm a senior at my small school, so I'm not looking for a school. If there is a trend among the top performing schools in their curriculum that my school lacks it could certainly motivate me to supplement my education with another language. - Simucal
@Shog9, so far, Scheme/Lisp seems to be cropping up a lot in the these programs. So I'm strongly considering checking it out to see what I'm missing. We went over some functional language exercises in my Programming Languages class but never that indepth. - Simucal
Since this information is (a) not programming and (b) better available from authoritative sources, I don't see why this question is still open here. - S.Lott
@S.Lott, move along. If you don't like the question then ignore it. Your points are totally invalid. It IS programming related, and just about every question on Stackoverflow has a more "authoritative" source elsewhere. That doesn't mean we don't bring that knowledge and consolidate it here. - Simucal
@S.Lott, This provides a nice cross section of the programming languages taught at supposed "top" programs. I find it interesting to see the differences between those programs and some people from those institutions have provided insight you can't get from a mere class description list. - Simucal
@Shog9, Like EBGreen said it isn't that simple when it comes to looking it up myself. Most schools have a class description list but many don't list the specific languages they utilize for the class. They might say "a high-level language". That is why getting it from graduates is important. - Simucal
[+68] [2009-03-13 19:25:39] Sarah Mei

I'm constantly being inundated with articles and people talking about how most of today's Universities are nothing more than Java vocational schools churning out mediocre programmer after mediocre programmer.

They have always churned out a lot of mediocre programmers, a handful of good ones, and a few brilliant ones. Only the language has changed.


(4) I'm curious what the language everyone was frowning at before Java was? Were they saying, "Todays Universities are no more than COBOL vocational schools?" or something similar? - Simucal
Pascal was very popular for a while. - dmckee
People seem to have an attachment to "their" language. So if you just look at the adoption curve for any given language, you can probably work out a place where it becomes popular enough to be noticeable to the users of the current predominant language. - EBGreen
The question is silly. The language is almost meaningless. the concepts that that are taught using them is the important part. - Ed S.
I agree with this answer completely. People complaining about Java are justified, but for the wrong reasons. - Unknown
(6) @Ed Swangren, Ok, you show me how you would eloquently teach functional programming concepts to your students with C. I think saying the languages don't matter is silly, when they obviously do. Concepts taught in a vacuum aren't the same as concepts learned with a concrete language. - Simucal
(1) @Ed Swangren, They certainly aren't the only thing that matter, but those concepts are going to be delivered in a form of a language and if you only get exposure to a single paradigm language, you don't think that matters? - Simucal
(2) Because the curriculum doesn't really matter. Universities cannot create brilliant programmers. Whatever the curriculum or language being taught is, there will always be many mediocre programmers, a handful of good ones, and a few brilliant ones. - Chris
+1. I agree completely. - DarkSquid
That's a good point. I have taught at both CMU (where Java is taught) and at the Israeli Technion where C and C++ are taught. Both are top tier schools, and in both I've met some brilliant programmers, and some others who had a good understanding of CS but not much interest or skill in programming. The langauge doesn't matter. - Uri
I have to agree with Simucal somewhat. The workplace has become increasingly competitive and there are far too many undergrads who have had little or no experience writing code before they enrolled in the university. One cannot ignore the language completely. It's like trying to teach people how to paint while completely ignoring the properties of the chosen medium (be it oil paints, acrylics, etc). While there are general painting principles applicable to all mediums, one really needs to master a given medium to really see those principles firsthand and appreciate them. - stinky472
1
[+30] [2009-03-13 18:55:35] eduffy

MIT

MIT used to teach its intro CS course (6.001) in Scheme ( the textbook [1] is still online), but that course was last taught in fall '07. The entire CS curriculum was restructured around then. Now, the new intro course ( 6.00 [2]) in Python. Other languages taught/used in various courses include:

There are probably a few more taught in some of the smaller, more advanced classes.

[1] http://mitpress.mit.edu/sicp/
[2] http://6.00.scripts.mit.edu/home.cgi
[3] http://pdos.csail.mit.edu/6.828/2008/

I know for a fact that they also teach Scheme and Python. I'm looking for answers that encompass the languages a particular university teaches, not just one. - Simucal
As far as I know, they used to teach Scheme in their CS introductory course but they have switched to Python instead. - Mehrdad Afshari
If anyone knows better, feel free to edit any universities post to include the correct languages. - Simucal
When I was there a few years ago, I had classes in Scheme (2), Java (2), and C++ (1). However, MIT's CS curriculum just went through a major revision; this post should be edited by someone familiar with the current one. - Amanda S
<3 LISP & SICP <3 - cwallenpoole
(2) MIT changed their introductory CS course from SICP (scheme) to a robot-oriented course in Python. You can find the rationale here - (wingolog.org/archives/2009/03/24/…) - Pranav
(1) IIRC, UC Berkeley still teach Scheme in their CS61A course. (videos at webcast.berkeley.edu)) - Lucas Jones
2
[+26] [2009-03-14 03:25:58] Unknown

Everyone is saying that Java has opened the floodgates to mediocre code monkeys. This is true, but not for the reasons being cited here, that it is too easy and thus unsuitable for teaching CS.

I would argue that Java is too similar to the last generation university teaching language: C++ (Look at Java generics and C++ templates for example). And this is not a coincidence.

Java is first and foremost made for the industry which has lead to its widespread adoption. Here are some points to consolidate this fact:

  1. Java was designed to have similar syntax to C/C++ to woo the older generation while making it easy for the new generation to replace them.

  2. Heavy emphasis on contractual black-box programing with interfaces. This makes it easy to fire the person who finished his module and then outsourcing the rest of the work to India or fresh college graduates.

  3. Sun wants to make money.

Who is to blame for the influx of idiots? Industry. Industry is responsible for the commoditization of CS majors/programmers.

You have all heard ever so often on the news and Slashdot how there is a perpetual lack of programmers that they even need to hire foreigners on H1-B visas.

Colleges then teach Java because their students need jobs in order to donate or even pay for school.


Interesting points! +1 - Simucal
+1. I'd give you another +1 if I could for that nice “... the news and Slashdot ...” burn. - Nietzche-jou
(11) The problem with java is that it is not similar to C++. It is similar to C. It throws out almost every lesson learned in C++. C++ templates and Java generics are an excellent case in point. C++ templates are actually useful, and enable an entirely new programming paradigm. Java Generics are syntactic sugar over void pointers as you'd expect to see in C - jalf
3
[+19] [2009-03-13 19:21:25] community_owned

Carnegie Mellon

  • Intro to Programming - Java
  • Unix Programming - C
  • Principles of Programming - ML
  • Operating System Design - x86 Assembly & Heavy use of C
  • Data Structures - Java

This is how my university handled business when I was going through. (Kansas State) - David McGraw
This is essentially what UNH does - SP.
What text does the Unix Programming class use? - Vince
4
[+18] [2009-03-13 22:33:30] community_owned

University of California, Berkeley [1]

  • Scheme (Intro to Symbolic Programming)
  • C (Operating Systems and Systems Programming)
  • Java (Data Structures)
  • C++ (Computer Graphics)
  • Matlab (Matlab for Programmers)
[1] http://berkeley.edu/

Thanks Sam, for reposting this. - Simucal
@kjack, nothing interesting about it considering I live with the guy. It isn't his first post either, if you scroll up. He just doesn't have a ~registered~ account. A lot of people don't bother with registered accounts and it is a perfectly valid way to interact with the site. - Simucal
@kjack, So every question or answer he posts is his "first". I'm also not sure you actually know what "habitual" or "uncanny" actually mean. - Simucal
@Simucal, Ignore kjack, he is obviously trolling. On a more on-topic note I took Intro to Symbolic Programming at Berkeley for non-credit and it was a fun course! - KingNestor
I loved Berkeley's SICP course. - kunjaan
Berkeley also sometimes uses Ruby in CS169 (Software Engineering, the language and topic rotate every semester), Python in CS188 (Introduction to AI) and MIPS Assembly in CS61c (The third intro course). - Tikhon Jelvis
5
[+16] [2009-03-13 19:10:50] mdkess

The University of Waterloo computer science program uses (in rough order of introduction to students)

  • Scheme (just in first year, for the "learn how to program" courses, although many people use it beyond first year when they can)
  • C++ (there's one poorly taught course exclusively on C++, but this along with Java are the main languages used by students).
  • C (mostly for the two OS courses)
  • Matlab (mostly for computational mathematics courses - ie. computational mathematics, computational linear algebra, medical image processing, etc.)
  • Java (mostly for GUI applications)

Many of the upper year CS courses allow for choice of language. Haskell is a surprisingly popular language among students. Also, MIPS assembly and x86 are used in a couple of courses.

The engineering programs as far as I know use mostly C#, with a bit of C++ thrown in (and definitely no Scheme).


Engineering starts with C# in first year, but uses C++ for data structures in 2nd year, then asm (I think 68000) for the low level course, and then asm + C for the OS course. Then there's VHDL, which I'm personally looking forward to. - megabytephreak
(1) When I went to Waterloo the first year CS courses were in Pascal, second year was Modula-3 and Scheme, and third and fourth year depending on the course (most used C, and allowed C++. A few specified a certain language, like the AI course which used Scheme and Numerical computing which used Matlab). I wouldn't say these courses taught the language in question so much as they required that you learn them well enough to use them for the assignments. - Laurence Gonsalves
I'm a physics majors, so my answers are a bit different than the CSers. Our scientific computing courses use C++, digital electronics in Motorola 6800 assembly and some AMATH courses in MATLAB. The upper year computation courses (scientific computer and stellar evolution) allow your choice of language. - Joey Robert
(9) Java is a horrible choice for gui programming! - Jim In Texas
compsci.ca/v3/viewtopic.php?t=21723 has some discussion points on changes that Waterloo has had in their first year language choices. - JB King
Engineering programs did not use C# at all. Was mainly C/C++/Java. - Brian Liang
6
[+15] [2009-03-14 03:48:23] Ken

When I was at Cornell (#6 on your list), ~8 years ago, they didn't "teach" any programming language, except maybe at the 100-level. They mostly just used a language, and you were expected to pick it up to do the work. The languages they used were:

  • Java (almost everything)
  • C++ (databases course, because the db guy thought it was necessary for dbs)
  • Scheme? (some advanced 200-level CS course, if you happened to go through that part of the program in a semester when they offered it; sadly, I didn't)
  • Gofer (a Haskell-like language; used for a couple weeks in the standard 200-level course)
  • Matlab (numeric computation and some graphics work)
  • MIPS assembly (computer architecture)

The programming languages I learned there were basically useless. Nobody's ever heard of Gofer. Nobody uses MIPS assembly. I've never used Scheme or Java 1.1 on a project outside of class (though I have used Common Lisp and Java 1.[2-4]).

But the point of the courses wasn't to teach me the language. When I'm staying up till 3am every night writing a compiler in Java for class, the point is not to learn Java, but to learn to write a compiler. The fact that they gave us a mission and we had to do the footwork to get there was better than teaching a language.

Being given the task of "write a compiler", you learn to teach yourself not just the programming language, but version control, error handling, refactoring, and so on. While Joel laments graduates who only know Java, I find that merely a symptom of not having learned how to learn, which is the true purpose of a university.

If you study physics and happen to use English when doing so, the point isn't to learn English well, but to learn physics. I don't think anybody would confuse physics with English. Would you ask what language top-tier universities teach physics in? ("I studied at Heidelberg, and we used German!")

Cornell also used Windows NT 4, but that's also completely irrelevant.


Except for Gofer, my language list is similar to yours. +1 for you insight about your school. - Simucal
That is essentially what I meant, to use in their curriculum. Anyone who has been to any University level school knows they aren't going to be "taught" the languages beyond the mere basic introduction in lecture 1 of the class. - Simucal
Please do not mention Windows NT 4 nor English again, since this whole question might get closed down as "not programming related." I'm kidding. Good point regarding teaching learning, but the gem of the answer is "and we used German!" Brilliant, truly. - Yar
did you write said complier using JavaCC? Because I thought only our compiler class did that, and I hated javacc. I really wished we could just use bison & flex or something ... tested. - dlamblin
I remember my roommate (physics major) complaining about one teacher he had. He taught in English with occasional German and Russian thrown in. He was a Russian-native who taught in East Germany through the 70s and early 80s before moving to America. He was a brilliant teacher to have teaching 400 level physics classes to undergrads but he tended to shift language while speaking without realizing it. The funny part was he would sometimes shift from English/Greek to Cyrillic/??? in the middle of an equation. The class could not always get him to see how that was a problem from what I heard. - jmucchiello
I had the same kind of professor once, only I always liked that approach. Gave me a chance to learn the important "keywords" in physics in german and french at the time. I always saw that as an advantage, although some also complained about it. Btw, problem solution: learn cyrillic ... it's not like it's nuclear science. It's only what 30 something letters (depends whose you're using) ... - ldigas
7
[+15] [2009-03-13 22:39:58] Glenn

The good universities don't teach languages. They teach concepts. After the first "intro to computers" course, you're expected to pick up the language du jour by yourself from the labs.


(1) And Scheme apparently is a very good tool for this. You can learn the language at one sitting pretty much and yet it is powerful enough to demonstrate a wide range of concepts/paradigms - kjack
i voted you up but I think Delilah might have downvoted you - kjack
I agree with ya! - Milhous
(1) I think you need to have a good understanding of at least one deep language. - Joe Philllips
For college courses, there is nothing wrong with teaching programming languages as long as they are with the concepts. After the first course or two, you are left to learn more on your own, but the very first course they do show what is going on. - jle
(2) +1 since languages come and go, concepts outlast them - Chad
8
[+12] [2009-03-13 21:35:05] David Zaslavsky

Princeton University:

  • Java
  • C
  • x86 assembly
  • Perl
  • Python
  • awk
  • ChucK [1]
  • Javascript
  • (etc.)

Specifically, the typical CS student starts with COS 126, the intro class, which teaches Java, then takes COS 217, which teaches C and basic x86 assembly language, then COS 226, which teaches algorithms and data structures in Java. Then there are various upper-level courses: COS 318, Operating Systems, uses C and assembly language; COS 325 on digital signal processing uses mostly C and ChucK, occasionally Matlab and/or Java; COS 333 is a mishmash of various languages including Perl, Python, awk, C, C++, Linux shell scripting, or whatever the students want... I think there are other classes that use primarily C++, e.g. computer graphics, but I'm not personally familiar with those.

(Almost forgot: there's also COS 109, an intro class intended for non-CS students, which uses Javascript and HTML.)

[1] http://chuck.cs.princeton.edu/

9
[+9] [2009-03-13 22:35:27] jeffamaphone

Good developers will not limit themselves to what a University teaches. The kind of developers I want to hire are the ones that spend their free time writing programs that interest them, learning the languages they need to get those projects done and basically pushing the boundaries. The kind of developer I don't want to hire are the ones that got a 4.0 in their CS program, but didn't write a single line of code that wasn't graded in four years.

That said, my undergraduate University, the University of Missouri-Rolla (now the Missouri Institute of Science and Technology) still teaches C/C++ to first year CS students and continues that throughout the degree program. Second/third year students take "Computer Organization" which introduces Assembly and low level architecture. It's not until third/fourth year that elective classes introduce other languages, like Java, as part of classes like User Interface Development, etc.

Personally, I'd put that up against any "top tier" school.


UMR is a good school (MST, whatever). I'm a fellow Missourian. I compete against them regularly in programming competitions at your University. - Simucal
Couldn't agree more. No school alone will ever compare to someone actually being personally interested in what he/she does. Of course, a good university may teach you a lot of stuff, but the best ones are always the ones that spend a lot of their spare time to do relevant stuff. - Arve Systad
10
[+9] [2009-03-13 19:07:02] AndreiM

Northeastern University

  • A Scheme variant
  • Java
  • Some C; some MIPS

Undergrads are introduced to Scheme first. Many of the principles and problem solving methodologies learned during that course are applied to the later Java courses.

First year Master students take a mandatory course in Programming Design Paradigms [1].
Students are exposed to functional programming through small subsets of Scheme Language(Beginner Student Language ...). In the Second half of the course, the students are exposed to Object Oriented Programming through a language called ProfessorJ.

Principles of Programming Language [2] uses Scheme exclusively. The course studies various aspects of programming language design.

Other graduate courses at Northeastern are language agnostic. For example, in the Algorithms course, the students are encouraged to use languages like C and C++; but many choose to use Java and similar OO languages like Ruby.

[1] http://www.ccs.neu.edu/home/matthias/107-f08/
[2] http://csu660.barzilay.org/overview.html

Thank you for your input - Simucal
Northeastern where? Massachusetts or Illinois? - James McMahon
Out of curiosity, what variant of Scheme do you use? - Thr4wn
(3) Northeastern in Massachusetts. The Scheme variant is called PLT Scheme - Here's some more info: plt-scheme.org/index.html - AndreiM
That's funny -- in my programming language design course BITD, we had to code in every language we studied. So we wrote FORTRAN, COBOL, Snobol, Lisp, and APL (yes, this was very long ago). Of course, for our actual implementation work, we used Pascal... - TMN
I don't think I would want to implement languages in Pascal :) and do you think asking to students to code in every single language that they study in the course is even feasible? I think asking them to implement a flavor of lazy evaluation and understand the pros and cons of that particular design decision is far far more important than writing a toy program in Haskell. - kunjaan
11
[+8] [2009-03-14 02:35:47] weicool

UC Berkeley

Lower Division

Scheme (CS 61A - Structure & Interpretation of Computer Programs)
Java (CS 61B - Data Structures)
C (CS 61C - Machines Structures)

Upper Division

Java (CS 162 - Operating Systems and System Programming)
Java (CS 164 - Compilers and Programming Languages); C++ used for the first time this semester
Python (CS 188 - Artificial Intelligence)
C (CS 186 - Databases)
C (CS 161 - Security)


Did they change it recently? When I took 188 (Fall 2005), it was still in LISP. - executor21
They're also now using Ruby (on Rails) for CS169 - Software Engineering some of the time (it depends on the professor for any particular semester). - Tikhon Jelvis
12
[+7] [2009-03-13 19:56:02] Tyler McHenry

University Of Southern California (as of 2006, at least):

  • C++ for the majority of CS courses (i.e. everything not listed below)
  • C for data structures course
  • Java for survey course / part of intro to OOP
  • M68k ASM for intro to architecture
  • MIPS ASM for other architecture/hardware courses
  • C# for databases course (but this may have just been the prof)
  • Prolog for part of the AI course

VB, PHP, etc only show up in the information technology courses which are not part of the CS curriculum.

Sadly, no functional programming whatsoever at the undergraduate level.


13
[+5] [2009-03-13 19:06:05] Ben S

Languages I've used in Computer Science @ University of Waterloo in Canada:

  • Java or Scheme (first year onwards)
  • C and C++ (second year onwards)
  • SQL using DB2
  • MIPS assembly (Operating systems class)
  • OpenGL (upper year graphics classes)

Those are the only ones we had in class discussions/tutorials about.

Upper year classes with programming assignments (such as advanced algorithms) generally allow you to code in C, C++ or Java.


14
[+5] [2009-04-14 18:49:28] Jeach

I think you are somewhat confusing the issue here.

I don't believe the actual language being used really matters. After all, its really only a bunch reserved words (syntax).

If you take language X away from developers and suddenly replace it with language Y, you will be surprised how well they adapt and how short the learning curve actually is. My point is that its not the language syntax that needs learning, its the actual concepts... design patters, object-oriented programming, design & architecture, best practices, etc, etc. You can learn any of those concepts with any (OO) language.

Since today, most companies will choose to use a successor to C/C++ that is fully OO, that doesn't leave most Universities with much choice:

a) Spend millions of dollars for Window OS (a must, and limited to x86 only), spend millions more for their .NET tools & platform. Ultimately limiting your students to ONE platform, or

b) Spend close to nothing on Java, reuse existing platforms (don't need only x86), also teach them about a full range of OS's (Linux/Unix/Mac/Windows) and architectures that are non-x86 based.

As for your second part:

churning out mediocre programmer after mediocre programmer.

That is pretty much unavoidable... regardless of school or programming language. The reason for that (IMHO) is that programming is an ART contrary to common belief that it is a science.

You can give 1000 people a brush, some paint and a canvas. Just like you can teach 1000 people how to code and give them a computer.

The end result is that although everyone painted on their canvas, only a few were a master-piece, some where visually appealing, but most were just simply awful. The same is for the code... a few were extremely efficient and well written, some where just standard, but most was just poor unreadable/unmaintainable code.

So why do we hire most of these 'awful' students then? Because there is just too much damn demand for software programmers! That simple! And companies are raising salaries by stealing them away from their competitors, thus enticing another round of students to join up.

Jeach!


Exactly-there's a limited pool of widely used languages to choose from. The differentiating factor isn't that top-tier Universities use $LANGX instead of $LANGY, but that they have better faculty, students & curricula. Using Lisp and ML does not make a program good any more than Java makes it bad. - Sean McSomething
+1. I mostly agree with what you say. Especially the painting metaphor. However, perhaps the exposure to the different language paradigms that exists that the "better" schools is part of what helps make them better? Functional/Imperative/etc. Rather than simply using Java for most classes. - Simucal
15
[+5] [2009-03-14 11:19:29] James Green

I found Oxford (http://www.comlab.ox.ac.uk) didn't really teach languages per se, the course taught actual computer science -- algorithms, data structures, a healthy amount of relevant mathematics, that kidn of thing -- with very little focus on the specifics of language. Where necessary, though, we got a little tuition in (and pointers to where to find more) Haskell, Oberon, and a fictitious MIPS-like language called "SPIM" -- pretty sure we ended up writing a C -> SPIM compiler in OCAML, eventually.

Nottingham (http://www.cs.nott.ac.uk) on the other hand seems much more focussed on producing Computer Science graduates who are already trained software engineers / programmers -- so there's a lot of focus on Java early on, with more 'exciting' languages like Haskell only taught in optional modules later in the course.


Based on recent interviews with several of their best graduates, The University of Texas at Austin resembles Oxford's approach. Their grads are very strong on theory, but less strong on actual application development and software engineering. Not surprising for a CS department that spawned from the Math department. - Jim In Texas
16
[+4] [2009-04-26 20:44:27] Stephen Pace

Texas A&M University - College Station [1]

Undergrad: CPSC 110 - Pascal; CPSC 113 - C++; CPSC 121 - C++; CPSC 203 - FORTRAN; CPSC 206 - C; CPSC 211 - Java / C; CPSC 221 - C++; CPSC 314 (Programming Languages) - Java/Haskell; CPSC 321 - Assembler; CPSC 435 - Ada

Grad: CPSC 601 - C / Java; CPSC 602 - C++

If it looks a little heavy on C++, keep in mind that Bjarne Stroustrup is one of the profs. :-)

[1] http://www.cs.tamu.edu/

Seeing Pascal and FORTRAN on the list makes me shudder. I had to do FORTRAN back in the stone age when I went to college. OK maybe not the stone age, but the punch card age. - Jim C
I'm an Aggie too. When I went there, CPSC 111 was in Java, but I've heard that's changed now. - dan04
17
[+4] [2009-08-17 18:50:42] jalf

I'm studying at University of Copenhagen, Denmark. It's not quite Ivy League, but the best university in Denmark, and been rated in the top 50 worldwide a few times, so pretty decent at least.

In the first semester, we were taught SML, a functional language, as a general introduction to programming.

This has the fun effect of leveling the playing field. All the cool kids who think they've been clever and learned Java or C++ before enrolling have to throw it all out and start over on a completely different language. It usually turns out that those with no programming experience actually grasp it easier.

Second semester, we were taught Java as an introduction to object-oriented programming.

On second year we were taught MIPS and Alpha assembler (the former as the target architecture in the compiler class, and the latter because we had to implement a simple OS kernel running on an old Alpha).

And that's basically all the language-specific classes we have. Depending on which classes you take past these, you'll probably learn C, C++, Haskell, Lisp, Prolog, Python, SQL and a few others. But in general, specific languages tend to take a back seat. They're something you occasionally have to pick up pretty much on the fly because you need it for an assignment or project.

(In the years since I enrolled, they've reshuffled some of the classes, so the exact order in which we learned these, and the amount of time spent on each is no longer accurate. In writing the above list I just stuck to what I knew. In particular, they've butchered the kernel project and with it, Alpha assembly. The latter isn't a big loss of course, but you really learned a lot from the kernel project)

I think that's the correct way to teach CS as well. It is not a programming degree as such. Individual programming languages are just tools to be used as necessary.

And without reading Joel's or Kay's minds, I think that was their point too. A CS college shouldn't just teach today's fashionable language. Whatever languages they teach should basically be incidental to the real meat of the degree.


That sounds like a pretty awesome way to organize a computer science degree program. - bcat
18
[+4] [2009-03-13 19:07:06] TenebrousX

University of Michigan

  • C++
  • Assembly
  • Your choice in some higher-level classes

I thought they were just C, or did they change that recently? - Neil N
Most use C++ now, though some still use C or a mix of C and C++. - Miles
I took the intro course and it was c++ - jle
19
[+4] [2009-03-15 12:32:14] small_duck

ENSIIE (one of the top French software engineering schools)

C - introduction to programming, system programming (Linux kernel)

Java - Object Oriented programming

PHP - Web programming

Ocaml - programming concepts

A bit of Prolog, a bit of Promula.

I think the school was careful to teach the concepts behind the language (hence the use of Ocaml, whose presence in the industry is homoeopathic at best). The courses on testing and the courses on compilers, which were not based on any programming languages, were probably as useful in making us good programmers as the other language courses.


20
[+3] [2009-03-13 21:43:40] Jörg W Mittag

I studied Information Engineering and Management at the University of Karlsruhe, Germany. IE+M is actually only 40% economics and 20% law, so only 40% CS as compared to a pure CS degree.

The standard language used for demonstrating programming in general, as well as OO was Java. In my case that was before Generics, so generic programming was demonstrated using Pizza, which is a superset of Java adding, among others, generic programming.

Functional programming, type inference, pattern matching, currying, partial application were demonstrated with Gofer, an early implementation of Haskell.

Scripting, dynamic typing, high-level programming were taught using Python.

Assembly programming was taught using MIPS assembler.

In one course we had to implement a simple CPU, then write some micro-ops in binary code, some assembler ops in microcode and some simple programs in assembly. However, this was all done on paper, there was no simulator for the CPU.

We had to write some simple programs in lambda calculus, and for a universal Turing machine, also solve some problems with Semi-Thue systems, Markov systems and µ-recursive functions. There were some minimal Turing-complete languages, like the WHILE language, which only has the WHILE-statement, the constant 0, the SUCCESSOR function and one single variable. There were also some not Turing-complete languages, like the FOR language (you can probably guess).

In our databases course, we used SQL and OQL, and also some XML query language (I don't remember if XQuery existed yet).

In some course we had to write XSLT.

In some of the courses I didn't take there is C and x86 assembly. Also, the Sather-K language is designed in Karlsruhe, so some profs use that. One chair has a cooperation with Microsoft, and used an early preview of C#.

We did some Prolog.

All in all, I think there was a good mix from pretty much every paradigm except language-oriented programming / metasyntactic abstraction (IOW: Lisp was missing).


21
[+3] [2009-03-13 19:19:46] Adam Jaskiewicz

I graduated from Michigan Tech, which, while not a top-tier CS University (top 50 in Mechanical, Civil, Environmental, and Materials engineering, FWIW), is supposedly regarded as having a fairly decent CS program.

The intro courses (CS 1 and 2, Data Structures) were in Java. Next was a "C++ for Java Programmers" course which introduced C++ and some GUI programming with QT. Operating Systems was taught in C++, and Systems Programming used C, though we were pretty much just expected to teach it to ourselves (K&R was a "recommended but optional" textbook). In all of these classes we used vim and Makefiles on Linux and Solaris machines. In Computer Architecture we learned MIPS assembly, and in Programming Languages we used Scheme (and a very tiny bit of Prolog, pretty much "This is Prolog, it's nifty but you won't see it again unless you take AI").

As far as electives go, I took a databases class where we were taught SQL (MySQL specifically), though most of the class was more concerned with theory (relational algebra, normalization, ACID, storage, etc.) We also touched on accessing databases with JDBC and Perl's DBI. Our final project, which was pretty much "do something neat that makes use of a database", could be written in whatever language we wanted. Other classes were similar; use whatever language we feel suits the problem best, just as long as we provide instructions and everything needed to build and run it on the lab machines (Linux). System/network administration classes used a fair amount of bash scripting. In addition to C, C++, and Java, I decided to turn in a couple of assignments in PHP, several in Perl, and a few in Python, when they were appropriate for the job.


22
[+3] [2009-07-20 19:05:22] Greg

As Joel says "A sure sign of my descent into senility is bitchin' and moanin' about "kids these days," and how they won't or can't do anything hard any more." Bitchin' indeed.

It's as absurd as Montgomery Scott bitchin' that they don't teach the internal combustion engine at Starfleet Academy anymore. Surely you can align those dilithium crystals without knowing how to construct a rotary engine.

If code-monkey jobs didn't require a bachelor's degree, perhaps the degree program would retain higher standards and lean more towards continuing education than vocational training...but, it's what the market demands.


23
[+3] [2009-08-17 18:05:28] RightFullRudder

Stanford

C++ in introductory courses CS106A, CS106B

C/C++ (low-level memory management), Lisp, Python in introductory course CS107

Java in hardcore object-oriented class CS108

C in most systems courses including Operating Systems, Networks, Compliers

C in most AI courses

C#, Javascript, Python, and others in specialty courses


24
[+3] [2009-07-20 18:43:40] Don Stewart

Partial list of universities teaching Haskell for a significant number of courses:

  1. University of Edinburgh
  2. Oxford University
  3. Chalmers University of Technology
  4. University of New South Wales
  5. Australian National University
  6. Portland State
  7. University of Pennsylvania
  8. University of Kansas

Longer list at:

http://haskell.org/haskellwiki/Haskell_in_education#Haskell_as_a_first_language (probably well out of date though)


25
[+2] [2009-03-14 12:17:06] community_owned

University of Oslo (Norway):

The first semester one is taught Python if one is going to have a lot of math courses later in the grade if not one gets to learn Java.

All courses after that uses laguages, but do not use much time (or none) learning the language it self. One can then take classes that use Java, C, C++, Python, Common Lisp, Prolog, ML, ASM and matlab.


26
[+2] [2009-03-13 19:13:35] Tom

Informatic Engineering [1], University of Buenos Aires

  • C / C++
  • Java
  • (optional) C#
  • (optional) Smalltalk
  • (optional) Python
  • Perl
  • Shell Script
  • MIPS
[1] http://en.wikipedia.org/wiki/Informatics%5Fengineering

I'm from Buenos Aires, and i'm going to UBA(University of Buenos Aires). - Agusti-N
I hear a lot of good things about this school actually from our ACM meetings. - KingNestor
What type of shell? BASH? KSH? ZSH? - new123456
27
[+1] [2009-03-13 19:57:50] Spencer

Some University of Arizona computer science courses:

  • Intro to Computer Science: Java
  • Intro to Object Oriented Programming: Java
  • Computer Architecture and Assembly Lang: MIPS
  • Programming and Unix: C
  • Comparative Programming Languages: Haskell, Prolog, and Ruby
  • Starting summer of '09: C++ and Python.

For further information, schedule of classes [1] (fall and spring offer different courses)

Java is the introductory language, but after Intro to Object Oriented Programming, it doesn't come up very often. There are about 3-4 CS courses that require Java in our curriculum. Many upper division courses require C.

[1] http://garnet.ccit.arizona.edu/cgi-bin/schedule/schedule.cgi?

28
[+1] [2009-03-13 20:03:54] mlindegarde

I went to the University of Toledo.

We learned the basics of Imperative programing using C++. The next course intorduced us to Object Oriented programming still using C++ (I believe it is currently taught in Java). After that it didn't matter what language we used.

The professors I had at UT focused on understanding the underlying paradigms and not so much the language you used to implement a solution. Once you understand the underlying principles, it doesn't matter what language you use: just pick up a hand reference to see if you should end your statement with a semi-colon or not.

Which language(s) you know doesn't impact how good of a programmer you are. Having exposure to the various paradigms (object-oriented, functional, imperative, declarative, logic,...) will certainly help round out your tool set, but that won't make you a great programmer. What I'm trying to say is that a good CS program doesn't teach "languages", it teaches "concepts" and let you use whatever tool needed to demonstrate your understanding of those concepts.

Languages I used at Toledo: - LISP - C/C++ - Assembly - Java - Python - SQL - Ada - VSE (I'm not sure if anyone that didn't have Dr. Ledgard knows about that one) - C# - HTML / CSS / XML / JavaScript - Visual Basic - The one we made up in our compiler design course.


Functional programming in C++? Perhaps you meant Structure Programming? - jmucchiello
Yes, you're right, I made a mistake there. C++ is a Procedural/Imperative language: not a Functional language. LISP would be a Functional language. - mlindegarde
29
[+1] [2009-03-14 03:59:24] Mark Stock

I imagine that the programming language that universities would teach would be the programming language that you write the same programming language in.

Pedagogically speaking, I also imagine that universities would teach how to learn how to learn, and teach how to teach how to learn how to learn, and teach how to implement learning processes as mathematical functions.


I only delve in the bottom tiers. I didn't go to university. - Mark Stock
I don't know where this misconception comes from, and I see this response a lot. While they do "teach you how to learn how to learn", the instructions you receive aren't given in a vacuum and different organizations use different languages. - Simucal
That is what is in question, what languages the student introduced to throughout their studies. - Simucal
30
[+1] [2009-07-20 17:31:12] Thomas Owens

Rochester Institute of Technology [1]

The next academic year is bringing some changes, if all goes according to plan. I'm on a 6 month co-op, so I won't be there until Winter to see how it actually unfolds, but it's something like this:

Computer Science 1 and 2: Python Computer Science 3 (Data Structures): Java Computer Science 4: C Software Engineering 361 (Intro to SE): Java

Most of the other SE courses (my major) are language agnostic, although most people use C# or Java.

[1] http://www.rit.edu

31
[+1] [2009-07-20 20:12:49] Alex Moore

Ohio State University

The OSU CSE/CIS program is as follows:

Year 1

  • RESOLVE/C++ - for the intro classes, it's kinda like a bastardized easy version of C++
  • SPARC Assembler - which is actually used to write a simple software emulator of a 8-bit RISC computer

Year 2 and beyond

You learn whatever the class needs.

For Language Theory and AI classes you pick up Lisp or Scheme, for Numerical Analysis classes you will probably use C or C++, for Systems classes you will pick up something with good libraries, etc. OSU tends to make sure you know how the computer works from the hardware up to the highest level constructs and languages, and the rest is up to you.

I agree with everybody that said that "They have always churned out a lot of mediocre programmers, a handful of good ones, and a few brilliant ones. Only the language has changed." The things that really matter the most are their incoming skill level and their passion for CS, those things will really drive the skill level of graduates.


OSU also offers a year 1 java course - faceless1_14
CSE 201? That's the intro to programming course they make you take if you haven't tested into the RESOLVE courses or aren't familiar with OOP. - Alex Moore
32
[+1] [2010-08-10 07:14:20] Michael Kuperstein

Tel Aviv University:

  • Introduction to Computer Science: Scheme, based on the old MIT Class.
  • Software 1: Java.
  • Operating Systems: C (actually, there is a specials "project" class that teaches C, but the main reason this is done is to support the OS class, otherwise this class would probably have used Java)

Of course, there are also some elective classes that teach additional languages, but those are the basics.


33
[0] [2010-11-14 00:49:34] Siddharth Sarasvati

Rochester Institute of Technology

I am a grad student at RIT. Well, first and foremost RIT gives bridge courses to almost all the grad students, which I feel are very important for a strong base. The bridge courses are Programming languages JAVA and C++, and a course in Computer Theory.

The language cluster in the CS department has various programming skills courses.

For the Fall 2010 quarter they have

  • C# and Design Pattern
  • Functional Programming and Haskell

For Winter they are offering

  • Aspect Oriented Programming

34
[0] [2011-03-06 05:47:22] Tom Murphy

I am glad to discuss why I created the Contra Costa College community college CS degree I did for my students. I have only 2 years, in general, to suitably warp their minds.

  • Intro to Programming: C++
  • Data Structures and Algorithms
  • Computer Architecture
  • Intro to Programming: Scheme
  • Calc 1 and 2
  • Finite Math
  • Linear Algebra

The real issue right now is parallelism. College students have computers with multiple cores, yet are typically unable to do parallel programming because it is not taught. The scandal to me is that industry is often hiring non-computer scientists to do what should be the work of computer scientists. We will be a hiring manager from Adobe soon on our "Teach Parallel" show and it should be interesting. Alan Kay, mentioned above, is another person we interviewed. My page http://about.me/wolfmurphy has links to my parallel related activities.


35
[0] [2011-03-27 23:43:21] mikermcneil

Computer Science University of Texas at Austin (graduated 2010)

Elective classes are starred (*)

CS 307 : Intro (Java)

CS 315 : Algorithms And Data Structures (Java)

CS 313K: Logic, Sets, and Functions (Lisp)

CS 310 : Computer Organization and Programming (C, X86)

EE 316 : Digital Logic Design (VHDL, X86)

CS 336 : Analysis of Programs (psuedo-code, Hoare-triples)

CS 352 : Computer Systems Architecture (C, Java)

CS 337 : Theory in Programming Practice (Java, Haskell)

CS 378*: Natural Language Processing (Java, Python)

CS 354*: Computer Graphics (C++, C)

CS 341 : Automata Theory

CS 356 : Computer Networks (C, Java)

CS 372 : Operating Systems (C and Java)

CS 373 : Software Engineering (Python, some Java)

CS 347*: Data Management (SQL, Java)

CS 105*: C++ (C++)

CS 108*: Unix (Awk)


36
[0] [2009-08-17 18:24:25] community_owned

Neumont University (a growing computer-science, project based university)

first quarter Introduction to Object Oriented Programing
Intro to C#
Intro to Java
etc.
subsequent quarters
SQL programming
Data modeling
etc.

Students at Neumont are proficient in a few different languages at Graduation including the .net languages(C#, C, VB, etc) and Java. Few may dive into objective-c, and Ruby as well.


37
[0] [2009-08-17 18:27:26] BoltBait

National University [1]

I was in the last track to learn Pascal in the Intro to Programming class.

Now, they teach:
C
C++
Java
X86 ASM
SQL

Before choosing National, I looked into Sac State (Sacramento State University) and they were teaching Cobol on a mainframe computer! I said, "no thanks." :D

[1] http://nu.edu/OurPrograms/SchoolOfEngineeringAndTechnology/ComputerScienceAndInformationSystems/Programs/BSComputerScience.html

38
[0] [2009-10-06 16:14:07] Brian Liang

University of Toronto (Electrical & Computer Engineering) (Not Computer Science)

  1. C/C++
  2. Java (Basics, first year course).
  3. Assembly (Motorola 68K)
  4. Verilog (Altera boards)

39
[0] [2009-10-06 16:22:50] Uri

Having taught at top-tier schools, I don't think that the problem is the languages. The problem is that people don't get any real-world software engineering education and skills. At best, this is left for optional electives.

This is part of a philosophy that CS is not about programming and that you don't go to a top-tier CS department to become a software engineer. Unfortunately, while that should ideally not be the case, few people go for the Ph.D. (and many end up as engineers anyway, as happened in my case), and most end up as software engineers.

You don't see this problem as much with EE departments, where it's understood that it is completely acceptable for graduates to work as engineers, and there is therefore an attempt to make them understand that circuits are more than just pretty lines drawn on a board but rather quite a messy thing.


40
[0] [2009-11-30 01:30:51] Matt Luongo

Georgia Tech:

  • Intro to CS in Python
  • Intro to OOP in Java
  • Intro to Data Structures and Algorithms in Java
  • Computer Organization and Programming (systems basics) in C
  • Objects and Design in Smalltalk

Each of these courses is required before degree specializations kick in. Intro to CS for non-CS majors, however, is in Matlab =/

Many of the higher level courses allow the student to choose a preferred language, as long as the TA and/or professor know it. In courses like software engineering and senior design, the choice is absolutely up to the project group. Courses with domains tied heavily to a language usually use it - the intro to AI course is taught in Lisp- but that is beginning to change (the languages, computational theory and compilers course allows Java).

Despite the freedom, Java is definitely the lingua franca, and most students don't really break out of the C/C++/Java family. Web technologies are never taught- aside from tangent to a databases specialization course- though sometimes professors expect students to know a bit of HTML. I don't know of any course that focuses on Javascript (you would think the into to UI class, right?), or any server-side technology (PHP, Ruby, J2EE, .NET for the web, etc) other than the last project in the intro to databases course. From what I've seen, a lot of students decided to give the web a first or second try for their senior design project, or learn it on the side.

The further out of the norm your course choice is, the better chance you have to be exposed to cool languages. AI, web development, and HPC are all great areas to try something new, and it seems like I'm always learning something that I can apply to the rest of the field.


41
[0] [2009-12-10 21:37:04] Dan J

Cambridge University

In 2000 it was: -Java -Assembly -Prolog -ML -History of other programming languages (BCPL, C, Smalltalk, etc)

http://www.cl.cam.ac.uk/admissions/undergraduate/intro/

So long as the language is fairly modern and widely used (e.g. C, Java etc), then it doesn't much matter - the skills being taught are more important.

Saying that, IMO it is very useful to learn at least one low level language (e.g. C, Assembly), as that makes you appreciate what is going on under the hood, which is useful for most serious programmers.


42
[0] [2009-12-16 01:26:29] strongopinions

If you take a low-level CS course at Princeton you may have the rather surreal honor of learning about VB6 and DLL hell from Brian Kernighan.


43
[0] [2009-12-16 01:40:31] goatlinks

I've taken quite a few programming courses at different UC (University of California) Campuses.

UCLA - Mostly C++, C, Java, MIPS Assembly, x86 Assembly, and a tiny amount of python.

UC Irvine - Mostly Java and a tiny bit of scheme

UCSD - Mostly Java, but some C and C++ for Data Structures, and SPARC Assembly.


44
[0] [2009-12-31 00:31:36] Andreas Hornig

I think it depends on some facts like

  • what the profs want the students to do with it (eg. objective coding)
  • cost (open source code and IDEs, or licenced ones)
  • what the prof prefers

I'm not studying computer sciences, but our informatics prof wanted us aerospace engineer students to code in VB.net. One of the reasons was, that the IDE sharp-develop is free of any charges ;). and in my opinion he can code it, because it is similar to basic, that he learned when he was a student. So he is used to it.

Formy diploma thesis I coded in Java, because it has nicer code than vb.net (sometimes it's butt ugly! :)) and a friend of mine is a informatics students and they codein java, so he was able to help me, when I had questions how to solve my problems.

best regards, Andreas

Hochschule Bremen - University of Applied Sciences Bremen (Germany)


45
[0] [2010-01-05 15:50:40] Stephen Tordoff

University of Cambridge, Undergraduate

  • Year 1
  • Java practicals
  • ML lectures and practical
  • Some MIPS

  • Year 2

  • C/C++ lectures in year 2
  • Verilog in year 2
  • More Java and MIPS
  • Prolog

  • Year 3

  • Not there yet :p

Most of the course is theory based - discrete mathematics, algorithms etc. When an implementation is provided, it will often be in pseudo-code or outlined (partial implementation) in Java.


46
[0] [2010-03-17 10:48:51] Roman A. Taycher

Portland State University(not a top school)-Note this is what I was taught in although its similar for new students especially for the 161-202 and compilers part I, II classes.

161,162,163,202- Intro classes procedural->data structures->basic OOP Taught in C++ w/ a tiny! bit of Java at the end of the last class to try it out. C++ is taught mostly c style to start out with. Using iostreams for i/o and c style strings(char arrays). Then you learn pointers ->recursion->data structures->C++ OOP (inheritance/protected/friends/operator overloading)

200/201(they might have turned this into one class now- C and a bit of x86 gas assembly(figuring out what it means not writing any programs with it)-teaches a bit about how a c program works-binary representations of int and float,how structs fit in memory, the stack,loops, some optimisation stuff.

250/251/3?? -Logic/languages/NFA/DFA/turing machine/for all/some/boolean algebra/proofs,ect.-mainly theory but when I did it hw in language instructor decides on prolog/maple/Standard ML

386-Intro to databases-sql (postgres I think,plus theory, plus one short php script)

Other classes were instructors pick(Java is popular especially for the compilers class)

Usually its some basic instructions plus pick it up on your own-unless its Java

Also although higher level classes aren't supposed to just teach programming languages have 2 cool elective classes called OOP and Functional Languages, which teach Smalltalk(Pharo) and Haskell respectively although considering how idiomatic those languages are to those programming paradigm its understandable.


47
[0] [2010-08-10 06:57:14] user373455

Tons of languages are available.

I can just talk for Blekinge Institute of Technology in Sweden. Here, most of the Computer Science programs starts out with 7.5 credits with the foundations of c++, and follow ups with Algorithms and data structures. After that, you have 7.5 credits with Java.

Other computer science ourses often handles different languages, it all usually depends on what the teacher like. But the mix is kind of big. It handles all from C, IA32 assembly to Java.

Also, in different project courses any language could be an option, depending on the customer needs. For example, for my graduation project I learned objective-c.

The best approach is, according to me to start out with C++ and from there, go to Java and C. You might say you could start out with C but you also want the object oriented languages as c++. I believe this worked and still works good. It was much better than before, when all Computer Science programs started out with Java, and then follow upped with C++. Many people had huge problems getting getting a hand of C++ when they've started out with Java.


48
[0] [2009-07-20 17:35:20] Asaf R

The Technion [1] (Israel Institution of Technology):

The mandatory part of the degree involves the following languages:

  • C as the first language (Introduction to CS), C++ later on.
  • Java
  • C Shell*
  • Matlab*
  • MIPS Assembly, or PDP-11 (depends on the faculty - CS [2] or EE [3])

Some optional courses involve:

  • Lisp
  • C# - as an optional language for creating simulations

(*) Kind o' argumentative if these are "Languages".

I'd say C++ is the backbone of Software Engineering here.

Note: The Technion is considered Israel's best engineering school and one of the 30 best technological instutions world-wide. I consider that top-tier, and hopefully I'm right - I'm deeply invested in it already (3 years down, one more to go).

[1] http://www.technion.ac.il
[2] http://www.cs.technion.ac.il
[3] http://www.ee.technion.ac.il

49
[0] [2009-07-20 17:53:48] Daniel Huckstep

A quick list of languages myself and others used in classes while at the University of Alberta (Software Engineering program)

  • C
  • C++
  • Java
  • Perl
  • SQL (if you want to count that)
  • Lisp
  • ruby
  • Motorola 68K assembly
  • MIPS Assembly

Another class I wanted to take used Smalltalk (the OO class).


50
[0] [2009-07-20 18:00:25] SamGoody

Compuskills University, Jerusalem, Israel.

Small but high level.

.NET languages

Web languages (PHP, Javascript, HTML, [& some Python, Ruby, and Actionscript])

[I'm aware that these languages are not at all in the same fields.]

A look on Dice.com shows that the real companies are looking for Java monkeys, so it makes sense to teach them that:

* 8498 results for JAVA
* 4956 results for .NET
* 4105 results for C++
* 1223 results for HTML

51
[0] [2009-07-20 18:25:05] eeeeaaii

C.S. department at Columbia University

http://www.cs.columbia.edu/

When I was an undergrad in 97/98/99 I started and finished with C (without the ++) and taught myself Perl and Java on the side. Now they are starting people off with Java but then you have to learn C and C++ to take many of the 4000-level courses (Computer Graphics, Operating Systems, etc). You will do some sort of assembly programming when you take the low-level classes such as Comp Org. Some AI courses are being taught in Lisp. There was a class taught in OCaml last year I believe.


52
[0] [2009-07-20 18:33:38] Dean Putney

The Carnegie Mellon answer here shows the languages taught by the Computer Science department. I'm an Information Systems major, and the languages are pretty different:

  • Introduction to Information Systems - HTML CSS Javascript
  • Information Systems Milieux - PHP SQL
  • Application Design and Development - Ruby on Rails

Further courses are largely project based and the choice of language is left up to the students. There has been some discussion of teaching Python, but as far as I know that has not materialized into a course yet. Information Systems courses also tend to be divided into advanced and basic sections based on prior coding knowledge.


53
[0] [2009-07-20 18:38:05] Mark Ursino

Northeastern University, College of Computer and Information Science [1] - the nations first college devoted to CS:

Languages of the undergrad program:

  • Scheme to learn basic programming (recursion, functions, data types) and later in senior year to understand programming languages (parsers, evaluators, interpreters, scope, etc.)
  • C in Computer Org and in my OS class
  • Java to take what we learned in Scheme and make it object-oriented and to learn OOP principles
[1] http://www.ccs.neu.edu/

54
[0] [2009-03-15 11:51:35] Vasil

The one I graduated on teaches the same ones as Princeton + Prolog.

Does it matter?

80% of the people that graduate can't code their way out of a paper bag.


55
[0] [2009-07-20 18:47:15] tkotitan

When I was at Clarkson in 1999-2003 I had a bunch.

  • C++ was the main beginner language not yet usurped by Java.
  • C for OS - modified the linux kernel
  • Prolog and Java as part of programming languages
  • Scheme (a whole class on functional programming)
  • SQL (databases, naturally)
  • C OpenGL for graphics
  • some x86 assembler for micro processors but not really.
  • Also, importantly, we had a few classes learning to use a library, the MFC. Now which will be replaced with .NET. But the point is to get practical experience building big modern, GUI applications.

I happened to be there at a good time when the SoftE program emerged, and we already had CS. My class was the first of 4 schools in the nation to get ABET accreditation for SoftE, and the only one to get the full 6 year approval. And yes I was one of the best programmers in my class, and went right into industry as a programemr during a recession.

/feather in cap.


56
[0] [2009-07-20 18:54:53] nullArray

At the second rate state school I started at, we learned C++, but we didn't even learn basics like linked lists or classes. I transferred to the first rate state school, and they teach some pretty intense Java here for freshmen. Shell programming (bash, awk, perl, etc) in a few classes. There's of course, a class on MIPS. Even a fourth class where you design your own language.


57
[0] [2009-04-26 20:58:03] Mark

Simon Fraser University [1]

Often, whatever language we want. A few classes force Java, but also MATLAB, Python and C. I hear some classes use Lisp, and we offer at least one class on C++. That said, there are many students that only seem to know Java and then they struggle when they encounter one of these new languages. I guess I was fortunate to learn C++ as my first language in highschool. Oh, and my computer architecture class forced assembly language. So, I guess it's pretty hard to get a degree here without at least touching Java, C, and Assembler. The rest sort of depends on what you take.

[1] http://www.sfu.ca/

58
[0] [2009-04-26 21:04:28] Uri

Technion - Israel Institute of Technology (top-tier in its little fiefdom :)

In the early 2000s, intro to CS was focused on C programming. The next course in the chain introduces shell scripting and them moved to teach C++. Later OOP courses focused on C++ and Smalltalk. There was a programming languages course that taught Pascal, Prolog and primarily ML. Our AI course used Lisp.

At the time, C# or Java were not used, at least not formally, students were expected to learn these languages themselves for certain projects.


59
[0] [2009-04-26 21:44:20] ojblass

University of Florida (Not top Tier):

  • Introducion to Computer Science (Scheme)

  • Computer Architecture (MC68000 Assembly)

  • Data Structures (Allowed to use any language that runs on any of their servers)

  • Operating Systems (C)

This is very well dated but I was impressed with them allowing you to pick and chose what to use for the Data Structures course. The best programs should provide an opportunity to make choices about the languages that you learn.


60
[0] [2009-04-26 22:08:42] David Hodgson

University of Texas at Austin (was ranked 9 or so, not sure where it is now):

Java for Intro classes and data structures/ADTs. I think the introductory classes used to use Scheme, but I think that scared too many people away from the program.

Haskell/C/C++ for the Programming Languages class

Java for Operating Systems

An assembly language class

Many of the electives used C and C++.

They also have one hour classes for each of the other big ones (Python, C#, Perl, LISP), but unfortunately I didn't take any of those.

There was plenty of theory in the required curriculum as well (discrete math mixed with programming proofs, automata theory, etc.).

I remember one professor speaking of a "departmental catch-22", where although 95% of the people graduating went straight into industry, they still geared the program to the 5% going to graduate school.

They were (and probably still are) really anti-Microsoft - mostly Linux labs, no VB classes, and no C# for quite a while.


61
[0] [2009-04-26 23:05:13] Stuart Branham

At its inception, Transylvania University [1] had a bit of history with Carnegie Mellon's CS department, though things have changed in the last 50 years naturally. I was pretty happy with the teaching style there.

Logic and Problem solving - C++

Data Structures - C++

Computer Organization - MIPS assembly

Theory of Programming Languages - LISP, C, Prolog, Java

Operating Systems - C++ required for programming NachOS

Other than those requirements, you can pretty much hack in any language you please. Most students stick to C++ however, since it is the language taught in the first two programming courses. My adviser, however, would probably have heckled you if you wrote in Java. Especially anything math intensive. Though the curriculum has gotten easier since I graduated, (allowed students to opt-out of two of the more difficult classes and cut two semesters of discrete math to one) it's still primarily a school that teaches computer science as science, not a vocation.

[1] http://www.transy.edu

62
[0] [2009-04-26 23:10:46] Samir Talwar

Imperial College London teaches Haskell for the first six weeks, an in-house imperative version of Java called "Kenya" for the next four, and then in the second term, Java and Pentium Assembly. These aren't the only languages you need to know to get through the course, but you're expected to pick up anything else on your own. Everything after the first year either requires you to know a language, or teaches concepts and lets you pick the way you implement them.


63
[0] [2009-06-29 01:43:58] Sam

The Australian National University:

It was Haskell for quite a while, then they changed to Java, but that lasted only a couple of years, and now I think they're back to Haskell (along with various other languages for specific courses, such as Ada, PHP, Korn shell, etc.).


64
[0] [2009-06-29 01:48:08] Jacques René Mesrine

There was one course at my university (Monash University) in which we were taught to program in Lambda Calculus. It took us just a few minutes to master the syntax.


65
[0] [2009-06-30 03:04:18] omgzor

My college, Universidad Central de Venezuela, Licenciatura en Computación:

  • Java (courses: Algorithms and Programming, Software Engineering, Advanced Programming Techniques)
  • C/C++ (courses: Algorithms and Data Structures, Operating Systems)
  • x86 Assembly (c: Computer Architecture)
  • Haskell, Prolog (c: Programming Languages)
  • Python (c: Probability and Statistics)
  • Mathlab (c: Numeric calculus)

These are the required courses, I know some elective courses have been taught in Perl and Ruby, but haven't taken any yet.


66
[0] [2009-06-30 03:37:25] Tim

Otago University Computer Science taught Java at the 100 level and half of the 200 level. This was basically programming and problem solving basics.

In the second half of second year it moved onto algorithms and data structures in C.

In 3rd year they didn't seem to lock you into any particular language, you could pretty much use what ever you wanted. With the exception of a few - OO was C++, A.I. was prolog, lego mindstorms (:D).

I believe they now have a Python type paper.

At the time while I was studying I was a bit pissed off because we were never really taught how to use a particular language. I remember being particularly annoyed that they didn't teach PHP and feeling like I just wasn't learning anything. If I ever tried to code anything in my spare time I would use Java as that's the one I was most comfortable with.

It wasn't until I actually left Uni and started working that I realised how beneficial their way of teaching was. The majority of class time was spent on learning how to program effectively rather than the ins and outs of a language. I started to realise how beneficial this was when I would see people who had gone through other courses only to become C#/Java masters and it's almost like they are locked into a world of business system programming.


67
[0] [2009-07-10 16:08:22] IanGilham

Southampton, UK

Introduction to programming principles and more advanced (but still fairly basic) stuff is essentially following the "Java vocational school" approach. The advanced programming course also introduced C/C++ as a single language, mixing concepts from both in a rather messy and error-prone way. That course needed serious rethinking around the time I took it a couple of years ago.

Functional programming principles is covered in Scheme.

The operating systems course focusses almost exclusively on the implementation of a FAT12 driver in raw ansi C.

Engineering principles for software was taught in UML using Java as the base language that everyone is assumed to understand.

Databases were dealt with by using SQL connectors from Java.

There was also a very basic HTML requirement that had nothing to do with the technical disciplines, but was more about personal professional image.

Compilers is handled by fiddling with JFlex.

Formal specification is done in the B method and language, as most of the staff prefer it over Z, at least for teaching.

I think it is pretty obvious from this list that "employability" is the most important buzzword at my university.

Despite many courses in the first two years having very strict requirements for languages (nearly all Java), we are constantly encouraged to experiment with any other languages/tools or technologies that seem interesting to us. This is essentially the reason I moved to .NET a year ago, and am currently playing with the D language against bare hardware.


68
[0] [2009-07-10 16:20:51] Tim

CS is generally not primarily for language instruction/learning. They are merely tools for learning CS topics.

At Columbia I learned scheme in the SICP course, C in the OS course, C++ as a language course.

Prior to 1989 I think some CS courses used pascal for an intro language (before SICP was adopted.)

I think they use Java now for some CS courses

The AI classes let you use whatever Lisp variant you wanted.

C was pretty common for the higher level classes. It was a one point elective as well. Which supports the contention that learning a language is not a priority in a CS curriculum


69
[0] [2009-07-14 15:38:27] Yohnny

The University of Alberta has traditionally taught intro computing science in Java. In '07 or '08, a new line of introductory courses were created based around the theory of computation rather than the engineering of programs. These new courses use Perl, though there isn't much programming. (Ironically, I think this is the best way to teach "programming".)

While Java is still the main language taught at the U of A, most senior courses are not programming language-specific, in that the professor allows students to choose their language. This is a huge plus, though it does depend on the professor.


70
[0] [2009-03-14 04:34:52] NoahD

University of Wisconsin - Madison

*Intro Course - Java
*Data Structures - Java
*Databases - C++
*Operating Systems - C
*Networking - C/C++


71
[0] [2009-03-14 02:37:07] community_owned

At Michigan State University, it is as follows:

100 level:

there is only one programming class, technical programming (usually for non CS majors)- matlab

200 level:

introductory programming- python

introductory programming 2- c++

database programming- python,SQL,Javascript,AJAX

300 level:

computer architecture- SPARC assembly, C

object oriented design- c++

data structures and algorithms- c++

From there the rest are 400 levels, which usually let you have some flexibility as to what you want to program in.


I am very impressed with their choices. - ojblass
72
[0] [2009-03-14 00:49:10] Cory Larson

Milwaukee School of Engineering

In a typical Software Engineering track, languages will be encountered in the following order:

  • Java (Basics)
  • ASM
  • C
  • C++
  • SQL
  • Back to Java
  • PHP (optional -- web development elective)

At this point, students will be involved in a Software Development Laboratory course where they are challenged with real-world client projects. The languages learned/used here are subject to the requirements of the project.

After this are the Senior Design projects; languages learned/used are again subject to the requirements of the project.

As an MSOE graduate, I just wanted to add that in many courses, the labs don't require you to pick any one language. You're fairly free to implement your projects in whatever language the professor is willing to accept. This allows them to focus on concepts rather than languages.

http://resources.msoe.edu/cdb/programs.php?progCode=SE2.5


73
[0] [2009-03-14 01:32:53] Varin

Rensselaer Polytechnic Institute (RPI)

  • C
  • C++
  • Java
  • Python (Optional)

Students start with C/C++ and move up to languages with automatic memory management after they have a good understanding of how memory/pointers work.


74
[0] [2009-03-14 02:11:19] theycallmemorty

University of Western Ontario [1] - My school. It's hardly a top tier CS school but it is consistently rated as one of the top 5 universities in Canada.

  • Java (1st year)
  • C, Shell Scripting (2nd year)
  • C++ (3rd year)
  • Scheme, Prolog, XSLT (3rd year programming course)
[1] http://www.csd.uwo.ca

75
[0] [2009-03-14 02:30:13] X-Istence

The University of Advancing Technology (http://uat.edu/)

  • C++
  • C#
  • Visual Basic
  • x86 assembly
  • PBASIC / SX/B
  • SX28 Assembly
  • Verilog
  • PHP
  • ASP.net
  • Flash
  • Java

They teach a bunch of other classes as well, this may not be a top tier university, just what I am currently going through for my Software Engineering degree. If you want more information, their website is actually pretty good, just look past the fact that the Software Engineering degree is now known as Advancing Computer Science degree.


76
[0] [2009-03-13 20:13:41] JMM

University of Minnesota–Twin Cities (graduated 2000)

  • Scheme for the required intro courses using SICP [1]
  • C for the the required intermediate/Advanced courses
  • Some sort of assembly language for the computer architecture/engineering course

Along the way I also remember having to briefly use prolog, tcl/tk, html, VB, and C++ for various class projects.

I should also mention that the languages were never the focus of the classes. Instead they would teach us concepts (algorithms, data structures, language design, etc.) and we would be required to learn the specifics of the language on our own.

[1] http://mitpress.mit.edu/sicp/

77
[0] [2009-03-13 20:33:51] Benjamin Confino

Is City university "Top Tier?" City University [1] It came in the top 50 here [2]

Anyway for a university with more business and computing students than computing students I've found that they have a reasonable selection of Languages:

First year: Two modules of Java programming with a bit of assembler in Systems Architecture and a bit of prolog in Computation and Reasoning. (That includes the business students)

Second Year: everyone has bit of UNIX shell scripting in Networks and Operating Systems, people doing computer science had a module of Haskell including stuff like higher order functions (our lecturer is on the design committee for Heskell' ) and Java/JavaCC in langauge processors, other branches of Comptuer Science do diffent stuff, the Games-Tech people are doing C++ I'm not sure about others.

Third Year: ask me in a years time ;)

[1] http://en.wikipedia.org/wiki/City%5FUniversity,%5FLondon#Teaching%5Fand%5Fresearch%5Fratings
[2] http://www.university-list.net/uk/rank/univ-9019.html

78
[0] [2009-03-13 19:27:24] Wadih M.

McGill University.

I've done the Computer Engineering program there. The following list were the programming languages used for these classes:

  • Intro to computer engineering: C, ASM
  • Intro to computer science: Java, SML (functional programming)
  • Microprocessor Systems: C, ASM
  • Intro to software engineering: Java

No visual basic, no c# (although project teams were allowed to use them. They were simply not thought directly). I know some computer science students learn python, perl, bash scripting... In computer engineering, learning them was a plus, but not officially thought. They assume you should learn it yourself I guess...


79
[0] [2009-03-13 19:31:24] Chris

University of Vermont:

  • Java
  • C++
  • OCaml
  • MIPS Assembly
  • VB.NET (optional)
  • PHP (optional)

The first four languages were taught in classes considered part of the standard required CS curriculum. There were some optional elective CS classes that had you use other languages like VB.NET and PHP. Once you got to the higher-level classes, most of the teachers would give you a project and let you choose how to do it (i.e. you can pick the language).


80
[0] [2009-03-13 19:55:38] community_owned

University of Lund [1]

  • Java
  • C++
  • C
  • Haskell
  • Python
  • MIPS Assembly
[1] http://www.cs.lth.se/

81
[0] [2009-03-13 19:11:05] community_owned

University of Idaho - not top-tier

C++ for first semester, C++/C for second semester/data structures Flex/Bison for Programming Languages (plus exposure to several others) C for Operating Systems/System Software There are optional C#, Java, Python, and VB classes Higher classes are in anything - primarily C/++


UI is essentially a C school these days; we never went past "C with Classes" in terms of C++ when I was an undergrad. - Paul Nathan
82
[0] [2009-03-13 18:56:30] St. John Johnson

Sacred Heart University (not top-tier) teaches:

  • C/C++
  • HTML/Javascript
  • Java
  • VB.NET/C#
  • ASP/ASP.NET
  • MsSQL
  • Actionscript 3.0

83
[0] [2009-03-13 18:58:58] TheTXI

Marshall University's IST program routinely teaches VB.NET, C++, PERL, PHP, and different flavors of SQL. Marshall University's CS program primarily teaches in Java.


84