The Clockwork Mansion

The Grand Hallway => The Outer Fortress => Topic started by: Ryudo Lee on January 22, 2008, 02:14:24 PM

Title: Java killed the computer scientist?
Post by: Ryudo Lee on January 22, 2008, 02:14:24 PM
http://itmanagement.earthweb.com/career/article.php/3722876

Well, not exactly killed, but according to a couple of NYU professors emeritus, using Java in the Computer Science curriculum is certainly hurting budding software engineers.  I mean, let's face it, Java is made for the internet.  Java doesn't teach you about the intricate inner workings of a computer and the interactions between hardware and OS's.  And I agree with them on those parts.  All you need to do is include some graphic libraries, type in some cookie-cutter-formed code, maybe even link to a MySQL database, and you've got software.  Pretty easy.

But, where I disagree with these guys is that Java does teach some of the fundamentals.  Specifically form, design, and it's a decent introduction into object oriented programming.  Granted, you're not dealing with code on the level of C, but it is a foundation in the form and style of modern programming.

Myself, I went to Nicholls State University.  They're not known for their Computer Science program.  They're known for the John Folse Cooking School.  But I took their CS classes because at the time, that's what interested me.  Every last one of the CS classes I took taught Java, except for the lower level class which was PASCAL, but I didn't have to take that class.  I think that my experience with Java was a good one, in that I learned form, design, etc.  And I feel that it's a good jumping off point to dive into other languages, such as C or ASP or Python or whatnot.  Because really, once you learn one language, the rest is just syntax.  Right?

And who in their right mind would only learn ONE programming language in this day and age?  I mean, look at some of the job listings for software developers.  They want people who have experience in multiple languages.  Yes, college only teaches you ONE language.  But if you wanna make it in the world of software engineering, you gotta read some programming books and get some experience under your belt.  You can't expect college to do it all for you.  Right?  Whatever happened to independant study?  There is still such a thing as "self-taught" you know, especially when you can back it up with useful programs.

What do you guys think?
Title: Re: Java killed the computer scientist?
Post by: Tapewolf on January 22, 2008, 02:26:31 PM
Embedded systems, OS design and application debugging still require an understanding at the assembler level.  Granted I learned assembler myself, but that's because it was necessary to write a decent game.  Now that you have DirectX, that is unnecessary, which IMHO bodes ill for the future.
Title: Re: Java killed the computer scientist?
Post by: Ryudo Lee on January 22, 2008, 02:32:30 PM
Quote from: Tapewolf on January 22, 2008, 02:26:31 PM
Embedded systems, OS design and application debugging still require an understanding at the assembler level.

Indeed, and that's basically what they're saying that students aren't learning.  Even so, if you do enough searching around on the internet you can find FAQs on assembly, heck you could even look at some source at the same time.  There's certainly enough of that out there.

What I have a problem with regarding these guys is that they're shouting doom because colleges are dumbing down the CS curriculum to cookie-cutter Java apps.  Perhaps they think that students don't have enough sense to read up on other languages?
Title: Re: Java killed the computer scientist?
Post by: rabid_fox on January 22, 2008, 02:50:41 PM

Whereas I got forced to take ICT at A-Level, passed it well and never, ever, ever took any interest in the workings of a computer again. Viciously dull stuff. I'll pay some other chipmonkey to fix things if they should break on me.
Title: Re: Java killed the computer scientist?
Post by: Cvstos on January 22, 2008, 04:32:55 PM
I'm currently taking CS at Purdue.  We're using a mix of Java, C, and C++.  There is some very, VERY basic RISC assembler in the architecture course but that's it.  THe program is math heavy.  I'm taking 3 math courses this semester.  Provided I pass all three, I'll be done with all my math requirements.  (All three are 300-level courses.  I've already had Calc III, DiffEq, and Linear Algebra.  I'm presently taking Abstract Math, Discrete Math, and Probabilities.)

I had an OS course last year.  That was in C and focused on Windows. 

Algorithms, Computer Graphics, and Database systems are next semester.  I don't know about Database systems but the other two are always in some form of C.

