views:

980

answers:

20

When I was last at university the language de-jour for projects was Java. I was wondering if this is still the case.

Last I checked my university had switched to teaching Python as its first language and from what I can see python seems to be gaining popularity among the "We need to make something quickly" crowd.

Haskell was also the main functional programming language at my old university is it still a big hitter of has it been supplanted by something else?

What languages should someone who is considering going back into academia watch out for?

Clarification

To clarify I mean used in postgraduate projects, not taught, although I would assume since most post grads start out as undergrads one will have an effect on the other.

+6  A: 

Python and Java are pretty popular, but I would say Java still leads.

Geoffrey Chetwood
+3  A: 

Still lots of Java in my experience.

Galwegian
A: 

I'm in a Masters' program, and we end up doing a lot of study of existing software, looking at how its' structured and where it could be better. Because most proprietary vendors won't let you do this, we end up needing to use open-source applications, and these tend to mainly be written in java (though .net seems to be catching up, both in the number of applications and tools to make it easier to analyze them).

As far as programming courses, I believe my school is now 100% java because they could not get a C compiler for free anymore.

Edit - Its' not a computer science program, its' software engineering. There's not much about the low-level stuff, or programming even. I never looked for a free C compiler, its' just what the teacher told me when I asked why I couldn't sign up for the C class, but thanks. Maybe the evil Java agents have infiltrated the school ;)

I know some people in my classes have done their research on C++, and even C applications, but I don't think the latter really makes a lot of sense when you are trying to critique OO Design. Perhaps I'll try C++ next time and see if the (free) static analysis tools available are as good as the ones for java, maybe this had something to do with so many people choosing java applications.

AlexCuse
Er, GCC couldn't get the job done?
MattC
How do you study anything about operating systems without C?
tloach
@tloach: You could technically do emulated operating system in any other language than C and any flavour of assembly.
Spoike
@AlexCuse: GCC is a free C compiler, one out of many. In windows there is a MingW ported version of GCC, used by IDE's such as Bloodshed: http://www.bloodshed.net/devcpp.html
Spoike
@Spoike: True, but C is pretty much the standard for both academic and non-academic OSes these days - are you aware of any that are written in anything else?
tloach
I'm sure there is an OS written in Java somewhere. http://www.jstamp.com/
Omar Kooheji
Or http://jnode.org/
Michael Myers
A: 

Where I went intro courses were Java, then they introduced C/C++ as you moved up. Some courses also used Scheme, matlab, uC++, or anything else you could write that would compile ;)
In reality, the language was generally an afterthought in higher level courses. Programming is just a tool used to help understand and apply the theory.

tloach
+1  A: 

Four years back when I started my BS degree education, they taught us Pascal in the first semester. In the next semester, I had to study C++ for a course titled OOP. Now, they have scrapped Pascal, and opted for C or C++ (without the OOP part) in the first semester 'Introduction to Computing' course.

ayaz
+2  A: 

we used scheme (drscheme environment) at the VUB for the first 2 bachelor years. After that you (can) get: c++, Java, Haskell, smalltalk, prolog... but it all depends on the courses you take, and most of those languages are given for the software engineering branch of the two computer engineering master years.

oh, I forgot to add, all those languages are used to teach some special aspects of programming languages... we get scheme for the basics of programming, prolog for declarative programming, smalltalk for OO and so on...

so it's not really that focused on the programming languages themselves, they are just the means...

Sven
God prolog? Really?
Ryan
yes prolog, but actually it is not quite as bad as you might think... you just have to ... *get it* and then you can work with it like any other language. Besides, it is not the language that is important in that course, it's more the purpose behind it: 'logic/declarative programming'
Sven
A: 

It depends if you mean "What is taught" or "What is used", and in what subject context. The two often are different (at least in physics, my field). In some areas there is still a lot of Fortran 77 kicking around. I use C++ mostly (as is common in particle physics), but also Python for quick tasks.

We are going to offer undergraduates doing the computational physics course this year a choice of completing exercises in Python, C++ or Fortran.

To be productive in the world of physics, you basically need to know Fortran and C++.

A: 

I think it depends on the type of school and how much Windows based they are. My college is generally platform independent and recently switched from Java to Python as the first language. However, that's only for the first couple of courses in the curriculum. The more advanced courses still use a combination of Java and C. If a school is heavy on the Windows side, I could see them using C# as a successor to Java.

Regardless, I definitely think Python will be gaining even more ground in academia as time goes on. I would hope that bread and butter languages like C stick around though. It's a way of thinking that programmers should always have in the back of their head.

Dashogun
+3  A: 

At my place where I got my master's degree (University of Lund, Sweden) there are a variety of programming courses.

  • Java for object oriented programming and the first one you'll be exposed of when you start studying here
  • Python for the graphics programming courses
  • C and ASM for programming on embedded systems
  • There is an optional C++ course that many students take
  • The optional functional programming course uses Haskell
  • Then there are a bunch of curcuit based programming courses that uses whatever they have to throw at us students…

