Skip to main content
gamedev.net
🔒 Locked

Java in colleges?

Started by TheUberCuber Nov 29, 2005 at 10:45 AM 26 replies 2.8k views
Original Post
TheUberCuber
TheUberCuber
I'm a senior in high school, so naturally I'm looking into schools. I've been looking around at comp sci programs, and I've noticed that all of them now use Java, while a few years ago they used C++. The only exception is Caltech, who uses any random, obscure language they can find, because they seem to think that it's better to make sure their students are able to learn any language and then stick it with them to spend 6 months training for jobs once they graduate... However, C++ still remains extremely common here and in the rest of the programming world. Is it just living out its last years in practice, or are colleges doing comp sci all wrong now with java? Thoughts?
Upward, but not Northward
zer0wolf
zer0wolf
Java is used because it forces comp sci students to understand OOP quickly. Not only that, but the Java language is relatively easy to program with and powerful at the same time, so it is decent to learn on. C++ isn't really the best language to learn on because there isn't anything intrinsic to the language that teaches you good habits.
dorix
dorix
My take on the choice between Java and C++ in schools is that Java allows the instructor to get on with the course curriculum -- fundamentals of programming, data structures, etc. without 90% of the class getting bogged down in confusion about pointers, memory management, etc.
ktuluorion
ktuluorion
Usually after the first few classes you will take a C++ class.

But yes, I am not particularly fond of Java, and really don't think it's useful to have students come to expect this "magical" garbage collection and then later force them to figure out pointers.
[Piebert Entertainment] [Ask The All-Knowing Oracle A Question]------------------------------------------------------------GDSFUBY GameDev Society For UnBanning YodaTheCodaIf you want to see yoda unbanned then put this in your sig ------------------------------------------------------------DAIAGA Dave Astle is a God Association. To join, put this in your sig!Founder and High Priest o
jfclavette
jfclavette
Quote:
Original post by dorix
My take on the choice between Java and C++ in schools is that Java allows the instructor to get on with the course curriculum -- fundamentals of programming, data structures, etc. without 90% of the class getting bogged down in confusion about pointers, memory management, etc.


Exactly. That and letting C++ slowly die instead of making another FORTRAN or COBOL out of it would be fine with me. [grin]

The only exception where I could see C++ as a good language for a class would be Data Structures. And even then, I'd choose C over C++. (You know, since new and delete are really too high level. Let the student figure how to best initialize and destroy his structures. [rolleyes])

Quote:
The only exception is Caltech, who uses any random, obscure language they can find, because they seem to think that it's better to make sure their students are able to learn any language and then stick it with them to spend 6 months training for jobs once they graduate...


If you need 6 months of training in a language after you get a degree in computer science, there are two possibilities:

A) You suck.
B) The language sucks.
I teleported home one night; With Ron and Sid and Meg; Ron stole Meggie's heart away; And I got Sydney's leg. <> I'm blogging, emo style
cmptrgear
cmptrgear
I think colleges use Java because it is free and can be programmed on any of the major platforms and still work correctly on any other platform. So a CS student can program his assignment on a Windows machine and it will still work on the TA's Linux box when he grades it.

It also allows you to easliy make windowed apps without having to learn window manager specific API calls (GDI vs GTK+ vs QT etc.)
"Pfft, Facts! Facts can be used to prove anything!" -- Homer J. Simpson
rKallmeyer
rKallmeyer
Quote:
Original post by cmptrgear
I think colleges use Java because it is free and can be programmed on any of the major platforms and still work correctly on any other platform. So a CS student can program his assignment on a Windows machine and it will still work on the TA's Linux box when he grades it.


Unless your teacher gives an assingment that requires java 5 and your TA is grading with java 4.

....

Idiot Professor: "What do you mean everyone failed?"

Idiot TA: "Well none of the assignments compiled or ran..."

Idiot Professor: "Oh well, I guess the students are all stupid. I'll spend an hour tearing them down next class period for not taking the class seriously."

....

Needless to say I've had some bad experiences with Java so I'm somewhat jaded.

Quote:

It also allows you to easliy make windowed apps without having to learn window manager specific API calls (GDI vs GTK+ vs QT etc.)


(cough) C# (cough)

I personally think that C# kicks java's ass on every level relavent to students.
Better IDE, easier to learn, much more powerful in my opinion. Still portable. Now its even free also.