Death of the CS major?  The complaints stated in this thread isn't what's killing me.  It's my schedule that's killing me :P *resumes studying*
Title: Re: Java killed the computer scientist?
Post by: Tapewolf on January 22, 2008, 04:33:57 PM
How on earth can you study OSes using Windows, when there's no source code to look at?
Title: Re: Java killed the computer scientist?
Post by: Ryudo Lee on January 22, 2008, 05:04:17 PM
Quote from: Cvstos on January 22, 2008, 04:32:55 PM
I'm currently taking CS at Purdue.  We're using a mix of Java, C, and C++.  There is some very, VERY basic RISC assembler in the architecture course but that's it.  THe program is math heavy. 

... shoulda gone to Purdue...

Quote from: Cvstos on January 22, 2008, 04:32:55 PM
I'm taking 3 math courses this semester.  Provided I pass all three, I'll be done with all my math requirements.  (All three are 300-level courses.  I've already had Calc III, DiffEq, and Linear Algebra.  I'm presently taking Abstract Math, Discrete Math, and Probabilities.)

My god, my brain hurts just thinking about that kind of load! That would make my head go asplode!
:explosion

Quote from: Tapewolf on January 22, 2008, 04:33:57 PM
How on earth can you study OSes using Windows, when there's no source code to look at?