It is pretty much up to the students to choose if they want to be language-agnostic or not. Coming from this place I find it rather sad to hear other universities who force students to learn only one programming language and stick with it.

Spoike
A: 

If by "fashionable" you mean "in use in classrooms", Java was the main one when I graduated a short time ago.

If, however, you mean "studied by the graduate students" and/or "used for academic projects" my university, which has a strong focus on AI studies, uses Python for pretty much all of that. There's a bit of Perl still, too, probably because one of the department heads is a Perl guru and teaches extracurricular Perl hacking seminars.

Chris R
A: 

We learned bits of a lot of them at my school, Java, C, C++, Haskell, etc. But by far for the first 2 or 3 years Java was most prevalent, then myy last year or 2 it was usually managed c++ in Visual Studio .Net

Fry
+1  A: 

It depends on what you mean by "academia". Most undergraduate computer science courses in most colleges are taught using Java. Most graduate-level research in CS and other disciplines is done using Matlab.

On the personal note, I think it is scary that most recent CS graduates don't know C or C++. Java is great for many things, but one should at least be exposed to a lower-level language to not be caught by the leaky abstraction.

Dima
+2  A: 

I wonder if anyone else worries that Python as first language might "spoil" new programmers.

Don't get me wrong, it's a great language that I use at any opportunitiy. But after I learned Python, my tolerance for Java fell to, basically, 0.

As someone who's taught C and Java at university , I wonder how the hell someone faced with a bunch of second year students who know nothing but Python would start to motivate / explain / justify languages like Java or C++. Maybe C is explicable as a rather exotic kind of machine code for embedded systems. But beyond that, would a generation who start with Python ever be able to accomodate to immersing themselves in these mainstream languages?

interstar
Good! I hope we do spoil them! Lets make all of the new recruits into our field intolerant to the crap status quo. That's how we'll push things forward in our industry./serious
Tony Arkles
A: 

I'm studying at a pretty big university but the languages used mostly in the undergraduate studies are C, C++, LISP(Common Lisp or Scheme) and Java.

David The Man
+5  A: 

Mostly Java. I suspect C# and Python/Ruby sneaking in to introductory courses now too.

In 1997 we started on Eiffel. Which as far as strongly typed languages go, was a great academic language. It enforces a lot of concepts which are merely encouraged in other languages (ie, Design By Contract). It is a pretty safe (to a fault?) language too (i.e, no auto-boxing, manual conflict resolutoin for multiple inheritance, named inheritance, generics with restrictions, etc). Sadly, I don't personally know anyone who uses it in industry though.

Lisp, and prolog are common for getting recursion points across.

Telling someone they will never need C/C++ (or like languages) because of python, is like telling someone they will never need to learn multiplication because of calculators.

~S

A: 

People at my alma mater are getting quite interested in erlang. The thought is that it's a natural fit for a future when cpus have a large number of cores, and applications will have thousands or millions of threads.

Sean Reilly
A: 

At my college.

C++ is intro and advanced. Then you have to learn Either Java or Visual Basic. Assembly depended on the professor. One did Intel, the other did Mips.

One of my professors was pushing for a Python class, but it didn't fly yet. He still uses it as his quick example language, and heavily talks it up.

J.J.
A: 

Where I went to school (University of Oklahoma) a lot of it depended on what department you were a part of. I studied meteorology, where we were primarily exposed to C and FORTRAN as undergraduates. MATLAB was also required as part of my Numerical Methods course, and I used that and Python to do the majority of the work in my upper level courses and in graduate school.

The College of Engineering was primarily Java-centric, at least for the undergraduate program. The majority of the engineering graduate students I knew used MATLAB for their work, along with various scripting languages of their choice (e.g. Perl/Python/Ruby/etc).

Michael Morris
A: 

I just finished a Masters at the Univeristy of Illinois, Urbana-Champaign (UIUC). There the langauges were all over the map. OS class was in C++. OO/Design Patterns was Smalltalk. Programming language design was ML. An understanding of C++ seemed to be expected, but most classes let you use whatever language you wanted to for projects. I saw C#, PHP, Java, etc.

I know a lot of universities have gone Java even in recent years. UT-Austin is an example of such a school.

Steve Rowe
A: 

A really tough question to answer without knowing what field(s) specifically you're looking at. Hammers and screwdrivers and all that.

At my university Java is widely used as an all-purpose language both in undergrad and postgrad settings, taught to all undergrads except those that have their introductory computer science courses taught with Python. In fact, I believe most mainstream (and some not so mainstream) programming languages are represented among the graduate students and research programs. Matlab deserves an honourable mention as it, while not a general purpose environment, is ubiquitous around these parts as well.

Hank