Beta

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Followup On Java As "Damaging" To Students

kdawson posted more than 6 years ago | from the many-are-called-but-few-are-chosen dept.

Education 626

hedley writes "A prior article on the damage Java does to CS education was discussed here recently. There was substantial feedback and the mailbox of one of the authors, Prof Dewar, also has been filled with mainly positive responses. In this followup to the article, Prof. Dewar clarifies his position on Java. In his view the core of the problem is universities 'dumbing down programs, hoping to make them more accessible and popular. Aspects of curriculum that are too demanding, or perceived as tedious, are downplayed in favor of simplified material that attracts a larger enrollment.'"

cancel ×

626 comments

Sorry! There are no comments related to the filter you selected.

SLASHDOT SUX0RZ (-1, Troll)

Anonymous Coward | more than 6 years ago | (#22133410)

_0_
\''\
'=o='
.|!|
.| |
goatse damaging to students [goatse.ch]

Re:SLASHDOT SUX0RZ (-1, Troll)

Anonymous Coward | more than 6 years ago | (#22133502)

Not as damaging as a summer at the geek compound. The year was 1999. I had finished up my second year of college and was excited to be selected as a slashdot intern. The pay was low. None-existent would be more accurate. But I got a VA Linux PIII computer, a generous food allowance, a room at the geek compound, a line item on my resume, and a chance to do something fun and exciting.

The first week, I wrote perl utilities to analyze the database -- something that would be a straightforward query in Postgresql or even SQL server, but required programmer intervention due to mysql's inability to handle subqueries and the poor optimizer. That weekend, Eric Raymond came to visit. We celebrated with pizza and jeagermeister. I thought ESR might be an asshole, but he was friendly and down to earth. A little too friendly, in fact, as he started rubbing my crotch under the table while we ate. At the time, I was hammered and didn't know what was happening (I think my drinks may have been laced, too). The next thing I remember, it's Sunday afternoon and I'm lying in the bathroom, covered in vomit with my pants down around my ankles. As I stood up, I noticed the caked on shit that covered my legs and I felt a burning pain in my asshole.

To this day, I don't know what happened.

Re:SLASHDOT SUX0RZ (1, Funny)

Anonymous Coward | more than 6 years ago | (#22133890)

at least it's not a myminicity link

@_@ (5, Funny)

Ojuice (638639) | more than 6 years ago | (#22133412)

I started with Java and I turned out just fine.

Re:@_@ (3, Insightful)

rmdir -r * (716956) | more than 6 years ago | (#22133474)

I started with Java and I turned out just fine.
His point is less that Java as a language causes brain damage and more that the switch to Java is symptomatic of a move to liquor-up and lacquer-down University Computer Science curriculum.

Re:@_@ (5, Insightful)

ushering05401 (1086795) | more than 6 years ago | (#22133536)

While this point may be valid, it's not like CS degrees were assurances of any level of competence anytime in my recent memory (I've spent about 15 years in IT).

About all I can suggest is that students who are inclined to supplement their educations through their own creative pursuits will continue to surpass those who treat CS simply as a profitable skill set. If anything, simplifying CS courses will assist potential employers in identifying those who aspire to excellence in the field and those who are merely pursuing a career.

Re:@_@ (0)

DataPath (1111) | more than 6 years ago | (#22133898)

If nothing else, by dumbing down the curriculum, the demeaned all CS degrees by granting them to people who did a whole lot less to earn it.

And because it's so easy, you get people who see programming as an income and not as rewarding, satisfying work.

Re:@_@ (1, Insightful)

smilindog2000 (907665) | more than 6 years ago | (#22133934)

About all I can suggest is that students who are inclined to supplement their educations through their own creative pursuits will continue to surpass those who treat CS simply as a profitable skill set.

Yes! I couldn't agree more. As for Java dumbing down education, that's a huge crock. Educators who pander to the most gifted (which I feel they should) typically fail to understand that software in the real world is developed by teams. Java provides those teams hand-rails to guide them towards productive collaboration. C++, in contrast, provides pistols, cannons, nukes, potato guns, and super-glue with which to shoot oneself in the foot. The author attacking Java has piss poor sense for what we need here in the real world.

Re:@_@ (5, Informative)

M. Baranczak (726671) | more than 6 years ago | (#22133548)

Exactly. If I recall, he was mainly talking about the fact that low-level system concepts aren't being taught. Java was only incidental to the argument, but the /. summary made it seem like another stupid language flamewar. Java is a high-level language: of course you won't be using it to write kernel code.

Re:@_@ (1, Insightful)

Anonymous Coward | more than 6 years ago | (#22133492)

I think "started" is the key there. If you ended there, that would be completely different.
I started with Pascal, then moved on to C/C++, assembler, etc. I wouldn't say Pascal had "damaged" me. Similar uses of Java should get similar results. Right tool for the right (in this case, teaching) job.

Re:@_@ (0)

Anonymous Coward | more than 6 years ago | (#22133652)

My course, we started with Turbo Pascal assembler for software engineering, AIM 65's for hardware engineering/embedded systems for the 1st year, and a bit of Prolog for computing theory. Then moved onto Lisp, 68000 systems, before finally moving onto C for systems programming, and Modula-2 for real-time systems (our professor managed to demonstrate real-world multi-threading using the 18Hz interrupt timer of the IBM PC).
Each interrupt would trigger a mini-process scheduler, along with monitors, semaphores and shared memory).

I thought the embedded recursive nature of Pascal subroutines was a step backwards, along with use of BEGIN/END, as I eneded up having to rewrite my own routines into C.

Happy nigger day! (-1, Flamebait)

Anonymous Coward | more than 6 years ago | (#22133418)

Niggers are "damaging" to the human race.

Wait, their not human, their apes. Nevermind..

Sincerely,
CmdrNigger

Re:Happy nigger day! (0, Offtopic)

Entropius (188861) | more than 6 years ago | (#22133590)

Humans are [wikipedia.org] apes.

Nice troll, though.

Re:Happy nigger day! (-1, Offtopic)

Anonymous Coward | more than 6 years ago | (#22133752)

Um, even they wouldn't make the elementary mistake you made: "their" is a possessive pronoun! Perhaps you were so busy being an ass that you forgot all about "they're", the contraction for THEY ARE? TWICE!? (Oh and "never mind" is two words you chimp.)
Idiot moron boy.

Re:Happy nigger day! (0)

Anonymous Coward | more than 6 years ago | (#22133888)

Sounds like someone is having a bad nigger day.

You're deluding yourself... (1)

rustalot42684 (1055008) | more than 6 years ago | (#22133420)

FTA:

To me, raw numbers are not necessarily the first concern. The first concern is that people get a good education.
You must be new here....

Re:You're deluding yourself... (1)

Zeinfeld (263942) | more than 6 years ago | (#22133490)

There is absolutely nothing to be said for learning how to program using badly designed tools. Cobol, Fortran, Ada are obsolete tools.

There is certainly something to be said for learning C. Can't say that I would bother with C++ at this point. If you are going to implement an interpreter or run time package you are going to need to understand pointers.

Re:You're deluding yourself... (1)

rustalot42684 (1055008) | more than 6 years ago | (#22133546)

Thanks for reading my post. I can see you clearly have a lucid understanding of what I said by the fact that you replied on a completely different topic. My point, if you'd bothered to try to comprehend it, is that the universities/colleges/etc are interested not in teaching, but in producing "coding fodder" for the IT industry.

Re:You're deluding yourself... (1, Offtopic)

Zeinfeld (263942) | more than 6 years ago | (#22133776)

Thanks for reading my post. I can see you clearly have a lucid understanding of what I said by the fact that you replied on a completely different topic. My point, if you'd bothered to try to comprehend it, is that the universities/colleges/etc are interested not in teaching, but in producing "coding fodder" for the IT industry.

You had a point? I thought you were just karma whoring with a contentless snark.

I do agree that Universities should teach better karma whoring technique, not just produce coding foder, it is pretty sad to see folk like yourself who are still waiting to get their +1 karma bonus after over a hundred posts.

Get rid of Cobol, Ada, SQL and FORTRAN. Students don't need 'em half as much as they need prime slashdot snarking skills.

As for TFA, when is a dupe not a dupe? When it is posted as a followup to the original with zero new content.

Re:You're deluding yourself... (1)

thePowerOfGrayskull (905905) | more than 6 years ago | (#22133908)

You had a point? I thought you were just karma whoring with a contentless snark.
Which is, I suppose, somehow way worse than karma whoring by making an offtopic reply to a contentless snark, soley for the sake of its proximity to the top of the comment stack...

Re:You're deluding yourself... (1)

Cristofori42 (1001206) | more than 6 years ago | (#22133858)

FTA:

You must be new here...

I started with C/C++ (5, Insightful)

KermodeBear (738243) | more than 6 years ago | (#22133442)

When I entered college I was started on C/C++. I learned a lot about memory management, pointers, low level system calls, using system libraries, etc. Two years into college they changed everything over to Java.

God damn, what a difference.

To this day I am happy that I was able to have those two years of C, letting me get close to the guts of the OS, forcing me to think about what I was doing every step of the way. There is no question in my mind that it made me a better programmer in general, regardless of the language.

I feel sorry for the people that start - then never leave - a much higher level language such as Java.

Re:I started with C/C++ (4, Insightful)

StarvingSE (875139) | more than 6 years ago | (#22133526)

I don't think it matters what language a university teaches their 1st years. Any decent curriculum will include an operating systems class which should have the low level programming assignments. My uni taught us data structures and OOP concepts with java our first year, and then we reverted back to C/C++ for the system calls, threads, etc. And any CS program that does not teach algorithms, well I don't know how they get accreditation (referring back to TFA).

Two things (2, Insightful)

zanderredux (564003) | more than 6 years ago | (#22133556)

C/C++ gives a nice inside view to the core of the machine and you have to learn all the good stuff you mentioned, but I still think the best way to understand programming as an abstract exercise is through some Lisp variant. It forces you to think about data structures and exposes to a whole different way of programming, which is quite useful.

Then you mentioned you feelt sorry for those who started with Java, but then I really feel sorry for those who started with VBA...

Re:Two things (1)

CastrTroy (595695) | more than 6 years ago | (#22133872)

Well, I started with QBasic back in highschool, because it was already on all the computers. I don't think I ended up that bad in the end. I don't think the problem is with what languages you learn, but how you learn to use them.

Re:I started with C/C++ (0)

Anonymous Coward | more than 6 years ago | (#22133576)

I feel sorry for people that don't start with assembly. I feel sorry for people that don't start by assembling digitial logic circuits on proto-boards. I feel sorry for people that don't construct their own vacuum tubes.

There are a million things you could learn by studying Java (or virtually any other language for that matter); and if you are unable to recoup the time you invest, then I'd suggest you aren't a very good student.

The first article on this subject smacked of simple prejudice. This follow up makes me think /. editors have no sense of propriety whatsoever ... wait (headsmack) .. hahahaha - /. editors creating a tempest in a teapot for page reads! Now that would be unusual wouldn't it?

Re:I started with C/C++ (3, Interesting)

mcrbids (148650) | more than 6 years ago | (#22133578)

To this day I am happy that I was able to have those two years of C, letting me get close to the guts of the OS, forcing me to think about what I was doing every step of the way. There is no question in my mind that it made me a better programmer in general, regardless of the language.

Reminds me of the debate I often see in aviation: "tricycle gear" vs "tail draggers". Tricycle gear planes have a steering nosewheel, and two main wheels under the wings. Tail-draggers, the "old" way, have two main wheels in the front and 1 small wheel (the "tail dragger") on the tail.

It's considerably easier to land/takeoff in a tricycle-gear. But there are plenty of pilots who are dead-set on flying tail draggers because it makes them "a better pilot". Which, then, sparks another debate about whether or not new pilots should be taught on tail-draggers or tricycle gear.

In short, it all comes down to whatever the student wants. They can choose which way they prefer. Myself, I learned in a tricycle gear Cessna 172, and I don't regret my decision. Flying is fun!

Re:I started with C/C++ (-1, Offtopic)

Anonymous Coward | more than 6 years ago | (#22133792)

whoop-de-fuckin-doo so you can fly a plane. Anything to add to the discussion?

Re:I started with C/C++ (0)

Anonymous Coward | more than 6 years ago | (#22133906)

Try to read his post.

Then, when the full meaning of his post has sunk, separately from everything else, see if you can draw some sort of analog to the current discussion.

Re:I started with C/C++ (2, Interesting)

giminy (94188) | more than 6 years ago | (#22133618)

You know, I started thinking the same thing a few months ago. I learned to program with Pascal, then BASIC (basic sucked, but it's what they taught in high school), then C, Scheme, C++, and finally Java/C# (these two only in the last year or two). I've been primarily a unix guy in the past, but I actually had a job interview at Microsoft, maybe a year ago. I asked my interviewers technical questions, too. One question that I like asking is, what does an object method look like in memory versus a static method? Most of my interviewers at MS could not answer the question, which I found telling. They're certainly wizards with algorithms and code optimization, but hadn't gone into much depth in how what they're doing actually works in memory. I find a lot of OO programmers don't know what a function pointer is, even though they use them with every new line of code.

I definitely think that learning low-level languages first is the way to go. I do learn a lot of new stuff every day from my younger coworkers who have been using Java since day 1 (mostly programming paradigms and weird stuff in the libraries), but I find myself teaching them a lot as well -- and quite basic stuff too, like what thread an event fired by hardware will run in in their .net code ;-).

Re:I started with C/C++ (1)

schwartzg (1089259) | more than 6 years ago | (#22133630)

In the introductory classes I took they taught us Java and glanced over C. Now I am taking more advanced classes and find myself wondering why they taught us Java and not C since in many cases the class is designed to be done in C. Thus it would have been useful to have been taught C, though I can see why they would want to teach us Java, if we never use it in our later classes it seems to be a waste.

On the other hand (1)

lakeland (218447) | more than 6 years ago | (#22133636)

Think of how much deeper the understanding of Objects, ER diagrams, ... will be for those students who started with Java.

Which will be more useful in the end, a bit more understanding of low level programming or a bit more understanding of ERP?

Turn turn turn... (4, Insightful)

TheLazySci-FiAuthor (1089561) | more than 6 years ago | (#22133468)

I think there is a difference between dumbing-down and simplification.

Really, when has a tool ruined the skill set of an industry? The worst a tool does is eliminate certain roles or industries altogether - and those who filled those roles will always complain (and sometimes revolt).

From the study of C and Java I can say that for 90% of the tasks I've taken on I've needed no more than Java (and Java would in fact be overkill).

This reminds me of the controversy when Feynman diagrams were first shown. These diagrams were a much simpler way of expressing complex summations - but the old-school (some pretty impressive names) felt that these diagrams were a dumbing-down and that the historical mathematics were the proper way to express these systems.

Always a new tech will simplify something and those who have had to trudge through the complexity will shoot-down its simplicity - this happened with the GUI, and I have a feeling about 84% of you are reading this statement on a GUI desktop.

There will always be benefits to be had from the classic way of doing things, but new tools enable people to climb to new heights. The brain only has so many cycles, If they don't need to be wasted with pointers and bleedingly-effecient machine code then save those brain cycles for algorithms and interface design.

Re:Turn turn turn... (1)

blueg3 (192743) | more than 6 years ago | (#22133494)

Most of the classes I've seen still teach the summations, too. Then they teach Feynman diagrams and proceed to have you do the real work with the diagrams, as it's easier.

Presumably, if they really taught the things that you miss with Java and then had you do higher-level problems in Java so you don't worry about important details, it wouldn't be nearly as bad to be using Java.

Re:Turn turn turn... (1)

colfer (619105) | more than 6 years ago | (#22133514)

What's a cycl[oops, garbage collection]

Re:Turn turn turn... (0)

Anonymous Coward | more than 6 years ago | (#22133610)

I think there is a difference between dumbing-down and simplification. Really, when has a tool ruined the skill set of an industry? The worst a tool does is eliminate certain roles or industries altogether - and those who filled those roles will always complain (and sometimes revolt). From the study of C and Java I can say that for 90% of the tasks I've taken on I've needed no more than Java (and Java would in fact be overkill).
And that's enough proof of the dumbing-down.

Re:Turn turn turn... (-1, Redundant)

Anonymous Coward | more than 6 years ago | (#22133734)

"Really, when has a tool ruined the skill set of an industry?"

Someone's never heard of Paul Bunyon.

Programming is different (4, Insightful)

Weaselmancer (533834) | more than 6 years ago | (#22133740)

This reminds me of the controversy when Feynman diagrams were first shown. These diagrams were a much simpler way of expressing complex summations - but the old-school (some pretty impressive names) felt that these diagrams were a dumbing-down and that the historical mathematics were the proper way to express these systems.

Feynman diagrams are just another way of looking at things. It's another viewpoint of the same thing.

Java and C don't map so well. There are some things for which only C makes sense currently, such as driver development. Java is a virtual machine. Although it's possible to beat, mangle, and force java into submission and make it do those things, that's not what it's for. All those JNI libraries that Java needs to actually talk to your machine - they're written in C. AFAIK, nobody is writing an OS or even drivers in Java. I'd even bet that the first few implementations of Java were written in C/C++.

When Java is the first thing you learn, you learn sloppy IMHO. You just assume there is a garbage collector. You can allocate whatever you want, whenever you want, and not have to think about scope. If you ever do have to do some system work later on in your career - all of these notions will be new. You'll have to think about pointers, and the size of an object in memory, and how long you should hold on to it before you free up that memory. You'll suffer serious setbacks when it's time to program down to the wire.

Java is a beautiful language - my personal favorite - for application development, but application development isn't all there is.

Re:Programming is different (1)

Lisandro (799651) | more than 6 years ago | (#22133918)

I'd even bet that the first few implementations of Java were written in C/C++.

Heck, i'd bet all Jav implementations are written in C/C++!!!

Come on, Java is a nice language - an interpreted language (yes, bytecode has to be interpreted). The notion that Java can is a suitable C/C++ replacement for everything but drivers is sadly common, and flawed.

Re:Programming is different (1)

Lisandro (799651) | more than 6 years ago | (#22133938)

Sorry about the grammar errors - i need to check twice before submitting :(

Big Assumption (0)

Anonymous Coward | more than 6 years ago | (#22133756)

That all computer work is the sane as yours. The Net? Desktop? O/S? Embedded?
60% of my tasks are ASM and C. That is all the CPUs will handle.

Re:Turn turn turn... (2, Interesting)

Secret Rabbit (914973) | more than 6 years ago | (#22133796)

You're arguing that what goes on at College should be going on at Universities. This is very very wrong.

Java is fine to learn at College because of the reasons you cited i.e. the purpose is to get people actually building things that is relevant to industry.

Java is a horror at University because learning to code is NOT its primary (or secondary, or...) purpose there. The purpose of a University is to get people to be able to go onto a Masters and PhD and be able to do actual research. In this case, research in Computer Science. For this context, a programming language is just a tool to be used to really dig into an idea. And one cannot do that with Java when one is dealing with such low-level things as OS's.

Your example of Feynman diagrams is also false and misleading. There it was about notation and practicality thereof. People will stick to what works for them and those "big names" that you mention already were "stuck in there ways" with the "old" notation. They PREFERRED to use the old one because they were used to it. Feynman diagrams stuck around because they conveyed the necessary information in an easier to understand way.

Here we are talking about function. Basically, there are many many many things in the CS curriculum that require a low-level language to properly describe. This does NOT include Java. There is also a level of detail of thinking that one acquires when one programs in a lower-level language like C that one cannot get with something like Java.

Basically, while Java makes business apps and such easier to write, it is counter productive with regards to the goals of a University CS program. But, if I'm wrong, just go ahead and show us an OS that was written in pure Java.

Re:Turn turn turn... (1)

japhering (564929) | more than 6 years ago | (#22133880)

From your point if view, I would presume that you are not from the US, which where the debate began. A distinction which is indeed significant to the discussion, as in the US there is funcionally very little difference between a College and a University. In fact, sometimes the biggest distinction of a college is that it is a subset of a university.

Fifty or a hundred years ago there might have been a significant difference between the two, but in my lifetime (I'm 48) there
has been no difference.

Re:Turn turn turn... (2, Insightful)

Skreems (598317) | more than 6 years ago | (#22133820)

There will always be benefits to be had from the classic way of doing things, but new tools enable people to climb to new heights. The brain only has so many cycles, If they don't need to be wasted with pointers and bleedingly-effecient machine code then save those brain cycles for algorithms and interface design.
The point isn't that you should spend all your development cycles on pointers. The point is that even when you're using a language that handles that junk for you, you should have some idea of what it's doing. I've seen good programmers, people I would consider to be way better than me in many respects, tripped up by the way managed languages abstract away the concept of pointers by making all objects automatically act as references. And I remember in my own Java courses in college, that not only was it strange trying to wrap your head around the language implicitly treating objects as pointers, but not a single person, student OR teacher, could explain that internal memory system properly. Pointers and memory references are still there in Java and C#, you just don't use C++ style notation for it. But if you don't understand it, it's going to bite you.

Re:Turn turn turn... (1)

cgenman (325138) | more than 6 years ago | (#22133894)

Clearly the answer is that we should teach assembly. Otherwise, how are modern computer programmers to understand the importance of 15bit polynomial counters? The speed of assembly is unrivaled, so why deny our upcoming programmers the important knowledge of register juggling?

In fact, people should be wiring the little chips together manually. Want a zero? Desolder a vaccuum tube. Need a matrix operation? Sorry, we don't have enough rackmount space.

It would be like Star Wars. Billy Gates would be thrown into a cave on planet Ilum with a pick axe and a soldering gun, and would have to build a computer from raw ore and bits of plant life. Only then has he proven himself worthy of learning the secrets of "O of log n".

Isn't Academia supposed to be academic?

Re:Turn turn turn... (1)

JPriest (547211) | more than 6 years ago | (#22133930)

Although you do have a good point, I think there is something to be said for working with the nuts and bolts of a language also. When you work with a high level language, you spend a great deal of time interfacing with this or that graphics library that may or may not be obsolete in the next version but certainly will be in the next language. When you look at it from this perspective, working with a high level language that abstracts many important concepts can have a negative impact on education.

Re:Turn turn turn... (1)

bcrowell (177657) | more than 6 years ago | (#22133932)

This reminds me of the controversy when Feynman diagrams were first shown. These diagrams were a much simpler way of expressing complex summations - but the old-school (some pretty impressive names) felt that these diagrams were a dumbing-down and that the historical mathematics were the proper way to express these systems.
Interesting, if true, but I find it hard to believe. Can you give any evidence that this really happened?

"Core stack"? (2, Interesting)

mrami (664567) | more than 6 years ago | (#22133470)

The older worker suggested that the young engineer check the core stack to see about a problem, but unfortunately, "he'd never heard of a core stack."

Core stack? What the heck's a core stack? Does that mean get a backtrace out of a core dump?

No! (2, Funny)

EmbeddedJanitor (597831) | more than 6 years ago | (#22133666)

He means checking the actual magnetic core. You can do this with a magnetic compass from your Boy Scout kit.

Re:"Core stack"? (0)

Anonymous Coward | more than 6 years ago | (#22133794)

Checking the core with a debugger while the program is running?

perhaps a core dump is a dumped core stack?

Generation gap (3, Interesting)

Mr2001 (90979) | more than 6 years ago | (#22133862)

I saw that too, and like the young engineer in the story, I also have no idea what a core stack is - despite the fact that I've been programming for nearly two decades, in environments from x86 assembly to .NET, and I know my way around a debugger. I assume he meant a call stack, maybe one saved in a core dump, but I can't help envisioning a pile of antique magnetic memory units.

This seems like an example of the "old people have funny names for things" principle, not "Java makes you a bad programmer". I bet the young engineer wouldn't know where to buy oleo or Prince Albert in a can either, but what the hell does that prove?

Re:"Core stack"? (1, Redundant)

guruevi (827432) | more than 6 years ago | (#22133876)

Never heard of a stack? Man, programming has come a long way since programming a TRS-80 with assembler. Core stack usually is referred to as doing a core dump stack trace. A core stack is how the program looks in memory up to a certain point (by design (breakpoint) or crash) and then you can output that and review it.

Get that college credit (3, Interesting)

snappyjack (1147601) | more than 6 years ago | (#22133480)

It doesn't help that the only Advanced Placement computer science courses in high school are based on Java. If it's really a problem, it should be addressed here first. Never really did see why they moved away fro C++.

Re:Get that college credit (1)

The Anarchist Avenge (1004563) | more than 6 years ago | (#22133600)

My high school had a computer teacher who taught what amounted to the entire first year of my college CS degree over the course of 2 years. Started in BASIC for the first week, then moved to VB for the rest of the year, at which it switched over to C++. Those were the best classes I ever took, and I wish that the rest of my experience in the CS discipline was the same. Here's to you, Mrs. Davis!

Re:Get that college credit (1)

colfer (619105) | more than 6 years ago | (#22133736)

Logic itself is the first thing to teach. College students may have had that only had in one class, geometry early in high school, and/or whatever kind of programming they teach in H.S. now.

Java will do for that I guess, though BASIC and Pascal were simpler, with no libraries.

Once they understand logic and loops, you could hit them with memory and pointers and data structures.

Re:Get that college credit (1)

ushering05401 (1086795) | more than 6 years ago | (#22133604)

My district moved away from C/C++ because of the scarcity of properly educated teachers.

It is easy to write horrible code in any language, but I was taught Pascal because there was a perception that it was more within the grasp of the instructors in the local employment pool.

Re:Get that college credit (2, Insightful)

sneakyimp (1161443) | more than 6 years ago | (#22133732)

Java runs on a virtual machine, isolating the programmer from the details of the OS. Write once, run almost anywhere, right? Seems if I was a teacher I'd want to teach that rather than wasting time on some specific OS which won't even exist when they get out of college.

Re:Get that college credit (1)

gsmalleus (886346) | more than 6 years ago | (#22133768)

When I took the Advanced Placement exam as a high school senior in 2002 it was in C++. When I got into college, the intro courses were all C++ based. I took some time off from school last year and am now finishing up my degree. Last week was the beginning of the spring semester and when I got back to the computer science department, it is now all java based. The base level courses and some of the upper level courses had switched during my leave of absence. When I inquired about the change I found that the department had switched mainly due to the AP exam switching languages. It is hard to test out of an intro level course if the exam you take uses a different language then the course you are testing out of. The only downside is I now have to learn Java for this one course, which was originally C++ based a year ago, so I can graduate in May.

Could be worse (1, Interesting)

Anonymous Coward | more than 6 years ago | (#22133484)

Imagine teaching MapReduce in Java.

Is it time for a split? (1, Flamebait)

seanalltogether (1071602) | more than 6 years ago | (#22133508)

I wonder if automotive engineers went through the same bitchfest right before the modern mechanic was born? 'Damn kids these days just want to learn how to change the oil in their car, they can't even build their own fuel injector!'

Re:Is it time for a split? (1)

colfer (619105) | more than 6 years ago | (#22133544)

"All they know how to do is read the codes" would be more like it.

C is overkill for most people (5, Insightful)

kemushi88 (1156073) | more than 6 years ago | (#22133512)

At the University of Washington, where I am a student, the introduction programming courses teach Java. These courses seem to serve two purposes. A number of majors outside of computer science require them for the general background knowledge of how computer languages work. They also are prerequisites to entering a CS major, so they serve to weed out people who really don't belong in a technical major. Although I don't care much for Java itself, there are a number of benefits to using it in these introductory classes. First of all, when you're working with a bunch of noobs, it is really nice to have the platform independence that Java offers. Secondly, all of the libraries, at least from my experience, are extremely well documented. But most of all, most of the people that take an introductory programming course won't ever reach the level of sophistication that C requires, so teaching C would be kind of overkill. And those of us who really will continue on to work requiring C, really shouldn't have a problem learning it.

Re:C is overkill for most people (1)

Azarael (896715) | more than 6 years ago | (#22133644)

By all means, schools should have a scientific computing or introductory programming class in Java. The problem comes in where these two classes are mixed in with the CS stream. Neither group of people is served that well, the non-cs students will often find the work unnecessarily difficult and cs students will get bogged down in tons of Java OO business (like I did) when they could be learning fundamentals 'about programming'. OO and library support are *not* fundamental, when you're learning math, you do your addition and subtraction, before multiplication and addition.

Give 'em a good mix (2, Insightful)

EmbeddedJanitor (597831) | more than 6 years ago | (#22133698)

I would recommend that one thing people need in an introductory course is to be able to quickly figure out if they're interested in the stuff. To achieve this needs a good mix of programming etc..

Sure, some link lists etc in Java/whatever are fine, but also introduce them to some assembler etc.

If the kids are going to make a career of programming then an appreciation of what is going on under the hood is valuable.

Re:C is overkill for most people (1)

Aadain2001 (684036) | more than 6 years ago | (#22133714)

But isn't the problem that the use of Java and like languages continues through the higher level courses, dumbing them down in order to avoid having to use the more complex and appropriate languages like C & C++?

Truth (4, Interesting)

p0tat03 (985078) | more than 6 years ago | (#22133516)

I'm in one of Canada's biggest CS schools, and though I'm in engineering, I really do feel sorry for them. Many of the toughest courses in that program are now optional, and one can cruise by and get a degree only knowing the most basic algorithms (quick sort?) and data structures. Naturally, the only people who take the original challenging courses are the alpha geeks who live for that kind of stuff anyway.

Meanwhile people come out of the doors of this school knowing only Java and .NET, and then complain that the world of programming was not as interesting as promised. Hmm.

On the other hand, I'm in an electrical engineering-like program, and we only deal with assembly, C, and maybe C++ on the odd occasion. I love it. IMHO any self respecting programmer needs to at least KNOW how to operate close to the metal, if only so it makes them a better coder at the higher levels.

Re:Truth (2, Informative)

ScrewMaster (602015) | more than 6 years ago | (#22133680)

IMHO any self respecting programmer needs to at least KNOW how to operate close to the metal, if only so it makes them a better coder at the higher levels.

Well, a lot depends upon your eventual focus. Me, I started out in life on a Rockwell PPS-4 4-bit micro, eventually graduating to an 8080 and then the 6502, 6800, 6809 ... didn't get much closer to the metal than that. I agree with you that, as a general principle, knowing the low-level stuff can make you a better programmer. With C/C++, I'd say that knowing assembler (several assemblers) is a definite plus, really a prerequisite, especially if you do embedded systems work with limited resources.

However, given the level of abstraction in more sophisticated programming languages (Java and .Net in particular), knowing how to use pointers and memalloc probably doesn't buy you all that much. You'll never use them directly, and you're so far from the underlying constructs you're better off just learning the best practices for the language of your choice. Otherwise, you're just guessing at what's going on under the hood.

Re:Truth (1)

Mongoose Disciple (722373) | more than 6 years ago | (#22133828)

I pretty much agree with this.

The reality is that there's a wide, wide variety of computer science careers out there, even just within the realm of programming, and it's hard if not impossible to teach to all of it in four years.

My undergraduate programming was nearly all C/C++. I had all kinds of classes in computer architecture, computer hardware, assembly language, and all things 'close to the metal'. I had classes in compiler and operating system design. I had classes in math that's useful to certain kinds of programming, and classes in programming computers to solve math problems.

If some horrible apocalyptic event had wiped out all computers on Earth shortly after my graduation, I probably could've built you a 286 out of NAND gates given enough time and a giant pile of NAND gates. If those survived for some reason.

Unfortunately, the apocalypse did not immediately follow my graduation and I was unable to roam the wastelands of the near now like Mad Max's closest building-shit-out-of-NAND-gates equivalent. Instead I became the kind of developer who whores for businesses. Solving those kinds of problems rather than the 'close to the metal' kind of problems turned out to be what I enjoyed.

I've used a database in nearly every project I've worked on in my career. My exposure to databases as an undergrad was zero. I tend to use languages like Java or C# for most of my work. My exposure to them as an undergrad was zero. I use object oriented design patterns and principles nearly every day. My exposure to them as an undergrad was... half-assed at best. Yes, here's C++, it has classes. Next week we'll talk about something else and never mention that again.

For what I do now, my college education was of little real value. If I had become a game programmer, or someone who writes device drivers, or works on embedded devices, or a thousand other things, my education would've been great. Unfortunately, when you pick which colleges to apply to as a high school junior you're not really equipped to make those decisions. Even if you understood what school was good for what, your likelihood to understand what will really make you happy isn't great.

So, I don't know. I'm not convinced teaching Java damages students so much as prepares them for different kind of jobs. I don't think it'd be good if all students learned the Java way and I don't think it'd be good if all students learned the C way. I've worked with brilliant people who started out with a language like Java and -- in that kind of project -- were awesome programmers who never would have had the right mindset to wrap their heads around pointer math. C and other 'close to the metal' languages never will and should never go away, but equally it's very possible now to be a good programmer and not understand those concepts. The abstractions have evolved to that point.

Re:Truth (0)

Anonymous Coward | more than 6 years ago | (#22133704)

The fact that you called your program "electrical engineering-like" made me a little interested - a quick uwdir search later and I confirmed my hypothesis. Greetings from one tron to another! Also, yes, it is horrifying. The school essentially sold itself out to Microsoft some years back. What's worse is GeoEng and this awful new Management Eng program: they are taught VB.

Re:Truth (1)

broken_chaos (1188549) | more than 6 years ago | (#22133798)

uwdir, huh. I'm another one.

I'm only in first year, however - software (the aforementioned "electrical engineering-like"?). Hope things don't turn out too badly for me...

Re:Truth (1)

broken_chaos (1188549) | more than 6 years ago | (#22133816)

(After a little more digging, no, not the "electrical engineering-like". But yup, same school.)

Re:Truth (1)

mmyrfield (1157811) | more than 6 years ago | (#22133748)

This sounds a lot like my experiences. Taking an Electrical Engineering/Computer Science degree (Eng Phys CPSC extension), I wonder how many 'code-monkeys' actually know how logic is executed or why instructions are in 8 (or 2^n) byte chunks.

Regardless, I think the watering-down of the curriculum is occuring in every discipline. Everybody is told that university is the place to go to get a good job; instead of weeding out those that don't have what it takes, the universities have made it easier to get in and easier to get through.

reality or theory. (-1)

Anonymous Coward | more than 6 years ago | (#22133560)

Maybe college is starting to realize they need to prep people for the "real" world versus the theoretical one. I'm not saying advanced math is bad or not important, but years of C, fortran, calculus whatever doesnt really correlate in the business world where most companies are using java, C# etc. Now if we are talking someone becoming a software engineer versus say a systems analyst there is a big difference.

Does the language really matter? (3, Interesting)

HauntedCrown (692361) | more than 6 years ago | (#22133580)

I got into University during the change from C++ to Java. The reasons that the professors gave was that they were wasting so much time with concepts that weren't critical to the class. They claimed with Java, they were able to focus on algorithms and data structures.

In a way, they were correct. Java was used, but we didn't learn Java. It could have been any language. We went over addressing memory quite extensively, and how objects are stored 'behind the scenes'. We could have really substituted any language and had the same results. Unfortunately, the results *were* the same: some students 'got it' while others just couldn't come to terms with any of it. I suppose now they are coming to the realization that there is no good way to make a difficult subject easier. Perhaps that is why they are coming up with an IT program...

With all that said, my university had yet to make the transition from 'everyone should know C and pointers by now' in the upper division classes. Perhaps that has been remedied now, but made things pretty difficult for those who weren't willing to put in the time. But the university is supposed to make you work, so I guess in that sense everything worked out fine.

Re:Does the language really matter? (1)

duffbeer703 (177751) | more than 6 years ago | (#22133688)

I think you're right on - I had a similar experience.

IMHO, a big problem with Java is that it's easy to skate along, while remaining clueless. At my university, everyone basically flunked the senior systems programming and network programming courses (based on C). I was a superstar, receiving an "A-" for getting 19/150 points on the systems programming final. There was literally dozens of people who got a 0 on the exam.

Part of that was that it was a big state school that frankly, sucked. The masochist tendencies of the professors didn't help either. (one of the assignments was to simulate an old Sun architecture in C (which nobody had used), working alone, in 4 weeks) The problem that I had is that they were fucking over students in their junior/senior year who should have washed out in the freshman spring semester.

What a "BS" degree really is (4, Insightful)

bradgoodman (964302) | more than 6 years ago | (#22133588)

The curriculum in a BS program, as I have always understood it - isn't designed to necessarily prepare you to enter the workforce with all the "hands-on" technical skills - no matter what discipline its in.

If you're to learn "hands-on" skills to apply towards work, that's what an associates degree, or trade-school is about

Look at it this way - if the world went post-apocalyptic tomorrow, and everyone "knew Java", we'd all be screwed, because no-one would understand all the theory and crap behind compiler design, OS design, carnal maps, finite automina and all the other "fundamentals" on which everything is built. Just like if everyone got their ACE automotive technicians certificates, we'd have no one who knew how to design the cars.

Now I'm not saying that universities don't try to balance out the BS curriculum with real-world, practical stuff - of course they do - but that's the idea.

In my view, school gives you the foundation, and it's up to you to apply it. Reality is, once you get out there, any specific tools, languages, etc. change so fast anyway - a BS degree teaches the foundation, and its up to you to build on it

Disclaimer: I'm an EE drop out - basically completely self-taught - the same rules apply - know the foundation - and your own your own from there.

Re:What a "BS" degree really is (0)

Anonymous Coward | more than 6 years ago | (#22133806)

because no-one would understand all the theory and crap behind compiler design, OS design, carnal maps, finite automina and all the other "fundamentals"
Preach on brotha! It's getting ridiculous today with these "developers."

I mean, half of them don't know what a Wamachoohoo or a Whizamathang is. I asked this scro the other day and he was totally like "A whaaat?"

These schools need to go back to school.

Re:What a "BS" degree really is (4, Funny)

GregAllen (178208) | more than 6 years ago | (#22133826)

I'm assuming you mean Karnaugh maps [wikipedia.org] . Although I'll be the first to admit that carnal maps sound pretty intriguing to the lonely engineer type. :)

Re:What a "BS" degree really is (0)

Anonymous Coward | more than 6 years ago | (#22133922)

Look at it this way - if the world went post-apocalyptic tomorrow, and everyone "knew Java", we'd all be screwed, because no-one would understand all the theory and crap behind compiler design, OS design, carnal maps, finite automina and all the other "fundamentals" on which everything is built.

If the world went post-apocalyptic tomorrow, i'd say there'd be a bit of carnal mapping going on!

Its not 42? (2, Interesting)

LaskoVortex (1153471) | more than 6 years ago | (#22133626)

CS should be made as difficult as possible to keep the numbers of graduates low. This may not be what CS department officials want to hear, but it would be the right thing to do. Right now, the biomedical sciences suffer from a serious glut of highly trained PhDs that find they need to extend training by 4 to 8 years as "post-docs" without solid prospects for long term employment.

While this may be great for the advancement of science, it makes for a pretty bad professional situation for scientists who still looking for work in 2-year appointments at the age of 35+. Moreover, average biomedical post-doc salaries are less than what a fresh BS in engineering would make. Biomedical sciences have suffered from an overabundance of training funds and from a drive for departments to have cheap labor in the form of hard working grad students chasing the carrot of a PhD. So they (1) outsource lecturing to part time lecturers, (2) train more biomedical scientists, (3) shrink the size of permanent faculty. Moreover pressures from tightening NIH funds exacerbate these problems.

In short, training should not be easy or overly encouraged. Colleges should provide training based on market needs and discourage weaker students from saturating highly technical fields.

If CS departments can weed out potential programmers by making their curricula tougher, they should really do it. This would ensure that CS people were actually talented and devoted to the trade and that compensation in the future would remain commensurate with training, unlike in the situation in the biomedical sciences.

Authors have a vested interest (2, Informative)

ZombieRoboNinja (905329) | more than 6 years ago | (#22133650)

They're pretty up-front about it, but it's worth noting that the authors here work for AdaCore and have a vested interest in getting people to use their language. (Notice how they keep talking about the importance of teaching "languages like C++ and Ada" and the section about why Ada is the best programming language ever.)

Duh (3, Insightful)

cvd6262 (180823) | more than 6 years ago | (#22133660)

Aspects of curriculum that are too demanding, or perceived as tedious, are downplayed in favor of simplified material that attracts a larger enrollment.

Let me be the first to welcome you to higher education.

I learned Java before C++ (1)

kcbanner (929309) | more than 6 years ago | (#22133664)

I learned Java before I learned C++, and I didn't know anything about memory management. I had to learn it the hard way with C++.

Not mutually exclusive (3, Insightful)

compupc1 (138208) | more than 6 years ago | (#22133668)

I don't see why students can't learn both Java (or C#, etc.) and C. I first learned Java in my undergraduate days, then in the second year we learned C++. After that we were pretty much expected to learn whatever language we needed with minimal instruction. It's not like CS programs need to do only one or only the other.

High-Level != Non-Innovative
I don't know why some people think that something can't be innovative if it's high-level. I frankly don't care whether something's written in assembly or JavaScript. It it brings something new and useful to the table, it's innovative in my book.

Different Skillsets, Different Challanges
Constructing a low-level system utility and architecting a large enterprise web-based application are two fundamentally different types of problems. It's true that students need to understand memory management and low-level OS concepts. But quite frankly students who come out of Universities understanding only this type of development consistently demonstrate a complete inability to design an enterprise web application using OO design patterns, SOA, and reusable components. There are significant technical challanges involved in this type of application development. They're just not the same as when you're living in the low-level world of systems programming.

Ever heard of reuse?
I don't know whether this guy seriously believes that students shouldn't be leveraging libraries in their code, but I've got news: that's the way the world works. It's true you should be able to dive into the low-level code if there is a specific need to, but nobody's going to pay you to reinvent the wheel (anyone who insists on implementing their own sorting algorithms in the real-world is probably a fool.) Reuse is something software engineering strives for, so why should we be painting it out to be something evil?

Besides, where do you draw the line? I know some people in the supercomputing industry that feel C is "too high-level and bloated". They would like to see students spending most of their time in Fortran and assembly. So...do we expect students to write all their software in assembly? Should students be designing everything using sequential circuits and skip the software alltogether? My point is that what's considered "high-level" is very relative, and there's no good justification to sitting exclusively any any level or another. Part of being a good engineer is knowing how to select the right tool for the right job. Sometimes that's assembly, and sometimes that's Java. As long as you're proficient in multiple styles of programming, you should be able to handle most anything you need to.

Re:Not mutually exclusive (1)

blueg3 (192743) | more than 6 years ago | (#22133850)

"that's the way the world works"

It's higher education, not professional training. If you want to learn how to use libraries from Java, you can learn that from ITT.

Why should people have to learn difficult stuff? (0)

Anonymous Coward | more than 6 years ago | (#22133670)

Really, isn't that what the dweebs are for?

I find it ludicrous that someone with a CS degree would not understand how computers really work at the hardware & software level to whatever level of detail required by the task at hand. Anything less is just pure BS.

rhb

nonsense (4, Interesting)

j0nb0y (107699) | more than 6 years ago | (#22133674)

I was taught how to handle pointers in QBASIC when I was in junior high.

The assignment was to implement a linked list. The instructor had us initialize an array which represented our memory block. The program then had to perform all the standard linked list operations, handling memory allocation and all that crap.

The choice of language may seem odd, but consider that QBASIC is what we had available. All our DOS computers already had QBASIC on them, and we could use it without having to shell out the big bucks for a C/C++ compiler (none of us was aware of DJGPP at the time, though I later used DJGPP to teach myself C++).

Now, if the problem is that students aren't being taught memory management, then that is obviously a problem, no matter what language is being used.

flamebait? (1)

sneakyimp (1161443) | more than 6 years ago | (#22133682)

I bet the olde-tyme professors who taught these whiny new professors complained about C and C++, pining for the good old days of punch cards. Is it really any surprise that a move to higher-level programming construct has tradeoffs? By making your language easier to understand, you:
1) Open it to a much wider audience, improving adoption rates among would-be programmers.
2) Increase the number of applications written because it's supposedly more expressive (or less tedious).
3) Increase the number of poorly-written programs due to the generally poorer skills of your programming community.

There can be no doubt that there's a point of diminishing returns. I'm trying to imagine a graph in several dimensions but failing miserably due to my poor calculus skills. Some of the possible axes:
* Language expressiveness
* Number of applications written
* Application efficiency
* Users served

Or something like that. In my mind's eye, this graph would plainly show that writing in assembler results in amazingly fast code but is such a pain in the ass that nobody ever does it any more. Likewise it would show that Ruby is great for fast prototyping but sucks in certain colossal and demanding production environments. This sort of tradeoff seems obvious to me.

I often wonder if there is some way that an elegant, expressive programming language might somehow be more tightly coupled with the underlying hardware. Seems to me that the multi-core concept should have come much sooner. We need some kind of Isaac Newton/Einstein/Turing type of guy to really take a good hard look at the relation between hardware and programming language and see if there's a better way.

Everything is getting dumbed down (3, Insightful)

MikeRT (947531) | more than 6 years ago | (#22133702)

It's not just Computer Science. When it's not being dumbed down, it's often falling victim to tenured professors who are incompetent. That's what happened to us at my alma mater. We had some brilliant professors who were tenured, couldn't communicate, and frequently were so slothful that you couldn't practically learn from your mistakes. We'd get homework from the first few weeks back halfway between the midterm and final in some cases.

I graduated with a 2.8 GPA overall, and about a 2.5 GPA in my major. That was mostly because projects were usually 10% to 20% of our grade. One exam was usually worth all project work combined. Our valedictorian, a girl who could regurgitate raw data on exams, but could barely write hello world in any language, had a 4.0 in Computer Science.

A big problem that I saw was the hand-holding. Professors don't feel confident because of the crop of students they have, in just telling students that figuring out their development tools is their problem, not the professor's obligation to teach them.

Computer Science (1, Insightful)

mlwmohawk (801821) | more than 6 years ago | (#22133706)

I've been in the business for more than a couple decades now, and what I see is the same old problem:Interpretive languages vs Compiled or assembly languages. Make no mistake, Java and .NET are "interpretive" languages. Argue all you want about this or that special case, but the intention and design of these environments is the elimination of physical hardware.

People who are uninterested in the nature of computers chose interpretive languages. People who are interested in computer internals use a directly translatable language like C, Assembler, or C++. This is not a value judgment, it just is.

IMHO, computer science is not about theoretical virtual machines, but the practical implementation of complex concepts on limited physical computers. The way I see it, the former is masturbation and the latter is sex.

Re:Computer Science (1)

jmauro (32523) | more than 6 years ago | (#22133762)

[C]omputer science is not about theoretical virtual machines, but the practical implementation of complex concepts on limited physical computers

Computer Science is about theoretical virtual machines. Computer Engineering is about the practical implementation. That is why one is called "science" and the other called "engineering", most people get confused on the two due to how most all Universities structure (or more correctly fail to structure) their Engineering and Computer Science courses. Computer Science has more to do with the Math programs than the engineering programs, but it's usually part of the School of Engineering so it becomes all mush in the curriculum.

Seen piss-poor Comp/Sci teaching firsthand... (0)

javaC_CodeMonkey (1044684) | more than 6 years ago | (#22133744)

Before I retired from the military, I taught an Air Force ROTC course for four years (BS/MS Comp Sci), where I routinely tutored engineering/comp sci students (cadets) in programming. I was amazed that engineering students were being taught Java (in their junior year) instead of C/C++ (who writes drivers in Java??). Also, they (the grad assistants) weren't even teaching about debugging: inspecting/evaluating, breakpoints, etc., leaving the poor students absolutely helpless. After I explained these, I told them to "gently" prod their profs/TAs for this information as its fundamental to delivering even functional software on a reasonable schedule (of course more to it, but these were new students) and all deserved to understand it. I had even heard anecdotal stories about students changing out of engineering BECAUSE of the java course-- why?!? Dumbing down the curriculum isn't going to help, but teaching (truly teaching it and helping ensure they understand it)-- you have to know how a linked list works (and even better, Big-O, etc.) before you just start slapping together your java using the standard libraries these days. You have to know about profilers, and should know fundamentally (not that its practiced that much) formal specs. If anything, make them more rigorous on the comp-sci side. The senior level shouldn't be when they learn about software engineering methodologies beyond waterfall-- these should at latest be a fall junior topic, if even a sophomore level. Most of all, teach them THERE ARE NO SILVER BULLETS (Rapid Development, McConnell: MS Press). My two cents.. JC-CM

The usual, yes and no. (3, Insightful)

jd (1658) | more than 6 years ago | (#22133746)

Yes, computer science is massively dumbed-down, needlessly. Yes, this is to bolster numbers. Quite stupidly, as you could get the same results by making CS courses cheaper to take. Computer scientists make more money, so get taxed more, so some of that surplus could go back into funding the courses. Cheaper courses, more people taking them, even if they are hard. It's simple market forces.

The "no" is with regards to comp sci being for a certain kind of person. It's for a certain kind of perspective, but anyone can learn to see things from any perspective they choose. It's not equally easy for all people, so the more people you want to have that perspective, the more appealing you need to make it. But that is very different from changing the perspective, which is what fee-driven universities tend to do. No. Leave the perspective alone. Then how to make it more appealing? After all, everyone hates numbers, right? Wrong. In fact, up until about the ages of 11 or 12, you'll find something like two to three times as many people absolutely love numbers, algebra, equations, algorithms and problem solving. (This is based on the fact that the number of boys who like maths stuff remains unchanged, but girls go from outnumbering boys as geeks younger than that to being virtually non-existent soon after.) If you ask people (and I have) over the age of 18 about their experiences in learning maths or science, guess what! You rarely hear complaints about the subjects themselves - it's almost invariably the teachers.

So? So, if you want to double the number of CS students and revert to a tough, purist syllabus, all you need to do is replace all the middle school teachers with people who have an interest in the subject and a passion for educating the students, rather than an interest in the paycheck and a passion for the students. Doesn't seem too tough.

(Of course, it's easier if the teachers are payed a living wage, or better, so that you can recruit talent rather than whoever is on the scrapheap of life.)

command line life partner? (1)

peektwice (726616) | more than 6 years ago | (#22133750)

All this whining, albeit justifiable got me thinking... TFA says:

we'll have people use nice visual interfaces where they can point and click and do fancy graphic stuff and have fun

I love the shell and CLI tools just like any other Unix geek, but I couldn't help but wonder if this quote had anything to do with this previous slashdot post [slashdot.org] .

Pascal (1)

QuietLagoon (813062) | more than 6 years ago | (#22133780)

Wasn't that billed by professors as the perfect language for learning how to program?

How much did Microsoft pay this guy? c# is supposed to be just like Java, why doesn't he criticize c#?

Re:Pascal (2, Insightful)

Diordna (815458) | more than 6 years ago | (#22133874)

Because no one teaches courses in C#...except for my freshman-level game programming course using XNA on a grant from MS.

Good for Comp. Sci. Bad for Comp. Engineering. (1)

ifakemyadd (1070340) | more than 6 years ago | (#22133832)

Most of my classes right now are in Jave. I do most of my Co-op in C. OS-stuff, and lots of pointers. Most of my co-workers are computer engineers, and I'm a Compsci major instead. The algorithms interest me most, and are most interesting in my studies. That's where Java's been nice to me; abstracting levels so I can really understand the Algorithm quickly. However, it doesn't help much with software engineering. I've never needed to implement a new algorithm.

So I'd have to agree that Java doesn't you be a better software engineer. But I'd disagree that it makes you a worse Computer Scientist.

And in my department, C.S. ins't a professional degree; its not part of a tech school, not engineering. It carries similar weights to a physics degree as opposed to a M.E. degree. Algorithms are the focus. Implementations are an exercise. The program isn't geared towards making good programmers. Its geared towards making good algorithm developers.

And this is why... (3, Informative)

theJML (911853) | more than 6 years ago | (#22133838)

This is why things are getting more and more bloated. I learned in basic and was quite glad when I got to c that I was learning something closer to what actually goes on. I had 3 Pascal classes in HS and shortly into them I found out just how powerful Assembly really is. Luckily I had a teacher that let me use that knowledge with inline statements on assignments. Things just worked, and worked quickly.

There are trade offs to be made. Sure you can probably hack something together using less lines in Java or .NET, but I know for a fact, there's no GOOD reason to have to install a 120MB .NET install for some of the simple control panels and apps that are out there (ATI, I'm looking at you...). I remember when people tried to make their programs smaller and more efficient, finding ways to both put it on a floppy, and run quickly on slow hardware. Now these young whipper snappers use some high level interpreters and say screw the extra cycles, Proc's are cheap. Corps aren't worried about running quickly, or taking up small amounts of memory with elegant programs. They just want it released. Now. No time to dilly-dally on making "good" code, just gotta keep cranking it out. If it's slow, just up the requirements. I long for the days of assembly and low level programming...

Java not the problem (3, Insightful)

mandelbr0t (1015855) | more than 6 years ago | (#22133844)

I agree with the professor's statements -- mostly. The fact is that Java is not to blame, a lack of rigor and mathematics is. I love Java, not because of all the wonderful graphical fiddling, but because J2EE is a great server-side environment. I have taken the trouble to understand all of the server-level stuff before abstracting it away into an EJB; I understand what work the server is doing for me, and know how to fine-tune that behavior if necessary. Likewise, students should have to write GUI code in a text editor before learning how to use the IDE to save time. Anyone who expects to do any serious software engineering definitely needs to take a course in Algorithms. Math should not be ignored, as it is quite often the mathematics that is packaged up into a neat application, invisible to the end-user.

It's true, you can teach people how to use an IDE like a software application, and you will get "programmers" that can put together a basic program with no problems. Ask them to start debugging, add complex features, etc., however, and they have no idea how to begin. I've no problem with Prof. Dewar lambasting these people as they are a large problem in IT today. However to simply point the finger at Java (or .NET for that matter) misses the point entirely.

From experience... (0)

Anonymous Coward | more than 6 years ago | (#22133878)

I guess I would be one of those who started out in Java. I go to one of the most popular universities for computer science in Canada and when I started my post-secondary education, had never touched a programming language. Naive me wanted to try it because "I liked video games". Now, I nearly flunked out first year as it was completely the opposite of what I'd expected and I was so frustrated with it - yet it was accessible enough that after trying a generic slate of courses, I came back to give it another shot. You know what? I fell in love with it. From then on, I kept wanting to learn more, more, more. I was hooked - looking back, java helped lay the foundations for a solid programming STYLE. Now in my final year, we still have java courses - which I think is absolutely fantastic for teaching abstract concepts - so that you're not worrying so much about implementation details, however we've really only had 2 or 3 c/c++/assembly courses, which I find absurd. These days, if you want to learn that sort of thing, you have to do it on your own time.
All this rambling to say - I don't think it's so much the courses that are offered - anyone can slip by with enough tact - but it comes down to a persons motivation for learning. Are they genuinely interested or are they just in it for the paycheck?
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?
or Connect with...

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>