Actually... ReactOS (http://www.reactos.org) is open source, and is attempting to make an OS that can run all Windows-based code out of the box.  Or maybe they (legally?) got their hands on that leaked source of WinNT4 (or was it 2000?) from back in the day. 

Anyway, it's good to hear that not all CS programs are based solely on Java.
Title: Re: Java killed the computer scientist?
Post by: Alondro on January 22, 2008, 08:01:10 PM
*Charles attempts to learn computer language... and accidently creates Skynet and Terminators and destroys mankind*  The sad part is, I'm not sure if this is a good or a bad thing.   :P

I used DOS.. once... I made a square on the screen with words in it.

And that is the extent of my programming abilities.   :B
Title: Re: Java killed the computer scientist?
Post by: Reese Tora on January 22, 2008, 10:19:46 PM
Hmm, I couldn't say if what they say is true or not to me, but I know that a lot of structure can be learned from Java.

My experience has been with basic programming, though (apple basic, Commodore basic, Q basic, Pascale) and I didn't get my hands on an honest to goodness object oriented or low level language until college.  My college(a 2 year community college) offers Java and C++ as alternate paths for it's computer science degrees. (I believe that Visual Basic is a third alternate path, I havn't seen the requirements in a while)

I didn't realize that CompSci had such heavy math requirements in it, the 2 years all just had a prerequisite of some 100 level math... then again, it is a 2 year degree.
Title: Re: Java killed the computer scientist?
Post by: superluser on January 22, 2008, 10:26:04 PM
Quote from: Ryudo Lee on January 22, 2008, 02:14:24 PMBut, where I disagree with these guys is that Java does teach some of the fundamentals.  Specifically form, design, and it's a decent introduction into object oriented programming.

Yeah!  Programming languages have gone downhill ever since Fortran 90.  I say we should create a language based on Makefiles and syntactic whitespace.

Seriously now, I remember first learning programming languages with BASIC.  Does it teach good programming skills?  Heck, no.  Is it good as a starting point?  Sure.

the problem that I have is that many CS majors that I talk to seem to start with Java and they end with Java.  If they're really advanced, they move up to C# by the time they graduate.

Java is nice, but the features of the JVM encourage sloppy programming.  You don't have to worry about portability or exception handling or garbage collection, because that's all taken care of with the JVM.

Let me be frank--those are *good* things to have in a language.  But when you switch from Java to another system which deals slightly differently with those issues (or doesn't deal with them at all), you're going to have a steep learning curve.

You should have to learn at least a couple low-level languages in CS, in my opinion.  Mainly to see how concepts are not universal.

Quote from: Reese Tora on January 22, 2008, 10:19:46 PMMy college(a 2 year community college) offers Java and C++ as alternate paths for it's computer science degrees.

Ew?  It's not exactly like those are really different paths for programming.
Title: Re: Java killed the computer scientist?
Post by: Reese Tora on January 23, 2008, 12:20:12 AM
sorry?

Just saying that Java and C(++) are both available options, it's not just Java.
Title: Re: Java killed the computer scientist?
Post by: superluser on January 23, 2008, 01:19:38 AM
Quote from: Reese Tora on January 23, 2008, 12:20:12 AMJust saying that Java and C(++) are both available options, it's not just Java.

So is it C or C++?  C++, last I used it, was not so hot.  The UNIX-Haters Handbook (http://research.microsoft.com/~daniel/uhh-download.html) has a chapter on it, where it refers to it as ``The COBOL of the 90s.''

C on the other hand, is quite good.  (Yes, UNIX-haters skewer C, as well, but typically their complaints are of the form ``...but it's not LISP.'')  For all of C's deficiencies, it compiles very cleanly and is extremely portable.
Title: Re: Java killed the computer scientist?
Post by: Reese Tora on January 23, 2008, 01:49:49 AM
Quote from: superluser on January 23, 2008, 01:19:38 AM
Quote from: Reese Tora on January 23, 2008, 12:20:12 AMJust saying that Java and C(++) are both available options, it's not just Java.

So is it C or C++?  C++, last I used it, was not so hot.  The UNIX-Haters Handbook (http://research.microsoft.com/~daniel/uhh-download.html) has a chapter on it, where it refers to it as ``The COBOL of the 90s.''

C on the other hand, is quite good.  (Yes, UNIX-haters skewer C, as well, but typically their complaints are of the form ``...but it's not LISP.'')  For all of C's deficiencies, it compiles very cleanly and is extremely portable.

C++, I think, but I don't think I took any of the classes that would have covered any of the stuff that isn't in C
(unless, you know, C++ isn't C with object orinted and stuff slapped on)

I didn't go too far before I fell in love with networking through one of the CompSci electives I took.
Title: Re: Java killed the computer scientist?
Post by: superluser on January 23, 2008, 02:17:47 AM
Quote from: Reese Tora on January 23, 2008, 01:49:49 AMC++, I think, but I don't think I took any of the classes that would have covered any of the stuff that isn't in C
(unless, you know, C++ isn't C with object orinted and stuff slapped on)

It's not.  C++ is different from C.  One of the main differences is that C++ doesn't have a grammar.  It is not possible to look at a line of code and tell if it will compile.  This may have changed since ISO standardization, but I don't hold out hope.
Title: Re: Java killed the computer scientist?
Post by: Cvstos on January 23, 2008, 02:22:35 AM
Quote from: superluser on January 23, 2008, 01:19:38 AM
Quote from: Reese Tora on January 23, 2008, 12:20:12 AMJust saying that Java and C(++) are both available options, it's not just Java.

So is it C or C++?  C++, last I used it, was not so hot.  The UNIX-Haters Handbook (http://research.microsoft.com/~daniel/uhh-download.html) has a chapter on it, where it refers to it as ``The COBOL of the 90s.''

C on the other hand, is quite good.  (Yes, UNIX-haters skewer C, as well, but typically their complaints are of the form ``...but it's not LISP.'')  For all of C's deficiencies, it compiles very cleanly and is extremely portable.

Yes, but C++ has a better implementation of objects, which opens up a lot of possibilities.  (Remember, it's not just "Is it possible?"  Yes, you can do objects in C, but they're extremely primitive and hard to work with.  You also have to consider ease of use.  If it's a huge pain in the ass to work with, it's probably not a good language to use for that problem.  Hence, C++ is better for object oriented design and programming.)

Quote from: Tapewolf on January 22, 2008, 04:33:57 PM
How on earth can you study OSes using Windows, when there's no source code to look at?

We looked at how OSes operate mostly in the general sense.  Windows was used for the programming examples but they weren't particularly deep.  The real meat of the course was all theoretical.  Lots of generalized explaining, picture drawing, etc.  I learned an awful lot about operating systems, really!

Quote
Quote from: Cvstos on January 22, 2008, 04:32:55 PM
I'm taking 3 math courses this semester.  Provided I pass all three, I'll be done with all my math requirements.  (All three are 300-level courses.  I've already had Calc III, DiffEq, and Linear Algebra.  I'm presently taking Abstract Math, Discrete Math, and Probabilities.)

My god, my brain hurts just thinking about that kind of load! That would make my head go asplode!
:explosion

Believe me, by the end of this semester I'm sure my brain will have either packed up and abandoned me or exploded.
Title: Re: Java killed the computer scientist?
Post by: Tezkat on January 23, 2008, 07:03:19 AM

Quote from: Reese Tora on January 22, 2008, 10:19:46 PM
I didn't realize that CompSci had such heavy math requirements in it, the 2 years all just had a prerequisite of some 100 level math... then again, it is a 2 year degree.

I'd say that a major thing differentiating computer science degrees from other tracks is the math component. You can teach any monkey to code, but I'd expect a CS grad to really understand the theory behind it. Choice of algorthims don't matter a great deal when you're building toy apps or just filling a black box to very tight specs, but when you graduate to very large and/or concurrent systems, then using... say... one search algorithm over another could mean the difference between code running in realtime and taking days to complete. Algorithm design and optimization requires an understanding of the math. Inputs into the design process are sensitive to issues of implmentation under the hood of the hardware abstraction layers.

If, as the article asserts, we're no longer teaching kids to deal with that, then... well... maybe the authors have a point. We don't need to graduate plug and play code monkeys anymore. Places like India are doing it for us, and they're doing it much more cheaply.

Quote from: Tapewolf on January 22, 2008, 04:33:57 PM
How on earth can you study OSes using Windows, when there's no source code to look at?

Meh... the basic architecture of Windows is well documented. In any event, how can you teach the basics of OS programming using any production grade OS, when there's so freakin much source code to look at? :3 The practical component of my OS programming courses used small realtime kernel that the professors had written for the class. It was simple enough to understand what we were fiddling with.

Title: Re: Java killed the computer scientist?
Post by: llearch n'n'daCorna on January 23, 2008, 09:23:58 AM
Quote from: superluser on January 22, 2008, 10:26:04 PM
Yeah!  Programming languages have gone downhill ever since Fortran 90.  I say we should create a language based on Makefiles and syntactic whitespace.

Ooo. I've done that!

... you evil sod, that'd be abysmal to complete -anything- in...
Title: Re: Java killed the computer scientist?
Post by: Ryudo Lee on January 23, 2008, 09:28:23 AM
I'm not surprised about the whole math part of the curriculum.  My requirements included quite a few 300 level maths... and biology... and history.... I never understood why those last two were needed, except maybe as filler for the degree.  Anyway calculus killed my passion (and GPA) for the degree, so I got my A+ and went into networking.

In any case, all I was ever taught was Java syntax, data structures and algorithms.  We only touched on objects... because the professors were still learning how to use them.
Title: Re: Java killed the computer scientist?
Post by: superluser on January 23, 2008, 09:36:58 AM
Quote from: Cvstos on January 23, 2008, 02:22:35 AMYes, but C++ has a better implementation of objects

No, C++ has implementation of objects.

C really doesn't.  Of course, if I wanted to learn objects, I'd use Common LISP.

Quote from: Tezkat on January 23, 2008, 07:03:19 AMI'd say that a major thing differentiating computer science degrees from other tracks is the math component. You can teach any monkey to code, but I'd expect a CS grad to really understand the theory behind it. Choice of algorthims don't matter a great deal when you're building toy apps or just filling a black box to very tight specs, but when you graduate to very large and/or concurrent systems, then using... say... one search algorithm over another could mean the difference between code running in realtime and taking days to complete.

Indeed.

I got owned a while back in a programming discussion.  Someone was claiming that it really didn't matter how efficiently you programmed because computers were so fast these days.

I responded that you *could* run a primes test by searching for factors starting with the number and working backward to two, and on my machine, that would take nearly 20 minutes to find all primes smaller than 1,000,000.  If you reversed the test, it would take 90 seconds.

Someone else pointed out that if you ran the test the proper way, from 2 to sqrt(n), it would take 3 seconds.

So yes, math is important.  This is a good overview for those of you who aren't terribly familiar with the subject (http://www.youtube.com/watch?v=d9UXw0fQmno).
Title: Re: Java killed the computer scientist?
Post by: Jigsaw Forte on January 25, 2008, 08:11:19 PM
As a Computer Science Major at Georgia Tech:

I am about to graduate.
I know Java, C, Python, Squeak / Smalltalk, Lisp, and am currently programming a robot in BASIC. Oh, and HTML, CSS, and PHP, which mostly got picked up in my spare time for the sites I do.
I do not, however, feel comfortable programming.

I can program, but I know people who would get to it faster and everything else. My best work is in designing UIs and making with the pretty - mostly front-end, which typically means less coding is needed.

I do not understand how learning any single language makes you a programmer. I do not, on an average basis, do much if any actual programming. I would, however, call myself one long before I let any of those goofs do it.
Title: Re: Java killed the computer scientist?
Post by: llearch n'n'daCorna on January 25, 2008, 08:13:43 PM
Heh. I feel so outclassed... ;-]
Title: Re: Java killed the computer scientist?
Post by: Reese Tora on January 25, 2008, 09:52:11 PM
Quote from: superluser on January 23, 2008, 02:17:47 AM
Quote from: Reese Tora on January 23, 2008, 01:49:49 AMC++, I think, but I don't think I took any of the classes that would have covered any of the stuff that isn't in C
(unless, you know, C++ isn't C with object orinted and stuff slapped on)

It's not.  C++ is different from C.  One of the main differences is that C++ doesn't have a grammar.  It is not possible to look at a line of code and tell if it will compile.  This may have changed since ISO standardization, but I don't hold out hope.

Oddly enough, someone I know posted a perfect axample of that on DA:

OMNOMNOM (http://blackhole12.deviantart.com/art/OM-NOM-NOM-NOM-75518176)
Title: Re: Java killed the computer scientist?
Post by: superluser on January 26, 2008, 12:17:25 AM
Quote from: Reese Tora on January 25, 2008, 09:52:11 PM
Quote from: superluser on January 23, 2008, 02:17:47 AM
Quote from: Reese Tora on January 23, 2008, 01:49:49 AMC++, I think, but I don't think I took any of the classes that would have covered any of the stuff that isn't in C
(unless, you know, C++ isn't C with object orinted and stuff slapped on)

It's not.  C++ is different from C.  One of the main differences is that C++ doesn't have a grammar.  It is not possible to look at a line of code and tell if it will compile.  This may have changed since ISO standardization, but I don't hold out hope.

Oddly enough, someone I know posted a perfect axample of that on DA:

OMNOMNOM (http://blackhole12.deviantart.com/art/OM-NOM-NOM-NOM-75518176)

Oh, no.  I'm not talking about that.  Obfuscated C is part of the fun.

For example, this award-winning program for finding the value of pi (http://www.ioccc.org/1988/westley.c):

#define _ -F<00||--F-OO--;
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
            _-_-_-_
       _-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
        _-_-_-_-_-_-_-_
            _-_-_-_
}


Even syntax like

for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("|"+(*u/4) %2);

is syntax.  C++ doesn't have that.

For example, what does the following code do?

a << b << c << d << e;
Title: Re: Java killed the computer scientist?
Post by: llearch n'n'daCorna on January 26, 2008, 01:58:49 PM
Quote from: Reese Tora on January 25, 2008, 09:52:11 PM
Oddly enough, someone I know posted a perfect axample of that on DA:

OMNOMNOM (http://blackhole12.deviantart.com/art/OM-NOM-NOM-NOM-75518176)

.. what the hell does that do, anyway?
Title: Re: Java killed the computer scientist?
Post by: Tapewolf on January 26, 2008, 02:15:54 PM
Quote from: llearch n'n'daCorna on January 26, 2008, 01:58:49 PM
.. what the hell does that do, anyway?


TiFiona:~ tapewolf$ ./omnom
test
OMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOM
jdhjgffkjdhgjhfgdjkhdkfsjgdfsg
OMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOM
Title: Re: Java killed the computer scientist?
Post by: Reese Tora on January 26, 2008, 03:47:41 PM
If you type in "OMNOMNOM" as your input, it exits.

I don't think it does anything else
Title: Re: Java killed the computer scientist?
Post by: llearch n'n'daCorna on January 26, 2008, 11:28:42 PM
*giggle*

Lovely. I like the code, too.