Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Java as a CS Introductory Language?

Posted by Cliff on Wed Jun 13, 2001 01:01 PM
from the languages-conducive-in-teaching-OO-concepts dept.
A couple of questions concerning Java have ended up in the bin over the past few weeks, and rather than handle them separately, I've decided to lump them together as they deal with Java's use as a learning language, as opposed it's traditional use as an application language, and in many cases, which looks to be replacing C/C++ in this role. Personally, I feel that teaching Java in college is fine, however I'm a little concerned in it's replacing C/C++ in that role. This, of course, begs the question is C/C++ any better. How about this: if you were going to structure a curriculum to teach Object Oriented concepts, would you teach it using Java, C/C++, or something else?

First, tulare queries: "I'm currently a student at a small university whose CS students are required to attend two terms of Java programming courses before moving on to other OOP languages. My personal feeling is that Java is clunky, ugly, and runs much too slow on most platforms. The official CS department position is that Java is pure OOP (as opposed to C, for example), and furthermore, Java is extremely widely used at this time. Now, I may be stirring things up a little here, but just because everyone does something one way does not neccessarily mean that something is being done the best way. What I'm asking is to hear reasoned opinions on the following statements:

  1. Java is a fine development language, and it will help me as a programmer to learn it.
  2. I'm right. Java is a fad, not worth much more than the Windows OS in terms of quality, and my CS faculty is doing me a disservice by cramming it down my throat.
  3. There's a little truth in both the above statements."
And we have this one from Banjonardo: "The AP Computers course, the strongest computers-oriented course in a high school, is changing its core curriculum. The language taught, which has progressed from Pascal to (currently) C++ is changing once more. Next year will be the last for C++. The new language will become Java. My question is, realistically, which is the best language for an AP Comp class to learn? I will use my school as an example: Our 386s were given away to students on Friday, to make way for the brand spanking new 900Mhzs provided by the "Digital High School" program. What language would be the most appropriate to send our students forth with?"

While on IRC, I was discussing this issue a bit with other editors and Chris DiBona happened to have some thoughts on the matter, his words follow:

When Cliff mentioned that a Java in education story was going to be posted, I asked to weigh in on the topic. I will not talk about the suitablity of using a non-free language, as I'm certain that will be discussed in the comments and is not a trivial issue.

I don't think that Java, or any Object Oriented language, would be suitable for an AP Computer science class. I don't think it serves the needs of students looking to fully understand the internal workings of a computer, which is in my mind what an AP computer science course should be directed towards.

C is a language that has been designed to be very close to the hardware, and its ideosyncracies and power reflect that. Through this relationship, C reflects the realities of the hardware your programs run on. Memory management, low level process and I/O control are all things that a computer scientist should understand at a very low level, to better aid in future programming and debugging no matter which language is chosen or inflicted upon said scientist.

In contrast, Java has been designed to take such concerns away from the programmer. Memory management? Low level IO? These are not the droids you were looking for.. (at least not without an RMI written in another language) That's okay too, that isn't what people want from Java and it isn't what it was designed to do.

And that is exactly my problem with it being applied in a computer science course designed to teach CS fundamentals. In short, since I believe that AP CS courses should focus on the low level architecture of computing, Java is an inappropriate language for that course.

When is Java appropriate? In your college sophomore comparative languages course, or, alternatively, in an OO course or two, but it shouldn't be used as the keystone language for any CS program. Please don't take this as me saying that Java is neither useful or important in it's own (non-free) way, as it clearly is. However, in my opinion, It should be considered an adjunct subject to a serious program in Computer Science.

