Ask HN: What programming languages are used in CS courses these days?

31 points by bayonetz ↗ HN
I did my undergrad '96-'99. The following were what my courses required us to code our exercises and projects in:

Core

---------------

Intro to Programming => C

Intro to Data Structures => C

Advanced Data Structures => Java

Compilers => C/Lex/Yacc or C++/Flex/Bison

Systems Software => SIC assembly language

Operating Systems => C

Database => SQL and also a "build you own DBMS" project in Java

Electives

---------------

Software Tools => Perl and Java

Neural Networks => C

Artificial Intelligence => LISP

As you can see, C was still mainstream but Java was on the rise. When I went to grad school around 2004, no surprise, Java had mostly replaced C in these same classes. You'll notice no Javascript, no Python, no cool Functional languages, etc. in this list. Just interested to see where things have evolved and especially to see if more "modern"/"cool"/"web oriented" languages have made it into the core courses yet or perhaps spawned new more relevant core course. Thanks for playing...

EDIT:

Hey folks, mind putting your year of graduation so we can pin the answers in time?

Also, since apparently no schools have moved very far past Java, care to speculate on how you might change the core curriculum if you could?

68 comments

[ 591 ms ] story [ 316 ms ] thread
My impression is that Python is much more common now, but Java still dominates.
I'm about to graduate and I learned almost entirely Java. I hear that some of the intro classes are switching to python however.
FWIW, I'm a year from graduation and have been taught 90% C++.
I graduated in '08 (wow that's 6 years ago already!). We used C++ for all the core courses except Data Structures, which used Java. C++ wasn't too bad as an intro language, with a very encouraging teacher. Java was a disaster because there was way too much boilerplate when you're just trying to write a toy data structure for an assignment. At the time I left, they were considering moving to Python for the intro courses, but there didn't seem to be much enthusiasm behind it.

And we used Access for our database course. Sigh.

That said, it wasn't as monolingual as it sounds. Even though the courses were geared toward C++, several of our teachers were enthusiastic polyglots (actually one of them spoke four human languages!), and we were encouraged to explore.

OP here, all my C courses had the extra requirement that they compile under GCC on a Solaris box; not for our education but for the prof's benefit of using an automated "turnin" program for grading. Thank god though, I had one cool professor that let me use Visual C++ while everyone else used GCC. The productivity boost allowed me to beat everyone in getting the regular projects done and then give me extra time to code up extra credit stuff. Not a language progression but a tool progression at least - got me hooked on IDE's.
Oh yeah, I should mention that we used an old (but still quite usable) version of VS for the C++ courses. That made it easier to code, but the huge and uninformative error messages put a lot of people off.
I took two grad courses this Spring:

- Networking used Python with Mininet

- Software Development used Java with Eclipse (Android, Swing, JUnit, Google App Engine, GWT, etc.)

I finished my undergrad in 1995 and used C and assembly (RS6000, Spark, x86). C++ started to be an option when I left.

Most of the (non-systems programming, which use C) classes offered at my university are in Java but a few of them are taught in O'Caml (The programming language and compiler ones).
I started my undergrad in 2008. At the time, my department's intro sequence was C -> Java -> C++. Essentially, intro to programming -> intro to OOP -> data structures.

After that, professors used whatever they wanted. Most electives let students use whatever language they wanted so long as it ran on the department's Linux machines and you provided build instructions for the professor.

Scala became the intro language the year I graduated with C and C++ following for data structures. Other courses use everything from Scheme to Java to Haskell to Python, depending on the specific course the professor.

My undergrad thesis mentor actually wrote an intro CS textbook using Scala and from what I hear it's worked quite well.

http://www.programmingusingscala.net/

1st year CS @ ETH Zurich here

Intro to Programming => Eiffel (Betrand Meyer was our Prof)

Algorithms and Datastructures => Java (Pseudocode in PASCAL)

Parallel Processing => Java

Design of Digital Circuits => Verilog/MIPS Assembly

and in the next courses there will be some Haskell and more Java.

Just finished 1st year. We used Python for the introductory class, then Java for the intro. to OOP class.
(comment deleted)
I'm going to a technical college, but (in order of exposure so far) C++, Java, VB, C#, SQL, Javascript. Haven't touched python yet, unfortunately.
Looks like you received more variety than most of the other commenters.
I graduated this past spring. A good chunk of the classes were primarily in Java. I only took 4 or 5 classes that the utilized C/C++.

However, there was a revamp in the curriculum in that the core courses are not being taught in C. It's not till they are in their Junior year that they now encounter Java or C++.

I studied in Hamburg, Germany. We started our first programming course with Ruby, the second was Java. We did some Prolog and Erlang later on and I took an optional course on the the basics of FP in which Scala was used. Oh, and there as a Software Engineering project where we could choose from either Java or C#. And we did some Assembly/C in an OS course as well.

All these were undergrad courses. My graduate courses were mostly either theoretical or project work where we could choose our own language. The only exception was Maude [1], which we had to use.

[1]: http://maude.cs.uiuc.edu/

Intro to programming => Java

Data Structures => Mostly java, a couple projects in C

Computer Organization: pretty sure this one was entirely in c.

