If you have an email ending in @hotmail.com, @live.com or @outlook.com (or any other Microsoft-related domain), please consider changing it to another email provider; Microsoft decided to instantly block the server's IP, so emails can't be sent to these addresses.
If you use an @yahoo.com email or any related Yahoo services, they have blocked us also due to "user complaints"

My university's computer science program teacahes in Java.

edited 2012-12-09 01:01:02 in Meatspace
My arms are falling off!

I've only heard terrible things about Java, not much of which I'm admittedly knowledgable of. So why would my university, which is one of the more reputable ones for handing out engineering- and computer-related degrees, teach in a widely-criticized language?



  • OOOooooOoOoOOoo, I'm a ghoOooOooOOOost!

    Now, bearing in mind that I am not a programming person:

    As I understand it, despite its flaws, Java serves as both a very universal language and a good introduction to object-oriented programming.

  • BeeBee
    edited 2012-12-09 02:26:52

    Java is typesafe and masks memory management issues that otherwise make it very difficult to learn programming at the start.  It's frequently used at 100-200 level classes as a learning language to wrap your head around programming basics, control flow, classing, scope, etc.

    If you're not using some sort of C++ by at least halfway through 200-level studies, your college actually does fail.  All those things that make Java easy to learn the ropes wind up piling up in hidden overhead and memory leaks once you move into heavier-duty coding.

  • Speaking as a programming person who would only use Java if it was forced on me, Java is not a bad teaching language starting out. A student would not run into many of the issues that Java has.  It also makes it easier on the teacher because they don't have to worry too much about what dev tools the student uses. If all the courses are in Java then there is a problem, but for entry level programming it is fine. 

  • BeeBee
    edited 2012-12-09 02:55:00

    It's also your best choice for poking into anything graphical early on, because Java has the Swing API packaged right in, but for C, unless you start out all the way up at C# (not recommended) you have to have a whole bunch of extra tools for your program to know what anything shinier than a terminal shell is.

    You might actually see a couple assignments later on whip out Java specifically for that because the C-family alternative (usually OpenGL) is really fucking cumbersome and terrifying to a newbie.  Like, in my AI class our skeleton code for our Tic Tac Toe bot was a Java GUI, and in networking we used Java for some basic web display.

    The problems with Java mostly come from the fact that at high-end coding, its safeguards slow it down a ton, and unless you're really good about dereferencing objects you're done with, the garbage collector doesn't pick it up and it leaks memory like a sieve.  But for the usual exercises to learn stuff, like poker or counting words in a paragraph or something, you're not going to run into trouble.


    The main contention is that Java has no way to explicitly delete an object.  Instead it periodically checks through your RAM heap for objects that aren't used by anything else in your program, and automatically cleans it up -- but if you forget even a single reference that's still connected in any way to the program root, it still thinks the object is active and leaves it alone.  If you ever play a Flash game that gradually bogs down over time (or heaven forbid, crashes from RAM overflow), that's what's happening -- Flash Actionscript is an offshoot of Java, and if anything managed to make those issues even worse because idiots abuse onFrame() updates that keep going until the moment the object deletes.

  • yea i make potions if ya know what i mean

    It is my understanding that Java is what a great deal of commercial products are written in. That is probably why you are being taught it.

    To give an example, Minecraft is written in Java. At least I think it is.



  • BeeBee
    edited 2012-12-09 04:55:31

    Yeah, it's typically used when your task is more interested in stability or intuitiveness than performance, because you have to try really hard to make it crash.  A lot of the drag'n'drop UI creators and stuff produced by them, as well as (curiously) a lot of launchers, are either Java or offshoots of it.

    IIRC Open Office is Java, as is a lot of the background and B-Net stuff for World of Warcraft (though not the main application).

    Anything that's expected to tax your system though, forget it.

  • edited 2012-12-09 05:02:10
    If you must eat a phoenix, boil it, do not roast it. This only encourages their mischievous habits.

    Runescape's Java too, I think. Runs pretty well for it.

    Also, the typo in the title is bugging me

  • yea i make potions if ya know what i mean


  • If you must eat a phoenix, boil it, do not roast it. This only encourages their mischievous habits.


  • yea i make potions if ya know what i mean

    The typo in the title.

    It is


    I am tired enough to find this hilarious.

  • If you must eat a phoenix, boil it, do not roast it. This only encourages their mischievous habits.

    No, university's is correct. The typo is 'teacahes'.

  • yea i make potions if ya know what i mean

    I'm tireder than I thought

    tireder? More tired? Possessing of a higher level of tired? IDK.

  • "I've come to the conclusion that this is a VERY STUPID IDEA."

    The programming course in my high school started out with basic stuff like Scratch, then worked with those LEGO robots (first with Mindstorms, then with RobotC), and the final project was a self-taught course in the language of your choice (I chose Python, one of my classmates went with the Android SDK, another two collaborated on a Java project).

  • Give us fire! Give us ruin! Give us our glory!

    My college has an Intro to Comp Sci where you learn to program in C++, then a Intro to Programming course where you learn Java.

  • a little muffled

    My school teaches Python first year, and Java and C second year. Truth be told I doubt you'd find a university in the world that doesn't teach Java somewhere along the line; it is just that ubiquitous.

  • A couple corrections ActionScript has nothing to do with java and Open Office is a mix of C++ and Java.

    My college teaches C the first year, C++, Bash and Mips assembly the second year, Third and Fourth year it depends on the classes you take. 

  • if u do convins fashist akwaint hiz faec w pavment neway jus 2 b sur

    We learned Pascal back in high school.

  • One foot in front of the other, every day.
    Visual Basic here. What an eh language.
  • Ultimate Forum Poster

    We had one course with Fortran. Meh.

  • ActionScript has nothing to do with java

    Not strictly, but it sure as hell quacks like it.  I mean, the fundamentals of how the language, API, and skeleton are laid out are really, really close.

    IIRC in high school we had Pascal.  When I got to college the only 100-level course I had to take in programming was in C++, but it was a glacial waste of time; it was mostly a rehash of the first four weeks of the Pascal class with different syntax, and barely hit how to set up classes.

    The broader 200 stuff and OO Design Patterns was Java.  Stuff for Data Structures, Software Engineering, and all the "heavy" stuff was in C or C++.  They never actually taught us C++, and we were expected to already know it or pick it up by osmosis when we hit the graphics class and worked in OpenGL.  It was roughly like teaching a kid how to ride a trike, then dropping him in the driver's seat for a tank.

  • a little muffled
    In high school we did Visual Basic in grade 10, Turing (a language that is used solely by Ontario high school students) in grade 11, and in grade 12 we did Java but spent almost the whole course working with a bunch of classes written by the textbook authors...
  • One of our Java assignments was to simulate a Turing machine.  It was awesome.

  • edited 2012-12-09 19:07:32
    Give us fire! Give us ruin! Give us our glory!

    My final project was to make a LC-3 simulator in C.

    It was awful. :/

  • "I've come to the conclusion that this is a VERY STUPID IDEA."

    For my aforementioned Python project, I made a Conway's Game of Life board. It was rather slow and kinda small, but it was mine, dammit.

  • BeeBee
    edited 2012-12-09 19:35:51

    Ooh, that does sound ugly to do entirely in Python.

    Actually, that would be uncharacteristically simple in OpenGL.  At least as far as OpenGL goes.

    My final project was 3D laser scanning, which involved parsing GB-sized files, so needless to say it pretty much had to be in some sort of C.  Like, the condensed and optimized point cloud with all overhead thrown out and reduced to a straight binary dump of numbers was almost a gig, and took a couple seconds just to load.

  • "I've come to the conclusion that this is a VERY STUPID IDEA."

    Yeah, it required liberal use of the TKinter module. It was a 32x32 grid (though it could be resized by altering a single variable that I set aside for such purposes), and I also included different rule sets (Conway's Life, 34 Life, Seeds, Walled Cities, etc.) that you could use. It was pretty neat, and I got top marks in the class for it.

  • For what it's worth, blueeyedrat, most of the fast Life programs use crazy advanced algorithms like HashLife.

  • Poot dispenser here

    HashLife: Episode 3?

  • We Played Some Open Chords and Rejoiced, For the Earth Had Circled the Sun Yet Another Year
  • BeeBee
    edited 2012-12-10 02:48:47

    Meh.  We didn't have any trouble learning about pointers after coming off Java, but I'll grant our prof was really, really good.  Certainly not worth the e-rage.

    That, and I wanted to choke a bitch when he brought up teaching people how to work on the Linux kernel, because trying to shoehorn half my graduating class into that job is exactly why they taught almost exclusively in C and we never formally learned C++.

    Newsflash: Linux will not need hundreds of people a year from every single CS college working on their damn kernel.

Sign In or Register to comment.