Ask HN: What programming languages are used in CS courses these days?
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 ] threadAnd 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.
- 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.
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/
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.
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++.
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/
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
- 1st semester: Haskell (functional)
- 2nd semester: C (imperative)
- 3rd semester: Prolog (logic)
- 4th semester: Java (OOP)
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.
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
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++.
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.
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
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++
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