This discussion has been archived. No new comments can be posted.
Java as a CS Introductory Language? | Log In/Create an Account | Top | 913 comments (Spill at 50!) | Index Only | Search Discussion
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1) | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13
  • Lisp/Scheme by Anonymous Coward (Score:1) Wednesday June 13 2001, @09:12AM
  • If Java is great, why are no kernels written in it by Anonymous Coward (Score:1) Wednesday June 13 2001, @09:20AM
  • language agnostic by Anonymous Coward (Score:1) Wednesday June 13 2001, @09:22AM
  • Scheme by Anonymous Coward (Score:1) Wednesday June 13 2001, @09:25AM
  • Assembly?? Which one? Is this a "language"? by Anonymous Coward (Score:1) Wednesday June 13 2001, @09:40AM
  • Re:It is a good education language. by Anonymous Coward (Score:1) Wednesday June 13 2001, @09:50AM
  • Re:What about Python? by Anonymous Coward (Score:1) Wednesday June 13 2001, @10:02AM
  • Re:Not quite by Anonymous Coward (Score:1) Wednesday June 13 2001, @10:05AM
  • You are all wrong by Anonymous Coward (Score:1) Wednesday June 13 2001, @10:05AM
  • My 2 cents by Anonymous Coward (Score:1) Wednesday June 13 2001, @11:19AM
  • Teach simple languages first! THIS IS NOT JAVA. by Anonymous Coward (Score:1) Wednesday June 13 2001, @12:12PM
  • Re:Lisp/Scheme!! by Anonymous Coward (Score:1) Wednesday June 13 2001, @03:09PM
  • Re:Programmable Active Memories Exist by Anonymous Coward (Score:1) Wednesday June 13 2001, @03:20PM
  • Re:Principles, not implementations by Anonymous Coward (Score:1) Wednesday June 13 2001, @04:12PM
  • by Anonymous Coward on Wednesday June 13 2001, @09:59AM (#153744)
    C and C++ more intuitive?

    You have to be kidding.

    Steve Michael
  • Re:Java is also inappropriate by rodgerd (Score:1) Wednesday June 13 2001, @12:03PM
  • by jandrese (485) <kensama@vt.edu> on Wednesday June 13 2001, @09:18AM (#153746) Homepage Journal
    Really, what language you use in those first few programming classes is a secondary concern. You don't take those classes to learn the language (although that is a side effect), you take those classes to learn the fundimentals of programming, which apply to almost all computer languages (BASIC not withstanding). Once you learn the fundimentals, learning whatever language you need, be it C, C++, Python, Perl, Java, Lisp (not as much, functional programming languages are generally different enough from procedural languages that they require another class to use correctly).

    I say, use whatever they are teaching, and if you don't like it then pick up another language. It's a lot easier to learn a programming language than it is to learn how to program.

    My only concern is trying to shove too much syntax down the throat of first year students. Full blown OO languages tend to require a bit more typing than something like C for the trivial projects that students do, which may turn off some people (I know in my high school, the Pascal class lost 3/4 of it's slow typers on the second day. Worse, in high school almost everybody types slow.)

    I guess you might want to avoid "bad habit" languages as well, like BASIC and possibly Perl. I'd also shy away from anything that the average windows user hasn't heard of like Scheme, Python, Modula II, Ada, or APL. You probabally want to chose something with good free or cheap compilers as well. Ada95 may be a nice language, but your school won't be able to afford the licenses for the compilers under Windows.

    Down that path lies madness. On the other hand, the road to hell is paved with melting snowballs.
  • by jandrese (485) <kensama@vt.edu> on Wednesday June 13 2001, @10:26AM (#153747) Homepage Journal
    The only danger from teaching wierd languages is people claiming: I'm never going to use this and dropping the class on the spot. You'd be surprised how often this happens with people who are focused on Resume building, especially in college. Most of those people went on to take the business school's COBAL class, so you can't say they are better off.

    Plus there is the cool factor that comes from knowing the language you are learning is the same one your Operating system (and most of the applications you run) is written in. Beginning CS student's generally aren't concerned with the fundimentals, primarily because they don't know they are supposed to be concerned with them, so the choice of language makes a big impression on them. A teachers job is to reach beyond that, teach the students what they need and other things that they won't realize are valuble until later when they want to do real programming.

    Down that path lies madness. On the other hand, the road to hell is paved with melting snowballs.
  • My experiance at the Univ. Of Arizona by Tom Rini (Score:1) Wednesday June 13 2001, @09:23AM
  • CS or "CS"? by dragisha (Score:1) Wednesday June 13 2001, @10:12PM
  • Teaching language? Python! by defile (Score:2) Wednesday June 13 2001, @09:42AM
  • Re:Teach simple languages first! THIS IS NOT JAVA. by jedidiah (Score:1) Thursday June 14 2001, @03:33PM
  • Re:Wide use is not the issue by jedidiah (Score:1) Thursday June 14 2001, @03:38PM
  • Is Python ideal for O.O? by Sanity (Score:2) Wednesday June 13 2001, @11:21AM
  • Re:It is a good education language. by Sanity (Score:2) Wednesday June 13 2001, @11:27AM
  • ML by aleksey (Score:1) Wednesday June 13 2001, @09:14AM
  • Re:You need to understand the machine first. by aleksey (Score:1) Wednesday June 13 2001, @09:29AM
  • Re:And Knuth (all hail) agrees with you, it seems by aleksey (Score:1) Wednesday June 13 2001, @09:48AM
  • Learn a bit about hardware, too! by Politas (Score:1) Wednesday June 13 2001, @02:37PM
  • Some interesting industries still use FORTRAN. by Richard Steiner (Score:1) Wednesday June 13 2001, @12:10PM
  • Re:Don't teach "real-world" languages (at first)! by slim (Score:2) Thursday June 14 2001, @01:47AM
  • Good OO language but good idea? by Juju (Score:1) Wednesday June 13 2001, @10:15AM
  • I totally agree with you... by Juju (Score:1) Wednesday June 13 2001, @10:44AM
  • It all depeneds what you're trying to learn... by Malc (Score:2) Wednesday June 13 2001, @11:07AM
  • Re:German keyboards by red_dragon (Score:1) Wednesday June 13 2001, @11:31AM
  • Lesser Evils... by SJS (Score:1) Wednesday June 13 2001, @11:03AM
  • by iabervon (1971) on Wednesday June 13 2001, @10:31AM (#153766) Homepage Journal
    Today's students will probably do thir best work in a language similar to Java, but with better support for the things that Java is bad at. This language does not yet exist at all.

    It will use many of the same language features that languages that currently exist have, though, and this is what it is worth learning. Of course, its features which are currently available are available in different languages, so it's important to learn multiple languages.

    For OOP, I think that Java is a good tool. Possibly Scheme would be better if you wanted to present the full range of possibilities, since there are theoretically significant features that Java lacks (e.g., singleton instances). Of course, in order to be particularly good programmers, people need to know more than just OO concepts, and that means they'll need to learn a language that's good for teaching those concepts.

    In practice, currently I would suggest C for actual programming, including OOP, unless you need platform-independence or you need libraries that exist only in another language. But I wouldn't want to try *teaching* OOP with C; you really want to have a language where the OO syntax is obvious and explicit.
  • Re:Java is definately not for CS by dangermouse (Score:1) Wednesday June 13 2001, @09:59PM
  • OOP first, procedural next by dangermouse (Score:2) Wednesday June 13 2001, @10:19PM
  • Re:I took Java last year by sheldon (Score:2) Wednesday June 13 2001, @01:13PM
  • Re:...Ready...Aim...Fire... by jonabbey (Score:2) Wednesday June 13 2001, @10:00AM
  • Heck, I started in BASIC and turned out okay.. by jonabbey (Score:2) Wednesday June 13 2001, @10:05AM
  • What Universities are doing... by kidlinux (Score:1) Wednesday June 13 2001, @07:05PM
  • Re:Wrong Direction by Tet (Score:1) Wednesday June 13 2001, @11:52PM
  • Re:Wrong Direction (Score:4)

    by Tet (2721) <slashdot.astradyne@co@uk> on Wednesday June 13 2001, @10:04AM (#153774) Homepage Journal
    I know how a computer works, as far as registers and such, yet have little desire to learn to code that myself.

    I'd argue that unless you understand assembly, you don't fully know how registers work. I haven't had to write any assembly for over 10 years, yet with every single line of code that I write, I'm thankful that I could if I needed to. I'm sure you're a very competent programmer, but empirical evidence from 20 years of coding shows me that without fail, coders that don't know assembly are unable to progress beyond competence into true greatness. Not that greatness is actually needed for 90% of coding tasks, but nonetheless, those with a background in assembly are without fail better coders.

    As for when it should be learned, I disagree that it should be a first language, but it should be mandatory in any CS course at some point. but

  • Re:It is a good education language. by tjansen (Score:2) Wednesday June 13 2001, @11:22AM
  • Re:Java as a prelude to C++ by tjansen (Score:2) Wednesday June 13 2001, @11:43AM
  • Re:Wrong Direction (Score:3)

    by sphealey (2855) on Wednesday June 13 2001, @09:27AM (#153777)
    "I've had some conversations w/ friends of mine about this very idea. I think that assembly should be the first language taught in CS. To be a skilled programmer, you MUST know how a computer works at the fundamental level. Teaching java to beginning programmers only encourages sloppy programming, despite any admonitions from profs"

    And if tomorrow a new CPU is released that doesn't have a von Neumann architecture? How does the person whose fundamental thinking processes w.r.t. application developement were structured by assembly adapt to that?

    Personally, I would go a step farther. One of the reasons that ordinary human beings have so much trouble using software is that the programmers are far too close to the details of the machine architecture.

    sPh
  • Re:No memory management? by castanaveras (Score:1) Wednesday June 13 2001, @10:41AM
  • CS vs. Software Engineering by Bookwyrm (Score:2) Wednesday June 13 2001, @09:28AM
  • Wrong Direction (Score:3)

    by swingkid (3585) on Wednesday June 13 2001, @09:07AM (#153780)
    I've had some conversations w/ friends of mine about this very idea. I think that assembly should be the first language taught in CS. To be a skilled programmer, you MUST know how a computer works at the fundamental level. Teaching java to beginning programmers only encourages sloppy programming, despite any admonitions from profs.
  • Eiffel is the way to go by Frédéric (Score:1) Wednesday June 13 2001, @12:00PM
  • Couldn't agree more -- Re:Ruby!... by freeBill (Score:2) Thursday June 14 2001, @08:46AM
  • Re:Java is a better for later on by Genom (Score:2) Wednesday June 13 2001, @11:02AM
  • Re:Well, yes but... by Colin Simmonds (Score:1) Wednesday June 13 2001, @04:56PM
  • Ada not a bad choice either... by Behemoth (Score:1) Wednesday June 13 2001, @10:00AM
  • Using Robots to teach by cout (Score:1) Wednesday June 13 2001, @12:10PM
  • Java is perfect for teaching. . . by heller (Score:1) Wednesday June 13 2001, @09:13AM
  • AP Exam in Java by Johann (Score:1) Wednesday June 13 2001, @10:38AM
  • My personal experience by Tal Cohen (Score:1) Wednesday June 13 2001, @10:37AM
  • Re:Java is a stepping stone by jeffry_smith (Score:1) Wednesday June 13 2001, @09:30AM
  • Re:What I Teach My Students by Drew Sullivan (Score:1) Wednesday June 13 2001, @09:40AM
  • by ian stevens (5465) on Wednesday June 13 2001, @09:43AM (#153792) Homepage

    I wholeheartedly agree. If the language is key then you are not teaching computer science, you are just teaching people how to program. When you are learning basic computer science concepts like data structures and abstraction then the language should be one which is designed to teach. Java and C/C++ are not designed as teaching languages. In fact, C/C++ is a horrible teaching language as there are too many ways a student new to programming could shoot himself in the foot.

    Personally, I liked the way the University of Waterloo taught concepts of computer science. They started off with Pascal to teach things like abstraction and basic data structures. When it came time to teach OO concepts, they moved on to Modula-3 which was great: clean, instructive and with little opportunity to shoot yourself in the foot. Moving to other OO languages after this was easy as one already knew the concepts but only had to learn the syntax.

    Later, more advanced courses used C, LISP, Prolog and variations on C++ to teach their material. Actually, in some instances, you had a choice of the language so long as it ran on the university servers.

    I might add that at UW the language was not the subject material only its facilitator. When a new language was introduced, you were lucky to receive two weeks of introductory instruction on that language with the first assignment due the following week. Most other times, you were required to learn the bulk of the language yourself.

    Some argued that Pascal and Modula-3 weren't useful because they weren't used much in the industry. My feeling is that if that is important to you in your first and second years at university, then a technical college and programming courses might be a better way to go rather than computer science.

    ian.

  • Re:College and the Workforce by acroyear (Score:2) Wednesday June 13 2001, @12:22PM
  • Re:College and the Workforce by acroyear (Score:2) Wednesday June 13 2001, @12:35PM
  • Re:College and the Workforce by acroyear (Score:2) Wednesday June 13 2001, @04:29PM
  • Re:College and the Workforce by acroyear (Score:2) Wednesday June 13 2001, @06:43PM
  • by acroyear (5882) <jws-slashdot@aboutjws.info> on Wednesday June 13 2001, @11:29AM (#153797) Homepage Journal
    You shouldn't be taught specific tools at university rather you should be taught theory.

    Nice sentiment, but regardless of the "ideals" of education, when one gets out of college, one expects (screw that -- NEEDS) to get a job, and given two straight-A students, one with a lot of theoretical-application languages under his belt, and the other with not so many of those, but having known Java since his freshman year, the recruiter will pick the Java programmer, 'cause it means his company can save money having to train the programmer.

    And any University with a reputation for letting the education get in the way of future employment for their students is gonna start losing students quickly.

    Its nice to "learn", but the truth is that since the 1960s and the G.I. bill, one goes to university because the degree is a requirement for getting a job, not to "learn". And that isn't gonna change anytime in the near future.

    The theoretical and the practical-for-today's-world should be considered hand-in-hand. I value the theory I know from my C.S. degree very highly...but I wouldn't have gotten the good job I wanted without having had C++ in college.
    --
    You know, you gotta get up real early if you want to get outta bed... (Groucho Marx)

  • A Brief History of First-year Languages by John Whitley (Score:2) Wednesday June 13 2001, @11:14AM
  • I started with C and look how I turned out... by ZxCv (Score:1) Wednesday June 13 2001, @09:22AM
  • Re:Wrong Direction by don.g (Score:1) Wednesday June 13 2001, @12:59PM
  • Topic Troll by nerpdawg (Score:1) Wednesday June 13 2001, @12:18PM
  • Re:It is a good education language. by mcelrath (Score:2) Wednesday June 13 2001, @10:11AM
  • Yes and no by Zombie (Score:1) Wednesday June 13 2001, @09:17AM
  • wrong wrong wrong by Rob_D_Clark (Score:1) Wednesday June 13 2001, @10:00AM
  • Re:Why not select language as appropriate for topi by c (Score:1) Wednesday June 13 2001, @11:25AM
  • Re:It is a good education language. by Angst Badger (Score:2) Wednesday June 13 2001, @09:27PM
  • Teaching CS1 by thorsen (Score:1) Wednesday June 13 2001, @10:37PM
  • why do people persist.. by Si (Score:1) Wednesday June 13 2001, @09:57AM
  • brainwashing by looie (Score:1) Wednesday June 13 2001, @05:27PM
  • My feeling on the matter: by deeny (Score:2) Thursday June 14 2001, @05:11PM
  • Carleton U. is using Smalltalk to teach OO. by crovira (Score:2) Wednesday June 13 2001, @02:37PM
  • Re:python by greydmiyu (Score:1) Thursday June 14 2001, @11:39AM
  • Re:UIUC CS 125 by cloudmaster (Score:1) Friday June 15 2001, @08:12AM
  • Some cool java advantages by Ex Machina (Score:1) Wednesday June 13 2001, @09:52AM
  • Java advantages by Ex Machina (Score:1) Wednesday June 13 2001, @09:56AM
  • Re:Make 'em learn assembler. by dood (Score:1) Wednesday June 13 2001, @09:43AM
  • Re:Software Engineering and Languages by 10am-bedtime (Score:1) Thursday June 14 2001, @08:11AM
  • CS != Software Development? by Robert Baruch (Score:1) Thursday June 14 2001, @04:45AM
  • We Use it at My School... by Mad Browser (Score:1) Wednesday June 13 2001, @09:26AM
  • Practial Concerns by Edward Teach (Score:1) Wednesday June 13 2001, @12:25PM
  • How it works at Cornell by nebby (Score:2) Wednesday June 13 2001, @01:07PM
  • Re:Not your father's Java... by Omnifarious (Score:2) Wednesday June 13 2001, @05:30PM
  • Re:Wrong Direction by elmegil (Score:2) Wednesday June 13 2001, @12:22PM
  • Re:Experience from teaching by Lumpy (Score:1) Wednesday June 13 2001, @10:32AM
  • View from an old fart... by Lumpy (Score:2) Wednesday June 13 2001, @09:38AM
  • by Outland Traveller (12138) on Wednesday June 13 2001, @10:43AM (#153826)

    As someone who uses many languages in the course of the day, Java included, I might be able to offer some information.

    1. Java is a fine development language, and it will help me as a programmer to learn it.
    This is dead on. I wish that I learned OOP properly in college. Learning C and other procedural languages actually hurts you in the early stages, because you have to unlearn tactics.

    If I were teaching someone OOP in college, I would start with a "pure OOP" language, such as Python or Java, and a book similar to Design Patterns. I sure wish I learned this way.. Design Patterns came out after I graduated and it pretty much changed the way I thought about OOP overnight.

    That's not to say that C++ doesn't have its place. It can be fast, and it can be very flexible. However, in an academic environment other priorities are simply more important. Garbage collection is key. Trust me, you don't want to be up all night tracking down a memory leak when all you need to do is implement a certain algorithm. Also extemely important is a free, cross platform development environment. (No, C++ isn't as strong here as java or python due to library implementation differences). I consider C++ a very dangerous language to start learning with because it's so easy to slide back into C. Until you get to the point where you can understand what the consequences of that are for your project, it's a giant boobytrap waiting to snare the unwary.

    2. I'm right. Java is a fad, not worth much more than the Windows OS in terms of quality, and my CS faculty is doing me a disservice by cramming it down my throat.
    This is a very popular but shortsited viewpoint. Java is stronger than it has every been in the past. It's still in heavy growth mode, with more libraries and extensions being developed for it than I can keep pace with these days. It's going to continue to evolve for quite some time. As the JVMs continue to improve in performance, and CPUs continue to double in speed, the performance difference between Java and C++ is going to become less and less. It's already at the point where I run large java applications like Jext (thank you very much Roman Guy!) on my pentium-III 600 without any noticable slowness.

    Java is a very good investment. It's not the best OOP language in every area but it may be the most well rounded. It's certainly not going away, and you can get a lot of useful work done with it.

    Java seems to enjoy better support for the corporate world than from the open source community. This is largely because Java is so useful to corporations and they're ready and willing to develop and pay for enterprise class extensions that most lone hackers would consider boring or overkill. Java isn't a zero sum game, however, and there is plenty of room for free software to thrive. I'm glad the the Apache crew recognize this- their Xerces XML parser and their Servlet engine are excellent, excellent examples of free java software. www.gnu.org also lists a large number of useful java libraries and applications. The time is ripe for someone to bring Kaffe or similar free JVM / library up to speed.

    If you do decide to get into Java, I would recommend you learn python as well, and then use the embedded scripting language jython (www.jython.org) from within your java apps. It's a killer combination.

  • Well, yes but... by Sangui5 (Score:1) Wednesday June 13 2001, @12:55PM
  • Re:Disturbing Trend in Replies... by Sangui5 (Score:2) Wednesday June 13 2001, @12:06PM
  • Shouldn't that be hot languages == jobs? by Toddarooski (Score:2) Wednesday June 13 2001, @12:36PM
  • Teach all of them? by MikeFM (Score:2) Wednesday June 13 2001, @09:12AM
  • Re:movin' on up by MikeFM (Score:2) Wednesday June 13 2001, @10:02AM
  • Re:Teach all of them? by MikeFM (Score:2) Wednesday June 13 2001, @10:25AM
  • Absolutely. by Requiem (Score:1) Wednesday June 13 2001, @11:55AM
  • A visual language would be best by samael (Score:2) Wednesday June 13 2001, @12:22PM
  • Re:It is a good education language. by MSG (Score:2) Wednesday June 13 2001, @04:48PM
  • Re:Wrong Direction (Score:3)

    by MSG (12810) on Wednesday June 13 2001, @04:08PM (#153836)
    You have your analogy all backwards. The parent post was absolutely not advocating any course of action based on it's relative simplicity.

    Assembly programming is like adding single digits. It's very low level. You're learning exactly what happens at the very foundation of all of the things you will go on to learn.

    High level programming languages are like Calculus. It's high level. The purpose of high level operations is not to iterate through the low level operations ad nauseum. Calculus is really just a bunch of addition and subtraction expressed in a very consice manner.

    Teaching calculus or high level languages to people who don't have any background with lower level operations will always produce inferior skills than the oposite.
  • It depends ... by crumley (Score:2) Wednesday June 13 2001, @09:25AM
  • Re: FORTRAN is useful by Weasel Boy (Score:1) Wednesday June 13 2001, @09:18AM
  • what happened with basic? by josepha48 (Score:2) Wednesday June 13 2001, @10:14AM
  • The Obviously Correct Course by Sinical (Score:1) Wednesday June 13 2001, @10:50AM
  • Not quite by Hammer (Score:1) Wednesday June 13 2001, @09:16AM
  • ??? (Score:3)

    by Hammer (14284) on Wednesday June 13 2001, @09:33AM (#153842) Journal
    What does widely used have to do with good teaching
    C++ is probably the most widely used OO language, but it sucks as a teaching language.
    C is the worst teaching language one could think of and not even appropriate in the context of OO programming.
    VB is extremely well used but it's debatable if it is an OO language (or even a programming language :-)

    Smalltalk enforces the parts of OO that it supports so it is an OK teaching language.

    Eiffel supports and enforces all parts of the OO paradigm and is an excellent teaching language despite the fact that it is not videly used.
  • UIUC CS 125 (Score:3)

    by zealot (14660) <xzealot54x@yahooMENCKEN.com minus author> on Wednesday June 13 2001, @09:09AM (#153843)
    The University of Illinois at Urbana/Champaign has been using Java in the introductory CS class since the spring term of '98 (when I first took it... before that they had been using scheme). The first portion of the class (at least back then) dealt with basic programming syntax and how to do loops, etc. Then it moved on to the OOP philosophy and started dealing with classes.

    The course homepage for CS125 is: http://www-courses.cs.uiuc.edu/~cs125/

    The next class required of CS majors is CS225, which is a data structures class taught in C++. The first couple of days of the class are spent going over the difference between C++ and Java (most especially stuff on pointers), and then later they move in to data structures and algorithms.

    The course homepage for CS225 is:
    http://www-courses.cs.uiuc.edu/~cs225/

  • Languages for CS courses by scav (Score:1) Wednesday June 13 2001, @10:40AM
  • Don't use Java for AP CS by Sloppy (Score:2) Wednesday June 13 2001, @12:31PM
  • I believe Java should be first. by johnnnyboy (Score:2) Wednesday June 13 2001, @04:09PM
  • An Intro Class Should be Introductory by Royster (Score:2) Wednesday June 13 2001, @09:38AM
  • Re:Why not select language as appropriate for topi by Ryan Amos (Score:1) Wednesday June 13 2001, @08:56PM
  • by Lumpish Scholar (17107) on Wednesday June 13 2001, @10:04AM (#153849) Homepage Journal
    Doug Lea [oswego.edu] (well known C++ programmer and writer; teaches at SUNY/Oswego)

    Kevin Sullivan [virginia.edu] (U. of Virginia)

    A [uwa.edu.au] couple [elj.com] of less positive articles from Australia.

    An article at O'Reilly. [oreilly.com]
  • C++ and OO Cheating by Midnight Thunder (Score:2) Wednesday June 13 2001, @09:24AM
  • Re:UW is switching over by akintayo (Score:1) Wednesday June 13 2001, @02:36PM
  • Re:It is a good education language. by akintayo (Score:1) Wednesday June 13 2001, @02:44PM
  • My data point: Java bad for beginners by Rainy (Score:1) Wednesday June 13 2001, @11:25PM
  • My brother and i did it differently by Sir Spank-o-tron (Score:1) Wednesday June 13 2001, @10:20AM
  • Option number 1 for me, thank you very much! by pong (Score:1) Wednesday June 13 2001, @09:15AM
  • What do you mean C/C++? by pong (Score:1) Wednesday June 13 2001, @09:38AM
  • Windows technical quality? by pong (Score:1) Wednesday June 13 2001, @09:45AM
  • Language matters little. by billg@microsoft.com (Score:2) Wednesday June 13 2001, @09:31AM
  • Java "in a free way" by Per Bothner (Score:1) Wednesday June 13 2001, @10:01AM
  • Language de jour by Black Parrot (Score:2) Wednesday June 13 2001, @09:22AM
  • Re:Wrong Direction by matthiasj (Score:1) Wednesday June 13 2001, @10:40AM
  • Personal opinion.. by mindstrm (Score:2) Thursday June 14 2001, @03:19AM
  • Re:Wrong Direction by Rovaani (Score:1) Wednesday June 13 2001, @11:24AM
  • Re:Wrong Direction by jilles (Score:2) Wednesday June 13 2001, @11:18AM
  • Re:Give them COBOL by double_h (Score:2) Wednesday June 13 2001, @11:47AM
  • Academic Languages by Misha (Score:1) Wednesday June 13 2001, @11:46AM
  • Why Java is an ideal instructional language by mkozlows (Score:1) Wednesday June 13 2001, @09:18AM
  • Re:UW is switching over by Queue (Score:1) Wednesday June 13 2001, @03:47PM
  • possible difference in methodologies by mskfisher (Score:1) Wednesday June 13 2001, @09:27AM
  • Re:What about Python? by maeglin (Score:1) Wednesday June 13 2001, @10:27AM
  • Java as teaching language by philgross (Score:1) Wednesday June 13 2001, @09:29AM
  • by IsleOfView (23825) <slashfuNO@SPAMmugfu.com> on Wednesday June 13 2001, @09:49AM (#153872) Homepage

    I have had several students here who started to experiment with all sorts of arcane features like inner classes and operator overloading without learning how to write good programs first.

    Funny...Java doesn't have operator overloading (just method overloading and overriding). If your students are doing that, then they are skilled indeed (as they have probably modified the compiler to do what they want)
  • Disagree with starting with assembler.... by SnowDog_2112 (Score:2) Wednesday June 13 2001, @09:43AM
  • Re:Assembly by SnowDog_2112 (Score:2) Wednesday June 13 2001, @09:49AM
  • Re:Disagree with starting with assembler.... by SnowDog_2112 (Score:2) Wednesday June 13 2001, @10:30AM
  • Re:It is a good education language. - NOT! by iapetus (Score:2) Wednesday June 13 2001, @12:48PM
  • Re:It is a good education language. by iapetus (Score:2) Wednesday June 13 2001, @12:55PM
  • Re:It is a good education language. by iapetus (Score:2) Wednesday June 13 2001, @12:59PM
  • Re:Poor Programming methods by iapetus (Score:2) Wednesday June 13 2001, @01:04PM
  • by iapetus (24050) on Wednesday June 13 2001, @03:56PM (#153880) Homepage
    Oh, Java APPLETS crash all of the time. And any college that'll try to teach computer programming is going to try to do it with applets, at least partially.

    Again, you're trying to blame the language for bad teaching approaches. I've seen courses taught with buggy C compilers. Does that make C an inherently bad language? Of course not.

    There is no requirement to teach applets as part of a programming course that incorporates Java, and IME courses which do concentrate on applets are normally outdated: applets don't play as large a role in Java today as they did back in the days of 1.0.x - most of the roles Java was expected to fulfil through applets are now using other technologies, from simple animated GIFs to Shockwave applications.

    The last good Java course I saw didn't cover applets at all, except in passing. It did, however, cover enough to make it possible for students to learn how to write applets if they needed to.

    The claim here is that Java is a better language to teach beginning computer programmers.

    Fair enough. Quibble over granularity rather than answering that issue. The overall question is whether Java is a better language to teach beginner programmers (or more accurately whether it's a good language to teach them) - the issue that you misunderstood was the question of whether Java is 'cleaner' than C++. This has nothing to do with buggy VMs, and everything to do with a clean and simple object model.

    By the way, you CAN'T write global variables in Java - everything is inside of a class!
    public class Globals {
    public static int GLOBAL_INT;
    public static String GLOBAL_STRING;
    }

    Ugly, yes, but I believe you'll find it does the trick. It's actually one of those recurring features you see in bad Java code where people are trying to write C++ in Java.

    it's (in my opinion) FAR easier to code Java, from an understanding of C++, than it is to code C++ from an initial understanding of Java.

    And if we step back a little from your argument, what you're actually saying is that it's easier to learn to code in Java than it is to code in C++ (something that I'd personally agree with). And that's a good argument for using Java over C++ in my book: there's much less time getting to grips with (and struggling with) the language, with the result that more time can be dedicated to learning what you can actually do with it. Which is presumably what people are there to learn anyway.

  • obviously, python by loafhead (Score:1) Wednesday June 13 2001, @09:33AM
  • Re:Here's what some teachers say by Jay Carlson (Score:1) Wednesday June 13 2001, @03:36PM
  • Re:ML by D Harrington (Score:1) Wednesday June 13 2001, @01:24PM
  • Java a great intro to OO by KevinRemhof (Score:1) Wednesday June 13 2001, @09:12AM
  • Re:Not widely used yet by KevinRemhof (Score:1) Wednesday June 13 2001, @09:16AM
  • Re:Java a great intro to OO by KevinRemhof (Score:1) Thursday June 14 2001, @04:41AM
  • Re:Too Many Important First Concepts for OO by handorf (Score:2) Wednesday June 13 2001, @10:42AM
  • Re:It is a good education language. by harmonica (Score:2) Friday June 15 2001, @05:08AM
  • UIUC CS by vulcan (Score:1) Wednesday June 13 2001, @09:53AM
  • antique print control codes? by bcaulf (Score:1) Thursday June 14 2001, @11:17AM
  • Re:Wrong Direction by bcaulf (Score:1) Friday June 15 2001, @04:35AM
  • Re:What about Python? by jonathan_ingram (Score:1) Wednesday June 13 2001, @12:54PM
  • Java is definately not for CS by musicmaker (Score:1) Wednesday June 13 2001, @09:20AM
  • Re:Java better for learning than C++, Scheme? by musicmaker (Score:1) Wednesday June 13 2001, @09:22AM
  • Re:Understandability vs Power by musicmaker (Score:1) Wednesday June 13 2001, @09:32AM
  • that's the uiuc way, at least by htmlboy (Score:1) Wednesday June 13 2001, @09:27AM
  • How about a combination? C and Java by pHalec (Score:1) Wednesday June 13 2001, @09:45AM
  • Re:Not your father's Java... by Voxol (Score:1) Thursday June 14 2001, @01:36AM
  • Re:Java isn't good to teach professional programme by tcopeland (Score:1) Wednesday June 13 2001, @10:32AM
  • Java is a stepping stone by topham (Score:1) Wednesday June 13 2001, @09:16AM
  • No memory management? by DirkGently (Score:1) Wednesday June 13 2001, @09:12AM
  • Assembly by daviskw (Score:1) Wednesday June 13 2001, @09:55AM
  • Re:Programmable Active Memories Exist by Pemdas (Score:1) Wednesday June 13 2001, @01:59PM
  • Principles, not implementations by tuxedo-steve (Score:1) Wednesday June 13 2001, @09:12AM
  • Do what Brown University does by Dragonmaster Lou (Score:1) Wednesday June 13 2001, @09:52AM
  • Re:Wrong Direction by eswierk (Score:1) Wednesday June 13 2001, @10:18AM
  • Re:Software Engineering and Languages by d^2b (Score:1) Wednesday June 13 2001, @03:45PM
  • Or do the obvious thing, see what MIT does by lostguy (Score:1) Wednesday June 13 2001, @12:47PM
  • Java is fine for teaching by Sierra Charlie (Score:1) Wednesday June 13 2001, @09:42AM
  • Re:Java Applications considered harmful... by Sierra Charlie (Score:1) Wednesday June 13 2001, @10:12AM
  • CS 101 by Nightshade (Score:1) Wednesday June 13 2001, @10:15AM
  • Re:Software Engineering and Languages by Nightshade (Score:2) Wednesday June 13 2001, @12:31PM
  • Java is a better for later on by ADRA (Score:1) Wednesday June 13 2001, @09:31AM
  • Wanna Learn how a computer works? by Frankus (Score:1) Wednesday June 13 2001, @09:15AM
  • The choice is only Java or C++ by west (Score:2) Wednesday June 13 2001, @10:51AM
  • Difficulties with Java in High School/CS1 by west (Score:2) Wednesday June 13 2001, @11:49AM
  • Re:What I Teach My Students by versimilidude (Score:1) Wednesday June 13 2001, @09:59AM
  • Re:And Knuth (all hail) agrees with you, it seems by Kingpin (Score:1) Wednesday June 13 2001, @10:40AM
  • Re:Wrong Direction by Dr. Smeegee (Score:1) Wednesday June 13 2001, @12:24PM
  • Re:German keyboards... by Dr. Smeegee (Score:1) Wednesday June 13 2001, @12:38PM
  • Re:Disturbing Trend in Replies... by Dr. Smeegee (Score:1) Wednesday June 13 2001, @12:49PM
  • Re:UIUC CS 125 by jedisquire (Score:1) Wednesday June 13 2001, @07:15PM
  • Re:Wrong Direction by funcan (Score:1) Thursday June 14 2001, @06:38AM
  • Bring back the apprenticeship!! by Monthenor (Score:1) Wednesday June 13 2001, @12:11PM
  • Re:Shouldn't that be hot languages == jobs? by brianvan (Score:2) Thursday June 14 2001, @04:29AM
  • Re:Because hot languages = jobs by brianvan (Score:2) Thursday June 14 2001, @04:36AM
  • by brianvan (42539) on Wednesday June 13 2001, @10:09AM (#153927)
    This is a great idea, and it's exactly what my CS program did in college. We learned C, C++, Lisp, SPARC Assembly, and Prolog at least in the core cirriculum. Java, SQL, several flavors of Lisp, and perhaps some other programming-type languages were taught in elective courses. VB was available in the business department.

    The major problem is that after all this time spent on DIFFERENT languages, I'm a jack of all trades and a master of none... I don't even feel comfortable coding C++ anymore just because I haven't done it for at least 2 1/2 years: it wasn't asked of me toward the end of my program. The only above language that I did NOT get to take is Java, because of scheduling difficulties, and now I sorely regret that... because now I'm looking for a part time job to make ends meet as a recent BS-CS grad with an MIS minor and two completed internships. Yea, life sucks sometimes, but whatever.

    Point is, I may have a diverse background in languages, but that doesn't help me professionally. I still wonder why I spent all that time learning all those languages and no one made sure that I would be able to apply my skills in the real world.

    I mean, if you're gonna teach a course on a subject, maybe you shouldn't design it around trying to make money off the concept. But if you're going to assemble a department and an educational program that people will be paying in excess of $20,000 a year to enroll in, then perhaps more than FOR loops and system calls should be included in the bunch.

    This is the problem with Java though. Teaching Java instead of C++ is a cheap way out... it's not supplementing a good program with job skills, it's replacing a good program with the language of the year. It's the dumb way of answering the question of "How are we ever going to use this stuff?" Instead of teaching them what they should know, they'll teach them what they want to know. That's not always good. In this case, it's flat out horrible. But I suppose it'll make many people happy as long as no one figures out that a Java-based CS program is perhaps as bad as all the Visual Basic courses they teach over in the business school...
  • There is a reason why... by cr0sh (Score:2) Wednesday June 13 2001, @10:52AM
  • Re:Java as a prelude to C++ by waveclaw (Score:1) Wednesday June 13 2001, @12:12PM
  • Java hides details... by w3woody (Score:2) Wednesday June 13 2001, @09:32AM
  • Re:UW is switching over by Blue Neon Head (Score:1) Wednesday June 13 2001, @11:27AM
  • Re:smalltalk? by William Fold (Score:1) Wednesday June 13 2001, @11:22AM
  • Re:Eiffel is the way to go by pmonks (Score:1) Wednesday June 13 2001, @09:23PM
  • Re:Not widely used yet by rlhart (Score:1) Wednesday June 13 2001, @11:25AM
  • Re:Not your father's Java... by Dr.Evil (Score:2) Thursday June 14 2001, @08:17AM
  • by Dr.Evil (47264) on Wednesday June 13 2001, @11:38AM (#153936) Homepage

    Not to be nitpicky, but you mention providing marketable skills & performance isn't the issue. If Java is a slow performer, wouldn't it tend to hurt students more learning a language that is slow, and klunky? Last I checked, there were plenty of jobs available for C & C++ programmers. I have a feeling that Java may be a fad, and C/C++ will be around and fall back in favor unless Java really takes off.

    Java lets you do some cool stuff, and it lets you do some really klunky stuff, but it isn't designed for performance. Any industry that is CPU bound (Simulation, number crunching, gaming, local applications, etc.) needs to be coded to run fast. Industries that are network bound (ISP's, ASP's, Portals, etc.) don't really care about how much the CPU is choking because the network is the bottleneck. I have a feeling, once the network is no longer the bottleneck, Java either better get fast quick, or it's going to be going back to C/C++ for speed.

    1. Java's not slow and klunky. I don't know when the last time you looked at Java was (it must have been years ago), but it is fast and getting faster. There are some optimization tricks you can do to code at runtime that can't work with a static compiler.
    2. C++ lets you do some really klunky stuff, too - more, I would argue. There's no cure for incompetent programming.
    3. Java isn't just taking off, it's already taken off. The base of Java developers and companies using Java for enterprise-critical applications is growing in direct proportion to C++'s falloff rate. Java isn't a fad, it's the language of the future. You can bury your head in the sand all you want, but that's the way it is. I'm sure lots of COBOL programmers thought C was just a fad, too.
    4. Java's making huge inroads in graphics performance and I/O speed, which is where it's always been slowest, especially in the upcoming Merlin release (J2SE 1.4). I won't pretend that you could write Quake III in Java yet, but you could probably write Quake I. Computation speed has never really been the problem. After all, even Fortran has great number-crunching capability, but nobody would use it for serious enterprise-type applications.
    5. Java's great strengths are binary portability, syntactic simplicity, and standard, supported APIs for everything under the sun. C++ doesn't even have an ABI standard that everyone plays with yet, let alone standard networking, graphics, and GUI libraries. Any industry that doesn't want portable, maintainable, extensible code is better off out of business.

    Obligatory flamebait disclaimer: I don't think C and C++ are going away, or that Java is the One True Language. However, it is ridiculous to assert that Java is slow, poorly adopted, or unsuited to real-world applications in the face of overwhelming evidence to the contrary. Very serious companies like Oracle [oracle.com], Sybase [sybase.com], IBM [ibm.com], Macromedia/Allaire [allaire.com], Borland [borland.com] and of course Sun [sun.com], are banking lots of money on Java's success, recognizing that it's a mature, robust, stable, fast language for very serious development.

  • by Dr.Evil (47264) on Wednesday June 13 2001, @10:31AM (#153937) Homepage

    Every time there is a discussion on Java, the same complaints come up:

    • Java is slow.
    • Java doesn't allow me direct memory access, pointer manipulation, templated classes, overloaded operators (insert favorite C++ feature here).
    • The syntax is not rich enough.

    Guess what, folks - most of that hasn't been true for the past couple of years, and it's getting better all the time. The stuff that you're not and won't be allowed to do is prohibited for the most part because it's dangerous and counter-productive. Java, like any widely-adopted language, does not simply cater to the 31337 hax0r.

    • Java is approaching C++ speeds for execution time. Java benefits from some runtime compilation techniques that a static compiler can't accomplish, such as finalizing and inlining methods that aren't being overridden by an inheriting class and dynamically re-compiling "hot" methods. Many of the optimization tricks for static compilers, such as loop unrolling, are being brought into the HotSpot server compiler. Changes in the I/O libraries and the 2D libraries are providing a speed boost of 40-100% in J2SE 1.4 (now in Beta) Swing-based GUI applications over v1.2. The 2D layer in v1.4 uses native hardware acceleration for local apps and remote X calls for apps on remote terminals.
    • The litany of things Java abstracts away - direct memory manipulation, pointers, overloaded operators, multiple inheritance - all can be very dangerous for the naive programmer. The fact that C++ not only allows, but often makes you think about these things, is what I consider the bad thing.
    • Templates are coming to Java, probably in 1.5. Generics, as they're being called in JavaSpeak, however, have one important difference - they are 100% type-safe. You will only be able to template Objects, not primitives.
    • Java's syntax provides one blessed thing that C, C++, and especially Perl and some other newer languages don't - readability. There's none of this C++ -> nonsense, or Perl's $/@ crap. Thank god there is no such thing as preprocessor directives. Syntactic simplicity is as much a reason for Java's rapid adoption as anything else. The cleanest-written code is the most maintable code. Considering the commenting habits of most programmers, being able to tell what the code's doing from the code itself is a godsend. Sometimes there should be only one way to do something, because it reinforces the right way of doing it.

    I've helped teach a class for the AP and IB CS exams, and I'll tell you what they're about more than anything else - algorithms. That certainly doesn't benefit more from C/C++ than it does from Java. Hell, if that were the concern, we'd use Haskell! The point is, the class's focus isn't on pointer arithmetic, code optimization, or any other topic that makes C++ a more natural choice than Java. As a matter of fact, having to consider those things make C++ an obstacle to understanding, rather than an aid. I'm glad the College Board is changing the language to Java - it's the right thing to do for the level of understanding they're trying to teach.

  • Two bits by IPFreely (Score:1) Wednesday June 13 2001, @10:25AM
  • Ssssssh! by xtal (Score:2) Wednesday June 13 2001, @10:05AM
  • Re:Wrong Direction by xtal (Score:2) Wednesday June 13 2001, @02:56PM
  • by Hard_Code (49548) on Wednesday June 13 2001, @09:16AM (#153941)
    Let's face it, most tutorial languages are picked for being high level, and having a fairly shallow learning curve. When I started learning programming, Pascal was used, which was fine in the days of purely procedural programming. Now that OO is more or less the defacto way of thinking about things (NOT to say that we should only be programming in OO languages), it makes sense to go with Java. Java was designed from the very very beginning with the explicit goal of making it harder to make mistakes - errors are caught up-front as much as possible.

    Java has:

    1) strict typing
    2) dynamic linking
    3) built-in memory management
    4) a consistent implementation and rich libraries from a single vendor (for better or for worse)
    5) works *identically* on many platforms ("identically" is the key here...we don't need to be spending half our time teaching build environments for various systems)

    For all these reasons, it makes sense to use Java as a beginning language. The basic programming concepts are all there (yes, even resource management). The problem with C and C++ is that it is very easy to obscure larger concepts with intimate technical details, the learning curve is steep. I remember when I was learning Pascal, it was as if the class hit a brick wall when pointers were introduced. Imagine if learning pointers and intimate machine-dependent ("words"??) memory management was the prerequisite to larger programming concepts such as conditional statements, iteration, recursion, etc. The whole learning process would be stymied.

    And I used to be one of the oh-so-cool C++ programmers who thought that Java was just a kindergarten-level "fad", and scoffed at it when it was used to teach programming in CS courses. Now enterprise Java programming is my day job, and I can attest to the fact that it is NOT a fad, is very powerful, and is used to do some really serious, and really cool stuff. I'm sure assembly programmers said "C?? You don't even need to know what REGISTERS are to use that!!".
  • Re:Java is fine for OO by ncaustin (Score:1) Wednesday June 13 2001, @06:54PM
  • How's this for heresy... by xy (Score:1) Wednesday June 13 2001, @09:45AM
  • Re:Why not select language as appropriate for topi by GwaiJai (Score:1) Thursday June 14 2001, @06:11AM
  • Don't start with Java by chrysalis (Score:1) Wednesday June 13 2001, @09:54AM
  • The 90-10 rule... isn't. by devphil (Score:2) Wednesday June 13 2001, @10:51AM
  • by devphil (51341) on Wednesday June 13 2001, @09:31AM (#153947) Homepage
    To be a skilled programmer, you MUST know how a computer works at the fundamental level. Teaching java to beginning programmers only encourages sloppy programming, despite any admonitions from profs.

    Hear, hear. I'm sick of seeing freshly-minted Java programmers grunt out mounds of steaming O(n!) code, believing that "this is good cuz it's Java."

    Knuth continues to use MIX (and the new MMIX) and MIXAL in TAOCP for this reason; once you know how the computer works, and which algorithms are the proper ones to use, your choice of high-level language often becomes irrelevent. Just a choice of style.

    Wake up, people: you can write FORTRAN in any language.

  • by devphil (51341) on Wednesday June 13 2001, @09:23AM (#153948) Homepage


    There's a really great book out called _Accelerated C++_, by Koenig and Moo. (Yes folks, that Koenig and that Moo, the C++ gods.) It's a very new approach to teaching C++ as a first language, and everybody who's used it or even just reviewed it has loved it.

    It doesn't even introduce pointers for several chapters. Students learn how to write simple loops, manage collections of things using std::vector, do the common 90% of string-related tasks using std::string, write some useful and practical programs, all before ever seeing a pointer.

    Side note: the book is part of the C++ In-Depth series, being edited by Stroustrup. One of the rules for the series is that the main body text of the book must be no more than 300 pages. No filler crap, no 1500-page tomes to raise revenue; make your point simple and clear and then shut up.

  • Re:Wrong Direction (Score:3)

    by J.Random Hacker (51634) on Wednesday June 13 2001, @10:15AM (#153949)
    I must humbly disagree. If we suddenly had acess to some non- von Neumann architecture machine, everyone who worked on it would have much rethinking to do, especially since our notions of complexity -- and therefore our notions of what makes a good algorithm -- are all rooted in the idea of serial execution of a stored program, threading notwithstanding. Even fine-grain parallel machines are just collections of serial execution machines.

    I have worked with people in the past who insisted that particular machine details are unimportant. For instance, they would say "There is no need to worry about the cost of paging due to a large resident memory set -- just buy more memory!" And then it would occur that we'd maxed out physical memory on that generation of machine -- response was -- "wait -- memories will be bigger next year." Memory did get bigger, but by the time memory was large enough, we were out of business.

    Ignoring the machine does not solve a problem here. Ignoring people will definately cause a problem, though, as you observe. Therefore the solution (it seems to me) is to teach more -- not less. Teach good user interface practices in addition to teaching how the machine works.
  • Re:Assembly by levik (Score:2) Wednesday June 13 2001, @09:57AM
  • Re:Why not select language as appropriate for topi by jefu (Score:1) Wednesday June 13 2001, @10:19AM
  • Re:programmer shortage, diversity by jefu (Score:1) Thursday June 14 2001, @06:42AM
  • Re:Java isn't good to teach professional programme by Kwil (Score:1) Wednesday June 13 2001, @01:13PM
  • Re:I think the wrong question is being asked here. by TastesLikeChicken (Score:1) Monday June 25 2001, @06:52PM
  • What are you trying to teach? by nano-second (Score:2) Wednesday June 13 2001, @02:34PM
  • Re:And Knuth (all hail) agrees with you, it seems by gidds (Score:1) Thursday June 14 2001, @02:44AM
  • Objective C by xphase (Score:1) Wednesday June 13 2001, @09:18AM
  • Re:smalltalk? by Principal Skinner (Score:1) Wednesday June 13 2001, @12:40PM
  • Re:Java a great intro to OO by grmoc (Score:1) Wednesday June 13 2001, @05:12PM
  • Re:Java/C++ by bnenning (Score:2) Wednesday June 13 2001, @10:41AM
  • Re:Java isn't good to teach professional programme by bnenning (Score:2) Wednesday June 13 2001, @11:15AM
  • Flexibility by ceoyoyo (Score:1) Wednesday June 13 2001, @10:38AM
  • Java is NOT pure object programming by JFMulder (Score:1) Thursday June 14 2001, @01:35PM
  • Re:It is a good education language. by tsetem (Score:2) Wednesday June 13 2001, @09:38AM
  • the art of pedagogy by RonG (Score:1) Wednesday June 13 2001, @12:56PM
  • Scheme, C/C++, or Python by Drubber (Score:2) Wednesday June 13 2001, @11:07AM
  • Language NOT Importiant by Capt_Troy (Score:1) Wednesday June 13 2001, @09:23AM
  • Re:Why Java is an ideal instructional language by babbage (Score:2) Wednesday June 13 2001, @10:36AM
  • Shoulda seen this coming... by babbage (Score:2) Wednesday June 13 2001, @10:41AM
  • Re:Wrong Direction (Score:3)

    by babbage (61057) <cdevers AT cis DOT usouthal DOT edu> on Wednesday June 13 2001, @10:14AM (#153970) Homepage Journal
    What a shatteringly bad idea. The single biggest problem for the average CS department isn't that the students don't understand what they're doing, but that the attrition rate is so high. Students take a couple of semesters using a commercially viable language, get the idea, and quit to get one of thise glamorous high paying stock option drenched dotcom jobs that they keep hearing about. Admittedly, that siren isn't singing quite so seductively these days, but that doesn't change the underlying problem there.

    In order to cut down the attrition rate, you cannot scare off the incoming students. No way. If the first thing they get in Programming 101 is a solid smack upside the brain, a lot of them are going to just walk away. The dotcoms may not be hiring as much as they were before, but braving the job market is still going to be more appealing for the average student than having to put up with assembly language.

    They're gonna get the low level stuff before long; at this point they need to get a grasp of the big picture. As interesting as your suggestion is -- and I would agree that it's a very unusual way to approach the subject -- my advice would be to do almost completely the opposite. Use a language that shields the students from a lot of the underlying complexity, so they can focus on broader concepts that would usually come later in a software engineering class.

    Use Python.

    It's still a bit exotic, so the incentive to ditch school for a job using it is less pressing (though that would change fast if a lot of people started learning it, of course). It enforces clean syntax & frees coders up to focus on higher level problems through the use of -- get out your buzzword bingo cards -- object oriented libraries. It's scripted, so the students won't have as much arcana to deal with right away, and better still it comes with a command line interpreter, so students can test expressions to see what happens when various language constructs are executed, with instant feedback if anything is going wrong.

    As the students move through the curriculum, they can revisit earlier projects by rewriting libraries in a low level language like C (or assembler, if your sadistic impulse can't be denied any longer... :). This can be a bridge to understanding how a big project develops, especially among multiple programmers: the obvious thing to do would be for the first classes to use object libraries written by the second classes, which in turn are writing to specs prepared by the later software engineering classes. Etc.

    I really think it could be the foundation (with the later addition of C, C++, &/or Java) to a good, comprehensive CS curriculum.

  • Re:UIUC CS 125 by immyz (Score:1) Thursday June 14 2001, @12:18AM
  • Re:Wrong Direction (Score:4)

    by jjo (62046) on Wednesday June 13 2001, @09:49AM (#153972) Homepage
    The real problem is: how far do you peel back the onion? Why stop with assembler?

    Thirty years ago, I learned machine code to program the PDP-8. Why not teach that today? Or why not go further down and teach VLSI processor design, or semiconductor physics?

    The answer is, of course, a tradeoff. Learning any of these things is potentially of value, but one must compare that potential value to the time and energy investment required. I submit that for most CS students today, the effort in learning assembler is not worth the benefit. It is therefore more appropriate for an elective rather than a core course, and has been for some years.

    A more interesting question is the current value of studying C after learning an object-oriented language. The tradeoff there is much more difficult, and I don't have a strong opinion one way or another.

    7402
  • Are you kidding? C++ as a first language? by strombrg (Score:1) Wednesday June 13 2001, @12:34PM
  • Re:The language is secondary by IAmATuringMachine! (Score:2) Wednesday June 13 2001, @10:21AM
  • Re:Wrong Direction by Spasemunki (Score:2) Wednesday June 13 2001, @10:10AM
  • Relevant article by Dr. Blue (Score:1) Wednesday June 13 2001, @11:15AM
  • The real world by ucblockhead (Score:2) Wednesday June 13 2001, @12:15PM
  • None of the Above by norton_I (Score:2) Wednesday June 13 2001, @09:59AM
  • What about Python? by Zigg (Score:2) Wednesday June 13 2001, @09:06AM
  • Re:Not widely used yet by Zigg (Score:2) Thursday June 14 2001, @02:57AM
  • by Zigg (64962) <matt@zigg.com> on Wednesday June 13 2001, @09:09AM (#153981)

    I suppose VB would be good for teaching what people have to do in the real world when their language isn't up to the task at hand, and vendors have to invent new and strange things to give programmers the features they want. VB feels so hacked-together it's not even funny.

    Besides, if we went by "widely-used" to decide what to teach new programmers, we'd all still be using COBOL. :-)

  • Re:Wrong Direction (Score:5)

    by Zigg (64962) <matt@zigg.com> on Wednesday June 13 2001, @09:15AM (#153982)

    Actually, that is a pretty interesting philosophy... I like it, and not just because of sadistic tendencies. :-)

    Think about it:

    1. People learn first-hand what happens under the hood.

    2. The lack of any kind of visually impressive positive feedback will guarantee that the really bad programmers with a serious lack of dedication never come back.

    3. The apparently inexplicable things the machine does when you do something wrong will guarantee that those with some dedication but poor understanding will never come back.

    4. You are left with those who are really good programmers at heart, understand what they do, and are strongly dedicated to doing it. Ergo, fewer programmers, better programmers, more money to go around to less people, six figure salaries to all and real productivity. Oh, and Windows eventually goes away too. :-)

    Sigh, what a world that would be...

  • University of Auckland, NZ by Nevrar (Score:1) Wednesday June 13 2001, @04:17PM
  • Programmable Active Memories Exist by Louis Savain (Score:2) Wednesday June 13 2001, @12:54PM
  • Moderation Totals For Parent Message by Louis Savain (Score:2) Thursday June 14 2001, @09:05AM
  • Re:Software Engineering and Languages by Louis Savain (Score:2) Thursday June 14 2001, @11:21AM
  • by Louis Savain (65843) on Wednesday June 13 2001, @10:06AM (#153987) Homepage
    Software engineering will come of age when programming languages no longer exist. All programming languages (Java, Lisp, C++, etc...) share a common charateistic. They are all based on a programming technique which was first pioneered by Lady Ada Lovelace more than a century ago: the algorithm. I am convinced that the algorithmic nature of software is the primary reason that computer applications are so unreliable and that software development is so time consuming and expensive.

    It is a known fact that hardware is orders of magnitude more reliable than software. The most obvious difference between software systems and hardware is that the former is algorithmic whereas the latter is based on parallel streams of signals.

    A signal-based system is ideal for the implementation of work-once, work-always components that can snap together at the click of a mouse. This is because their temporal signatures remain constant. By contrast, one can never be sure when an algorithm will be done and this is detrimental to stability. Algorithms should thefore be implemented on top of a signal based system. They should not be the basis of automation. In the future we will have technologies that allow computer memories to instantly reconfigure themselves into parallel logic circuits. In the meantime, even though the Von Neuman paradigm forces sequentiality on us, signal flow parallelism can be easily emulated in software so as to hide the serial nature of processors from the application developper.

    Unless computer scientists wake up from their algorithmic stupor, computer science will continue to limp along, badly. More multi-million dollar space probes will malfunction, airplanes will crash, electronic stock exchanges will suffer from glitches and airports will shut down. Half a century, thousands of lives and trillions of dollars later, we'll kick ourselves in the rear and ask ourselves "why have we been so damn stupid for so long?"
  • Re: Smalltalk, C++, or Java in the first year by Sir Joltalot (Score:1) Wednesday June 13 2001, @11:54PM
  • Re:It is a good education language. by maraist (Score:2) Wednesday June 13 2001, @11:08AM
  • Perl by Paelon (Score:1) Wednesday June 13 2001, @11:18AM
  • Re:Wrong Direction by mrseth (Score:1) Wednesday June 13 2001, @12:10PM
  • Re:Wrong Direction by mrseth (Score:1) Thursday June 14 2001, @05:47AM
  • Re:It is a good education language. by GrayArea (Score:1) Wednesday June 13 2001, @12:20PM
  • Intro course should be high-level by RyanMuldoon (Score:1) Wednesday June 13 2001, @10:09AM
  • I give it a thumbs up by Kook9 (Score:1) Wednesday June 13 2001, @09:33AM
  • Smalltalk or Eiffel by horse (Score:1) Wednesday June 13 2001, @06:23PM
  • Low level understanding? by Kanasta (Score:1) Wednesday June 13 2001, @03:15PM
  • Scheme! by rsw (Score:1) Wednesday June 13 2001, @09:41AM
  • Re:Wide use is not the issue by jmccay (Score:1) Wednesday June 13 2001, @03:42PM
  • Re:Wrong Direction by Stonehand (Score:1) Wednesday June 13 2001, @09:49AM
  • Re:I'm taking Java by Stonehand (Score:1) Wednesday June 13 2001, @09:59AM
  • Re:Java is also inappropriate by Stonehand (Score:1) Wednesday June 13 2001, @10:05AM
  • Re:You need to understand the machine first. by Stonehand (Score:1) Wednesday June 13 2001, @10:31AM
  • Re:movin' on up by Stonehand (Score:2) Wednesday June 13 2001, @10:16AM
  • Java Is bad for learning, but C/C++ are much worse by Snack Cake (Score:1) Wednesday June 13 2001, @10:21AM
  • SmallTalk by Mano1KAges (Score:1) Wednesday June 13 2001, @09:14AM
  • Re:Not quite by plague3106 (Score:1) Wednesday June 13 2001, @10:26AM
  • Re:Not quite by plague3106 (Score:1) Thursday June 14 2001, @03:50AM
  • Making Java less slow. by Gummbah (Score:1) Wednesday June 13 2001, @09:38AM
  • Re:It is a good education language. by rkent (Score:1) Wednesday June 13 2001, @12:54PM
  • Re:It is a good education language. by rkent (Score:1) Wednesday June 13 2001, @10:35PM
  • Don't Overcomplicate the issue by Ghengis (Score:1) Wednesday June 13 2001, @11:18AM
  • Re:Wrong Direction by selectspec (Score:2) Wednesday June 13 2001, @10:18AM
  • Re:Having worked in so-called Adult Education... by Kupek (Score:2) Thursday June 14 2001, @01:59PM
  • I've done both by Dr. Transparent (Score:1) Wednesday June 13 2001, @11:22AM
  • Re:I took Java last year by jacoplane (Score:1) Wednesday June 13 2001, @12:50PM
  • Re:I took Java last year by jacoplane (Score:1) Wednesday June 13 2001, @12:53PM
  • Re:Shouldn't that be hot languages == jobs? by jacoplane (Score:1) Wednesday June 13 2001, @01:01PM
  • top-down, not bottom-up stupid by impaler (Score:2) Wednesday June 13 2001, @10:20AM
  • Java? Why not? by Feldmrschl (Score:1) Wednesday June 13 2001, @10:41AM
  • Re:Java/C++ by Miles (Score:1) Wednesday June 13 2001, @10:07AM
  • Re:The language is secondary by Miles (Score:2) Wednesday June 13 2001, @10:04AM
  • Look to the local university by mjgamble (Score:1) Wednesday June 13 2001, @09:10AM
  • Re:It is a good education language. - NOT! by andkaha (Score:1) Wednesday June 13 2001, @01:42PM
  • Re:Experience from teaching by andkaha (Score:1) Thursday June 14 2001, @11:50AM
  • Re:Experience from teaching by andkaha (Score:2) Sunday June 17 2001, @12:16PM
  • by andkaha (79865) on Wednesday June 13 2001, @12:30PM (#154027) Homepage
    Java is, I would say, more platform dependent than C or C++. Furthermore C and C++ are actual real international (ISO) standards which means that you're protected against changes to the language that will make your old code incompatible with the new language every three years. Java is something that Sun does whatever they want with (and Microsoft has it extensions to it making it incompatible with the rest of the world as usual).

    Why is Java more platform dependent than C or C++? First of all, if your platform hasn't got a JVM, you are done for. You can't run Java programs. If anyone tells you you don't need to have a JVM, then WHAT THE HECK IS THIS DISCUSSION ABOUT?

    There's absolutely nothing in the C or C++ language standards that says anything about the platform, that's why those languages are so great for writing embedded applications and operating systems. They don't even assume the existance of a monitor or a keyboard.

    I have never in my life had a problem with running C++ code written using the Borland C++ tools on my GNU/Linux or NetBSD machine. I /have/ had troubles when people have been using extensions to the language, or as you call it "Borland C++ programs". The point is: Those programs are not C++. They are "Borland C++ programs". Those two things are not the same.

    Now, I need some coffee...

  • bleh by onShore_Jake (Score:1) Wednesday June 13 2001, @12:25PM
  • Re:It is a good education language. - NOT! by angel'o'sphere (Score:1) Wednesday June 13 2001, @12:48PM
  • Wanna know why I had to take Java? by mattmcp (Score:1) Wednesday June 13 2001, @10:50AM
  • Language Doesn't Matter (Much) by cgreuter (Score:1) Wednesday June 13 2001, @11:38AM
  • useful languages by abes (Score:1) Wednesday June 13 2001, @09:42AM
  • Re:Software Engineering and Languages by ArtDent (Score:1) Wednesday June 13 2001, @09:04PM
  • IMO... by Moonshadow (Score:1) Wednesday June 13 2001, @09:06AM
  • Re:Wrong Direction by Moonshadow (Score:1) Wednesday June 13 2001, @09:43AM
  • Re:C/C++ is not a language by Moonshadow (Score:1) Thursday June 14 2001, @09:25AM
  • Re:Wrong Direction by Moonshadow (Score:2) Wednesday June 13 2001, @09:13AM
  • Re:IMO... by Moonshadow (Score:2) Wednesday June 13 2001, @10:16AM
  • Re:It is a good education language. - NOT! by willis (Score:1) Wednesday June 13 2001, @05:41PM
  • Re:Read the subject by willis (Score:1) Wednesday June 13 2001, @05:55PM
  • Re:Wrong Direction by LordNimon (Score:1) Wednesday June 13 2001, @09:32AM
  • Doesn't anyone care that Java(TM) is not free... by jjn1056 (Score:1) Wednesday June 13 2001, @01:14PM
  • Java vs C++ is just an ideology. by anacron (Score:1) Wednesday June 13 2001, @09:58AM
  • At my highschool... by pc486 (Score:1) Wednesday June 13 2001, @11:32AM
  • Re:OOP is good for some things.. by Webexcess (Score:1) Wednesday June 13 2001, @12:21PM
  • OOP is good for some things.. by Webexcess (Score:2) Wednesday June 13 2001, @10:01AM
  • All languages are Fads by Amokscience (Score:1) Wednesday June 13 2001, @09:27AM
  • Re:Experience from teaching by Amokscience (Score:1) Wednesday June 13 2001, @09:45AM
  • Re:Wrong Direction by Amokscience (Score:1) Wednesday June 13 2001, @09:56AM
  • Re:Because hot languages = jobs by Amokscience (Score:1) Wednesday June 13 2001, @01:34PM
  • Re:Experience from teaching by Amokscience (Score:1) Wednesday June 13 2001, @06:47PM
  • Re:Wrong Direction by Amokscience (Score:1) Thursday June 14 2001, @05:30AM
  • Re:Because hot languages = jobs by Amokscience (Score:1) Thursday June 14 2001, @05:35AM
  • Re:Wrong Direction by Amokscience (Score:2) Wednesday June 13 2001, @10:13AM
  • Teach emacs as a language by Ukab the Great (Score:2) Wednesday June 13 2001, @03:39PM
  • Assembly by Greyfox (Score:2) Wednesday June 13 2001, @09:21AM
  • Oh, Yeah, And Design Patterns... by Greyfox (Score:2) Wednesday June 13 2001, @09:33AM
  • No I won't by Greyfox (Score:2) Wednesday June 13 2001, @10:41AM
  • Eiffel by Esperandi (Score:2) Wednesday June 13 2001, @03:26PM
  • Re:Programmable Active Memories Exist by erlando (Score:1) Thursday June 14 2001, @12:24AM
  • Wrong question by shaper (Score:2) Wednesday June 13 2001, @10:37AM
  • The High/Low Levelness of java is irrelevent by cs668 (Score:1) Wednesday June 13 2001, @12:36PM
  • Any langugage will do. by Dandre (Score:1) Wednesday June 13 2001, @09:23AM
  • Re:Wrong Direction by RevRigel (Score:1) Wednesday June 13 2001, @09:39AM
  • Re:If Java is great, why are no kernels written in by nobodyman (Score:1) Wednesday June 13 2001, @09:48AM
  • Assembly has it's place. by nobodyman (Score:1) Wednesday June 13 2001, @10:09AM
  • RESOLVE/C++ by MicroBerto (Score:1) Wednesday June 13 2001, @12:41PM
  • Functional languague as first by paulydavis (Score:2) Wednesday June 13 2001, @10:12AM
  • UoB by jarran (Score:1) Wednesday June 13 2001, @09:53AM
  • by err666 (91660) on Wednesday June 13 2001, @10:07AM (#154070) Homepage
    I also think that Python is better suited as a introductory teaching language than Java. OOP is important, but it is not something you can grok as a beginning programmer, IMHO. Python is a multiparadigm language, you can start with imperative programming (modules and functions), later you can introduce the OOP style with classes.

    With Java, you no choice but to start the OOP way from day one. And Java's OOP isn't that hot, either (there are still primitive types that aren't objects). If you want imperative programming in Java, you have to fake it with static methods.

    There is a difference between what is a good first programming language and what is a good language to learn software engineering principles. For software engineering, Java would be a reasonable good choice.

    Gerhard

    PS: I study c. s. and I had Java (and Haskell) as introductory languages. Yes, I do follow the cult of the snake ;-)
  • Any AP Course should use C++ now, Java soon by frankie (Score:2) Wednesday June 13 2001, @11:05AM
  • Yes. by El (Score:1) Wednesday June 13 2001, @10:05AM
  • Slow is good. by El (Score:1) Wednesday June 13 2001, @10:11AM
  • What happened here by Lish (Score:2) Wednesday June 13 2001, @09:44AM
  • What ever happened to the fundamentals? by wls (Score:1) Wednesday June 13 2001, @09:38AM
  • Re:And Knuth (all hail) agrees with you, it seems by Kinthelt (Score:1) Thursday June 14 2001, @05:25AM
  • Re:And Knuth (all hail) agrees with you, it seems by Kinthelt (Score:1) Saturday June 16 2001, @08:32AM
  • Java isn't ugly. by Daimaou (Score:1) Wednesday June 13 2001, @09:59AM
  • Re:Directon and Python etc... by ssclift (Score:1) Wednesday June 13 2001, @09:38PM
  • Ruby! (Score:3)

    by Steeltoe (98226) on Wednesday June 13 2001, @10:47AM (#154080) Homepage
    Seriously. It has the pure OO-approach and lambdas of Smalltalk, simplicity of Python, flexibility of Perl, even borrows mix-ins (advanced OO concept sort of like multiple inheritance) from eiffel and is fun, with easy to understand syntax! If you're going to teach OO language approaches in an imperative language, this is a serious language that contains just what you need and no extra fluff. It is easily extendable, both in C and within the language itself. I bought the "bible" [amazon.com], got productive after a few hours and learned almost everything but C-extensions in just 3-4 days. Very easy and fun read, plus the entire book is also available online [rubycentral.com].

    Here are some additional links:
    The official Ruby page [ruby-lang.org]
    Dr. Dobbs article about Ruby [ddj.com]
    Documentation [ruby-lang.org]
    HotLinks [ruby-lang.org]

    If this weren't MUCH better than Java, I wouldn't pull this shameless plug. Please check it out, don't stay in the dark ages.. ;-) Java is NOT a well-designed language. It's not always best to follow the pack either, those who make a difference don't. Ruby is perfect for bringing up new ideas. Let students experiment with extending OO-concepts in the language!

    Btw, PLEASE don't make the students create Object Oriented ZOOs and the like. We were forced to such meaningless assignments when we had OO-classes in school, and such stupid problems are for OO-morons. Additionally, you don't need a "fast" language for teaching OO-concepts. On the contrary, since ruby is a glue language (like perl), it can be used to glue the right tools for the job when you need it to. It's definately fast enough if you just express your ideas in it correctly (avoiding many nested loops). Some people even use Ruby as a specification language, because of it's easy-to-understand syntax and lambdas. Ruby code is usually shorter and more readable than the same code expressed in other languages.

    - Steeltoe
  • Java as a carreer by bill_kress (Score:1) Wednesday June 13 2001, @11:54AM
  • Re:Not widely used yet by bill_kress (Score:1) Wednesday June 13 2001, @12:04PM
  • Speaking as a professional programmer... by xant (Score:2) Wednesday June 13 2001, @11:03AM
  • Java is an almost perfect language by aim4min (Score:1) Wednesday June 13 2001, @10:15AM
  • Re:Wrong Direction by slyfox (Score:1) Wednesday June 13 2001, @01:15PM
  • Re:It is a good education language. by borzwazie (Score:1) Wednesday June 13 2001, @11:36AM
  • Re:It is a good education language. - NOT! by OmegaDan (Score:2) Wednesday June 13 2001, @02:02PM
  • Re:It is a good education language. - NOT! by OmegaDan (Score:2) Wednesday June 13 2001, @02:43PM
  • by OmegaDan (101255) on Wednesday June 13 2001, @09:58AM (#154089) Homepage
    The problem with java always has been and always will be - SUN. If you wanna use java you have to play SUNs game because they've got the only halfway useable compilers / interpreters / JIT compilers.

    How long do you think java is going to be "free" for? My guess -- another 5 years -- by then it will be everywhere -- and SUN will pull a Unisys and start charging fees for it. (this is just my oponion, not fact)

    I think schools shouldn't teach their students langauges that aren't free (as in speach). Theres 100 C/C++ compilers you can buy/download, but just a couple java compilers.

    \editorial : For begining students I expect Python would be a good choice -- its simple, very consistent, and is very explicit about variable cohercion, and is still "powerfull".

  • Ada 95 by barry_williams (Score:1) Wednesday June 13 2001, @12:48PM
  • LISP? by drfireman (Score:1) Wednesday June 13 2001, @09:17AM
  • School is Time Taken Away from Learning by Nightspore (Score:1) Wednesday June 13 2001, @02:57PM
  • Java isn't good to teach professional programmers! by Viking Coder (Score:1) Wednesday June 13 2001, @09:40AM
  • Biting back by Viking Coder (Score:2) Wednesday June 13 2001, @11:20AM
  • Troll? by Viking Coder (Score:2) Wednesday June 13 2001, @11:31AM
  • Again... by Viking Coder (Score:2) Wednesday June 13 2001, @11:54AM
  • Re:Java isn't good to teach professional programme by Viking Coder (Score:2) Wednesday June 13 2001, @12:32PM
  • Re:It is a good education language. by Viking Coder (Score:2) Wednesday June 13 2001, @02:16PM
  • Read the subject by Viking Coder (Score:2) Wednesday June 13 2001, @02:30PM
  • QUOTE ME IN CONTEXT by Viking Coder (Score:2) Wednesday June 13 2001, @02:49PM
  • Re:It is a good education language. by Viking Coder (Score:2) Wednesday June 13 2001, @02:54PM
  • Re:Java isn't good to teach professional programme by Viking Coder (Score:2) Wednesday June 13 2001, @03:52PM
  • Re:Learning Computer Science by Viking Coder (Score:2) Wednesday June 13 2001, @04:16PM
  • Re:Read the subject by Viking Coder (Score:2) Wednesday June 13 2001, @04:54PM
  • Re:Java isn't good to teach professional programme by Viking Coder (Score:2) Wednesday June 13 2001, @05:26PM
  • Re:It is a good education language. by Viking Coder (Score:2) Thursday June 14 2001, @04:25AM
  • by Viking Coder (102287) on Wednesday June 13 2001, @10:22AM (#154107)
    It is cleaner than C++. No it's not. Java crashes more often than C++, with provably correct code. The Java environment is inherently more unstable, and prone to crashes. Assuming of course that you're talking about Applets. Also, in Java, there's no way to pass variables by reference. So, in order to have a method change a value that you pass to it, you have to encapsulate it in a class. Either a custom one, or something like Vector - which is not cleaner. Also, teaching someone to rely on Garbage Collection is insane, it teaches someone to write sloppy code. Java is not a cleaner environment, and it doesn't teach people to write cleaner code.

    It is widely and freely available. Not as much as C or C++. Almost every machine on the planet is capable of running C code. That's not true of Java. And you're never going to write device drivers in Java.

    It is being used widely in the industry - again, not as widely as C / C++. Not even close.

    I think educational institutions have a responsibility to release students with marketable skills. I agree with this statement, whole-heartedly. Unfortunately, you seem to think that Java programming is a marketable skill. Or at least, you seem to think it's MORE marketable than C/C++. Which is insane. Any reasonably competent C/C++ coder can pick up Java in a heartbeat. The converse is not true. I've seen Java coders who STILL can't figure out how to dispose of memory, basically don't understand the difference between stack and heap, and don't understand pointers well enough to dispose of an element of a linked list.

    And Java offers all the needed constructs and is good to teach the OOAD methodology. No, it doesn't. By virtue of using Garbage Collection, it is taking memory management out of the hands of the developer, teaching people to be lazy when it comes to object instantiation and use. Not having pass-by-reference gives people the idea that having class-level variables is a viable option. But the problem is that most simple projects are written in one class, which essentially teaches them to use global variables - which is not good. Lacking pointers is the critical flaw...

    It's possible to learn C/C++, with an understanding of Java. But it's far easier to learn Java with an understanding of C/C++.

    Most people will end up coding C/C++ for most of their work. Teach them to use the language that they'll end up using. Specifically because it's easy for them to then learn Java. Whereas if you taught them Java, it's not as easy for them to then learn C/C++.

  • Er.. by Tom7 (Score:1) Wednesday June 13 2001, @11:36AM
  • This is Crazy by Tom7 (Score:2) Wednesday June 13 2001, @09:58AM
  • Re:This is Crazy by Tom7 (Score:2) Wednesday June 13 2001, @10:57AM
  • by Tom7 (102298) on Wednesday June 13 2001, @09:50AM (#154111) Homepage Journal
    My school now uses Java for its introductory classes. Since I TA'd these classes in both the C++ and Java versions, I think I can speak with a little authority. Java is a good language to use for introductory programming/algorithms.

    The class particularly in question is called "Data Structures and Algorithms". In my experience, the students who took this course in Java had a much smoother experience than those who took it in C++ the year earlier. Programs crashed mysteriously less often, they didn't have to deal with memory leaks, they had less compatibility problems, and were able to write more sophisticated and interesting programs in the same amount of time. Since Java is simpler, we were actually able to teach almost everything in the language to them, where for C++ we had to leave out a significant amount of its core (such as templates, which meant that they couldn't really understand the string class, for instance).

    All of the CS majors took "Systems programming" the next semester, which is a hard-core C programming class; most go on to take Operating Systems, in which they learn anything you'd hope they'd learn by struggling with C or C++ in the intro class. I agree totally that systems programming should be a significant part of any CS program. But systems programming is just *a part* of computer science (in the Slashdot/Linux crowd, perhaps it is the most popular). And in truth, things like manual memory management and hardware access are not important in most of the other parts of CS. For teaching algorithms and data structures, these things are a hindrance.

    Personally, I'm waiting patiently for the day when only the most low-level software (a microkernel and hardware drivers) are written in C or assembly, with all of my applications written in a safe, GC language (perhaps Java, though there are better alternatives). It sure will be nice to be free from buffer overflows and memory leaks, finally! So while my recommendation of Java here is partially influenced by that goal, I think it is also quite justified for pragmatic reasons.
  • Bad Idea (Score:3)

    by Tom7 (102298) on Wednesday June 13 2001, @10:10AM (#154112) Homepage Journal
    Here are some reasons why you are bad (I have TA'd 7 CS classes at my university, so I am not just pulling this out of my ass):

    - Many people who will not be getting a degree in Computer Science (but who might interact with programmers or write some MS Access scripts) take introductory programming classes. It is important to have these people learn the fundamentals of programming rather than their actual implementation -- assembly will be practically useless to them unless they take the time to take compilers, operating systems, etc...

    - Assemblers (and I might even stick C in this category, if I was feeling snappy) do not support the abstraction and generic programming features important for writing interesting programs. (Except systems stuff.) Introductory programming classes typically focus on data structures and algorithms; if you make the students program these in assembly, you are limiting the amount of material you can cover (and therefore, how much they can learn).

    - Assembly as an introductory language is going to scare people away from computer science. Systems programming is pretty fun, but it's not for everyone. Many computer scientists hardly ever program (let alone in assembler), and I would wager that most professional programmers do not need to write in assembly language. Assembly is a great enhancement to a programmer's (or scientist's) knowledge of computers, but understanding it is not a requirement for programming in high-level languages.

    - The world will be a better place (fewer buffer overflows (thus security holes) and memory leaks, more portable software and code reuse, and shorter development cycles) if we encourage new students to move towards high-level, abstract languages. I'm not saying Java is the best choice for this (though it may be the most practical), but assembly certainly isn't.
  • Personally, neither teach the fundamentals... by Pollux (Score:2) Wednesday June 13 2001, @10:11AM
  • The Way... by rodentia (Score:2) Wednesday June 13 2001, @09:49AM
  • Teach General Concepts, not Specific Details by BlueFrog (Score:2) Wednesday June 13 2001, @09:14PM
  • Not one, but TWO questions! by forgoil (Score:1) Wednesday June 13 2001, @11:24AM
  • Re:python by Darktron (Score:1) Friday June 22 2001, @07:12PM
  • Re:python by bockman (Score:2) Thursday June 14 2001, @01:33AM
  • Re:python by bockman (Score:2) Thursday June 14 2001, @01:45AM
  • you're asking a group of C & linux zealots?? by egomaniac (Score:2) Wednesday June 13 2001, @10:19AM
  • It is a balance, and a well struck one.... by BlackStar (Score:1) Wednesday June 13 2001, @10:13AM
  • C/C++ ? by Listen Up (Score:1) Wednesday June 13 2001, @12:37PM
  • Computer programming != Computer science by SirWhoopass (Score:2) Wednesday June 13 2001, @09:19AM
  • Re:Wrong Direction by Satai (Score:1) Wednesday June 13 2001, @09:55AM
  • My Experiences w/ Java == Bad by Eagle7 (Score:2) Wednesday June 13 2001, @09:12AM
  • Re:Java is fine for OO by The Sith Lord (Score:1) Wednesday June 13 2001, @05:27PM
  • Re:Wrong Direction by -brazil- (Score:1) Wednesday June 13 2001, @10:00PM
  • Re:I took Java last year by -brazil- (Score:1) Wednesday June 13 2001, @10:15PM
  • Please mod parent up by tree_frog (Score:1) Thursday June 14 2001, @12:54AM
  • Re:Java a great intro to OO by Pace3000 (Score:1) Thursday June 14 2001, @01:17AM
  • Re:UIUC CS 125 by Ghoser777 (Score:1) Wednesday June 13 2001, @07:54PM
  • Practically a total replacement here. by JusticarSchrekt (Score:1) Wednesday June 13 2001, @02:23PM
  • Re:IMO... (Score:3)

    by paulywog (114255) on Wednesday June 13 2001, @10:11AM (#154133)
    "My AP compsci classes used the old 25mHz Macs"

    WOW!! I wish that I could have seen one of those. A 25 millihertz processor! My analog watch can calculate 1+1 faster than that thing.

    A goof like that really is just asking for some snide remark...

  • how about this curriculum by _ska (Score:1) Wednesday June 13 2001, @10:16AM
  • Not even java by dbrower (Score:2) Wednesday June 13 2001, @11:29AM
  • Let them learn FORTH by iankerickson (Score:1) Wednesday June 13 2001, @09:11PM
  • the wrong approach by donabal (Score:1) Wednesday June 13 2001, @04:55PM
  • Re:How about by Molt (Score:1) Wednesday June 13 2001, @02:55PM
  • Java makes teaching easier by jkeltner (Score:1) Thursday June 14 2001, @02:22AM
  • It depends on what you want to emphasize by MattoxBeckman (Score:1) Wednesday June 13 2001, @10:42AM
  • Re:Wrong Direction by DrSkwid (Score:1) Wednesday June 13 2001, @12:58PM
  • Re:Wrong Direction by DrSkwid (Score:1) Wednesday June 13 2001, @01:13PM
  • Re:Assembly?? Which one? Is this a "language"? by DrSkwid (Score:1) Wednesday June 13 2001, @01:41PM
  • How about making them program in java bytecode by DrSkwid (Score:1) Wednesday June 13 2001, @01:42PM
  • How about making them program in java bytecode by DrSkwid (Score:1) Wednesday June 13 2001, @01:42PM
  • How about making them program in java bytecode by DrSkwid (Score:1) Wednesday June 13 2001, @01:42PM
  • Re:Why not select language as appropriate for topi by jfmiller (Score:1) Wednesday June 13 2001, @11:41AM
  • Java fine for academia, but not real world? by matroid (Score:1) Wednesday June 13 2001, @10:50AM
  • Re:What's the difference by matroid (Score:1) Wednesday June 13 2001, @11:31AM
  • How they're doing it at my school by MrResistor (Score:1) Wednesday June 13 2001, @09:28AM
  • All Languages Are Hard When First Learning by Morocco Mole (Score:1) Wednesday June 13 2001, @12:50PM
  • by Animats (122034) on Wednesday June 13 2001, @09:43AM (#154152) Homepage
    I agree with teaching Java as a first language. It's clean, not too complicated, and you get useful error messages. Performance is mediocre, but for a teaching language, that's not a big issue.

    C++ has two big problems. One is cruft, and the other is memory management.

    C++ has a long legacy. Too long. Not only is there the legacy of C, there's the legacy of early C++. Templates, exceptions, and references came in late. It shows. There are too many things that are done the way they are only for historical reasons.

    C++ and C program design obsesses on memory management, because what you take, you must give back. The language provides little assistance with this. That's not what beginning programmers need to focus on.

    C++ needs a major cleanup. I've been toying with a design for "strict mode" for C++, comparable to "use strict" in Perl, which would get rid of much of the cruft. C++ comes out of the 5-year ISO standardization freeze soon, so it's time to be thinking about this. But that's for the future.

  • Oh, pleeez.... (Score:4)

    by GCP (122438) on Wednesday June 13 2001, @10:23AM (#154153)
    If you *must know how a computer works at a fundamental level*, then assembler isn't it. I had a microcode class that really helped me to understand about assembler optimization. You can make the argument that you can't really understand level N unless you understand level N-1, recursively all the way to quantum physics.

    Or why not start at the other end of the abstraction stack? Start with cognitive pyschology, perception, human-computer interaction, and the identification of human needs -- then you figure out an approach that best meets people's needs, which would lead to how to choose the right software tools and approach for any particular case.

    For a CS class, I wouldn't start at either extreme. Choosing the right level of abstraction is important, and the answer isn't just automatically one below what the other guy suggests.

    I think CS classes should start by making it clear that the point of it all is to create useful stuff for real people. Teach them what they need to know to get started ASAP doing so, and fill in the details with later classes.

  • At Dartmouth by MyopicProwls (Score:2) Wednesday June 13 2001, @12:03PM
  • Re:This is Crazy by plam (Score:1) Wednesday June 13 2001, @10:23AM
  • Re:Wrong Direction by plam (Score:1) Wednesday June 13 2001, @10:40AM
  • Re:Too Many Important First Concepts for OO by payslee (Score:1) Wednesday June 13 2001, @03:00PM
  • Java vs C++ or vs Eiffel by ixache (Score:1) Wednesday June 13 2001, @09:26AM
  • Re:Java hits the sweet spot ... by pixcel (Score:1) Wednesday June 13 2001, @11:36AM
  • Knuth Teaches in MIX by Drewcifer (Score:1) Wednesday June 13 2001, @01:04PM
  • lisp/scheme? by Lord Omlette (Score:2) Wednesday June 13 2001, @10:02AM
  • Computer Science is NOT about the language used! by RevAaron (Score:2) Wednesday June 13 2001, @10:38AM
  • Re:Wrong Direction - No by roman_mir (Score:2) Wednesday June 13 2001, @10:31AM
  • Re:I apologize by petebu (Score:1) Wednesday June 13 2001, @03:23PM
  • Re:I apologize by petebu (Score:1) Wednesday June 13 2001, @03:28PM
  • 1st language by paranoic (Score:1) Wednesday June 13 2001, @09:51AM
  • Re:How about by pallex (Score:1) Wednesday June 13 2001, @09:17AM
  • Re:Wide use is not the issue by e-Motion (Score:2) Wednesday June 13 2001, @10:41AM
  • Forte is a great step. by small_dick (Score:2) Wednesday June 13 2001, @03:39PM
  • Slightly different view by Triode (Score:1) Wednesday June 13 2001, @09:13AM
  • Re:Java isn't good to teach professional programme by _underSCORE (Score:2) Wednesday June 13 2001, @10:23AM
  • Re:Java isn't good to teach professional programme by _underSCORE (Score:2) Wednesday June 13 2001, @01:45PM
  • Java. by enigma32 (Score:1) Wednesday June 13 2001, @05:22PM
  • Re:Not a good teaching language by Rei (Score:2) Wednesday June 13 2001, @11:39AM
  • Re:I apologize by Rei (Score:2) Wednesday June 13 2001, @12:31PM
  • Re:Not a good teaching language by Rei (Score:2) Monday June 18 2001, @05:32AM
  • by Rei (128717) on Wednesday June 13 2001, @09:48AM (#154177) Homepage
    Of all of the languages I have ever had the pleasure of using, none had such a beautiful object-oriented design philosophy as LPC (nor was as fun!).

    For those unfamiliar with LPC, it was initially designed for use in MUDs - as such, it is missing many of the non-text interface and output features needed for a full featured modern language. However, what it had was so beautiful. There was one type of object variable - object. All objects can talk to each other, call whatever functions they want on each other, etc, just by obname->do_something(). You can even call functions on not-yet-loaded objects, by doing things like ("path/filename")->do_something(). You can call functions like FindObject to get the objects of a certain type. You can run through a list of all objects. Etc.

    LPC is based on the principle of letting the programmer do whatever they want (I know, some people don't like this ;) ). For example, strings are basic types. You can do a switch statement on a string, and have string cases. You can do a switch statement on an object. You can use a 'mixed' variable type. A mixed could look like this:

    mixed blee = { some_int, some_string, { some object, {some_object, some_bool }, some_float pointer, some_object }, some_object pointer };

    It basicly acts as a struct you don't have to declare in advance (of course, you can still use structs to your heart's content). So, for example, if you just wanted to store a complex value, you could use a mixed of { some_double, some_other_double }, at any time.

    Then, there's mappings. Mappings are a built in, arbitrary-formatted hash table that is an internal datatype. For example, you could have (and I may not be remembering the format exactly):

    mapping blee = [ "foo" : 1.5, "bar" : 8.2 ];

    Etc. (naturally, you can use mixeds, objects, whatever, as your indexes and values.

    Most LPC libraries are designed to give objects a (text-based) visual representation. You give them a name, a description, a short description, etc. Objects are created in a virtual environment, and you can see them - hold them, place them inside other objects, etc. An object can talk to its environment (what it is inside), or anything in its inventory. A coder can manually call functions on various objects, or set up interface elements for them to be called at any time, not nessisarily by a coder. This visual environment, and "existance" within the code, leads for incredibly fun code wars, like you wouldn't believe ;) And, with the power of the language, you could have incredibly adept functional elements at the same time as the interactive visual elements.

    For example, I was the loki-type character coding on a mud once. At one point, I had fun by calling functions that would change the name of people's character-objects around, so that they'd be confused when talking to each other. Naturally, they'd seek retribution and fire off a dest, once they found out it was me (a 'dest' is a piece of code that artfully kicks someone off the mud). But, once I got to know other people's dests, I set up protective objects which would fire off counter-dests when I saw their dests start to go off. So, instant dests started becoming popular. So, I set up objects which propogated themselves into other coders's inventories and would filter out their commands. Instead of instant dests, to maintain artfullness while still preventing them from counter-desting, my dests first cleaned out their inventory and the inventory of the object (room) they were in, to wipe out all local protective objects (sometimes they'd mess with global commands, but well, if they did that they deserved to win ;) ). Then, I'd clone an object into their inventory which would prevent them from acting at all (or, perhaps, leave them the ability to scream or something, perhaps even changing their words ;) ) (ahhh, word filters were fun ;) ). I had my Star Wars dest, dests that were parodies of other people's dests... I always liked Blizzard's "Pulp Fiction" dest, though ;) Oy, that place was fun. Sometimes when I was bored, I'd destroy the main posting board, set myself to look like it ("7th Sign Wizard's Main Board says: What are you looking at?"). heheheeee..

    Ok, sorry, I got sidetracked. But... LPC is a fun language, and has the best object-oriented design I've ever dealt with. Its a good language "for love of the code".

    - Rei

  • I apologize by ccoakley (Score:1) Wednesday June 13 2001, @12:03PM
  • DB programming as easy as VB? by ccoakley (Score:1) Wednesday June 13 2001, @12:19PM
  • Re:Wrong Direction by ccoakley (Score:1) Wednesday June 13 2001, @05:29PM
  • Not a good teaching language by ccoakley (Score:2) Wednesday June 13 2001, @11:23AM
  • Functional first by babble (Score:1) Wednesday June 13 2001, @10:23AM
  • Languages are not important. Concepts are. by Otis_INF (Score:2) Wednesday June 13 2001, @11:15AM
  • Re:Wrong Direction by T_Wit (Score:1) Thursday June 14 2001, @04:41AM
  • New Moderation Category Needed? by istartedi (Score:2) Wednesday June 13 2001, @12:35PM
  • Depends on the Purpose by rgmoore (Score:2) Wednesday June 13 2001, @10:09AM
  • The ideal teaching language... by joto (Score:2) Wednesday June 13 2001, @12:35PM
  • Languages by tony clifton (Score:1) Wednesday June 13 2001, @09:18AM
  • Use oberon by hornet@ch (Score:1) Wednesday June 13 2001, @11:33AM
  • Re:CS programming courses at ETH by hornet@ch (Score:1) Wednesday June 13 2001, @11:49AM
  • Re:UW is switching over by jbrians (Score:1) Wednesday June 13 2001, @05:51PM
  • Re:The language is secondary by S.O.B. (Score:1) Wednesday June 13 2001, @09:54AM
  • Re:Wrong Direction by danglick (Score:1) Wednesday June 13 2001, @10:21AM
  • Re:Why not select language as appropriate for topi by danglick (Score:1) Wednesday June 13 2001, @10:24AM
  • Re:Because hot languages = jobs by yamla (Score:2) Wednesday June 13 2001, @10:40AM
  • Re:If you don't know C++ by the time you graduate. by Doomdark (Score:1) Wednesday June 13 2001, @03:02PM
  • Assembler as Introductory to COBOL by Peteresch (Score:1) Thursday June 14 2001, @07:55AM
  • Re:smalltalk? by bapink01 (Score:1) Wednesday June 13 2001, @12:06PM
  • Re:Wide use is not the issue by DrgnDancer (Score:1) Friday June 15 2001, @12:05PM
  • Re:Wide use is not the issue by DrgnDancer (Score:1) Friday June 15 2001, @12:41PM
  • by DrgnDancer (137700) on Wednesday June 13 2001, @09:40AM (#154201) Homepage

    I think the question here is this: Should we start by teaching an easier, higher level language (ie Java) to get programming concepts down, then move to lower level "closer to the machine" language for advanced topics, or should we start with the lower level language and then treat additional languages as extras?

    Personally I think the first option is the more viable. Java is a fairly easy, very portable language on which students can create fairly elaborate programs somewhat quickly. With the Swing classes, one can create GUI based programs that will run almost anywhere after probably less that a semester of learning. Java has all the necesary pieces of a fully functional OO language, and it spells them out in a very easy to understand way. It also enforces compartmentalization. I remeber as a freshman, one of the most frustratin things about the way CS was taught was that none of the programs we wrote seemed "real". The assignments were written to develop skills in algorithm analysis and to point out uses of specific structures, but they always looked like a home work assignment, not a useful piece of software. With Java (or hell, even an interpruted language, like Perl or Python) I think the same skills could have been taught while allowing for more... err.. Satisfying .. assignments.

    Once the basics of programmiing and software development were learned (and I don't know about anyone else, but my Uni spent most of the first year, and a chunck of the second on these skills. learning "how the computer works at the lowest level" was Sophmore and above classes) C would certainly be appropriate to tech as a lower level "how the machine thinks" langauge. Our low level systems classes were taught in Vax assembler (I never actually learned C in collage, we used Pascal as the teaching langauge, them SmallTalk and assembler in later classes), and I'd have found C both easier and more useful in "real life".

  • movin' on up by digitalsushi (Score:1) Wednesday June 13 2001, @09:11AM
  • btw by digitalsushi (Score:1) Wednesday June 13 2001, @09:17AM
  • Java as a prelude to C++ by jbischof (Score:2) Wednesday June 13 2001, @09:09AM
  • C++ is better than Java but not... by jbischof (Score:2) Wednesday June 13 2001, @12:14PM
  • Re:Java as a prelude to C++ by jbischof (Score:2) Wednesday June 13 2001, @01:53PM
  • Re:Wide use is not the issue by harvardian (Score:1) Wednesday June 13 2001, @08:14PM
  • Re:smalltalk? by teefal (Score:2) Wednesday June 13 2001, @09:46AM
  • What do you want to teach? by Laplace (Score:1) Wednesday June 13 2001, @12:00PM
  • Re:Wide use is not the issue by avandesande (Score:1) Wednesday June 13 2001, @11:56AM
  • i disagree with chris di bona by sntx (Score:1) Wednesday June 13 2001, @12:36PM
  • Re:Java better for learning than C++, Scheme? by BitwizeGHC (Score:2) Wednesday June 13 2001, @10:26AM
  • Re:Java better for learning than C++, Scheme? by BitwizeGHC (Score:2) Wednesday June 13 2001, @05:38PM
  • Re:I took Java last year by samelot (Score:1) Wednesday June 13 2001, @01:14PM
  • Why is OO So Important? by khog (Score:1) Wednesday June 13 2001, @06:18PM
  • What they did at U of M by feldkamp (Score:1) Wednesday June 13 2001, @11:04AM
  • My Experience by Lomby (Score:1) Thursday June 14 2001, @03:00AM
  • Its the flavor of the year by Srin Tuar (Score:1) Wednesday June 13 2001, @10:57AM
  • My experience by ritlane (Score:1) Wednesday June 13 2001, @09:10AM
  • My programming path by ellem (Score:2) Wednesday June 13 2001, @09:31AM
  • OO sucks, C and Scheme better choises! by juha0 (Score:1) Wednesday June 13 2001, @11:42AM
  • (Computer Science) && !(Computer Relgion) by demiurge8 (Score:1) Wednesday June 13 2001, @09:29PM
  • Re:What about Python? by object.orient() (Score:1) Thursday June 14 2001, @07:37AM
  • APL by smulloni (Score:1) Friday June 15 2001, @06:02AM
  • Java... tsk tsk by gamorck (Score:1) Wednesday June 13 2001, @09:50AM
  • internet uses by snyrt (Score:1) Wednesday June 13 2001, @01:57PM
  • Writing Java in assembler by Cwaig (Score:1) Wednesday June 13 2001, @01:42PM
  • My two cents by RESPAWN (Score:1) Wednesday June 13 2001, @11:05AM
  • Java fine for teaching... and more. by slide-rule (Score:1) Wednesday June 13 2001, @09:46AM
  • German keyboards... by Cryptnotic (Score:1) Wednesday June 13 2001, @11:18AM
  • Re:German keyboards... by Cryptnotic (Score:1) Wednesday June 13 2001, @03:22PM
  • Java Shouldn't Be the Cornerstone Language by Homebrewed (Score:1) Wednesday June 13 2001, @09:18AM
  • Re:Because hot languages = jobs by _xeno_ (Score:1) Wednesday June 13 2001, @10:50AM
  • Re:C++ and OO Cheating by mmaddox (Score:1) Wednesday June 13 2001, @09:38AM
  • Smalltalk by mmaddox (Score:2) Wednesday June 13 2001, @09:13AM
  • Re:Either would be better than what I got stuck wi by mmaddox (Score:2) Wednesday June 13 2001, @09:20AM
  • Re:Wrong Direction by bluebomber (Score:2) Wednesday June 13 2001, @10:11AM
  • Re:Changing to Java by sdwr98 (Score:1) Wednesday June 13 2001, @09:41AM
  • Re:Changing to Java by sdwr98 (Score:1) Wednesday June 13 2001, @10:16AM
  • High School != College by sasami (Score:1) Wednesday June 13 2001, @01:57PM
  • Response... by Misch (Score:2) Wednesday June 13 2001, @09:32AM
  • University of Washington making the switch by jordanda (Score:1) Wednesday June 13 2001, @11:29AM
  • On Teaching Java... by linuxwolf (Score:1) Wednesday June 13 2001, @09:43AM
  • I agree with Chris DiBona by ReidMaynard (Score:1) Wednesday June 13 2001, @10:14AM
  • Re:Wrong Direction by Brand X (Score:2) Wednesday June 13 2001, @12:19PM
  • How many times... by imagineer_bob (Score:1) Wednesday June 13 2001, @09:12AM
  • Re:Wrong Direction by UncleFluffy (Score:1) Wednesday June 13 2001, @11:16AM
  • Re:Wrong Direction by UncleFluffy (Score:1) Thursday June 14 2001, @01:52AM
  • Re:And Knuth (all hail) agrees with you, it seems by UncleFluffy (Score:1) Thursday June 14 2001, @02:00AM
  • Re:And Knuth (all hail) agrees with you, it seems by UncleFluffy (Score:1) Thursday June 14 2001, @10:51AM
  • University of Wisconsin system by proxima (Score:2) Wednesday June 13 2001, @09:28AM
  • Re:Because hot languages = jobs by SLOGEN (Score:1) Wednesday June 13 2001, @10:47AM
  • Don't teach "real-world" languages (at first)! by SLOGEN (Score:2) Wednesday June 13 2001, @10:30AM
  • The right tool for the right job... by qabi (Score:1) Wednesday June 13 2001, @09:33AM
  • Re:Experience from teaching by qabi (Score:1) Wednesday June 13 2001, @09:43AM
  • Lot of possible reasons by decesare (Score:1) Wednesday June 13 2001, @09:26AM
  • Re:programmer shortage, diversity by decesare (Score:1) Wednesday June 13 2001, @12:21PM
  • Re:It is a good education language. by 2Bits (Score:1) Wednesday June 13 2001, @10:23AM
  • Re:As a university assistant in CS.. by andr0meda (Score:2) Thursday June 14 2001, @12:27AM
  • by andr0meda (167375) on Thursday June 14 2001, @12:18AM (#154260) Homepage Journal

    We have had the same question discussed. Normally in the first year of the course, we teach students about OO programming concepts using The Oberon language, a wirthian language much like Pascal and Modula-2. The benefit of starting with this language, is that practically no one knows about this one when they start. This levels the field for everybody starting the course. The second benefit is tthat it is fairly similar to Pascal and Modula-2 syntaxes, but allows for concepts like pointers and garbage collection to be explained. Basicly, it as good as any other OO language, but we have satisfactory results in teaching OO with this language. The incredible downside to this language, is that students will never ever use it again. That's the first year, in the second they are taught C++ in a strict Stroustrup way.

    Our question has been whether Java would be better. Certainly, as an assistant, I would have said Java all the way 2 years ago, because I just like Java much more than Oberon (and incidently the students do too), but Java really misses out on a lot of key concepts that C++ do have. If Java would ever be taught on our university in C.S., it would replace Oberon, not C++. We consider C++ a difficult but necessary level of experience students should have endured, simply because when they will work in a company 3 years later, the majority will be either in Java or C++. BUT. In the Mathematics and Physics classes, we HAVE switched to Java. To these people, a language is more a tool than a subject on it's own. In fact, we didn't just teach them Java, we gave them a Java environment that allows for allmost functional linear programming, an interpreter which simply translates their code (which looks just like Java code, only everything is purely functional) into 'real' Java. So far, the results are promising. They actually get the concepts of recursion, which, for a mathematics and physics 1s't year class may be easy to get down on paper but harder to get done in reality. This is the first year we're doing this, so we have to consider the end results in a few weeks when exams are over. We have also taught Java to Physics PhD students, with very good results. Most of the programming in Physics labs is now in Java because it delivers faster than C++ and is simply easier to maintain and update.

    From personal experience, I think C++ has a few benefits on it's own. First it is a valuable leach that leads into the UNIX world, something most people have never had the chance to experience before. You will simply have to get the UNIX concepts and commands and syntax and phylosophy right before you can say you're able to pull a C++ thing off on a server compiler. Second, I think C++ is obviously valuable once you are done studying. This should not be the major issue here, and we dislike the idea of studying C.S. because it makes good money, but it's a reality nonetheless. Thirdly, C++ has influenced more languages in the 10+ years it exists, and thus makes transition to these languages, including the Java language, easy. Fourth, c++ allmost offers every concept that an OO language should offer, so in the world of paradigma's it's a fantastic example of OO programming. Fifth, the syntax and semantics makes people think mechanically, and the ancient C subset allows for making the distinction between lowlevel and high level programming. Learning how to debug is one of the key elements that C++ offers and needs, and students will benefit from that knowledge. And finally, transitions form C++ to Java are easy, but the opposit transition is incredibly tough, even if you DO know C++. I've made the transitions about 4 times in the last few years, and I can tell you every time I had to switch back to C++ all hell breaks loose again. You simply forget the hard parts because that's what Java is, the 'nice' version without the pitfalls that C++ experienced in it's more or less uncertain growth.

    I hope this has some valuable insights for you.
  • Do not teach ASM. Ever. by cornflux (Score:1) Wednesday June 13 2001, @10:50AM
  • You don't go to university to learn languages, by TobyWong (Score:1) Wednesday June 13 2001, @11:21AM
  • C/C++?!?! by kst (Score:1) Wednesday June 13 2001, @11:12AM
  • Java as an Introductory Language by herwin (Score:1) Wednesday June 13 2001, @09:49AM
  • You need to learn Java, C, C++ and probably Perl by beable (Score:1) Wednesday June 13 2001, @02:07PM
  • smalltalk? by spike666 (Score:1) Wednesday June 13 2001, @09:05AM
  • Re:It is a good education language. by Antitorgo (Score:2) Thursday June 14 2001, @05:01AM
  • Java - Learning Lang? by g-14 (Score:1) Wednesday June 13 2001, @09:38AM
  • Re:It is a good education language. by miked1001 (Score:1) Wednesday June 13 2001, @12:27PM
  • Some other points by JoeTech (Score:1) Thursday June 14 2001, @02:21AM
  • Technique over Language by Razzy (Score:1) Wednesday June 13 2001, @05:24PM
  • Re:Teach simple languages first! THIS IS NOT JAVA. by rainbowfyre (Score:1) Wednesday June 13 2001, @05:01PM
  • Re:python by rainbowfyre (Score:2) Wednesday June 13 2001, @04:50PM
  • Re:What I Teach My Students by selkirk (Score:1) Wednesday June 13 2001, @10:38AM
  • Re:Read the subject by snol (Score:1) Wednesday June 13 2001, @10:34PM
  • Re:Make 'em learn assembler. by InsaneGeek (Score:2) Wednesday June 13 2001, @10:40AM
  • This is a mistake. by spribyl (Score:1) Wednesday June 13 2001, @09:16AM
  • Poor Programming methods by Halo- (Score:1) Wednesday June 13 2001, @09:13AM
  • C and nothing else by uriyan (Score:1) Wednesday June 13 2001, @10:47AM
  • programmer shortage, diversity by dalinian (Score:1) Wednesday June 13 2001, @10:42AM
  • Not that important... by nullnvoid (Score:1) Wednesday June 13 2001, @03:38PM
  • C first by nagora (Score:2) Wednesday June 13 2001, @09:56AM
  • python by dsavitsk (Score:1) Wednesday June 13 2001, @09:06AM
  • c# (Score:3)

    by shim0070 (180059) on Wednesday June 13 2001, @03:44PM (#154284)
    I think c# would be a very good introductory language for a computer science course, ignoring the Microsoft stigmata and the fact that since it is a new language there are few books/compilers/debugers/teachers out there.
    1) It has support for many Object oriented Mechanisims.

    2) It looks like c/c++/java/javascript so you could move onto them after you completed the c# class.

    3) It has automatic garbage collection, but you can work in unsafe mode and have access to pointer arithemetic. So it is nicer than both c++ and java in that respect.

    4) It is the Microsoft .net language for server side stuff. So you could go get a job after your first semester at college.
  • Re:Wrong Direction by cvd6262 (Score:2) Wednesday June 13 2001, @10:47AM
  • Java better for learning than C++, Scheme? by 0tim0 (Score:1) Wednesday June 13 2001, @09:19AM
  • Re:Wrong Direction by MathPenguin (Score:1) Wednesday June 13 2001, @09:16AM
  • top down, or bottom up?? by fbm (Score:1) Wednesday June 13 2001, @11:04AM
  • Re:C++ is NOT hard to learn!! by fbm (Score:1) Thursday June 14 2001, @07:14PM
  • Re:Wide use is not the issue by Tungbo (Score:1) Thursday June 14 2001, @01:10PM
  • begging the question by saforrest (Score:1) Thursday June 14 2001, @03:21AM
  • My experiances by oliverthered (Score:1) Wednesday June 13 2001, @11:38AM
  • CS Introduction Languages by Thellan (Score:1) Wednesday June 13 2001, @09:32AM
  • Re:Wrong Direction by divert (Score:1) Wednesday June 13 2001, @11:13AM
  • Re:Wrong Direction by poot_rootbeer (Score:1) Wednesday June 13 2001, @09:28AM
  • Teach C++ by TyFighter (Score:1) Wednesday June 13 2001, @10:06AM
  • Oberon by philippe_carlo (Score:1) Wednesday June 13 2001, @09:16PM
  • Re:What about Oberon? by philippe_carlo (Score:1) Thursday June 14 2001, @08:23PM
  • What about pointers? by donkeyboy (Score:2) Wednesday June 13 2001, @09:12AM
  • Recursion by Raunch (Score:1) Wednesday June 13 2001, @01:34PM
  • Re:German keyboards by eudas (Score:1) Wednesday June 13 2001, @10:23AM
  • My Experience on the Subject. by Da Cr33p (Score:1) Wednesday June 13 2001, @11:12AM
  • Re:It is a good education language. by wiZd0m (Score:1) Wednesday June 13 2001, @12:14PM
  • I/O is the problem with Java as a first language by sjmurdoch (Score:1) Thursday June 14 2001, @12:55AM
  • Not Java, but not C/C++,VB or Pascal either.... by garett_spencley (Score:2) Wednesday June 13 2001, @09:53AM
  • Re:Disagree with starting with assembler.... by garett_spencley (Score:2) Wednesday June 13 2001, @10:20AM
  • Use Java? by nileshch (Score:1) Wednesday June 13 2001, @09:17AM
  • Re:Java is also inappropriate by ichimunki (Score:1) Wednesday June 13 2001, @10:16AM
  • Re:A real object-oriented language by jshep (Score:1) Wednesday June 13 2001, @10:26AM
  • Industry needs vs. Good programming practices by jshep (Score:2) Wednesday June 13 2001, @10:20AM
  • compromises and compromises by zoftie (Score:1) Wednesday June 13 2001, @09:43AM
  • With PAL-3 on a PDP 8 by owlmeat (Score:1) Wednesday June 13 2001, @11:09AM
  • Re:Java is a better for later on by rpeppe (Score:2) Wednesday June 13 2001, @10:50AM
  • by rpeppe (198035) on Wednesday June 13 2001, @10:20AM (#154314)
    I taught electronics undergrads C as their first language for some years. When I left, they were moving to Java. I was glad I had left! Like some others here, I'm not convinced that the actual language itself matters, just that it allows you to demonstrate, in a clear way, the programming concepts you're trying to get across.

    Personally, I don't believe that Java is the right way to go in that respect (although there are worse languages: my old comp sci dept started to teach Ada as a first language after I left...). Two main reasons:

    • Inheritance-based OO programming is a naturally obfuscated way of writing code, and is hard even for experts to get right. This page [lh.com] holds, amongst other things, a couple of paragraphs I wrote giving some of the reasons why.
    • The Java class libraries, partly for the above reasons, are a huge, tangled mess, and extremely hard for a beginner to come to terms with.

    My personal choice for a first language to teach would be Limbo [vitanuova.com], a beautiful language, designed by some of the original designers of C (who've come a long way since then!). Amongst other things, it:

    • encourages simple, understandable code. Reuse is through encapsulation rather than inheritance.
    • has a powerful set of primitive data-types with natural and useful semantics.
    • runs on many platforms under the Inferno OS [vitanuova.com], e.g. Windows and Linux.
    • is completely type-safe (unlike Java)
    • has a simple but powerful set of libraries which can be understood, and are useful, in isolation from each other.
    The language primitives make it quite feasible to teach different aspects of programming without moving to different languages:
    • Lisp-style lists are nice for teaching recursion ("car" and "cdr" become the more natural "hd" and "tl")
    • Proper by-value strings (unlike Java's) make string handling sinple and natural.
    • Interprocess communication is supported in Limbo by first-class channels, enabling threading and concurrency to be explored without constantly struggling against thread primitives and associated pitfalls [ibm.com] which belong to the 1970s.
    Overall, the syntax is extremely clean, but very expressive (although still recognisably derived from C). It has hardly any "gotchas", and is generally programmed in a simple, direct style, ideal for beginners (and advanced programmers who want to write maintainable code, for that matter). Moreover, it's very sparse on resources.

    I'd love to teach it as a first language. No more "ahh yes, that array just turned into a pointer because you looked at it funny"... oh happy memories...

  • Re:Experience from teaching by Magius_AR (Score:1) Thursday June 14 2001, @03:13AM
  • Re:Why not select language as appropriate for topi by Magius_AR (Score:1) Thursday June 14 2001, @03:17AM
  • language choice by Magius_AR (Score:1) Thursday June 14 2001, @03:25AM
  • Re:Software Engineering and Languages by dgroskind (Score:1) Thursday June 14 2001, @05:32AM
  • Java? C++? Depends! by BluedemonX (Score:2) Wednesday June 13 2001, @10:21AM
  • Re:What I Teach My Students by LionKimbro (Score:2) Wednesday June 13 2001, @10:47AM
  • Re:Disturbing Trend in Replies... by LionKimbro (Score:2) Wednesday June 13 2001, @12:32PM
  • Re:What I Teach My Students by LionKimbro (Score:2) Wednesday June 13 2001, @12:54PM
  • Re:Well, yes but... by LionKimbro (Score:2) Wednesday June 13 2001, @03:20PM
  • by LionKimbro (200000) on Wednesday June 13 2001, @10:15AM (#154324) Homepage

    I've noticed a disturbing trend in the replies; That is, most of them focus on language features.

    For example, they say, "Oh, they should use this, because it has good OO," or, "Oh, use [C/ASM], because it's low level, and good programmers know how low level stuff works", or, "Use [C++/Java], because that's what the industry uses", or "Use XYZ because it's got a good set of libraries," etc., etc.,.

    These folks have obviously never taught people who haven't programmed before.

    These are people who are going to struggle with variables. These are people who can't write a for loop to save their lives. They can't use a function, much less a method.

    OOP, pointers, bits&bytes, libraries; None of that matters for at least 3-6 months.

    This is why I highly recommend either LOGO or Python as a first language. These are interactive interpreters. You need to be able to say, "X=4", and then say, "what is X?", and then reassign X. You need these basic things.

    Once the concepts of variables, loops, and functions are in place, then you can easily map to other languages. I know this because I've taught it. I also know this because I've consoled students crying over their Java homework (quite literally) at the end of the semester, incapable of using a for loop. These are good students.

    As programmers, we take a lot for granted.

    So forget all this "X features OOP, Y has a good lib, Z is low level," and think: Variables, Flow Control, Functions. The rest will follow naturally after these are ingrained and easily used.

    I teach free programming classes in Seattle [taoriver.net]. Since I teach classes for free, I don't have the economic pressure to teach JAVA or C++. I could write whole articles about the damage that certification programs do to people. Another problem is that people look at the Jobs page, discover that most industry programmers are doing something called "JAVA" or "C++". They open up the university catalog and see, "Learn JAVA in 3 months!!!" ($1500), right next to the A+ certification houses. Since the ads are all over the place, they figure that it must be the way. They take a class, and drop out halfway through. The experienced programmers with CS degrees taking JAVA to learn a new language make the newcomers feel pathetic, and they decide programming isn't for them. If only I could copy the experiences in my mind for y'all... It's really bleak.

    College is a different situation. I think the reason the profs teach JAVA is because they actually bought (and contributed to!) the hoop-lah about OOP, in a theoretical rather than economic way.

  • by LionKimbro (200000) on Wednesday June 13 2001, @09:32AM (#154325) Homepage

    I teach my students [taoriver.net] in the following order:

    1. Python. They learn to use variables, flow control, and functions in Python. Lists, Strings, Tuples, Dictionaries, Integers, and Files.
    2. C. They learn what bits and bytes are, binary logic, pointers, and some OS details.
    3. Python. They learn what classes and objects are. More importantly, we go over Design Patterns book, full of designs that extend in scope well beyond OOP.
    4. C++. They use classes and objects in C++.
    5. Python. Functional notations such as filter and map.
    6. Python. How to interface between C and Python.

    It is with great sadness that I teach my students OOP, as it is over-hyped, and people believe in it religiously and without question. I teach it in order to prepare them for the world that will hire them.

    The primary value in OOP, as far as I can tell, is thinking about the data first, and language features supporting polymorphism. Also, the book "Design Patterns" is the most (and quite possibly only) valuable piece of literature from the OOP community. I stress that it doesn't require a particular language or ideology to implement polymorphic behavior, or to think about the data first, or to implement a common pattern. (Device drivers and web servers are great examples of objects exhibiting polymorphism and encapsulation. In Non-OO speak, that's the product of paying attention to coupling and cohesion, which takes us right back to... The Unix Philosophy.)

    I teach C so that they see low level stuff, and Python, for reasons to numerous to list. I teach C++ so that they can get hired.

    One of the reasons for listing Python: They can start writing programs from day 1, second 1. No fussing with heavy class notations, like Java forces you to. (Just look at Java's hello world.) To believe that new students learn about OOP by using Java is hopelessly naive. Most students I've seen working with Java as a first language struggle with making for loops, while loops, and using variables. (Of course, several students will defend their teacher and difficult learning by give you the rhetoric that OOP is the way, and that Java is great because it's... OOP! You can feel the difference!)

  • Changing to Java by Yossarian2000 (Score:1) Wednesday June 13 2001, @09:19AM
  • Re:Changing to Java by Yossarian2000 (Score:1) Wednesday June 13 2001, @09:53AM
  • Experience in college by zapp (Score:2) Wednesday June 13 2001, @10:32AM
  • The good, the bad and the ugly by mrbuckles (Score:1) Wednesday June 13 2001, @11:07AM
  • Teach with what works.. by XaXXon (Score:1) Wednesday June 13 2001, @10:50AM
  • Teach with what works.. by XaXXon (Score:1) Wednesday June 13 2001, @10:50AM
  • Re:Why not select language as appropriate for topi by Phillip2 (Score:1) Thursday June 14 2001, @01:53AM
  • Re:IMO... (Score:4)

    by wheel (204735) on Wednesday June 13 2001, @09:21AM (#154333)
    ...java ...sucks resources like none other.
    True, esp. for gui's. (We all know about listener leaks, right?) For other uses, however, such as web-enabled db apps, it can actually make more efficient use of resources -- and Java can remove most of the pain from tasks like session management.

    the teaching language be C/C++ - once you know that, you can learn Java, Perl, PHP, etc. with little effort
    The problem of using C/C++ for teaching is, a student can get distracted from learning how to program well by the idiomatic syntactical complexities that make C/C++ such a powerful language in the first place. I say, learn Java first, so you understand the classic algorhythms, simple OO, and things like threads. Then, find out what else you can do with C/C++, and others.

    True, Java's cross-platform...
    Do not forget, Java is not the only cross-platform language -- emacs-lisp is available for many many platforms, and uses such nicities as "byte-compiling", just like Java. :*)

  • Definitely 2. by marcovje (Score:1) Wednesday June 13 2001, @09:52AM
  • Re:Not widely used yet by marcovje (Score:1) Wednesday June 13 2001, @10:01AM
  • Re:If you don't know C++ by the time you graduate. by marcovje (Score:1) Wednesday June 13 2001, @10:12AM
  • Re:Java is also inappropriate by marcovje (Score:1) Wednesday June 13 2001, @10:16AM
  • Re:Wrong Direction by marcovje (Score:1) Wednesday June 13 2001, @10:24AM
  • Re:Assembly?? Which one? Is this a "language"? by marcovje (Score:1) Wednesday June 13 2001, @10:28AM
  • Re:If you don't know C++ by the time you graduate. by marcovje (Score:1) Wednesday June 13 2001, @11:10AM
  • Re:Wrong Direction by marcovje (Score:1) Wednesday June 13 2001, @11:13AM
  • Re:Assembly?? Which one? Is this a "language"? by marcovje (Score:1) Thursday June 14 2001, @01:54AM
  • Re:Not widely used yet by marcovje (Score:1) Thursday June 14 2001, @02:04AM
  • Re:If you don't know C++ by the time you graduate. by marcovje (Score:1) Thursday June 14 2001, @03:46AM
  • Re:Not widely used yet by marcovje (Score:2) Wednesday June 13 2001, @09:59AM
  • Standards of students by isorox (Score:1) Wednesday June 13 2001, @09:13PM
  • Automatic or Stick? by renderhead (Score:1) Wednesday June 13 2001, @09:40AM
  • GUI swing etc. by b1nd0x (Score:1) Wednesday June 13 2001, @02:02PM
  • Re:DB programming as easy as VB? by SpryGuy (Score:1) Wednesday June 13 2001, @12:57PM
  • The low level arguement by PinkyAndThaBrain (Score:1) Wednesday June 13 2001, @09:53AM
  • The illusion of understanding how things work... by PinkyAndThaBrain (Score:1) Wednesday June 13 2001, @10:19AM
  • Use both, or all! by Sindri (Score:1) Wednesday June 13 2001, @09:34AM
  • Re:The language is secondary by mitchkeller (Score:2) Wednesday June 13 2001, @10:00AM
  • by CoreyG (208821) on Wednesday June 13 2001, @12:08PM (#154354)
    Also, in Java, there's no way to pass variables by reference. So, in order to have a method change a value that you pass to it, you have to encapsulate it in a class. Either a custom one, or something like Vector - which is not cleaner. Also, teaching someone to rely on Garbage Collection is insane, it teaches someone to write sloppy code. Java is not a cleaner environment, and it doesn't teach people to write cleaner code.

    Obviously you don't understand the language, because your "pass variables by reference" comment is completely inaccurate as shown by this response. [javaworld.com]

    I've seen Java coders who STILL can't figure out how to dispose of memory, basically don't understand the difference between stack and heap, and don't understand pointers well enough to dispose of an element of a linked list.

    Secondly, this is exactly the point of high(er) level languages: To eliminate details that are better solved by the machine, or previously by someone else. I've seen C/C++ coders who still can't produce binary output by hand from their source files. They're so stupid they have to use a compiler.

    No, it doesn't. By virtue of using Garbage Collection, it is taking memory management out of the hands of the developer, teaching people to be lazy when it comes to object instantiation and use

    Garbage Collection is completely unrelated to the concepts of Object Oriented Analysis and Design. Automatic Garbage Collection allows one to focus on solving a problem. Forcing manual garbage collection is a step backwards in any modern language. It's a detail that the machine is better able to deal with, as it should be. Automatic Garbage Collection is a concept that can be applied to many differing programming languages and it is a detriment in none of them.

    So, in order to have a method change a value that you pass to it, you have to encapsulate it in a class

    Or behavior more commonly known as a side-effect. And also best to be avoided when dealing with Object Oriented Programming. A common mistake of many C/C++ programmers is to get caught in the procedural traps introduced and taught by C and adapt those same concepts, wrongly, into their OO work when using C++. This is probably the reason why you think encapsulating your value in a custom class is a poor decision. Maybe you should study the term encapsulation. [elj.com]

    And as for your comments about ease of learning. It may be easier to learn C/C++ (which is the biggest source of problems: C is a procedural language, C++ is not, but the grouping of these two together produces disastrous results), but that ease is because people learn the wrong way to write OO code. Java teaches, or forces, the correct way. After learning the proper way in Java, you'll find that you actually write better OO C++.

    Java allows you to solve problems, C++ allows you to solve details. As an employer, I know which one I'd want you to deal with.
  • Answering the questions... by Tim12s (Score:2) Wednesday June 13 2001, @10:09AM
  • One language is never enough by beth_linker (Score:1) Wednesday June 13 2001, @10:02AM
  • Two different Audiences by yakovlev (Score:1) Wednesday June 13 2001, @09:40AM
  • That depends on your audience... by DarkEdgeX (Score:1) Wednesday June 13 2001, @09:56AM
  • Re:Oh, pleeez.... by DarkEdgeX (Score:1) Wednesday June 13 2001, @10:52AM
  • Re:Oh, pleeez.... by DarkEdgeX (Score:1) Wednesday June 13 2001, @08:04PM
  • Re:Make 'em learn assembler. by gantzm (Score:1) Wednesday June 13 2001, @10:19AM
  • Re:MAKE EM LEARN BINARY!! by gantzm (Score:1) Wednesday June 13 2001, @10:25AM
  • Make 'em learn assembler. by gantzm (Score:2) Wednesday June 13 2001, @09:10AM
  • C first, here's why by extrarice (Score:1) Wednesday June 13 2001, @10:36AM
  • Re:Wrong Direction by d3nt (Score:1) Wednesday June 13 2001, @02:20PM
  • Analogy Workshop by d3nt (Score:1) Wednesday June 13 2001, @02:24PM
  • Educational Language? by d3nt (Score:1) Wednesday June 13 2001, @02:33PM
  • Re:Wrong Direction by bombadill (Score:1) Wednesday June 13 2001, @09:53AM
  • Java as an introductory by B00yah (Score:1) Wednesday June 13 2001, @09:11AM
  • I've seen it done, and I'm not impressed. by Phred T. Magnificent (Score:1) Wednesday June 13 2001, @11:33AM
  • Do your Java programming in Scheme by brlewis (Score:1) Friday June 15 2001, @04:55AM
  • Re:Java better for learning than C++, Scheme? by brlewis (Score:1) Friday June 15 2001, @05:04AM
  • Don't necessarily follow MIT's lead by brlewis (Score:1) Friday June 15 2001, @05:37AM
  • by abdulwahid (214915) on Wednesday June 13 2001, @12:01PM (#154374) Homepage

    And any University with a reputation for letting the education get in the way of future employment for their students is gonna start losing students quickly.

    I can't say that I agree with you. Here in the UK most of the better Universities are the ones that teach more theory whereas the less good ones teach more practical applications. For example, the University that teaches Visual Basic, that I referred to in my comment, is City University. Hardly a University renown for its computer science. Consequently, the computer graduates from there that I have come across know next to nothing. They didn't need a 3-4 year degree to learn Visual Basic programming! Down the road at UCL and Imperial they teach a lot more theory, several languages and guess what, the students that graduate are generally clued up.

    As for employers I think they understand the difference too. I definitely do when I look for people. I know the difference between someone who has done some training and knows particular applications and someone who has studied computing and knows a lot of theory. I usually find a simple set of problems to solve at a job interview weeds out the difference. And I for sure would prefer to employ someone who has a grasp of theory because then they will easily be able to pick up the many different programming languages that we use in our company.

  • by abdulwahid (214915) on Wednesday June 13 2001, @10:08AM (#154375) Homepage

    I agree with you in that Java is fine for an education language but it definitely shouldn't be limited to that. For example, one of the new recruits in my company has just graduated from a university where they were only taught Java. Consequently, he doesn't know what a pointer is, he doesn't know what linking object files means and he doesn't know anything about memory allocation.

    As I see it, University (College) is about education not about industrial training. You shouldn't be taught specific tools at university rather you should be taught theory. That way, when you leave university you will be able to apply your theory to different languages or applications. For example, one of the Universities here in the UK teaches all the programming in Visual Basic. I mean what is that all about? How can you possibly claim you know how to program when all you know is Visual Basic! A good programmer should pick a language to use like a carpenter picks a tool for a job. Different languages are good for different jobs and university should give you the theory so that you can easily understand new languages.

    A university should really teach you a mixture, pure object-oriented (like Smalltalk), imperative (like modula-2 or C), functional (like Miranda) etc. The student will then have firm foundations for being a good programmer.

  • Re:It is a good education language. by TheAJofOZ (Score:1) Wednesday June 13 2001, @03:59PM
  • Marketability of Python/Smalltalk by jaraco (Score:1) Wednesday June 13 2001, @09:55AM
  • Re:Wrong Direction by cmoney (Score:2) Wednesday June 13 2001, @11:33AM
  • What about non-majors? by update() (Score:2) Wednesday June 13 2001, @10:10AM
  • Re:Why not select language as appropriate for topi by dynamo_mikey (Score:1) Wednesday June 13 2001, @10:41AM
  • Re:Either would be better than what I got stuck wi by w.p.richardson (Score:1) Wednesday June 13 2001, @09:17AM
  • After teaching at RIT using Java and C++ by gtaluvit (Score:1) Wednesday June 13 2001, @01:07PM
  • Re:movin' on up by MCZapf (Score:1) Wednesday June 13 2001, @09:51AM
  • What language is this "C/C++" you humans speak of? by Philbert Desenex (Score:2) Wednesday June 13 2001, @09:55AM
  • The Java Effect by crazyaxemaniac (Score:1) Wednesday June 13 2001, @09:38AM
  • Missed Point? by udbknight (Score:1) Wednesday June 13 2001, @03:19PM
  • Re:UW is switching over by HyperbolicParabaloid (Score:1) Wednesday June 13 2001, @09:40AM
  • Isn't Java already a CS Introductory Language? by Darth RadaR (Score:1) Wednesday June 13 2001, @10:16AM
  • Re:Why not select language as appropriate for topi by 'This is false.' (Score:1) Wednesday June 13 2001, @07:05PM
  • Re:Why not select language as appropriate for topi by 'This is false.' (Score:1) Thursday June 14 2001, @12:26PM
  • whoops. correction of quicksort by 'This is false.' (Score:1) Thursday June 14 2001, @12:34PM
  • ACTUAL CORRECTION!!! by 'This is false.' (Score:1) Thursday June 14 2001, @12:47PM
  • Java as a teaching language by TheMadBishop (Score:1) Wednesday June 13 2001, @10:16AM
  • Re:Wrong Direction by Evil Grinn (Score:1) Wednesday June 13 2001, @10:50AM
  • Re:smalltalk? by charvolant (Score:1) Wednesday June 13 2001, @02:26PM
  • Re:Wrong Direction by khendron (Score:1) Wednesday June 13 2001, @10:16AM
  • by ralphbecket (225429) on Thursday June 14 2001, @12:40AM (#154397)
    Good grief. Where does one start?

    Modern programming languages are not based on Ada Lovelace's ideas. They cluster around notions of change of state (imperative languages), function composition (functional programming), or logical deduction (unification based logic languages).

    Hardware is more reliable than software because (a) it's far less complicated, (b) H/W designs start off with a very precise spec., (c) H/W is sufficiently simple that modern formal methods are applicable, (d) most software programmers out there are monkeys.

    Quite how you get from "based on parallel streams of signals" to non-algorithmic (whatever that means) is beyond me. I refer you to the Church-Turing thesis ("all Turing-powerful computational models are equivalent") for which a counterexample has yet to be presented.

    Among the main reasons why many languages are strongly biased towards sequential execution are that (a) it's easy to understand, (b) it has a clear computational cost model, (c) it's easier to design H/W for this model, (d) data dependencies often demand that you work sequentially.

    There are plenty of languages which do focus on concurrency (e.g. Occam) and plenty of schemes for supporting cheap concurrent programming (e.g. the Transputer, data-flow architectures, parallel functional language compilers, lazy functional languages, etc.) although they all have their drawbacks - mainly that the bookkeeping cost tends to seriously water down the naive intuitive expectation that it'll "all just work really fast."

    In my opinion, we have such buggy software because programmers are rarely given a rigorous spec. to start with and are rarely capable of following it properly when they are, and that the most common languages in use today (C, C++, Java, VB, Perl) are unbelievably poor: they have weak type systems, if any, they have weak abstraction mechanisms, and they have absolutely no mathematical underpinnings, and they are very bad at preventing mistakes (I would spend time debunking the "Java's not like that" arguments, but ...)

    This sort of "you're all fools - why can't you just see?" kind of rant really gets up my nose, especially when it's just backed up with an ill-informed wish list.
  • Experience with Java at my University by Sysanalyst (Score:1) Wednesday June 13 2001, @12:01PM
  • EE versus Mathematics by greenfield (Score:2) Wednesday June 13 2001, @10:37AM
  • Re:Java better for learning than C++, Scheme? by tjb (Score:1) Wednesday June 13 2001, @04:03PM
  • Re:Java is an almost perfect language by tjb (Score:1) Wednesday June 13 2001, @04:40PM
  • Re:Java better for learning than C++, Scheme? by tjb (Score:1) Wednesday June 13 2001, @07:26PM
  • Tough Question by spongebob (Score:1) Wednesday June 13 2001, @09:43AM
  • Tough Question by spongebob (Score:1) Wednesday June 13 2001, @09:43AM
  • Re:It is a good education language. by bmongar (Score:2) Wednesday June 13 2001, @11:05AM
  • by bmongar (230600) on Wednesday June 13 2001, @09:12AM (#154406)

    I think Java is a fine education language for the following reasons.
    It is cleaner than C++.
    It is widely and freely avalaible. (though so are many other languages.
    It is being used widely in the industry, and I think educational institutions have a responsibility to realease students with marketable skills.
    As for performance, it is slower than some languages closer to the heart of a computer, but speed is not the point of an educational language, constructs and methodology are. And Java offers all the needed constructs and is good to teach the OOAD methodology.

  • Re:smalltalk? (Score:3)

    by bmongar (230600) on Wednesday June 13 2001, @09:19AM (#154407)

    Smalltalk is much cleaner OO than Java which is much cleaner than C++. I think the main reason Java is chosen over Smalltalk is Java is more widely used in the industry. It is a tradeoff purity versus use, Smalltalk wins in purity and c++ wins in use, but Java is a good middle ground

  • Re:Wide use is not the issue by freakonaleash881 (Score:1) Wednesday June 13 2001, @10:50AM
  • Re:It is a good education language. by Jollyeugene (Score:1) Wednesday June 13 2001, @03:54PM
  • Do and Don't Dos with Java in Our Schools by xenocide2 (Score:1) Wednesday June 13 2001, @01:45PM
  • Python by Anonu (Score:1) Wednesday June 13 2001, @12:11PM
  • by trolebus (234192) on Wednesday June 13 2001, @09:09AM (#154412) Homepage
    I took the grade 11 computer course last year, basically they started us in C/C++ until Christmas and then switched to Java. Needless to say most of the people in this class would not have gone onto do computer nor did they have any experience but I noticed a distinct lack of interest when we swithed to Java. I think it had something to do with re-learning everything but it also had something to do with them finding C/C++ more intuitive. The point remains, whatever you go with, especially at the highschool level, stick with it all year or you will loose half the class right then and there.
    More imporantly if you want to keep as many people interested in computers, especially their first introduction to programming, keep the language simple, worry about whether or not a high level or low level expericne is better later.
  • Re:Wrong Direction by Twylite (Score:1) Wednesday June 13 2001, @11:20AM
  • Re:OOP is good for some things.. by Twylite (Score:2) Wednesday June 13 2001, @10:55AM
  • they're doing it at my school by hawwy (Score:1) Wednesday June 13 2001, @03:59PM
  • Give them COBOL by shik0me (Score:1) Wednesday June 13 2001, @11:08AM
  • Re:Assembly by KagakuNinja (Score:1) Wednesday June 13 2001, @10:07AM
  • Quick observation by thelexx (Score:1) Wednesday June 13 2001, @09:58AM
  • OO is great, but learn something structured first. by BeulahGirl (Score:1) Wednesday June 13 2001, @09:18AM
  • Why start with OOP? by Parapraxi (Score:1) Wednesday June 13 2001, @01:09PM
  • Agree and Disagree by bsbodden (Score:1) Thursday June 14 2001, @04:38AM
  • c is an object oriented lanugage? by cerberusti (Score:1) Wednesday June 13 2001, @08:40PM
  • Re:Wrong Direction by cerberusti (Score:1) Wednesday June 13 2001, @08:47PM
  • Re:Wrong Direction by cerberusti (Score:1) Wednesday June 13 2001, @08:55PM
  • Re:Wrong Direction by cerberusti (Score:1) Wednesday June 13 2001, @08:57PM
  • Re:Assembly?? Which one? Is this a "language"? by cerberusti (Score:1) Wednesday June 13 2001, @09:02PM
  • Re:Wrong Direction by cerberusti (Score:1) Wednesday June 13 2001, @09:08PM
  • Re:Wrong Direction by cerberusti (Score:1) Wednesday June 13 2001, @09:32PM
  • Re:Do not teach ASM. Ever. by cerberusti (Score:1) Wednesday June 13 2001, @09:46PM
  • Re:Nice Elitism by cerberusti (Score:1) Wednesday June 13 2001, @09:50PM
  • RIT by Apreche (Score:1) Wednesday June 13 2001, @09:23AM
  • CS instruction by roberto0 (Score:1) Wednesday June 13 2001, @09:40AM
  • Java Applications considered harmful... by Bonker (Score:2) Wednesday June 13 2001, @09:18AM
  • sometimes complexity is good by direwolf puppy (Score:1) Wednesday June 13 2001, @10:41AM
  • Re:um.. hello, Null Pointer Exception? by tulare (Score:2) Wednesday June 13 2001, @03:44PM
  • You would be correct. by Why Should I (Score:1) Wednesday June 13 2001, @02:15PM
  • question of purpose. by qfajonf (Score:1) Wednesday June 13 2001, @09:52AM
  • by Irvu (248207) on Wednesday June 13 2001, @10:10AM (#154438)

    Agreed. While C\C++ is a good language and lies at the root of Perl and Java it and the imperative paradigm is not the center of the programming Universe. Without exploring languages from other paradimgs such as prolog, Haskell, etc one cannot get a good feel for the different ways to approache a problem. This tends to lead people into such dogamtic fun as the belif that recursion in all forms is "just plain wrong" as my C\C++ teacher put it.

    In terms of which language to start with Java has the advantage over c in that it's syntax is cleaner and has less of the fun archaic elements such as the need for heavy pointer arithmetic. This makes the into learning curve too damn steep. Unfortunately it too is limiting to the iterative world. I'd recommend something like Pascal which was written to be a teaching language (if you must stick with imperative).

    IMHO the best language to start with would be Lisp. It is more mature than python. It is quite tolerant allowing the students to play with less pain. It includes higher level elements such as lists that allows people to get into real programming in shorter order. Rather than forcing them to put off any real programming until after they have mastered the arcane nature of c's memory allocation. Lastly and most importantly as a teaching language it can be used for purely functional, purely iterative, and for object-oriented programming. Thus you can introduce your students to three of the major paradigms (you can do some Psudo-logic programming in it but it just isn't the same as prolog) under one roof. As a result the excess learning time is lessened.

    Irvu

  • Java is great in school by NevarMore (Score:1) Wednesday June 13 2001, @09:26AM
  • Re:Nice Elitism by Lonath (Score:1) Wednesday June 13 2001, @11:25AM
  • Computer Scientist's Haiku by Art_XIV (Score:1) Wednesday June 13 2001, @12:22PM
  • Re:Wrong Direction by waketurbulence (Score:1) Wednesday June 13 2001, @01:10PM
  • There is more to development than.... by Tusaki (Score:1) Wednesday June 13 2001, @10:48PM
  • I took Java in my freshman year... by WebMasterJoe (Score:1) Wednesday June 13 2001, @10:10AM
  • Re:python by tom's a-cold (Score:1) Friday June 15 2001, @08:26AM
  • Either would be better than what I got stuck with by tewwetruggur (Score:2) Wednesday June 13 2001, @09:08AM
  • C for newbies == Shakespeare for first graders by hobuddy (Score:1) Wednesday June 13 2001, @05:52PM
  • Re:smalltalk? by Lwood_at_COG (Score:1) Thursday June 14 2001, @06:15AM
  • Basic Engineering Skills by rohar (Score:1) Wednesday June 13 2001, @01:11PM
  • Should CS course offer language course? by jsse (Score:2) Wednesday June 13 2001, @05:53PM
  • It's all about complexity. by Phredward (Score:1) Wednesday June 13 2001, @09:13AM
  • Begging the question by DivineOb (Score:1) Wednesday June 13 2001, @10:29AM
  • Re:Java is fine for OO by doug363 (Score:1) Thursday June 14 2001, @01:04AM
  • A good free Java Book by AdamInParadise (Score:1) Wednesday June 13 2001, @09:12AM
  • Re:Java is also inappropriate by AdamInParadise (Score:1) Wednesday June 13 2001, @09:22AM
  • by AdamInParadise (257888) on Wednesday June 13 2001, @09:09AM (#154456) Homepage
    Remember that most software development is bespoke (i.e. it will never get out of the company that wrote, for whatever reason).

    And I can tell you that whenever number crunching is not required, Java takes over. Java on the server is really gone rule the business world for the next 10 years (unless .NET...), thanks to Enterprise Java Beans and XML.

    As a learning language, I would say that Java being easier to learn, it's easier to teach OO concepts with Java because you don't have to make sense of this huge thing call C++ first.
  • Java as a CS Introductory Language? by BanjoBoy (Score:2) Wednesday June 13 2001, @10:13AM
  • Re:The language is incidental by NDPTAL85 (Score:1) Wednesday June 13 2001, @12:35PM
  • THANK YOU! by NDPTAL85 (Score:1) Wednesday June 13 2001, @12:53PM
  • Re:Wrong Direction (Score:3)

    by IanA (260196) on Wednesday June 13 2001, @09:28AM (#154460)
    pure genius!

    get a newbie, teach them the hardest concepts!

    calculus should be the first math taught!
    12th grade will be addition of single digits!

    how about you make it so that you learn assembly, then low level c, then basic?! i think the AP class should be MicrosoftBasic!

    stop trying to be karma whore and THINK.
  • Re:IMO... by WillyLane (Score:2) Wednesday June 13 2001, @11:15AM
  • I'm taking Java by Husaria (Score:1) Wednesday June 13 2001, @09:10AM
  • Re:Wrong Direction by Greenisus (Score:1) Wednesday June 13 2001, @10:55AM
  • Language is irrelevant (almost) by zerofoo (Score:1) Wednesday June 13 2001, @07:24PM
  • Whacked out idea by Iron Webmaster (Score:1) Wednesday June 13 2001, @10:37AM
  • Re:Wrong Direction by BryceH (Score:1) Wednesday June 13 2001, @02:00PM
  • C++ Demand by papskier (Score:1) Wednesday June 13 2001, @09:23AM
  • Re:And Knuth (all hail) agrees with you, it seems by majiCk (Score:1) Wednesday June 13 2001, @11:43AM
  • Java is also inappropriate by Dancin_Santa (Score:2) Wednesday June 13 2001, @09:11AM
  • UW is switching over by densun (Score:1) Wednesday June 13 2001, @09:10AM
  • FORTRAN is alive and well by GuyFromAccounting (Score:1) Wednesday June 13 2001, @09:59AM
  • Re:Experience from teaching by bay43270 (Score:1) Wednesday June 13 2001, @07:29PM
  • Re:What I Teach My Students by bay43270 (Score:1) Wednesday June 13 2001, @08:02PM
  • Re:Wrong Direction by bay43270 (Score:1) Thursday June 14 2001, @09:26AM
  • Re:Experience from teaching by bay43270 (Score:1) Thursday June 14 2001, @07:29PM
  • Re:Experience from teaching by bay43270 (Score:1) Thursday June 14 2001, @07:43PM
  • Re:Java is fine for OO by dansan (Score:1) Wednesday June 13 2001, @04:04PM
  • Re:It is a good education language. by eli867 (Score:1) Wednesday June 13 2001, @12:19PM
  • Re:Teach all of them? by dachshund (Score:1) Wednesday June 13 2001, @09:31AM
  • Re:Java/C++ by dachshund (Score:1) Wednesday June 13 2001, @01:02PM
  • Java/C++ by dachshund (Score:2) Wednesday June 13 2001, @09:15AM
  • Re:python by markmoss (Score:2) Wednesday June 13 2001, @02:12PM
  • Re:Software Engineering and Languages by anshil (Score:1) Wednesday June 13 2001, @11:45AM
  • Re:Making Java less slow. by anshil (Score:1) Wednesday June 13 2001, @12:17PM
  • Re:Not quite by micje (Score:1) Wednesday June 13 2001, @07:02PM
  • Re:Not quite by micje (Score:1) Wednesday June 13 2001, @07:21PM
  • Re:python by micje (Score:1) Wednesday June 13 2001, @07:31PM
  • Re:Java as a prelude to C++ by micje (Score:1) Wednesday June 13 2001, @07:48PM
  • Re:UW is switching over by micje (Score:1) Wednesday June 13 2001, @07:54PM
  • Re:It is a good education language. by micje (Score:1) Wednesday June 13 2001, @08:07PM
  • Re:It is a good education language. by micje (Score:1) Wednesday June 13 2001, @08:22PM
  • Re:It is a good education language. by micje (Score:1) Wednesday June 13 2001, @08:37PM
  • Re:Not quite by micje (Score:1) Friday June 15 2001, @04:59AM
  • Zen Analogy by mlamb (Score:1) Wednesday June 13 2001, @09:42AM
  • Language isn't really the issue, is it? by Hormonal (Score:1) Wednesday June 13 2001, @10:40AM
  • If you were on a desert island... by blair1q (Score:2) Wednesday June 13 2001, @09:43AM
  • Re:Er.. by imaginate (Score:1) Wednesday June 13 2001, @12:23PM
  • Different Educational Needs for Different Students by kelv (Score:1) Wednesday June 13 2001, @01:18PM
  • Re:It is a good education language. by kelv (Score:1) Wednesday June 13 2001, @07:43PM
  • Worse things than Java by nicestepauthor (Score:1) Wednesday June 13 2001, @11:29AM
  • This is madness by MSBob (Score:2) Wednesday June 13 2001, @09:31AM
  • Why not Java? by Guib607 (Score:1) Wednesday June 13 2001, @11:59AM
  • Re:Why not select language as appropriate for topi by Migelikor1 (Score:2) Wednesday June 13 2001, @09:34AM
  • Re:Intro OOP languages by hding (Score:2) Wednesday June 13 2001, @09:28AM
  • Re:Why not select language as appropriate for topi by hding (Score:2) Wednesday June 13 2001, @09:55AM
  • Re:Because hot languages = jobs by hding (Score:2) Wednesday June 13 2001, @10:20AM
  • Re:Why not select language as appropriate for topi by hding (Score:2) Wednesday June 13 2001, @10:26AM
  • Re:Why not select language as appropriate for topi by hding (Score:2) Wednesday June 13 2001, @11:19AM
  • Re:Why not select language as appropriate for topi by hding (Score:2) Thursday June 14 2001, @04:48AM
  • by hding (309275) on Wednesday June 13 2001, @09:14AM (#154510)

    For the express purpose of teaching OOP, why not use Smalltalk, which makes it difficult to fall into other methodologies and easy to use OO techniques?

    But as a greater question, why restrict the field to one or a few languages? I'd think that in a CS curriculum (I insert the disclaimer that I came from mathematics and not from such a curriculum) one would want students to explore as many languages and paradigms as possible, ranging all the way from assembler to Prolog. This would presumably encourage a student both to develop many different ways of thinking about any given problem and to be able and willing to select an appropriate tool for any problem encountered. Far too often we see (as evidenced by responses on Slashdot to articles like this one) that many people are rather narrow-minded about language selection and unwilling to deviate from using their one pet language. Why not start to discourage that immediately in the course of formal CS training?

  • Re:Not your father's Java... by 037 (Score:1) Wednesday June 13 2001, @11:24PM
  • Re:Wide use is not the issue by 037 (Score:1) Wednesday June 13 2001, @11:36PM
  • Re:Wrong Direction by synth7 (Score:1) Wednesday June 13 2001, @09:50AM
  • Protected non-OOP lanuage should be used by khyron664 (Score:1) Wednesday June 13 2001, @11:38AM
  • A good compromise by tb3 (Score:2) Wednesday June 13 2001, @09:15AM
  • Back Asswards by MikeyLikesIt! (Score:2) Wednesday June 13 2001, @10:27AM
  • Re:Too Many Important First Concepts for OO by jasonk3 (Score:1) Wednesday June 13 2001, @10:17AM
  • Re:python (Score:4)

    by njug (314066) on Wednesday June 13 2001, @09:51AM (#154518)
    I figured this deserved more than the one line it got. A friend of mine from college said the same thing for his exit interview for the CS major. It's a great introductory language for people. It's complex enough to be worth an entire semester, allows for the teaching of OO techniques, and also doesn't make students feel utterly worthless (as C has been known to do. Do I malloc (amount + 1), or just (amount)? Argh!).

    Python is the perfect way for people to get their feet wet. Especially as it doesn't "break" a person's perspective on what to expect from languages, as perl might. ;)
  • Re:Wrong Direction by SpeelingChekka (Score:1) Wednesday June 13 2001, @01:24PM
  • by SpeelingChekka (314128) on Wednesday June 13 2001, @10:47AM (#154520) Homepage

    I agree that you need to know how a computer works at the low level. But this does extremely little to help you design software with typical real-world requirements - you need to also have experience thinking at a high-level, where the design of software systems takes place. I know many programmers (usually with electronic engineering background, where software development isn't emphasized) who know assembly etc very well, but don't know even the most basic things about object oriented programming, and it really shows through in the software they produce (e.g. having the base class know about ALL types of derived classes and using a "type" variable combined with lots of switch statements in functions to call derived-class-specific code - exactly what virtual functions are there for!). Likewise, I've seen people who have only learned about programming at a high-level, and their coding shows problems, because they don't understand whats going on when their code gets compiled (e.g. not understanding the difference between heap allocation and stack allocation - try "char array[10000000];" inside a function!)

    You absolutely need both, no question. My 1st year CS course at university included introductory assembly as well as object-oriented programming. Personally I think Java is quite a good introductory language, C++ is too complex for beginners, you want to teach the design principles without all the pointer problems etc getting in the way.

    I don't see how you can claim that "teaching java to beginning programmers only encourages sloppy programming". If anything, only teaching assembly would encourage some seriously sloppy programming. You cannot learn good high-level design from only doing low-level programming, thats like saying that you can learn good social skills by studying how neurons in the brain function.

  • Re:Java/C++ by tomoe27 (Score:1) Wednesday June 13 2001, @10:11AM
  • Re:What about Python? by -douggy (Score:1) Wednesday June 13 2001, @05:00PM
  • Re:Because hot languages = jobs by russh347 (Score:1) Wednesday June 13 2001, @07:24PM
  • Re:Objective C by critic666 (Score:1) Wednesday June 13 2001, @10:52AM
  • Re:Assembly by NaturePhotog (Score:1) Wednesday June 13 2001, @12:27PM
  • Too Many Important First Concepts for OO by jeff67 (Score:2) Wednesday June 13 2001, @09:09AM
  • stick: wrong end of... by discreet logic* (Score:1) Thursday June 14 2001, @12:57AM
  • Re:Proof: by lyberth (Score:1) Wednesday June 13 2001, @09:19AM
  • It has to be OO by lyberth (Score:1) Wednesday June 13 2001, @09:32AM
  • java is wonderful by Globulatrix (Score:1) Wednesday June 13 2001, @10:25AM
  • An AP Computer Science Teacher's Point of View.. by Sparky9292 (Score:1) Wednesday June 13 2001, @10:16AM
  • C++ to Java by KingKire64 (Score:1) Wednesday June 13 2001, @09:47AM
  • Re:What about Python? by zauber (Score:1) Wednesday June 13 2001, @12:34PM
  • Re:Java is fine for OO by icoloma (Score:2) Wednesday June 13 2001, @02:17PM
  • Re:What's the difference by OpenSourced (Score:1) Wednesday June 13 2001, @03:15PM
  • What's the difference by OpenSourced (Score:2) Wednesday June 13 2001, @10:11AM
  • Re:Lisp/Scheme!! by jonniesmokes (Score:2) Wednesday June 13 2001, @10:42AM
  • Re:Oh, pleeez.... by JokerBoy3 (Score:1) Wednesday June 13 2001, @03:55PM
  • Re:smalltalk? by cosmo7 (Score:1) Wednesday June 13 2001, @09:31AM
  • Re:Wrong Direction by cosmo7 (Score:1) Wednesday June 13 2001, @09:43AM
  • Java? Try Python! by Tyler Eaves (Score:1) Wednesday June 13 2001, @09:11AM
  • Re:My experience by gbender (Score:1) Wednesday June 13 2001, @11:37AM
  • It doesn't really matter by jtshaw (Score:1) Thursday June 14 2001, @07:33AM
  • Intro OOP languages by neutron2000 (Score:1) Wednesday June 13 2001, @09:22AM
  • Re:Wrong Direction by neutron2000 (Score:1) Wednesday June 13 2001, @11:59AM
  • Re:Particular languages don't matter much by skunkeh (Score:1) Wednesday June 13 2001, @04:16PM
  • Python python python python python! by skunkeh (Score:1) Wednesday June 13 2001, @04:37PM
  • Java at SUNY Oswego by HohlerMann (Score:1) Wednesday June 13 2001, @12:08PM
  • Re:smalltalk? by bark76 (Score:1) Wednesday June 13 2001, @06:23PM
  • Re:Not quite (Score:3)

    by bark76 (410275) on Wednesday June 13 2001, @06:18PM (#154550) Homepage
    What part of the OO paradigm does Smalltalk not support?

    • Polymorphism? Nope, Smalltalk does that. C++ and Java do this too (C++ use to cheat at this, but not anymore)
    • Encapsultation? Every version of Smalltalk I've used enforces this, there's no way around it. C++ and Java don't enforce encapsulation
    • Inheritance? How many OO languages don't support this :) Multiple Inheritance is an ugly thing that never should have been thought of. Any program that has to use it wasn't designed right, using this is as bad as using friends in C++.
    • Interpretted? C++ isn't true OO because of this (if you talk to an OO purist at least, I consider C++ to support OO, not be an OO language), Java cheats at this, Smalltalk doesn't

    Looks like Smalltalk enforces every OO paradigm I can think of.

    Getting back to the topic of Java as a teaching tool, I don't see the problem with it. You can teach OO with it, you don't have to worry about pointers, and it makes you marketable (OT - I still get quite a few Smalltalk job offers, so it's still useful in the workforce).

  • Languages you should learn by canadian_right (Score:1) Wednesday June 13 2001, @09:33PM
  • What's the deal with languages? by pHDNgell (Score:1) Wednesday June 13 2001, @11:39AM
  • Having worked in so-called Adult Education... by IBitOBear (Score:1) Thursday June 14 2001, @09:58AM
  • (CORRECTION) by IBitOBear (Score:1) Thursday June 14 2001, @10:01AM
  • Why math/science likes FORTRAN by Spacecomber (Score:1) Wednesday June 13 2001, @12:42PM
  • Java is stupid by robvasquez (Score:1) Wednesday June 13 2001, @03:59PM
  • The real problem is: how far do you peel back the onion? Why stop with assembler?

    Thirty years ago, I learned machine code to program the PDP-8. Why not teach that today? Or why not go further down and teach VLSI processor design, or semiconductor physics?


    Semiconductor physics has nothing to do with computer science. VLSI processor design is not fundamental anything, but an engineering discipline based on a particular fabrication technology (more-or-less 2D semiconductor electronics).

    Learning the machine code is part of learning assembler. A small part. There's no need to memorize it, just to be able to assemble by hand to understand what's going on (with references, of course). A few hours doing such exercises should suffice.

    Once this is learned, assembler is a simple convenience giving full control over the machine code with fewer headaches.

    A CS student certainly should learn about logic gates and how they build up into addition, multiplication, RAM, etc. This is also fundamental CS. How to build these gates from transistors (or vacuum tubes, or tinker toys) is not, and should be left to the engineers.

    If you don't understand how a functioning computer is built out of logic components, you have no theoretical basis for why one operation should be slower than another, or why there is limited memory. Without this base, all programs that work are equally good, and if one works slower than another in practice, or can't run because it needs too much memory, it is merely a quirk of the hardware design. A machine could be built which always sorts any billion entries in the same amount of time as it takes for it to add two 32-bit numbers, machines are built which take the same amount of time to multiply as to add, but addition is fundamentally simpler and faster than multiplication, and adding two 32-bit numbers is certainly fundamentally faster than sorting a billion entries. The supersorter is a quirky machine, but without knowing about the gates from which all digital computers are built, you have no valid mathematical basis for saying so.

    Similarly, if you don't know anything about machine language, you have no reason for saying why one HLL program should run faster than another, or which will consume more memory.

    The heart of CS is the interaction between the gate logic and the data fed into the gates. Anyone who doesn't understand the fundamentals of this interaction is not remotely a computer scientist. Learning a machine language is making one case study.
    --
  • Is java a better CS learning utlity? by nazkilla (Score:1) Wednesday June 13 2001, @08:45PM
  • Re:Make 'em learn assembler. by nazkilla (Score:1) Wednesday June 13 2001, @09:00PM
  • Make CS student's lives harder! by mrtrumbe (Score:1) Wednesday June 13 2001, @11:16AM
  • Re:Because knowing CS = jobs by wickamos (Score:2) Thursday June 14 2001, @06:12AM
  • Inner workings by kronin (Score:1) Wednesday June 13 2001, @02:40PM
  • first hand experience by bees_man (Score:1) Wednesday June 13 2001, @09:57PM
  • Re:Too Many Important First Concepts for OO by Magumbo (Score:2) Wednesday June 13 2001, @09:48AM
  • Re:Wrong Direction by jamith (Score:1) Thursday June 14 2001, @04:02AM
  • C/C++ vs. Java in the Education Realm by saveth (Score:1) Wednesday June 13 2001, @10:55AM
  • High and Low Level by certsoft (Score:1) Wednesday June 13 2001, @10:22AM
  • i would teach eiffel by edrugtrader (Score:1) Wednesday June 13 2001, @04:18PM
  • You need to understand the machine first. by catslaugh (Score:1) Wednesday June 13 2001, @09:19AM
  • Good Teaching Language by Phunky Monkey (Score:1) Wednesday June 13 2001, @09:11AM
  • Re:Experience from teaching by Ybrog (Score:2) Wednesday June 13 2001, @12:58PM
  • For reference... by inc0gnito (Score:1) Wednesday June 13 2001, @09:55AM
  • languages are irrelevant (when starting) by haruharaharu (Score:1) Wednesday June 13 2001, @11:02AM
  • Re:Wrong Direction by haruharaharu (Score:1) Wednesday June 13 2001, @11:07AM
  • Re:Disagree with starting with assembler.... by haruharaharu (Score:1) Wednesday June 13 2001, @11:33AM
  • Scheme? Python? Haskell? Whatever by rjljr (Score:1) Thursday June 14 2001, @04:47AM
  • Re:language choice by rjljr (Score:1) Thursday June 14 2001, @05:29AM
  • Re:Wrong Direction by Tachys (Score:1) Wednesday June 13 2001, @04:59PM
  • Learning Language by zoombah (Score:1) Wednesday June 13 2001, @09:17AM
  • Re:What about non-majors? by knightbg (Score:1) Wednesday June 13 2001, @10:47AM
  • Re:Wrong Direction by sethbag (Score:1) Wednesday June 13 2001, @01:10PM
  • What are you learning? by The Panther! (Score:1) Wednesday June 13 2001, @12:30PM
  • Learning on Java? by steddyj (Score:1) Wednesday June 13 2001, @10:06AM
  • my mind is changed by niall111 (Score:1) Wednesday June 13 2001, @09:44AM
  • Java not good intro language to languages.. by machinegt (Score:1) Wednesday June 13 2001, @12:51PM
  • My experience of learning programming language by wubc (Score:1) Wednesday June 13 2001, @10:18AM
  • Flamebait by blang (Score:2) Wednesday June 13 2001, @12:09PM
  • C++ is NOT hard to learn!! by viva1917 (Score:1) Wednesday June 13 2001, @04:34PM
  • As a learning language, it did me no harm by ryszards (Score:1) Wednesday June 13 2001, @12:19PM
  • Java as an introductory language by gallenarlen (Score:1) Wednesday June 13 2001, @11:13AM
  • Java training considered harmful. by more (Score:1) Wednesday June 13 2001, @12:08PM
  • Understandability vs Power by Violet Null (Score:1) Wednesday June 13 2001, @09:18AM
  • Learn to learn by ryochiji (Score:2) Wednesday June 13 2001, @01:08PM
  • OO a flawed introductory method for first year by zero2k (Score:1) Wednesday June 13 2001, @01:11PM
  • Blue by The Original Yama (Score:1) Wednesday June 13 2001, @10:24PM
  • Java hits the sweet spot ... by nicodaemos (Score:1) Wednesday June 13 2001, @10:41AM
  • by absurd_spork (454513) on Wednesday June 13 2001, @09:13AM (#154597) Homepage
    I have been using Java for CS teaching for some time. It is not the funniest language for people to learn, mainly because you have to get yourself a thorough knowledge of Sun's standard libraries and their class hierarchy.

    The main advantage of Java over C and C++ (and the reason why C and derivations are discontinued as teaching tools in my university) is it's relative platform-independence. When you want to test the programs that people have written at home, it's a real pain in the ass to get their Borland C++ programs running under Linux, you know. This disappears with Java.

    On the other hand, Java is not the most highly structured language, especially in recent versions. That greatly lessens its didactic qualities; I have had several students here who started to experiment with all sorts of arcane features like inner classes and operator overloading without learning how to write good programs first. It's a bit like comparing Niklaus Wirth's original Pascal to Borland Delphi. Deplhi is more powerful, but you need a thorough knowledge of the class hierarchy and in order to deliver good OO programs, you have to be a good OO programmer beforehand.

    Therefore, I now prefer either more systematic languages like Eiffel, or script-like languages like Python - the first for their higher level of abstraction and cleaner design, the latter for their greater ease of use and wider field of applications. Both are, in my opinion, better suited as didactic tools for learning OO programming.

    And BTW, over here in Germany the high dependence on symbols such as {} or [] or /**/ is a didactic problem in itself because these aren't so easily reached on a German keyboard. This may sound harmless, but we get endless complaints from people who hate to perform strange Alt+Key acrobatics to get a simple thing like a curly brace.

  • What is the goal of the CS program of your school by mrcherba (Score:1) Wednesday June 13 2001, @12:39PM
  • Pascal is the ideal first programming language by ColGraff (Score:2) Wednesday June 13 2001, @02:50PM
  • That depends by ColGraff (Score:2) Wednesday June 13 2001, @02:59PM
  • I'm a 13-year old and... by communist rabbi (Score:1) Wednesday June 13 2001, @12:40PM
  • Re:Too Many Important First Concepts for OO by ruszka (Score:1) Wednesday June 13 2001, @09:19AM
  • Why just one language? by zamurai (Score:2) Wednesday June 13 2001, @05:41PM
  • 2 different subjects: OOAD and Programming by ShelfWare (Score:1) Wednesday June 13 2001, @10:13AM
  • Re:Java isn't good to teach professional programme by ShelfWare (Score:2) Wednesday June 13 2001, @10:41AM
  • C/C++ is not a language by Anonymous Brave Guy (Score:1) Wednesday June 13 2001, @01:15PM
  • It's not about the business world! by Anonymous Brave Guy (Score:1) Thursday June 14 2001, @02:43AM
  • Re:C/C++ is not a language by Anonymous Brave Guy (Score:1) Thursday June 14 2001, @04:21PM
  • Java is wrong for most programming tasks by Belly of the Beast (Score:1) Wednesday June 13 2001, @02:35PM
  • Algorithms first by Anomolous Cow Herd (Score:1) Wednesday June 13 2001, @09:24AM
  • Java is too young and too bloody for intro student by Gyrfalcon_255 (Score:1) Wednesday June 13 2001, @09:14AM
  • Re:It is a good education language. by RetsamYthgimla (Score:1) Wednesday June 13 2001, @11:07AM
  • MAKE EM LEARN BINARY!! by spammy the clown (Score:2) Wednesday June 13 2001, @10:13AM
  • it's a trade.. by MrSquish (Score:1) Wednesday June 13 2001, @01:16PM
  • The importance is general utility not just theory by hanenkamp (Score:1) Wednesday June 13 2001, @09:38AM
  • Comments, and how it's done at my school by NoBeardPete (Score:1) Wednesday June 13 2001, @10:55AM
  • It's computer-SCIENCE by mashedpotatoes (Score:1) Wednesday June 13 2001, @10:36AM
  • My take on this by _avs_007 (Score:1) Wednesday June 13 2001, @01:15PM
  • oh really? by _avs_007 (Score:1) Wednesday June 13 2001, @01:33PM
  • actually by _avs_007 (Score:1) Wednesday June 13 2001, @07:20PM
  • Re:The language is incidental by dghcasp (Score:1) Wednesday June 13 2001, @11:25AM
  • In defense of theory by active_low (Score:1) Wednesday June 13 2001, @09:57AM
  • UnrealScript by austinf (Score:1) Wednesday June 13 2001, @09:42AM
  • Re:smalltalk? by Anomynous Cowand (Score:1) Wednesday June 13 2001, @10:40AM
  • Usage of Java in Colleges by kickitin (Score:1) Wednesday June 13 2001, @11:12AM
  • I see no threat by gers0667 (Score:1) Wednesday June 13 2001, @11:08AM
  • Personal experience by Gin + Sol (Score:1) Wednesday June 13 2001, @12:06PM
  • Learning Computer Science by ACupOfCoffee (Score:1) Wednesday June 13 2001, @11:32AM
  • Language Independent by DPalomo (Score:1) Wednesday June 13 2001, @11:24AM
  • Re:Wrong Direction by sylar (Score:1) Wednesday June 13 2001, @12:16PM
  • Java as an introductory language to what? by alpot (Score:1) Wednesday June 13 2001, @11:56AM
  • Re:My experience by BUDDYHACKIT (Score:1) Wednesday June 13 2001, @12:03PM
  • At least your school TEACHES java by pimpinRob (Score:1) Wednesday June 13 2001, @01:13PM
  • better off with Algol 60 by anany02 (Score:1) Wednesday June 13 2001, @01:25PM
  • Basic Concepts by tempestOfFire (Score:1) Wednesday June 13 2001, @03:47PM
  • Smalltalk, C++, or Java in the first year by phi beta breakfast (Score:2) Wednesday June 13 2001, @09:37PM
  • Re:Too Many Important First Concepts for OO by robchatley (Score:1) Thursday June 14 2001, @12:53AM
  • Re:It is *NOT* a good education language. by lisp-hacker (Score:1) Thursday June 14 2001, @03:37AM
  • Re:Lisp/Scheme!! by hailperin (Score:1) Thursday June 14 2001, @10:45AM
  • Too odd to be intro language... by archer305 (Score:1) Friday June 15 2001, @08:27AM
  • Re:C/C++ is not a language by aal5pdu (Score:1) Saturday June 16 2001, @11:10AM
  • Teaching Experience by aal5pdu (Score:1) Saturday June 16 2001, @11:34AM
(1) | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13