And cost is certainly not an issue when every computer in the school is loaded with Visual Studio anyway.


....

Yea, schools use Java now, but I think its the whole "academic mindset" mindset making it that way. In short, you will have to learn it, then most likely forget it when you get a job. So get your grades but spend your time learning something else useful like any c language.

Etherstar
Etherstar
At my college, our interductory programming courses are taught in Java, however we have many higher level courses (no pun intended) that teach things using lower level languages such as C++ and ASM.

Now this is not necessarily my opinion, but I was told by the head of our Comp Sci department that the reason we use Java is because it was easier to teach students new to programming the concepts of Abstract Data Types and Algorithm Analysis or other non language specific concepts. Later on when we do work with such things as compiler design and operating systems, lower level languages then become a necessity.

Personally I started on C++, and I'm glad I did. I actually found it a lot easier to understand how references work in languages that use garbage collection (Java and C#) and have been able to pick these languages up with very little effort compared to my peers. It also taught me to be mindful of resource allocation, which I think a lot of students are glossed over with manual garbage collection.
Dovyman
Dovyman
Finding a school where the emphasis is on teaching language-independent development skills is pretty important I'd think. I remember the professor in my introductory course (taught in scheme) reminding us that by the time we get into the workforce in 4-6 years, there will likely be languages coming into the mainstream that at that moment in time didn't yet exist.

I think thats a reasonable assumption, consider any developer in the 40's, if they've been doing software for their entire career, c++ and java probably weren't on the syllabus for their introductory courses.
Big B
Big B
If universities taught C++ in their introductory courses, then there would be a lot more first year drop outs, since some people just can't understand pointers. If its taught in second year or above, the school picks up an extra year of tuition before they drop out.

Java is easier to learn though. Its also freely available on any system, used in industry, and has the textbooks already written for it.

And if your university was anything like mine, it probably has a ton of old Sun hardware lying around.

EDIT - I was the last year that they used Pascal to teach. It could be worse!
SamLowry
SamLowry
Personally I think java is not a good teaching language: the implicit difference between value types and objects (pass-by-value, pass-by-reference, how you can't put it into containers without boxing, the way it interferes with reflection), the way it forces you to use classes for everything, the ugly hacks used to "simplify" things (inner classes, how private members suddenly turn "default" (was it so hard to invent a name for the only new access modifier?)), the very limited type system (pre 1.5 where you have to constantly fall back on dynamic typing (Object), and 1.5's generics which show Sun's sense of humor)), the library filled with design horrors (e.g. Cloneable), ...

I agree with the argument against C++; if one wants to teach programming, no language should be chosen which burdens the student with pointers and memory management. This argument can be reused against java: why use a language with so many quirks and flaws?
chollida1
chollida1
We learned pascal in my first year. Its a very easy laguage to pick up, kindof like C++ lite:).

After first year it was strictly lisp and C++. I went back and checked the course sylabus and they now teach java :(

Cheers
Chris
CheersChris
SKATIN_HARD
SKATIN_HARD
Java is easy to jump right into. It can run on a bunch of platforms. It is used in other classes like data structures. I'd say that java is important to learn. There might no be a lot of games made with it but many online apps and a few others are.
TheUberCuber
TheUberCuber
Quote:
Quote:
The only exception is Caltech, who uses any random, obscure language they can find, because they seem to think that it's better to make sure their students are able to learn any language and then stick it with them to spend 6 months training for jobs once they graduate...


If you need 6 months of training in a language after you get a degree in computer science, there are two possibilities:

A) You suck.
B) The language sucks.


I'm not talking about just lightly learning it, but actually getting to a professional level of expertise, which requires knowing all about tons of little details that aren't just learnt in a week from intermediate-level books

Update: Everyone is talking about pointers in C++. At first, I was thinking that was a tip, but after I saw it come up 10 more times...
Upward, but not Northward
stormrunner
stormrunner
Quote:
Original post by jfclavette
The only exception where I could see C++ as a good language for a class would be Data Structures. And even then, I'd choose C over C++. (You know, since new and delete are really too high level.