Programming Languages => Whatever the most recent version of Ada is, python 2.7, prolog, haskell, c#, java, "language of your choice, suggested choices are ruby, python, or perl" and most people chose Ruby, and I believe that was the gamut. I may be forgetting a few, and I know that course has switched to using Ocaml instead of Haskell for the functional language section. The course is all about how languages are implemented and what makes one language different from another, so obviously it bounces around a lot. Super interesting class, one of my favourites.

Networks: Java or C; at least one project was mandated to be in C.

Software design: Ruby, and a tiny bit of Haskell

Operating Systems: C.

Human-Computer Interaction: Mostly javascript.

Almost all grad level courses (except for the intro programming), taken circa '12/'13

Programming Paradigms (aka Intro to Programming):

- 1st semester: Haskell (functional)

- 2nd semester: C (imperative)

- 3rd semester: Prolog (logic)

- 4th semester: Java (OOP)

That's very interesting. Where is this?
I had a semester long class but with Scheme, F#, and C#.
I'm about to graduate in December. We've used almost entirely Java for the core classes. My algorithms class used python and we had a single class devoted to C/Unix.
From what I hear, java is the big one.

2007-2010 undergrad dates here.

I graduated with a degree in Computer Information Systems. CS was not offered at my school which was a relatively smaller university with focus on general business classes or accounting. Finance/accounting/economics/marketing/management were the more popular majors (25 graduated with my major)

The more development oriented classes were Intro to Java & Intermediate Java. We also had an intro to web development class that focused on HTML/javascript and another that used C++. There was also a DB class that used Access and the next level DB class used mysql.

I graduated in '08, although my major was IT and not CS. All the CS courses I took (pretty much all the required 100- and 200-level classes, a couple of 300-level electives) were in Java (although in one class we used Prolog for some stuff). Other coding classes for my major included Computer Architecture in which we used C and MIPS assembly, some web programming class that was JavaScript and PHP, Systems Administration that was Python, Information Assurance and Security used a lot of C (mainly for demonstrating various flaws). In most other classes were given a lot of freedom in the language because we were graded on functionality, not code. I generally focused on C, Python and Java.
I Just finished my undergrad and am starting my masters. University of Utah

Intro to Programming => Java/Racket

Software Design 1: C++

Software Design 2: C#

Intro to Data Structures => Java

Compilers => Racket

Systems Software => C/x86

Operating Systems => C/x86

Database => dunno

Electives

Programming languages: Racket Advanced OS: C

Current student here. 90% is C++. Other 10% is various other languages used to show different programming paradigms. My university solely teaches C++ for the first two years (and after that, its class/professor dependent) because it has partnerships with a couple major engineering companies that give the school a good amount of money.
So I left university in 99 (Cal Poly SLO) and am considering going back in the Fall to finish. From what I understand most courses are still using Java.
I graduated ~7 1/2 years ago and we had a class with Prolog and SML/NJ. SML/NJ wasn't even new back then, but it was pretty sweet.
Intro programming = python Data structures and algorithms = python Intro OO = Java Concepts of Computer Systems = C/C++/mips/x86

Those are the names that the school gave the courses it's basically CS1-4

Those are the current courses I took CS1-3 in java and CS4 in C++.

Graduated in 2013, started in 2008.

C was used for 101, Systems programming, Operating Systems, and Networks. There was an elective HPC class which taught CUDA C. C++ was another elective class.

Java for 102, Algorithms/Data structures, software engineering, and oddly enough Compilers (along with ANTLR for the parser).

Programming Languages was Racket or ML depending on the teacher.

There were also elective HTML/CSS/Javascript/Ruby on Rails classes but I think they counted for 2 credits (instead of 4) and were only offered online during breaks.

We used MIPS and some other teaching assembly language that I forgot the name of for computer architecture.

Class of '09, computer engineering.

1st year:

Intro to programming: C (& bash to compile & run programs)

Intro to datastructures: C++

2nd year:

Digital Systems: 68k assembly

Design Project: PIC microcontroller assembly

3rd year:

Prog. Lang: Python, Scheme, Prolog

Databases: SQL

Comp. Org: Verilog, NIOS assembly

Operating Systems: some weird custom language for this one course

Control Systems: MATLAB

4th year:

Compilers: C

Compilers2: C++

Distributed Systems: Java

Computer Networking: Java

Computer Security: C (& learned to use gdb)

Also used bash & java to do my thesis

Soon going to start my last year in my CS master at Linköping, Sweden.

The overall trend appears to move towards Python and even some functional languages like Haskell, but Java is still very common.

Core

Intro to Programming => Common Lisp (Now changed to Python)

Intro to Data Structures => C++ and Java

Intro to Object Oriented => Java

Embedded => C/C++ and 68k assembler (possibly some other architectures as well)

Operating Systems => C

Elective

Some of the subjects have been touched on in other subjects, like logic programming.

Compilers => C++/Flex/Bison

Advanced Data Structures => C++

SICP (course follows the book fairly closely, not sure what to call it) => Scheme

Database => SQL (probably python/Java)

Web programming => Python

Logic programming => Prolog

Design patterns => Java

Artifical Intelligence => LISP and Java

Parallel computing => C and C++

Introduction: C# (WinForms)

Data Structure: C#

Patterns: C#

Web client: HTML/CSS and jQuery

Web server 1: Java

Web server 2: ASP.NET (WebForms)

Database 1 & 2: SQL Server 2005 & 2008

Project: ASP.NET MVC 4 + Entity Framework

Wow, where did you go that used .NET? I've only ever seen that in specific .net courses available in some places.