Indeed. [grin] Though I'm currently taking a Data Structures class taught in Java and I have to say it's not as bad as one would think, provided you're a little creative. Java - like all languages - makes some things easier, and others a pain in the ass. That said, what I wouldn't give for the power of C++ templates in Java.
stormrunner
hammackj
hammackj
UTSA starts with java then moves to C for the systems programming, operating systems and networking classes. All linux based.
Jacob Hammackhttp://www.hammackj.com
Ra
Ra
Quote:
Original post by Big B
If universities taught C++ in their introductory courses, then there would be a lot more first year drop outs, since some people just can't understand pointers.

If you're smart enough to get into college it's a load of steaming crap that you can't understand pointers. I can understand how it'd be more difficult without the background though, and that's where the next point comes in:

Quote:
Original post by Etherstar
At my college, our interductory programming courses are taught in Java, however we have many higher level courses (no pun intended) that teach things using lower level languages such as C++ and ASM.

This system seems backwards. Colleges seem to focus on 'concepts' and methodology that (obviously) have a prerequisite of knowing a language. They decide on the one that does the most for you, specifically garbage collection and memory management, probably thinking it'll be something they can pick up quickly so they can learn the concepts the course focuses on. I think they'd be much better off starting low-level and working their way up.

Quote:
Original post by Etherstar
Personally I started on C++, and I'm glad I did. I actually found it a lot easier to understand how references work in languages that use garbage collection (Java and C#) and have been able to pick these languages up with very little effort compared to my peers. It also taught me to be mindful of resource allocation, which I think a lot of students are glossed over with manual garbage collection.

Knowing 'how' and 'why' something works is a lot more useful than knowing that it works. I think introductory courses are too concentrated on 'magic' programming and 'faith-based' code structuring and debugging. Pointers are easier to learn with previous knowledge of assembly, assembly produced by compilers, how computers interpret instructions, and how data is stored in memory. Understanding classes is the same, as well as garbage collection and memory management.

If you know how it's working behind the scenes, you're both more prepared to solve new problems and to understand advanced concepts. You're also more likely to write better code, because nothing you're taught is 'faith-based' ('it works because it does!' and the whole memorizing vs. understanding situation) and you know the 'how' and 'why' of what you're doing. You're also going to know where your buffers are overflowing and why you're leaking memory; you'll understand that you need to clean up after yourself and you'll be, overall, a better programmer.
Ra
twix
twix
Quote:
Original post by TheUberCuber
The only exception is Caltech, who uses any random, obscure language they can find, because they seem to think that it's better to make sure their students are able to learn any language and then stick it with them to spend 6 months training for jobs once they graduate...

To be fair, Caltech's CS program isn't advertised as job training; it's supposed to be a highly theoretical program that prepares you to do research in the field. Of course, a lot of people don't actually use it that way since they already know how to program well enough to get a job at most places.

Anyway, with regard to Java as opposed to C++, it's value depends entirely on the nature of the degree. If you're trying to learn CS concepts, then as far as languages go, the simpler the better. If you're trying to get code-monkeying experience, then of course you should be taught in whatever language is popular at the time. Of course, while there's obviously nothing wrong with code monkeys, most colleges don't like to admit that that's what they're producing -- they want to be creating "the next generation of Computer Scientists". And so, they don't particularly care how much programming experience you get in whatever language.
Ravuya
Ravuya
In my year and a half of CS, I've used:

- Pascal
- C
- SPARC ASM
- i386 ASM
- Java
- Python

Next semester I'll get to use C++, C#, Prolog, Haskell, all kinds of other languages. It's true that there's a wad of Java initially but you can get past it. My school has vastly reduced the amount of Java we have in courses after they broke Sun's special-treatment, cheap-hardware deal and went with Dell Linux servers and workstations.
superpig
superpig
Quote:
Original post by TheUberCuber
Quote:
Quote:
The only exception is Caltech, who uses any random, obscure language they can find, because they seem to think that it's better to make sure their students are able to learn any language and then stick it with them to spend 6 months training for jobs once they graduate...


If you need 6 months of training in a language after you get a degree in computer science, there are two possibilities:

A) You suck.
B) The language sucks.


I'm not talking about just lightly learning it, but actually getting to a professional level of expertise, which requires knowing all about tons of little details that aren't just learnt in a week from intermediate-level books


To be honest, that's bull - using a language in a professional situation does not require that you know tons of little details. It only requires that you know enough to get the job done. Sure, maybe knowing all the obscure little keywords will help you write nicer code in some situations, but in my experience you can get by without them. What percentage of professional C++ coders know the 'explicit' keyword, do you reckon?
Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.