Slashdot Mirror


Should Students Be Taught With or Without an IDE?

bblazer asks: "Beginning this next school year, there is a strong possibility I will be teaching an intro to Java and an intro to Python course at the local community college. I was wondering what the prevailing wisdom is when it comes to teaching languages - should students be taught with or without an IDE? I am a bit old school and wouldn't mind having them all use vi or emacs, but using a good IDE does have some advantages as well. I should note that the students I will be teaching will have had at least 1 semester of programming in VB or C++." Even though there is limited time in a semester, could a curriculum be constructed to accommodate both methods?

848 comments

  1. forgive my ignorance by markass530 · · Score: 0, Troll

    but what is an IDE? In the case you are reffering to?

    1. Re:forgive my ignorance by Jayschwa · · Score: 1

      IDE means integrated development environment. Something like Visual Studio would fall under this.

    2. Re:forgive my ignorance by Anonymous Coward · · Score: 4, Funny

      Dumbass. Integrated Drive Electronics interface, one of the most popular hard drive interfaces. If you or the author of the article would have simply used Google, you would find that information and the author would know that using IDE sucks and SCSI is like way better.

    3. Re:forgive my ignorance by Anonymous Coward · · Score: 1, Funny

      Fuck you, SATA FTW.

  2. I would say IDEs by Navreet · · Score: 2, Insightful

    They'll help students avoid silly mistakes, e.g. if they're trying to use a variable that is out of scope it might not autocomplete, etc. So, they might catch some mistakes and learn to avoid them before they hit compile.
    I would let the students chose... Ofcourse, you might have to teach them how to create a project with an IDE, too.. [instead of just supplying the make files].

    1. Re:I would say IDEs by acroyear · · Score: 4, Insightful

      no.

      as long as they trust the editor to catch their mistakes, they'll never actually learn to avoid them; they'll simply let the IDE be their guide and never learn it.

      similarly, as long as they can debug in the IDE, they'll never learn real debugging techniques that the "cold metal", or even just debugging a running server they can't get an IDE into.

      They should learn to program as close to the raw as possible. notepad, command line, debugging through prints.

      They should learn software development separately, with an IDE, with integrated debugging and complex build systems. Learning to program, and learning to be a good software developer are two separate things.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    2. Re:I would say IDEs by IgLou · · Score: 2, Insightful

      I would say they need to be taught both. The IDE conceals certain activities (checkin/checkout/version control/branching) that students should become familiar with and the also need to function without these. I work in Configuration Management and I've seen people come in fresh into the field that have no understanding of even version control (or builds, shudder)... that's a bit rough.

      I think to survive programming in the industry you need to know how to function with the IDE for larger shops with detailed processes and for smaller teams or environments where none would exist. Now that said, I think even the smallest of development requires some type of version control by a repository it should be something everyone knows how to do. That said, I wouldn't expect anybody trained in programming to come right out of school knowing how to implement a development process integrated with version control, QA, and software builds. But you should have some understanding how this all impacts your day to day work.

      Oh and FYI if you look at doing this with Visual Studio 2005 and Team Foundation, you should introduce your students to defect tracking and QA processes to because it's all integrated there. Anyways, just my 2 cents.

      --

      Oops, how did this get here?
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    3. Re:I would say IDEs by acroyear · · Score: 2, Insightful

      anonymous asshole, i've been in the *real* world for 15 years. i've seen so many slaves to IDEs who can't design or write real programs for shit that i absolutely dread interviewing new candidates.

      i want people who know how to program, for whom the IDE is a tool to make their accurate and creative thought process real. instead, i get people who don't know shit and let the IDE do all the thinking for them.

      the IDE is a great tool for software development. for learning to program, it creates a handicapp that never goes away.

      now if you really want any respect for your own opinion, sign your fucking name to it.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    4. Re:I would say IDEs by rossifer · · Score: 5, Informative

      no.

      as long as they trust the editor to catch their mistakes, they'll never actually learn to avoid them; they'll simply let the IDE be their guide and never learn it.


      Exactly. I've been developing software for 12 years and I still go back to emacs whenever I want to learn a new technique, technology, or toolkit. The dev work may take a little bit longer, but I learn so much more when I have to search through directories or look up an interface in the documentation that you just don't get with an IDE.

      I strongly recommend staying close to the metal as possible when learning, then gradually getting more abstracted as your grasp of the underlying skill develops.

      (The AC is probably one of that group of programmers whose code I have to rewrite, but I guess we'll never know for certain... :-)

      Regards,
      Ross

    5. Re:I would say IDEs by supertoad · · Score: 1

      i completely agree. i took an introductory java course last year using netbeans, and enjoyed it, and learned how to write some decent code. this year i had to take the same course over again due to some credit transfer screwups, and it was taught using textpad. i found that programming without the ide taught me to understand why my program was working, not just what keywords to enter onto the screen. also, programming without the help of any debugging tools is very helpful

    6. Re:I would say IDEs by chainLynx · · Score: 1

      My advice would be to teach, but with a minimalistic IDE. You shouldn't teach an intro course with something like eclipse that auto-fills everything; students won't learn the core concepts then. However, throwing them into a vi/emacs environment when some have hardly programed before is probably the best way to produce uninterested students. Most will just think they're in way over their heads with the amount of stuff (UNIX commands, vi/emacs commands, programming concepts, makefiles, etc.) that they need to learn. However, a minimalistic IDE will teach them the core programming concepts and not hide any important stuff from them, but hide all the associative stuff that they can learn later.

    7. Re:I would say IDEs by Anonymous Coward · · Score: 5, Funny

      Exactly. I've been developing software for 12 years and I still go back to emacs whenever I want to learn a new technique, technology, or toolkit. The dev work may take a little bit longer, but I learn so much more when I have to search through directories or look up an interface in the documentation that you just don't get with an IDE.

      Whenever I'm trying to learn something new I get out the hard drive and move the bits around myself. IDEs like emacs just get in the way.

    8. Re:I would say IDEs by nihaopaul · · Score: 1

      well if it helps i develop alot with html/css i understand this isn't a programming language but what i have to say relates.

      i learnt html using dreamweaver, it was a pain and i didn't understand why things were showing differently, then css was developed and still i used dreamweaver wysiwyg features and still didn't understand why things were showing differently, i then fell in love with css2 and started really using it, i switched from the wysiwyg to code view over night and really got dirty with it, i still use dreamweaver in code view and never have on the wysiwyg mode simply because my code looks nicer, but the main point is, if i can't remember a css name i'll jump into the css editor in dreamweaver and click the option i was trying to remember.

      i really like the eclipse project with its auto compleation and its indenting and colouring but i have no problem falling into notepad to edit or ee :) (yes ee!)

      me

    9. Re:I would say IDEs by ronanm · · Score: 5, Insightful

      debugging through prints.
      Now I remember why I hated programming.

      I'm going to disagree with the parent and say IDEs. Although I think his point about software development and programming being two separate things has merit.

      They should - although you shouldn't assume - have already been taught how to programme. Are they're going to use an IDE when they leave college? You are supposed to be training them for the work place.

      First and foremost - teach them good practice, tight simple modules with good comments.

      Introduce them to an IDE, show them a couple if you've got time. Assign them tasks using the IDE. Go through the source code line by line. (starting at the end?) Write some really crappy code and get them to fix it using the IDE. Chuck out the IDE and get them to fix more crappy code using whatever masochistic tool you like. Have them debug each others work.

      What I'm saying is try to replicate your experiences of the real world as much as possible. Just because IDEs weren't available when a lot of us were being taught doesn't mean we have to perpetuate a crappy situation.

      Teach them to be efficient and fast - show them how to use what's available to them so they're not reinventing the wheel.

      Ok, now that I've written efficient, we're going to have people argue that IDEs don't produce efficient code. One word... Java?

      Ronan

    10. Re:I would say IDEs by Anonymous Coward · · Score: 4, Insightful

      I still think that you are wrong. IDE's have their place in beginning CS classes. You shouldn't be screwing around in vi/emacs trying to figure out how to type at all. Command line proves nothing. Some of the best programmer's a know use both GUI's and command line. I personally use almost all command line tools, but that's from personal choice. I don't think the youngsters should be sitting around scratching their ass trying to figure out vi, gcc, or make when the class is about learning a frikken language. They can do that in round 2 after their appetite for PROGRAMMING has been whetted

      love,
      Anonymous Coward.

    11. Re:I would say IDEs by krunk4ever · · Score: 2, Interesting

      not saying what you said isn't insightful, but what you said is like saying people should type essays without a spell checker. honestly, you won't be able to use an IDE if you didn't know how to program. IDEs make it simpler by catching simple and common mistakes like forgetting to close your braces or missing an ending parenthesis. forgot which method it was called, no need to open the source code again, just have it display all the method names of the given class. it's not like the IDE will magically write code for you if you didn't know what you wanted.

      using an IDE has nothing to do with learning debugging in my opinion. most IDEs themselves already contain great debugging tools, unless you're thinking about the non-GUI ones. at that point, it's just preference, both debuggers are just as powerful, one having advantages that the other doesn't, but also has disadvantages the other doesn't.

      I agree when you first learn, notepad would be useful to teach skills, but by the time you get to even like emacs or vi, they already come with a bunch of tools like auto-ident and coloring (which is another thing that IDE supports). IDE makes life easier, and that's that. Just like a spell checker or autoformatting document. even with a spell checker and grammer checker, one still needs to double check for mistakes that the tools don't see. if you think a spell checker finds every problem, you're wrong. Just like those who have the same mentality of an IDE.

    12. Re:I would say IDEs by MimsyBoro · · Score: 2, Informative

      I would just like to back the parent up.

      And although it might be considerd karma-whoring I would like to post a link to a great article: Does visual studio rot the mind?.

      I think this is true, although the author of the article does agree, he then continues to say that VS is a necessary evil, well I guess he just hasn't met emacs yet (or vi for you vi-fans out there)

      --
      God made the natural numbers; all else is the work of man - Kronecker
    13. Re:I would say IDEs by aero2600-5 · · Score: 3, Insightful

      As a CS major, I say mod this AC up. He has a great point in that a programming class should be about learning the language, not VI, EMACS, or screwing around 0 ith the command line. The parent's post would be a good way to scare off future programmers.

      As for the question of whether or not you should use an IDE to teach a language class, I think using a text editor and CLI has the potential to be just as confusing as a bloated IDE. I recommend one of the slim IDEs, such as JCreator LE, Textpad, or Dev-C++. They're all light, do very little work the student, but make sure no one is hunting around for a make file.

      Aero

      --
      Please stop hurting America -- Jon Stewart
    14. Re:I would say IDEs by Anonymous Coward · · Score: 0

      Holy shit! That's a long sentence!

    15. Re:I would say IDEs by c0nman · · Score: 1

      If you can not figure out vi, emacs, or any other cli text editor then why should we trust your programming?

      Understanding the BASICS should be required.

      Earlier someone compaired an IDE to a spell checker. An IDE does much more and is a grammer checker as well.

      Do we teach english classes with grammer checkers? (substitute your own language if not english)
      no.

      Do we teach spelling with spell checkers?
      I sure as hell hope not.

      Then why should we teach programming with an IDE?

      Hell, IDE's don't even pass lint most of the time. What does that show? And if you don't know what lint is then put away your IDE for a month(outside of work) and go back to the basics. Learn on your own and stop being lazy.

    16. Re:I would say IDEs by Schraegstrichpunkt · · Score: 1
      i want people who know how to program, for whom the IDE is a tool to make their accurate and creative thought process real. instead, i get people who don't know shit and let the IDE do all the thinking for them.

      And you think by taking away their IDEs, they'll suddenly become good programmers? Please.

      the IDE is a great tool for software development. for learning to program, it creates a handicapp that never goes away.

      I'd say that it's more a case of IDEs helping crappy programmers get their projects nominally done, more than anything else. So far, I have yet to see anyone make a convincing case that an IDE actually impedes the work of a good programmer.

      On the other hand, I use vim...

    17. Re:I would say IDEs by Schraegstrichpunkt · · Score: 1
      If you can not figure out vi, emacs, or any other cli text editor then why should we trust your programming?

      It's an introductory class. I'm not going to trust the programming of people who have only had an introductory class, regardless of the editor they use.

      Hell, IDE's don't even pass lint most of the time.

      Huh? Nobody's suggesting automatic code generation... I hope.

    18. Re:I would say IDEs by MighMoS · · Score: 1

      I think this is slashdot gone way too fucking far.

    19. Re:I would say IDEs by Impy+the+Impiuos+Imp · · Score: 1

      as long as they trust the editor to catch their mistakes, they'll never actually learn to avoid them; they'll simply let the IDE be their guide and never learn it.

      Why shouldn't the editor help out if possible?

      Hell, why shouldn't the language itself? Very few applications need optimized code for speed, and the compiler will probably do a better job of it anyway. Let the language initialize pointers and worry about deferencing them. Better yet, hide pointers entirely -- the programmer works with structures, which always exist, and never with pointers to structures.

      "But the OS has many API functions that take pointers to structures."

      Yes, that's a flaw of the OS design.

      Eh, just as everybody should get trained in an assembly language, so too in LISP. The beauty of a simplified, built-in data structure is beyond compare. Everything you write handles arbitrary data type inputs, including lists of data. Very orthogonal and robust. But you all run off to Java because that's what someone shoved in front of your face and said, "Jump, froggy!" Nevermind that it translates to C++ about as readily as an "easy" cryptogram in a crossword puzzle translates to English.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    20. Re:I would say IDEs by moonbender · · Score: 4, Insightful

      I couldn't disagree more. Searching through directories is time you wasted, not time you spent learning a language. You learn a language by using it and by reading about it - both of these tasks are made easier by a good IDE. Javadoc integration makes APIs discoverable, just like well designed user interfaces are discoverable. You don't ever need to leave the IDE to read the documentation, because it's right there. Of course auto-complete helps when you're in doubt, but there's nothing wrong with that. There isn't much merit to knowing a billion function prototypes by heart, those are details you shouldn't worry about, bigger things are much more important. And stuff like for example the highlighting of other instances of a selected variable is just crucial when you need to understand a large piece of code written by somebody else.

      IDEs make programming easier to learn and more efficient. I still don't think he should spend a lot of time integrating it into his class. Tell them about the existance of IDEs and let them figure it out themselves.

      --
      Switch back to Slashdot's D1 system.
    21. Re:I would say IDEs by Impy+the+Impiuos+Imp · · Score: 1

      vi? emacs?

      Real men use Notepad.exe.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    22. Re:I would say IDEs by ericzundel · · Score: 1

      It is hard to believe that all these folks saying "learn without an IDE" have done both. I remember learning to program in many different languages during college. For these, I used the 'emacs' and 'vi' method (the teachers didn't even teach us to use 'make'). Learning the syntax of a new language is tough, and someitmes the 'raw' compiler messages aren't very helpful. Of course, this was supposed to be a difficult course, so it was important to make things as difficult as possible. But I got pretty good at it over about 15 years as a professional programmer. But, if you are not intending to teach a flunk-out make it really difficult course and are more interested in teaching a course about programming concepts, by all means, USE THE IDE! With an IDE like eclipse or Visual Studio, you get informed of silly stupid syntactical mistakes right away, hight lighted in red with a suggestion about what to do to fix it. If they never get to program again in that language, at least they have had some sucess using the concepts and didn't end up with a tangled up mess because they struggled all night just to get the damn thing to compile! I only used an IDE on a regular basis starting about 3 years ago when learning Java. I was productive in the language almost right away, even though in many ways, I didn't know what the hell I was doing. For an object oriented language with lots of classes, it is a huge handicap NOT to use an IDE. You can think about what you are trying to get done, not about reading through tons and tons of code you didn't right trying to figure out how to use it.

    23. Re:I would say IDEs by martinultima · · Score: 1

      Maybe it's just a matter of personal preference – not sure about anyone else here, but I've tried both IDE and ordinary text-editor setups, and have always found that I just prefer working with good old vim. Once you get used to all the commands it's addictive – sometimes I find myself trying to [ESC] :wq a Web form, I'm that used to it now – and not to mention just so much faster.

      (Most of the time I tend to work with PHP, Python, and shell scripts, if it helps)

      --
      Creative misinterpretation is your friend.
    24. Re:I would say IDEs by Zork+the+Almighty · · Score: 1

      It was probably generated by autocomplete :)

      --

      In Soviet America the banks rob you!
    25. Re:I would say IDEs by nblender · · Score: 2, Interesting
      I've been developing software for 25 years. I hate to break it to you but Emacs is an IDE. I don't get all you emacs kids. I've been using 'vi' for most of my conscious life. I use 'grep' and 'man' to look up types and API's. Recently my corporate overlords forced fed an IDE down my throat but my productivity returned once I determined that it was calling gcc, g++, gdb and gprof.

    26. Re:I would say IDEs by TrekCycling · · Score: 3, Insightful

      I think that's a tougher call, really. I learned every language I currently use (and HTML) doing bare to the metal programming in Pico or JEdit, etc. I think it served me well. I personally think there are two ways to look at it.

      IDE Way - The students will probably be able to develop faster and thus you can progress more quickly through more ideas and thus you can perhaps get more accomplished. Plus they can gain experience with the ins and outs of classpaths, IDE installation, things like that that they'll need to learn eventually anyway for real world Java development.

      Non IDE Way - They might get through 4/5ths of the above lesson plan, but on the flip side they'll be closer to the metal, as someone already said and they'll learn to develop good style habits from the start and to debug even when they have no tool to lean on, just the JDK.

      I personally would go with #2, but it depends on what you want to set out to accomplish. If you want to get deep into the language, #1 might be the way to go. But if you want to make sure they can truly walk before running, definitely #2.

    27. Re:I would say IDEs by Anonymous Coward · · Score: 0

      Too bloody right! I looked at IDE and said to myself "Integrated Drive Electronics"? Why should that or SCSI or RLL or MFM make any kind of difference to a developer?

      And now there isn't a single explanation of what IDE /is/ anywhere after 12 hours of comments??! Am I the only one who doesn't know what it is?

      Posting as AC do I don't get my geek card revoked.

    28. Re:I would say IDEs by acroyear · · Score: 1

      IDEs make learning a severe dependency on the IDE possible, and based on my experience, likely.

      there will come a time where there is no IDE to work with, like using Ajax, where you have to write a component in 6 different languages - XML, HTML, HTTP, Javascript, CSS, and your server language - and MOST of those won't have decent IDE support. if you can't escape that handicapp, then i don't want you working for me.

      period.

      (Note: i would support at the very least a syntax-sensitive editor with color highlighting, but even then someone could just learning to recognize colors, not learning to read the language, and that can hurt them later on.)

      again, *programming* and *software development* are two different things. IDEs are great for software development, but IDEs have also created a world where i see a ton of shitty programmers.

      and shitty programmers aren't terribly good at software development.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    29. Re:I would say IDEs by acroyear · · Score: 1, Insightful

      I'd say that it's more a case of IDEs helping crappy programmers get their projects nominally done, more than anything else. So far, I have yet to see anyone make a convincing case that an IDE actually impedes the work of a good programmer.

      I never said otherwise. I never said that an IDE impedes work of a good programmer (I was an emacers for years and now swear by eclipse, mostly for its refactoring tools, but then again, refactoring is part of software development, not programming). I said an IDE impedes the process of becoming a good programmer.

      One of my interview questions is what IDE do they use and specifically what features do they use it for.

      If I get someone who says they use Eclipse or Netbeans for its refactoring support, it shows me they really know what they're doing.

      so far, i haven't even had a candidate in the last 2 months that could even say what refactoring is.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    30. Re:I would say IDEs by acroyear · · Score: 1

      You are supposed to be training them for the work place.

      Every college professor in the world will disagree with you. University is a place for learning how to learn, not a trade school for the job market.

      If you get the job training as part of it, fine, good, its a great program you're in. But if you don't learn what a University is supposed to refine, I don't want you around my code.

      One needs to learn debugging through prints because one is NOT going to have the nice, friendly, IDE around when the customer files his bug report and server logs and megabytes of java stack traces. if you don't learn to debug by printing, you don't learn decent logging, and you won't be able to analyse a bug report you get later because you'll have nothing to work from.

      AFTER they know how to program, present them the tools of software development and engineering. But not before.

      One example, that's not that uncommon. We use eclipse. However, we do have an ant-based (javacc calling) build process for actually packaging the server (since it needs to do the SSL security keystores, yada yada). So you can get your errors fixed in the IDE, but occasionally, someone will change a dependency and stuff that looks fine in the IDE (since your .classpath picked up the changes) breaks the ant build. If you can't read a javacc dump of error and warnings, what good are you then?

      again, the real world uses *both* - IDEs and command-line+log files. if you can't do the latter, you're of no use to me.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    31. Re:I would say IDEs by acroyear · · Score: 2, Insightful

      not saying what you said isn't insightful, but what you said is like saying people should type essays without a spell checker.

      Every English teacher in the world would love it if spell checkers went away. Why? because then kids would have to actually learn how to f'in' spell!!!!

      The spell checker has already created the handicapp. Especially as the spell checker doesn't get them to read for the correct they're/their/there etc., because they're all *spelled* correctly. (Yeah, Word supposedly has grammer checking, but its been wrong on my writing multiple times).

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    32. Re:I would say IDEs by acroyear · · Score: 1

      not saying what you said isn't insightful, but what you said is like saying people should type essays without a spell checker.

      Every English teacher in the world would love it if spell checkers went away. Why? because then kids would have to actually learn how to f'in' spell!!!!

      The spell checker has already created the handicapp. Especially as the spell checker doesn't get them to read for the correct they're/their/there etc., because they're all *spelled* correctly. (Yeah, Word supposedly has grammer checking, but its been wrong on my writing multiple times).

      There are levels of programming, and programmers, just as there are with any craftsmen or artisan. There's learning the how, and optimizing the how with the tools. But what I want to see is the learning the why, and IDEs get in the way of learning the why.

      yeah, they can "do the work", and there are plenty of maintenance jobs out there for people like that. But I am part of a team building new products, requiring new ideas and a stretching of the limits of the tools. I want people who know the metal. I want people who use tools to optimize their work, not tools that make up for their shortcomings.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    33. Re:I would say IDEs by Andrew+Kismet · · Score: 1

      Hello, I'm 17, and I've spent the last year and a half learning Java using BlueJ, which is definitely an IDE. The result I've found is that I'm hopeless at creating actual applications and the like without BlueJ as my guiderail, but I know the Java language far better this way. If you are teaching a class of absolute beginners, go the IDE way - it's honestly easier, and they'll learn the language faster. However, if they've already got some programming skills, or are of a particular technical calibre, then go with the hard and cold route. They'll learn more real-world skills that way, in addition to the language.

      Fighting with raw code due to inexperience is a waste of time when you're trying to learn language. Likewise, having the IDE catch all your mistakes for you when you're trying to learn skills is pointless.

    34. Re:I would say IDEs by Zenaku · · Score: 1

      Ironically, if you are a programmer and don't know what an IDE is, it probably means you've never used anything that isn't one.

      --
      If fate makes you a motorcycle, you become a motorcycle.
    35. Re:I would say IDEs by TheGreek · · Score: 1

      If you can not figure out vi, emacs, or any other cli text editor then why should we trust your programming?

      I agree. Knowing ":q!" and "control-meta-6-5-r-n" made me a much better programmer!

      Programming concepts are programming concepts; they can be taught with or without an IDE. Any learning programmer who makes mistakes that IDEs will catch will also make other mistakes that IDEs won't catch.

    36. Re:I would say IDEs by ronanm · · Score: 1

      Every college professor in the world will disagree with you. University is a place for learning how to learn, not a trade school for the job market.

      I agree, I know plenty of Maths grads that I would hire sooner than CS grads.
      Sorry, I assumed that a community college at a level somewhere between a university and a trade school.

      I did learn how to debug by using prints but once I started working and coding actual programmes, I discovered debugging to be far easier on screen. Even with a text based editor. Maybe I needed to learn from prints but I don't really think so.

      AFTER they know how to program,

      They've already done programming modules, if he discovers that they can't programme then he'll have to change his plans anyway.

      the real world uses *both* - IDEs and command-line+log files. if you can't do the latter, you're of no use to me.

      What I was saying is that when you're coding you write most of your code in an IDE, I think he should teach the minutia but I think he should teach it afterwards when the students have something to apply it to, not before when it goes over their heads or they forget about it because they don't "need" it.

      Ronan

    37. Re:I would say IDEs by graywulf · · Score: 1

      I agree. Most IDEs do completion and will make it so that the students don't have to think. IDEs belong in later Software Engineering courses.

      The only problem is that students who don't want to work can use the IDE at home and paste the solution into whereever they are required to do their work. I guess you'll always have those types.

    38. Re:I would say IDEs by Anonymous Coward · · Score: 0

      And you think by taking away their IDEs, they'll suddenly become good programmers? Please. No, but it will help stop people who can't program properly from passing a programming course... which is a Good Thing.

    39. Re:I would say IDEs by acroyear · · Score: 1

      debugging with prints teaches logging techniques. as i've written elsewhere, you won't have the debugger around when your customer files his bug report. if the log files doesn't print enough info to diagnose, you've got a bigger problem.

      and if you don't bother to debug with prints in the first place, you'll have lousy and useless log files later.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    40. Re:I would say IDEs by acroyear · · Score: 1

      hence in interviews we make them write code on paper or on the markerboard.

      you'd be amazed (or maybe not) and just how many "senior" software developer candidates can't even do decent pseudocode.

      its like someone saying they've got a physics doctorate and yet have no idea what Feynman and Sagan called the "back of the napkin estimate". JMU's physics program actually started with a "back of the napkin" guesstimates (as part of its general cosmology intro for physics majors class) even before we took our first mechanics course.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    41. Re:I would say IDEs by KermodeBear · · Score: 1
      You shouldn't be screwing around in vi/emacs trying to figure out how to type at all.


      The basics of emacs are very easy to learn. All you really need to know are a few commands and you're set. Open files, save files, exit. There's no command mode / insert mode that vi has.

      For something even easier, grab pico or nano. The commands are printed at the bottom of the screen. Doesn't get much easier than that.

      Besides; If you are unable to spend an hour to learn the basics of a text editor then I daresay you can't make it as a programmer, either. You're going to have to learn far more complex things than editor commands.

      That said, I've always preferred working on the lower-level. When I was in college taking C/C++ and a bit of Java, it was all taught with an IDE. I soon found that IDEs crippled me by taking care of so much that I didn't know what was happening underneath, which is just as important as what is happening on top.

      So, I started doing all my work with emacs and command line compilers. Sure, it took longer, but I feel that I came away as a better developer holistically because of that. It might be one of the reasons I consistently received high marks while others did not.
      --
      Love sees no species.
    42. Re:I would say IDEs by rossifer · · Score: 1

      Emacs is an IDE

      Depends on where you stick the labels on the spectrum. Is ed the only "just editor" for you? Is notepad non-full-featured enough to qualify? Emacs and vim are as low level as makes sense for me. In my dotage, I'm not happy without auto-indentation.

      Recently my corporate overlords forced fed an IDE down my throat but my productivity returned once I determined that it was calling gcc, g++, gdb and gprof.

      My fingers know emacs better than anything else and though I've tried, I'm about twice as fast coding on emacs as any other editing environment.

      Regards,
      Ross

    43. Re:I would say IDEs by moonbender · · Score: 1

      Good. I hope there are more guys out there like you who hamstring their own efficiency. Makes competing that much easier.

      --
      Switch back to Slashdot's D1 system.
    44. Re:I would say IDEs by rossifer · · Score: 1

      Searching through directories is time you wasted, not time you spent learning a language.

      There's more to software development learning than learning a language. Languages are the least of your problems in the real-world. At least there's a lot of decent documentation for learning a new language.

      Figuring out the package layout and how parts of the system fit together is an important part of learning a new Java system. I find that if I have to puzzle my way around the directories, I learn a hell of a lot more about 1) whether the original package design made sense 2) if there have been battling design approaches (if there are three or more approaches to package design) and what that says about the team...

      There are lots of things to learn about a system by manually searching through directories and seeing what's there. Many IDE's can be used for this, although I think the Java view in Eclipse doesn't do anyone favors with the way it stacks all packages.

      Regards,
      Ross

    45. Re:I would say IDEs by rossifer · · Score: 1

      Good. I hope there are more guys out there like you who hamstring their own efficiency. Makes competing that much easier.

      Depending on the day and the task, I design and code between 2 and 5 times faster than the typical "solid" developer and only very rarely do I meet anyone in the same ballpark as myself.

      Most other developers I know use IDE's as their primary editor while I only rarely depart from emacs for specific tasks. Doesn't seem to have slowed me down.

      I think you're going to have to rely on more than just "choice of development tools" as a competitive edge. The best developers will do excellent work with what they know best.

      Regards,
      Ross

    46. Re:I would say IDEs by acroyear · · Score: 1

      I never said I don't use IDEs nor should anybody else. IDEs are a tremendous boon to software development.

      IDEs are, as the subject question originally asked, a handicapp to learning to program.

      I swear by eclipse, particularly its refactoring support, for my work. But I can live without it. I'd certainly rather not, but I can.

      As such, I don't believe one should hire somebody else for high quality work if they can't work without the IDE. Even if they never have to go without it a day of their career, they should damn well be able to go without it. There are days where it simply isn't there, particularly (again, as i've written elsewhere) when you have to diagnose and debug your customer's problem solely by log files.

      please (everybody) stop assuming that thinking and stating that IDEs are a bain to learning to program doesn't mean they aren't a boon to software development. Those are two completely different fields of CS education (one certainly dependent on the other).

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    47. Re:I would say IDEs by demeteloaf · · Score: 2, Insightful
      As somone who just went through a couple intro to programming classes (stupid university not giving me credit for them), i have to agree that this approach is probably the best one out there.

      The very first experiance everyone has with code here is simple text-editor/command line, coding, compliling, and running. After about a week-ish of writing simple "hello world" programs, they are introducted to a relatively bare bones compilor JCreator (basically it has syntax highlighting, auto-indentation, and project building, but you still have to compile the code and wade through the error results yourself.)

      After students passed that semester of basic coding, the next semester introduced IDE's with more features, like eclipse, which does fix simple errors for you and basically make the coding go faster so the students get a more general view on whatever is being taught.

      It seemed to me this philosophy worked the best, when students were just learning, they had to figure out what was wrong and catch it on their own, but as they got more proficient, they were given tools that did the basic stuff for them.

      --
      If there's anything more important than my ego around, i want it caught and shot now.
    48. Re:I would say IDEs by DahGhostfacedFiddlah · · Score: 2, Insightful

      What the hell is with these comments? There's a comment about not using IDEs, and then a billion after it complaining that you "don't need emacs", "don't need vi", "don't need notepad".

      Of &$*%ing course you don't need that! What you do need is an editor. It doesn't matter which one - it can be edlin if that's your fancy.

      People should be free to choose their own devel environment, not taught it. Posters complain about having to learn emacs in a programming class - how long do you think it takes to learn the ins and outs of a freaking IDE?

      Let people work with any environment they want - especially beginners. If you're building in notepad and someone else is using Word and saving as text, at least you've got that basic idea that the IDE is not the language. If all of the programming you've ever seen has been through one interface and one interface only, then you will - even subconsciously - have a ton of false assumptions about how it is that programming actually works, and you will be less prepared for moving to a different environment.

      Basically, monoculture == bad. Especially for something as ubiquitous and simple as a text editor.

    49. Re:I would say IDEs by twalk · · Score: 1

      Mod parent up.

      When I was teaching CS in college, that's exactly the kind of thing I did. I also made them completely type in the first (short) 4-5 programs we went over in class. I'd get serious complaints, but everyone in my classes learned the basic stuff much faster than the other "powerpoint" driven classrooms.

      You have to get these basics stuck in the head of students quickly. Don't spread them out over the entire semester like so many other instructors do (esp. the powerpoint instructors). It sounds simple, but to learn how to program means that you need to write programs. So get your students writing as many programs as they reasonably can, as quickly as you can. (My sections often had students writing 2X the number of programs that other sections did.)

    50. Re:I would say IDEs by ClosedSource · · Score: 1

      "If you can not figure out vi, emacs, or any other cli text editor then why should we trust your programming?"

      One could also say that if you can't type in machine code directly, we shouldn't trust your programming either. There's no connection between the tools you use and your ability to program.

      There's nothing any more "basic" about using a command-line tool for programming than there is using a slide rule for mathematics.

    51. Re:I would say IDEs by ClosedSource · · Score: 1

      I have an idea. Why not let the programs students write in a programming course determine if they pass? Of course the danger with that approach is that students using an IDE might pass the course due to their programming ability and then what would become of your argument?

    52. Re:I would say IDEs by moonbender · · Score: 1

      Okay, maybe you're not quite as big an idiot as I though at first glance. My apologies. ;)

      --
      Switch back to Slashdot's D1 system.
    53. Re:I would say IDEs by BalanceOfJudgement · · Score: 2, Interesting

      When I was interviewing for my current position, they asked me two questions:

      1. What is the integral of x^2? You'd be surprised how many MATH MAJORS they interview that get this question wrong (my degree is in Mechanical Engineering, but I learned programming along the way and it is now most of what I do, with some Engineering sprinkled in there). (btw, the answer is ((x^3)/3) + C)

      2. You have a real time system collecting data into a temporary buffer and processing this data. It takes .25 seconds to collect the sample, and .8 seconds to process it. Write a program to make sure you don't drop any data.

      They asked me to solve this problem on the whiteboard using C, right there in front of them. It had been awhile since I programmed without an IDE, but because I learned to program without ever using an IDE, it wasn't a problem.

      On the other hand, there's another guy at my office who started working there doing something else and somehow got dragged onto a programming project.

      After a year, he still can't grasp what the devil a pointer is. I'm not saying someone needs to understand pointers to be a good programmer (although it helps you understand what higher level languages are doing under the surface), but the project we were working on required it. He's so used to using drag and drop stuff like Visual Studio and LabView that really comprehending the inner workings of a language for writing efficient code is just too hard.

      I agree when you call this a handicap that just doesn't go away - it has alot to do with how the brain first learns to conceptualize programming, and that's a very, very hard thing to un-learn.

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    54. Re:I would say IDEs by BalanceOfJudgement · · Score: 2, Interesting

      " Any learning programmer who makes mistakes that IDEs will catch will also make other mistakes that IDEs won't catch."

      The problem is, compiling a program and being forced to fix the error on your own will help you remember not to make that mistake next time.

      When the IDE auto-fills something for you, you never really get that lesson. You might go "oh yeah" every time, but it's far less likely that the lesson will really stick.

      At least, that's my experience.

      Also, being able to put something together using an IDE that is doing drag-drop and autocomplete for you will never really teach you the basics of things like FIFO queues or binary search algorithms.

      While these are often already implemented in higher level languages, it's good to know the basics; for me, even using C# where I don't have to worry about things like that, it still prevents me from doing things like searching a list twice when I really only need to do it once, because I might write the code to do that and then go "Oh duh, that's not necessary," whereas the compiler would happily compile that for me.

      And there is alot of work where intimate knowledge of those algorithms is STILL necessary. In the end, programming isn't about being able to use a particular language or an IDE, but about understanding what the software is doing, what your algorithms are doing, and how everything fits together.

      I have simply found that using an IDE to learn to PROGRAM gets in the way of learning those concepts. IDE's are great for learning LANGUAGES; they are horrible for learning computer science, because they can't teach you how to write algorithms or understand what the compiler is doing.

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    55. Re:I would say IDEs by marcosdumay · · Score: 1

      "What I'm saying is try to replicate your experiences of the real world as much as possible. Just because IDEs weren't available when a lot of us were being taught doesn't mean we have to perpetuate a crappy situation."

      Great advice! But teach them how to program first. Really, most people (and most CS newbies) don't know how a computer works. Some think that it somehow "thinks", other think that it manipulates windows and buttons, most never thought about it.

      If you put your students at first behind a IDE, you'll reinforce the idea that computers manipulate windows and buttons. Those people will have a hard time thinking about I/O, sequential reading, pipelines (in general), and lots of other usefull algoritmical constructions because they'll have used message passing events (windows) for their entire life. (You can see that is an argument against GUI in general, your students can meet the CLI anytime, but it normaly only happens with the compiler).

      Now, I'd also advice you against teaching C++ and VB for novices. You shouldn't do that. C++ is too hard, you'll take too much time teaching the language and have very little time left to teach programming. VB doesn't enforce good habits, you must always teach good habits to novices. I prefer to teach programming on Pascal, although Java is ok for a start (if you teach C or C++ later).

    56. Re:I would say IDEs by MikeFM · · Score: 1

      Learning to use IDEs should be a class different from learning a programming language. To many students I worked with got caught up in trying to use the IDE and forgot to actually learn to program.

      I'd say you need a class for teaching concepts such as working with blocks of programming logic. Essentially learning psuedo-code.

      Then you need a class for the basics of programming in some specific language. I find Python really good for teaching concepts to new programmers.

      Then you need at least one class for advanced programming in that same language. Probably more than one class as things like networking, string parsing, security, etc should each be their own class probably.

      Then you need a class for command-line tools such as Unix tools, shell scripting, Perl, etc.

      Then finally you need a class in using IDEs and project management tools.

      You need to crawl before you walk I think.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    57. Re:I would say IDEs by petermgreen · · Score: 1

      spell checkers aren't generally introduced until people are already at a very advanced stage of learning english. Hell we have classes in primary school that are PURELY about spelling.

      As a native speaker writing essays means you've been learning written english for several years at least. Maybe english courses for foriegners are a bit more rushed but i bet they don't encourage spellcheckers early on either.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    58. Re:I would say IDEs by Jucius+Maximus · · Score: 1
      "as long as they trust the editor to catch their mistakes, they'll never actually learn to avoid them; they'll simply let the IDE be their guide and never learn it."

      Quite right. My intro Java course was about 6 years ago and they did it with an IDE. Two years later they switched away from the IDEs because they realised that the students had no idea what they were really doing because the IDE took care of the details. Now it is all by command line.

    59. Re:I would say IDEs by acroyear · · Score: 1

      i hate "Java" view in eclipse. its a hangover look/feel from the Borland days, expanded to cover non-java resources in a way that tries to make them seem the same (and then gets in your way as you see they aren't).

      "Java Browsing" is the better, in my opinion.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    60. Re:I would say IDEs by krunk4ever · · Score: 1

      It really depends on what your teaching. If you're teaching spelling/vocabulary and if writing is an essay to practice vocabulary, I agree totally that spell checkers are tools the prohibit learning. At this point, teachers should tell students to WRITE their essays and if they're typing, they should use school computers and software where spell checkers aren't enabled. But when one does start writing real essays in High School and College, the teachers/professors don't want to deal spelling mistakes. Should the teacher/professor take points away because of spelling mistakes, even though your ideas and essay deserves an A+ (sans spelling errors)?

      As I mentioned in my previous post. It depends on what you're trying to teach. If you're trying to teach syntax and good coding guidelines, start with notepad. However, if you're trying to get into more advance areas where syntax and good coding guidelines are long gone, then an IDE is definitely useful.

      You can argue that IDEs are memory resource hogs, but you can't argue that IDEs are a successful and great tool for programmers, new or old.

    61. Re:I would say IDEs by travisco_nabisco · · Score: 1

      I would say that learning through an IDE definately can limit the understanding of a language. But if you are to teach them to use an IDE make sure that in written exams they have to be able to write reasonably long programs with the syntax being a large portion of the grading scheme. If you find that students can't manage this, then you ditch the IDE completely, otherwise you keep the IDE and you will be able to see how well the students are learning the language based on their exam grades where it is pencil and paper.

    62. Re:I would say IDEs by Anonymous Coward · · Score: 0

      "2. You have a real time system collecting data into a temporary buffer and processing this data. It takes .25 seconds to collect the sample, and .8 seconds to process it. Write a program to make sure you don't drop any data.

      They asked me to solve this problem on the whiteboard using C, right there in front of them. It had been awhile since I programmed without an IDE, but because I learned to program without ever using an IDE, it wasn't a problem."

      And neither you or they really know if your solution would work since the code was never compiled or run.

    63. Re:I would say IDEs by ronanm · · Score: 1

      Now, I'd also advice you against teaching C++ and VB for novices.

      I would definitely agree with your point about C++. I've never been a fan of VB (although I'm sure it's improved since I last used it.) Even so, if VB doesn't enfoce good habits the lecturer still can. What he, bblazer, teaches is going to depend on how well they've been taught C++/VB and he's going to have to cater for the less well taught students.

        I know a couple of Universities where they're starting off by teaching everyone Eiffel and Java. And so students have an overview of how a program works before they're taught "proper" programming languages.

    64. Re:I would say IDEs by poster.poster · · Score: 1

      They should learn to program as close to the raw as possible. notepad, command line, debugging through prints. They should learn software development separately, with an IDE, with integrated debugging and complex build systems. Learning to program, and learning to be a good software developer are two separate things.

      This makes complete sense, but I'd also like to add that learning and IDE can be a good idea. This past spring I did interviews for interns. The project I'm leading will be written with C# using Visual Studio. Since I how I jumped to C# development from a Java with Eclipse background, I figured I would gear the internship towards students that had either C# or Java experience. I did interviews and came across one applicant that had some good training in Java and some basic experience with data structures and databases (a major bonus for the project). Unfortunately the absolute deal breaker was the applicant had no idea what an IDE was. Eventually it came to the surface that the applicant's four semesters of Java programming was all done with Notepad on Windows and then compiled on the command line. There's no way I have time to teach the major differences between Java and C# and also teach how to use something as complicated as Visual Studio in 10 weeks.

      So while the student is getting a stronger foundation in programming, I'm completely shocked that they are not getting introduced to something that can be incredibly useful in the work world. I tend to think it would be a different situation if it was on Linux and used vi, but Notepad on Windows? When you have something like Eclipse that you can use for free? I see that not even mentioning IDEs in classes or that there are other options out there is a disservice to students that want to get a job after they graduate.

      I vote for starting off with a *really* simple IDE or just a text editor of some sort. After that has been covered for a few semesters, jump to an IDE, especially if there are great alternatives out there that are free.

    65. Re:I would say IDEs by Anonymous Coward · · Score: 0

      wahhhh

      scare their namby pamby asses off --- the presence of those who aren't looking to understand WTF they are doing are why CS is commonly seen as pseudo-science and not an engineering discipline.

      I call BS on the "shouldn't be about learning an editor" part -- it shouldn't be about learning the freakish IDE interface. If you know what's going on under the hood, then you can fix it when the high level IDE chokes.

    66. Re:I would say IDEs by gfxguy · · Score: 1

      I agree 100% with you... the question is if he's teaching Java programming, or programming using Java (or Python, as the case may be). It sounds like he's teaching the language, and not teaching concepts using that language... there's no better way to learn than doing everything yourself.

      They should use a text editor, learn the directory structure immediately, and learn the compile by hand. Then they can learn simple makefiles or ant. These are the tools you know you'll have everywhere. THEN when the person is actually developing code and happens to just be using that language, an IDE will make things go smoothly and efficiently... but it's always best for someone to know what's going on behind the scenes.

      That's my opinion anyway.

      --
      Stupid sexy Flanders.
    67. Re:I would say IDEs by Lehk228 · · Score: 1

      I disagree on C++

      I learned real programming in C++

      C++ allows both procedural and functional programming without too much bullshit. if you want to debug something behaving wrong just

      cout
      with jave you have to fight with the damned thing to get text I/O which is reall frustrating when you want to teach about recursive functions but have to keep revisiting the three magic lines to get text input to work properly. yea i hate java--even worse than VB.NET but not worse than VBA

      --
      Snowden and Manning are heroes.
    68. Re:I would say IDEs by Kluenitou · · Score: 4, Insightful
      I think this is slashdot gone way too fucking far.
      Agreed. One thing that I've noticed as a Computer Science major and avid slashdot reader is that most CS guys tend to make things harder for themselves and others that they should be. I don't see any valid argument against using an IDE except to make life more difficult. My best guess is that programmers that grew up without the use of an IDE want newcomers to suffer as much as they did by using emacs, vi, etc. when an easier solution exists. It seems like a sophomoric "I suffered, now I'll make those that come after me suffer" situation.

      Why not let students make use of IDE features such as code completion, color coding, et cetera? When they get into the real world, they will be able to use an IDE with these features if they please, why force them to practice on something they won't actually use when they graduate? That's just a waste of time for the students. Sure, some of these IDE features make learning the language easier for them, but it won't turn them into code idiots. They'll still need to understand the language in order to be able to program with it!
    69. Re:I would say IDEs by stealthzap · · Score: 0

      You mean, so they don't have to do their job any more? What the heck's wrong with spelling tests? How about vocab flash cards? Maybe we should just take away skill saws from carpenters because they mess up too many beams by not learning how to measure. Tools do not create handicaps, poor teaching does. And by the way, here is the link to how to properly spell handicap... http://dictionary.reference.com/search?q=handicap The thing that separates man from beast is the ability to create, use, and adapt tools.

    70. Re:I would say IDEs by BalanceOfJudgement · · Score: 1

      1. That's not true, because it was a solution to a problem they were already using in live systems. They knew the right answer. Braces and semicolons aside, they knew what actual algorithm itself should do. Few programmers get the entirety of a program right on the first try without a single bug.

      2. Whether it could compile and run is irrelevant to the interview; what matters to the interviewer is the approach and whether an applicant can even begin to approach the problem in the first place. If I grew up thoroughly dependent on an IDE to suggest code to me, I really would not be able to even start answering a question like that one.

      There are the obvious exceptions to that claim, but learning computer science is a very involved process. It doesn't happen automatically, and the people who learn to program using an IDE and could STILL answer this question, are the good programmers; the ones who wouldn't need an IDE to write a good program.

      The unfortunate part of my answering you is that since you decided to post as AC, you'll never see my answer. I always wonder about posts like that. Kinda like enforcing getting the last word, even if you know you might be wrong.

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    71. Re:I would say IDEs by Billly+Gates · · Score: 1

      Line numbers are nice in ide's or fancy editors. After learning Java last semester with notepad I can tell you its a bitch to deal with trying to find line 163, etc.

      Most mistakes the user will see when compiling. At least most java ide's I have seen dont really catch errors but rather show you which methods are inherieted with X, when you type X. .

      I suppose a good editor with line numbers but with decent docs to help novices learn the language is ideal.

      I do agree too many things like code generation and gui builders are bad if you need to learn awt and swing and the relationship on how all the gui objects work heiracly.

      Sun has javadocs and I wonder if VS.Net has a help system that is as good? I looked at msdn and the api is not as clean or organized but I admit I have not dwelled on it greatly.

    72. Re:I would say IDEs by peterhoeg · · Score: 1

      Am I the only one who finds it a little amusing that a java programmer advocates "closer to the metal" programming by not using an IDE?

    73. Re:I would say IDEs by teklob · · Score: 1

      People should type essays without a spell checker if they are learning to write/spell. If they are writing an essay because they need an essay to be well written, then a spell checker should be a supplement to good spelling skills. A spell checker would only be as useful as a calculator for learning math problems - you can check you work, but if it does the work for you then you don't learn.

    74. Re:I would say IDEs by tinkertim · · Score: 1

      I think this is much like teachers 10 years ago debating about how much access students should have to calculators during their normal math studies.

      The fact remains, when the student applies the knowledge they will almost certinally be working inside some sort of IDE, be it VS or bluefish or emacs or whatever. The point is its commonplace now.

      For their own sanity and convenience, I would imagine those who really want to be proficient and well rounded would find its sometimes easier to work in a shell on the host where you're testing the application (if not local), such as the case would be in an old style Unix network with nice VT-XX terminals and pc's coming in over 3270 - but where are you going to find that?

      Even hard core VI nuts like me appreciate syntax highlighting. I also like the simplicity of nano (pico) which loads and works in all kinds of funky shells and consoles (like ethernet to serial console connections).

      If you plan to work in an industry where they prefer Linux and have clusters or some other stipulation that requires you to build stuff in place, get used to GNU. Otherwise , use an editor, its easier :)

      Just my 2 cents.

    75. Re:I would say IDEs by ghira · · Score: 1

      "trying to figure out how to type"? In emacs? There's nothing to figure out.

      Learning how to use vi or emacs in the most basic way possible takes, oh,
      seconds?

      All you _need_ for vi is "i", "x", "dd", "wq", "a", and that's pretty much
      all I've bothered to learn. emacs is even easier.

      --
      -- You've got to get a hat if you want to get ahead.
    76. Re:I would say IDEs by Mateito · · Score: 1

      Only on slashdot would a question on educational methods turn into a religious debate.

      Go back a step - What are you trying to teach your students to do? Which teaching method will satisfy these goals?

      If these guys are going out into the real world as programmers at the end of the course, they will need to know the tools that they are going to be seeing in the real world. But knowinwghow to drive a tool is not sufficient to produce good developers.

      If your students know nothing, and you have to cover the basics, then do it with as little extraneous distraction as possible. You don't want to be fielding questions about "What does this button do" while you are trying to explain pointer arithmetic.

      Once they know how to string a program together (no pun intended), teach them how to develop code using an IDE, then teach them how to architect applications using an IDE to write their code. Build a solid foundation before moving up to more complicated techniques and concepts.

      Of course, if these guys are going out to an indian outsourcer, turn on all the help in the IDE and sign somebody else's name to the graduation certificate.

    77. Re:I would say IDEs by aero2600-5 · · Score: 1

      I know I shouldn't feed the trolls, but...

      Most IDE's are not that complicated. If you want good programmers, then you teach them good programming techniques, even at the very beginning. Honestly, I've never seen an IDE that was so complicated that it was distracting, but that's me, and not every other CS student. Just because they're not the next Linus Torvalds, doesn't mean they can't work in CS. There's no need to force them out of a CS program with an IDE that has such a steep learning curve that it looks like the north face of Everest.

      I agree, that editors and IDEs should be taught, but it would appear to make sense to have that be a 4th year course which goes in depth into the workings of IDEs, compilers, and linkers. Someone that's going to be doing light programming doesn't need to know how their IDE works, just like a webmaster doesn't need to know the inner mechanics of Dreamweaver to make some good-looking web pages.

      Aero

      --
      Please stop hurting America -- Jon Stewart
    78. Re:I would say IDEs by eneville · · Score: 1

      Exactly. I've been developing software for 12 years and I still go back to emacs whenever I want to learn a new technique, technology, or toolkit. The dev work may take a little bit longer, but I learn so much more when I have to search through directories or look up an interface in the documentation that you just don't get with an IDE. real programmers use compass neadles to move the bits around.

    79. Re:I would say IDEs by Anonymous Coward · · Score: 0

      Handicap has one 'P', spacknut. Hahahahahahahahaaaaaaaa!!!!!

    80. Re:I would say IDEs by SomeGuyTyping · · Score: 1

      I agree that programming IS separate from software development. My curriculum taught me 3 semesters of c++ before I saw assembly. I think I would have been better served learning assembly first, then abstracting it to c or c++.

      --
      My posts are definitive. Reality is frequently inaccurate.
    81. Re:I would say IDEs by quadelirus · · Score: 1

      If you are learning python you aren't trying to learn how to program "close to the raw". I think they should at least be allowed IDLE for syntax highlighting. Programming in pico may be the way we used to do it, but there is no harm in allowing a little color. With Java, also, I don't think many people use the jdb debugger. Java is about enterprise programming, python is about ease-of-use programming. Neither of those things need to be taught "close to the raw".

    82. Re:I would say IDEs by TrekCycling · · Score: 1

      What's amusing? The fact that a software developer who relies on a garbage collected virtual machine would use the term "closer to the metal"? If so I get your point and understand why you'd find it amusing. But it's just a term. It doesn't (with some of us at least) hold the same meaning it once did. It's a handy term to describe the way you develop, not necessarily that you're actually programming against the hardware.

    83. Re:I would say IDEs by Anonymous Coward · · Score: 0

      I strongly disagree with the notion of teaching with IDEs. As a manager that has interviewed more people that can count (our interview included a test to write a basic EJB app). The people using IDEs were at an absolute handicap. Most spent the three hours trying to get their IDE configured so it would effectively write the app it for them. Of those that used IDEs, I don't recall a single one being hired.

      I don't oppose the use of an IDE, we required it for development, but I need proof that someone really knows the language, not knows how their IDE makes that language work.

    84. Re:I would say IDEs by jedidiah · · Score: 1

      This is one of those times where those in computing need to look too the other disciplines that really have a right to call themselves engineering and see how they handle this sort of thing. If you do I believe you will find that they do infact force their students to "learn how to do it manually" first. It's fine to trust a good too but you also have to be able to verify your tools. If you never learn how to do for yourself, you will never have that ability.

                It's not about "making things unecessarily hard" it's about learning the fundementals.

                Even Naval officers get taught how to deal with the sea the same way that the Vikings did.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    85. Re:I would say IDEs by acroyear · · Score: 1

      yeah, in thinking about it, a syntax-highlighting editor probably would do more good than harm, but the teacher (as one post said, how the teacher teaches is important to start with) should recommend turning highlighting off on occasion because writing code down on paper won't be in color. ;-)

      after a while of dealing with pascal in pure TPU (Vax/VMS, 1989), I switched to the LSE (also written in the same language, one of DEC's better pieces of code in my opinion), which still wasn't a pure IDE, but helped out with my coding speed considerably. However, that switched happened in my 2nd CS semester, with data structures etc, not my first semester where i was still learning to code in the first place.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    86. Re:I would say IDEs by tehcyder · · Score: 1
      I've always found grammar checkers useful for highlighting relatively trivial errors such as incorrect spacing before/after punctuation marks, as these are quite hard to see at a glance especially on a justified page on a computer screen.

      For spell- and proper grammar-checking, you're right that you need to have learned them properly to start with before the tools are of any ue.

      --
      To have a right to do a thing is not at all the same as to be right in doing it
    87. Re:I would say IDEs by Gr8Apes · · Score: 1
      stop assuming that thinking and stating that IDEs are a bain to learning to program doesn't mean they aren't a boon to software development. Those are two completely different fields of CS education (one certainly dependent on the other).


      Software development is an activity involving programming, usually. IDE's assist with this type of activity. If you don't know how to program, an IDE is going to do exactly zilch for you in this regard.

      I personally utilize eclipse extensively, but for some things I still drop into vim. It's just easier and faster to do complex regex with vim than in eclipse, despite its recently added regex support.
      --
      The cesspool just got a check and balance.
    88. Re:I would say IDEs by tehcyder · · Score: 1
      bout how much access students should have to calculators during their normal math studies
      Calculators? Back in my day it was slide-rules. If you were lucky.
      --
      To have a right to do a thing is not at all the same as to be right in doing it
    89. Re:I would say IDEs by tehcyder · · Score: 1
      1. What is the integral of x^2? You'd be surprised how many MATH MAJORS they interview that get this question wrong
      Reminds me of this:-

      BRIDGEKEEPER:

      What... is your favourite colour?

      LAUNCELOT:

      Blue.

      BRIDGEKEEPER:

      Right. Off you go. ... Stop! What... is your name?

      ARTHUR:

      It is 'Arthur', King of the Britons.

      BRIDGEKEEPER:

      What... is your quest?

      ARTHUR:

      To seek the Holy Grail.

      BRIDGEKEEPER:

      What... is the air-speed velocity of an unladen swallow?

      ARTHUR:

      What do you mean? An African or European swallow?

      BRIDGEKEEPER:

      Huh? I-- I don't know that. Auuuuuuuugh!

      --
      To have a right to do a thing is not at all the same as to be right in doing it
    90. Re:I would say IDEs by acroyear · · Score: 1

      in my current case, my work is mostly Ajax-driven (Java server), and of course has to be cross-browser compatible. this means for my "client" i have no debugger support whatsoever, though I can use jstrace to avoid all of the beeps that IE throws out with every js alert dialog. in addition, all the IDEs in the world won't really help with CSS or really understanding what happens when 10 JSPs get combined into a single page by Struts' Tiles (or JSF or 10 Spring "objects" if that's your poison).

      and as i've written, there are degrees/levels of "programming" ability. one can learn the basics and trust the IDE to keep "productive", but in my experience and based on the MANY interview candidates i've dealt with, there's a huge difference between that and someone who really can PROGRAM to the level I need to see.

      i've had a number of candidates who can't talk about refactoring (in spite of its IDE support), can't talk about design patterns beyond "Singleton" (I make that an exception to the "Describe a design pattern" question), can't even write simple pseudo-code on a markerboard to draw a "tree" or write (or even just *use*) an iterator from a collection. to the work they've done they are very "productive" with an IDE, and are probably ok programmers.

      but they've gotten so slaved by the IDE they've really lost the ability to think about programming to the level I need to see. these are "senior" developer candidates who don't know what i would consider to be the basic minimums of software development and the level of programming skills it requires.

      they can use the IDE but they have no clue why it works.

      i have no problem seeing these people in the (many) maintenance projects out there, but i need something more, and the IDE is making the person i'm looking for much harder to find.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    91. Re:I would say IDEs by tehcyder · · Score: 1
      i haven't even had a candidate in the last 2 months that could even say what refactoring is.
      Is refactoring is part of software development, not programming?

      --
      To have a right to do a thing is not at all the same as to be right in doing it
    92. Re:I would say IDEs by acroyear · · Score: 1

      its borderline (like the difference between an IDE and "just an editor with special features".

      its an advanced programming technique that's most often used in software development.

      perhaps its a bad example, but my main case has been the inability for interview candidates (even allowing for "pressure") to even pseudo-code on a markerboard.

      another thing i've noticed is that the higher the dependency on the IDE, the less likely they are to have any sort of personal library. granted, i'm not expecting anyone to have invested in the bookshelves-full that i have (though i'd love it if someone like that walked through my door), but i kinda expect a little more than what i've seen.

      in a sense this is moving (degrading?) into a discussion of great software developers vs lesser ones, but the core of software development is still programming and i firmly believe (and my experience, though anectdotal of course, supports it) that better programmers make better software developers and better programmers come from environments where they had to learn the ins-and-outs of programming by using lesser tools in their early stages of learning.

      like using calculators in math class - we don't give them permission to use calculators until after they've gone through the years of conditioning of basic arithmetic. so too, we shouldn't give them the advantages of the IDE until after they've learned the basic concepts of what programming really is.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    93. Re:I would say IDEs by udoschuermann · · Score: 1

      I've seen too many supposed programmers become all but worthless as soon as the IDE fails to deliver. They don't know what's wrong because they don't know what the IDE was doing for them in the first place, and as a result are clueless on how to go about fixing the problem or get on with their work.

      A programmer who relies on an IDE to the exlusion of real knowledge of the underlying operations is like a car mechanic who can change the oil in your car but couldn't figure out why the car is overheating because he doesn't even know to check the water pump, for example, much less figure out how to replace it.

      Never choose convenience over understanding, or one day your clock shall blink 12:00.

      --
      --Udo.
    94. Re:I would say IDEs by smbarbour · · Score: 1

      I'll play devil's advocate.

      as long as they trust the editor to catch their mistakes, they'll never actually learn to avoid them; they'll simply let the IDE be their guide and never learn it.

      At the same time, the IDE will also catch and point out mistakes (not just blindly fix them) that would not be readily apparent. If there is a bug in your code that will only occur if conditions are just right, you might not catch it during the regular debugging tests, and I believe this is the situation that almost every post-release bugfix repairs. I'm not saying that an IDE will catch these bugs, but they might.

      I started out with AppleBASIC programming, and I'm a VB6/VB.NET dev now. I learned C++ in college, but I could not use it today. (Write a program in 8 hours in VB or 2 weeks in C++, and the end result is the same... I'll go with 8 hours.)

    95. Re:I would say IDEs by pclminion · · Score: 1
      as long as they trust the editor to catch their mistakes, they'll never actually learn to avoid them; they'll simply let the IDE be their guide and never learn it.

      What the hell? How about this: as long as they trust the compiler to catch their mistakes, they'll never actually learn to avoid them. How is the IDE reporting an out-of-scope variable any different than the COMPILER reporting the out-of-scope variable? Hey, even better idea: compilers shouldn't check syntax errors -- if the source code isn't kosher it should just silently generate a no-op object file. That way the students can learn how not to commit syntax errors without the "crutch" of having the compiler report them.

      similarly, as long as they can debug in the IDE, they'll never learn real debugging techniques that the "cold metal", or even just debugging a running server they can't get an IDE into.

      NO programming student I have EVER seen has used an IDE debugger. They are too fucking difficult to figure out. Every student I've seen uses printf() to debug. You're complaining about something that isn't even a problem -- this shows that you are disconnected from reality and the rest of your arguments can be safely ignored.

    96. Re:I would say IDEs by Senzei · · Score: 1
      Should the teacher/professor take points away because of spelling mistakes, even though your ideas and essay deserves an A+ (sans spelling errors)?

      Hell yes they should. Correct spelling and grammar, at least in essays in technical papers, are critical to conveying ideas. In their absense your ideas are not likely to be conveyed. I do not think it should be a major deduction, but I do agree that students should lose some points for messing up the basics.

      --
      Slashdot: Where anecdotes and generalizations can be freely substituted for facts, logic, or intelligence
    97. Re:I would say IDEs by archangel85j · · Score: 1

      Scaring off programmers is what we need. Computer Science is not about programming. It's about problem solving with the concepts and theory behind programming languages. Let these kids get MBA's so they can play with their Visual Basic.

      At my univeristy the main problem is students breezing through the curriculum until they hit discrete structures or assembly and then relize, two years in, that they aren't cut out for a CS degree.

      So you know what the school did? They got rid of those 'scary' classes.

    98. Re:I would say IDEs by Gr8Apes · · Score: 1
      i've had a number of candidates who can't talk about refactoring (in spite of its IDE support), can't talk about design patterns beyond "Singleton" (I make that an exception to the "Describe a design pattern" question), can't even write simple pseudo-code on a markerboard to draw a "tree" or write (or even just *use*) an iterator from a collection. to the work they've done they are very "productive" with an IDE, and are probably ok programmers.

      but they've gotten so slaved by the IDE they've really lost the ability to think about programming to the level I need to see. these are "senior" developer candidates who don't know what i would consider to be the basic minimums of software development and the level of programming skills it requires.

      they can use the IDE but they have no clue why it works.


      While agree about the quality of candidates out there, I will say this: in the modern programming language world, those that can't even talk about refactoring generally aren't even jr level programmers - I don't care what their "resume" says.

      That design pattern question being limited to "Singleton" (or Command Pattern) screams "procedural programmer" to me at best, and immediately lowers them to at most jr level with most likely heavy mentoring required to make them even moderately useful.

      If they don't know a tree, see above. In the Java realm, depending upon domain, Iterators should either be carefully and barely tolerated or not used at all. I can understand why some wouldn't use them, but they should know why. If you wonder about this statement, review concurrent access (lack of) guarantees regarding iterators and the backdoor into synchronized code they allow. But that's another whole story that I don't have time to delve into.

      I tend to disagree with your base premise that these are probably ok programmers slaved to their IDEs. I hold the position that these folks are able to do some "programming" (the basic working with code) due to the IDE existance, but in no way are "real" programmers or software developers. I agree that there are lots of these types of folks out there.

      In my mind, a SR dev can take a set of requirements, validate and create an estimate for meeting those requirements. They can also be handed a mess of code and understand it in relatively short periods of time. They might even have flashes of insight into how to create better code for a particular problem domain than general best practices, which they are familiar with.

      Lastly, on the JSP/JSF/Spring/Ajax/JS/HTML/etc front - worry, worry a lot. There's new toolkits/frameworks coming out for these almost daily. ;) Some are good, and will help those who understand the problem domain be excessively productive. It will allow those who don't to badly hack code. As for CSS - that's mostly outside my realm as my experience with it has been minor, but there seem to be some neat tools for messing with it available for Firefox/Mozilla. Same goes for JS/Ajax. Check out Bookmarklets, a better Error Console, and Firebug, not to forget the venerable Web Dev. I have yet to check out Google's GWT.
      --
      The cesspool just got a check and balance.
    99. Re:I would say IDEs by sofla · · Score: 1

      I agree. Since you are teaching an intro class, I think the fewer obstacles you put between the student and the language concepts, the better.

      Sure at some point in a professional CS career it is important to learn about the build pipeline, but unless you are a compiler designer, that knowledge is only important when you need to diagnose a broken pipeline. Seriously - if the pipeline always worked, there is no reason to know it, other than historical trivia. But it doesn't, so you need to, at some level. I guess for me the analogy is the C++ programmer needing to know assembler, so that they can diagnose code-generation bugs. Useful knowledge to have, but not something I'd inflict on a newcomer. Ditto for sort algorithms/implementations: its more important to me to know when to use a given algorithm, than knowing how to implement one. I would hope that you rarely implement common algorithms from scratch, and instead, that you use a well-tested reliable library. Same argument for containers (STL, java.util vs. hand-coding a container).

    100. Re:I would say IDEs by Urchlay · · Score: 1
      > There's no way I have time to teach the major differences between Java and C# and also teach how to use something as complicated as Visual Studio in 10 weeks.

      The whole point of a GUI is that it's supposed to be easy to use... anyone who knows programming can figure out whatever IDE you throw at him with little or no training, unless maybe the IDE is designed to be difficult to use (not a major design goal for IDEs in general...)

      Of course, there's no universal metric for "easy to use". I'd probably have a hard time not pulling all my hair out if I had to switch from vim to Visual Studio overnight... but, being a professional, I could do it if required (and, being a professional, you'd never hear a word of complaint from me while I was on the clock).

      > I see that not even mentioning IDEs in classes or that there are other options out there is a disservice to students that want to get a job after they graduate.

      Rightly or wrongly, most CS professors would cringe if they heard you say their job is to prepare their students to get jobs...

    101. Re:I would say IDEs by LWATCDR · · Score: 1

      "I don't see any valid argument against using an IDE except to make life more difficult."

      That really depends on the student.

      A guy at my office wants to learn how to program. He was going to learn perl as his first language. I suggested that he learn Java or Python. Both are good first languages and multiple people in the office know them.

      I then suggested that he use a simple text editor to start off with. He proceeded to download NetBeans.
      He was totally lost! He couldn't figure out how to compile HelloWorld under Netbeans. Eclipse.org, or any other IDE have about the same level of complexity as Netbeans so the problem is the same.

      When the student is learning what a for loop is, or how to write a simple method and IDE makes life harder.
      Once they get past that first stage I tend to agree with you. IDEs are a great tool.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    102. Re:I would say IDEs by Anonymous Coward · · Score: 0

      You'll probably never see this because I have to post AC, but -

      No.

      You're exposed to every step of the process because you may discover that - surprise - you're really good at programming close to the metal. You may end up discovering a love for low-level programming techniques, a facility for exploiting them to their best potential - That you might be one of the people who write drivers, micro-code, who code EDA back-ends, program FPGA's and act as engineer liasons between fabless chip companies and the foundries that make their designs. There is a shortage of them in the United States, and even in the world. They make an inordinately large salary as compared to the average code monkey building yet-another-application-that-may,-or-may-not,-be-k iller.

      You might also need to incorporate secure code practices into your work someday so that your work isn't responsible for the next internet worm. IDE's don't do that. Nor can they tell you that using a certain API after another API creates a condition that another application on your production system can't tolerate.

      The more you know, the more useful you are as a developer and the more robust your code may be.

      We are not making it 'hard' on you, we are being kind by making sure that you know all the pitfalls before you go live. "Hard" is releasing a piece of software and then immediately issuing a patch. And another patch. And another patch. (see Microsoft.)

    103. Re:I would say IDEs by Vorondil28 · · Score: 1

      ...a programming class should be about learning the language, not VI, EMACS, or screwing around 0 ith the command line.

      I have to disagree. A CS student should know how to use a computer long before he/she learns to program it. If that means ensuring incoming CS students already know vi/emacs/bash/etc' via a pre-major course/test, so be it.

      I agree that CS115 shouldn't be about learning an editor/shell, but that doesn't mean you deprive the students of those (powerful!) tools altogether by fluffing the course up with an IDE.

      --
      This sig rocks the casbah.
    104. Re:I would say IDEs by GWBasic · · Score: 1
      They should learn to program as close to the raw as possible

      That means hand-typing hex into Debug, which is hardly an appropriate task for an intro class. Why not crack open the hard drive and write the bits by hand?

      Sarcasm aside: When I first learned C in high school, the instructor explained what the preprocessor and compiler did on the first day. We never looked back afterwards. For those of us who needed to learn how to use a compiler from the command-line, we were able to figure it out. Spending time in notepad or hand-tuning switches would have been a waste for 90% of the class.

    105. Re:I would say IDEs by Kluenitou · · Score: 1
      You may end up discovering a love for low-level programming techniques


      True, that may happen, but if I was to take a course on Intro to Java, I would expect to learn Java, a high-level, object-oriented language. For the most part, low-level programming for drivers, etc. are rarely, if ever, done in Java. In an intro Java course, topics like memory addressing and pointers won't even be discussed. Don't get me wrong, I'm all for learning experiences and learning different things, I just don't feel it's right to force learning of one subject when you're teaching another. In an intro Java course, the students are likely to be learning simple things like initializing variables, for/while/dowhile loops, switch statements, simple functions: elementary things that using an IDE wouldn't hinder.

      With most IDEs, installation is easy and something like Eclipse can be installed on any environment be it Windows, Linux, etc. In one of my courses a few years ago, we had to use C++ on a Linux box. For a Windows user, I had to spend a good amount of time getting acquainted first with Linux then with the whole makefile convention of C++ (Don't even get me started on how frustrating it was that spaces or new lines in the wrong places would ruin the entire thing) To someone who's been working with those constructs for awhile, they probably seem trivial. For someone less experienced with such things like myself, it was just frustrating and took 4 hours before I could get my program to compile without being angry. Over the course of the next semester while working on my project, I'm sure I wasted cumulatively around 10-20 extra hours with linux/c++ makefile issues. Had I used an environment I was more familiar with and was easier to compile in, I could have spent that time concentrating on what I was actually supposed to learn.

      I may be getting a bit off topic here, but my contention is that if you make the environment easier for the user, more time can be spent on learning what you are actually trying to teach them--in this case, how to program in Java. I don't agree with any of the "IDEs will make their lives much easier and will make them poor programmers" arguments. It's not like an IDE is going to write the code for them, it'll just add functionality like color coding, formatting, line numbers to aid them, nothing to severely handicap them. I don't foresee any students finding life impossible if they all of a sudden didn't have line numbers and colors to help them keep things straight. As mentioned above, IDEs are generally easier to install and work with than vi, emacs, etc. Although experienced users find them simple to work with, someone who has grown up with Windows will have a steep learning curve and the time spent there could have been spent on learning the core of the course. Sure, there will be some some code completion for things in the Java API, but all that will do is save them 5 seconds from looking something up.

      Nor can they tell you that using a certain API after another API creates a condition that another application on your production system can't tolerate.


      True, APIs won't do that for you, but don't you think that's a bit out of scope for an intro Java class? I sure didn't learn that lesson in my intro java course...I was still back learning how to use for loops and learning simple algorithms.

      We are not making it 'hard' on you, we are being kind by making sure that you know all the pitfalls before you go live.


      I'm not necessarily saying that things shouldn't be hard on students, but I think you should maximize the time spent learning the language and minimize the time spent on learning semantics of something like vi, emacs, or other not-so-user-friendly environments.
    106. Re:I would say IDEs by Daegras · · Score: 1

      I'm not entirely sure about that. I think spellcheckers in Word processing programs, just like the "codecheckers" of IDEs, assist in catching more extravagent mistakes that happen out of mild carelessness or typographical issues. The true nitty-gritty details are NEVER caught and -they- are the ones that are truly important to deal with yourself. And to the sake of the topic as a whole. I completed my freshman year of a cs program and I think that they handled it very well save for the first part. My first programming class was an introduction to C that involved no programming what so ever, but focused instead on the syntax and theory of the language. I really didn't like this, but the fact that I had several years programming experience beforehand made it an interesting start. My next programming class, focused on C++, started me with several simpler programs written in either VI or EMACS. After that, because the focus of my degree is software development, we moved on to an IDE. So while I definitely support students learning close to the bones, I can't help but feel that the use of an IDE should really be tailored to the position of the class in the spectrum of the education and what the education is leading to.

    107. Re:I would say IDEs by dark404 · · Score: 1

      The whole "real world" argument is completely irrelevant. My third CS class was on data structures, and in that class I had to implement Linked lists, array based lists, dynamic array based lists, doubly linked lists, trees, etc, etc, etc. Given modern libraries, do you think I'm going to have to ever implement these in the real world? Probably not, but having done so in school I have a far greater understanding of how they work than if I had just read about them and used the built-in implementations.

      The same holds true with IDEs, you have to learn to crawl before you can walk. Doing everything in emacs, compiled via command line gives you a much better understanding of how the language and the compiler work than being cushioned by an IDE. Let's take java for an example, doing so much via command line teaches you a lot about some of the compiler requirements like having class paths set correctly, etc, where as an IDE will often auto-generate the needed class path information without user input. But if you are only raised with an IDE, you won't be as versed with that information and thus you become dependant on the IDE.

      The purpose of a university is not to prepare you to "get a job", it is to help you learn. As one of my professors used to always say, "Bonehead! I am not teaching you a language, I am teaching you how to program. Once you know how to program, the language does not matter."

    108. Re:I would say IDEs by plague3106 · · Score: 1

      But you all run off to Java because that's what someone shoved in front of your face and said, "Jump, froggy!"

      Maybe they learn Java because they are trying to learn OOP, not data centric or assembly programming?

      Nevermind that it translates to C++ about as readily as an "easy" cryptogram in a crossword puzzle translates to English.

      Why the hell would you write something in Java and try to move it to C++? Who cares if you its difficult to move it to C++? It would be just as difficult (if not more so) to move a C++ program to assembly.

    109. Re:I would say IDEs by plague3106 · · Score: 1

      XML, HTML, CSS,

      These are not programming languages. They are markup languages.

      HTTP

      This is a data exchange protocol, not a programming language. Oh, and by the way, I did we work for 5 years, and never really had to worry about the details of how HTTP works.

      Javascript

      This is a 'language.' A shitty scripting language, but finally you've mentioned a valid programming language.

      and MOST of those won't have decent IDE support.

      I dunno, VS2005 seems to be very helpful with CSS, XML, HTML, javascript and my server language. The browser and IIS talk HTTP to each other, so I don't need to worry about that too much.

      if you can't escape that handicapp, then i don't want you working for me.

      I've yet to have the IDE hold me back; in fact, NOT having the IDE makes me much less productive. Unless you think I'm being productive by typing a lower case letter instead of an upper case letter in C++ and then finding out when I compile it.

      Personally, I wouldn't want to work for you, as you don't even seem to know what a programming language is.

      (Note: i would support at the very least a syntax-sensitive editor with color highlighting, but even then someone could just learning to recognize colors, not learning to read the language, and that can hurt them later on.)

      Ugh. YOu really believe color coding hides the true meaning of keywords and variables?

      again, *programming* and *software development* are two different things. IDEs are great for software development, but IDEs have also created a world where i see a ton of shitty programmers.

      I think the shitty programmers are people that heard they can make lots of money fast by programming! Add in your local technical school and VB6, and there you go. But its hardly the fault of IDEs.

      and shitty programmers aren't terribly good at software development.

      Wow, big suprise.

    110. Re:I would say IDEs by acroyear · · Score: 1

      I didn't say *programming* languages, craphead, I said "languages". CSS and HTML are languages that you have to know to do Ajax programming.

      HTTP is a language as much as a protocol, in that as a protocol it is entirely human readable. is XML-RPC or SOAP a language or a protocol? Is XML even a "language"? (actually, THAT is a question I ask candidates - the real answer is no, it isn't.)

      Writing low-level Ajax code does involve knowledge of the HTTP protocol, and most people who know it know the protocol in the form of the language the two computers use to talk to each other, even if they never specifically write HTTP-handling code (though I have, both client and server). When you have to write server-code that involves sending additional headers back and forth, you are talking HTTP by writing code that generates strings in the HTTP langugage. a good developer should know WHY they can't write a new header after the server has already started to send text down the line (and why that one little newline in their JSP can break with a huge 500 internal service error deep inside tomcat). to really know why is to know HTTP to the point of being able to imagine the language, the header strings, as if you writing it yourself.

      yeah, you can be "productive" not having to give a rats ass about HTTP and just use prototype and scriptalicious and be done with it, but some of us have to actually architect things and build that sort of stuff and know the low-level details so you don't have to.

      and as i wrote before (at least 4 times now, and i'm sure others have had to say it as well to you religious-war nutcases), this question isn't about professional software developers using or not using IDEs. (I use eclipse with a passion). this is about whether or not the IDE for a beginning programmer (particularly for a CS degree student) HINDERS the development of their programming skills by hiding too much of the details of how computer languages and environments work.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    111. Re:I would say IDEs by plague3106 · · Score: 1

      I didn't say *programming* languages, craphead, I said "languages". CSS and HTML are languages that you have to know to do Ajax programming.

      You seemed to imply that, since you said you "write a component" in 6 different languages. I've never written a component IN XML (nor do I know how you could do so); I have written components that USE XML. That is a bit of a difference, so I think you can see how I thought you were implying they were.

      HTTP is a language as much as a protocol, in that as a protocol it is entirely human readable.

      I don't think protocols turn into languages based on how human readable they are, not without stretching what a language is. Otherwise a protocol is a language which is machine code commands, and that kinda dilutes the meaning of each of those terms.

      Is XML even a "language"? (actually, THAT is a question I ask candidates - the real answer is no, it isn't.)

      That question is a bit vague; funny how the first thing you said in reply was that you didn't stipulate 'programming language,' you said that it was just a language. Now you're saying its not a language at all? The fact is that it is a language, since a language is nothing more than an agreed upon alphabet and grammer. Just not a programming langauge.

      Writing low-level Ajax code does involve knowledge of the HTTP protocol, and most people who know it know the protocol in the form of the language the two computers use to talk to each other, even if they never specifically write HTTP-handling code (though I have, both client and server).

      You have to know that its a method for a client and server to speak, but thats about it. I know a bit more than that, but any of that knowledge is rarely ever needed.

      When you have to write server-code that involves sending additional headers back and forth, you are talking HTTP by writing code that generates strings in the HTTP langugage.

      True, but you're usually doing so through some kind of API that builds the headers for you. I have yet to have a need to directly interact with the headers. Again though, you're not "writing a component...in HTTP." You have a component which uses HTTP.

      a good developer should know WHY they can't write a new header after the server has already started to send text down the line (and why that one little newline in their JSP can break with a huge 500 internal service error deep inside tomcat). to really know why is to know HTTP to the point of being able to imagine the language, the header strings, as if you writing it yourself.

      I'd call that a failure of JSP and / or Tomcat. The developer shouldn't HAVE to code so specifically that they are manually maninpulating headers; there should be an API that does so for them, and ideally this API wouldn't let them violate the HTTP protocol. Knowing that you can't change something you already sent down the wire is pretty basic knowledge.

      yeah, you can be "productive" not having to give a rats ass about HTTP and just use prototype and scriptalicious and be done with it, but some of us have to actually architect things and build that sort of stuff and know the low-level details so you don't have to.

      If you're building a web server or API that wraps HTTP functionality then yes you should know that. Of course those kinds of positions are in the minority. Also, just because you need to know more details of the protocol doesn't really have anything to do with learning with or without an IDE. Or are you suggesting that those students taught with an IDE will be incapable of learning any kind of lower level programming?

      and as i wrote before (at least 4 times now, and i'm sure others have had to say it as well to you religious-war nutcases), this question isn't about professional software developers using or not using IDEs. (I use eclipse with a passion). this is about whether or not the IDE for a beginning programmer (particularly for a CS degree student) HINDERS the development o

    112. Re:I would say IDEs by acroyear · · Score: 1

      You have to know that its a method for a client and server to speak, but thats about it. I know a bit more than that, but any of that knowledge is rarely ever needed.

      I've need to know GET vs POST, cache settings (for 3 different browsers), writing content-types on the fly (particularly what to do to force the browser to give a "Save as..." dialog rather than embed the object, and how to default that filename), raw cookies, and all the crap that's needed to do file uploads, all in a single web application. some of that for Ajax, some of that for just basic functionality.

      all of that is set in the http protocol, and the way you write it (yes, using library calls like "request.setHeader(header, value)") is still so close to the language, you might as well be writing it directly (there is a slightly higher-level API for sending 300 redirects). in PHP and the Servlet/JSP api, you can keep writing headers until the first byte of "real" content is passed; after that you'll get a server-side error that's really hard to figure out by the way its presented.

      I've never written a component IN XML (nor do I know how you could do so)

      try using XUL sometime (its declarative, but its still programming). and though its not true XML, using JSPs standard "logic" tags and/or cold fusion, is like using a near-XML syntax for proceedural logic with conditions. XML serialization of Java components can be used to "program" a UI as well.

      its all a matter of how the interpretor of the XML treats it. XML's just a syntax that's standardized so much that parsers are written for just about every environment. what one does with the parsed content is one's own lookout.

      I don't really see how the IDE hides any of the details of the computer language.

      I, and everybody who has defended the view of avoiding IDEs in the first CS programming classes, have never said it did. its not the *language* that the IDE hides. Its the importance of how a development system works (compiler, linker, runtime engine) that gets hidden away.

      its the difference between technical training and getting a degree that confirs a true understanding of the subject matter. anybody can train on an IDE at any point. but training on an IDE too early can lead CS students to not get the full picture that I and many others believe they should be getting on how a computing environment works. already, I feel CS students are losing out because they no longer (in many programs including the school I graduated from) have to know a damn thing about hardware.

      if we're just talking about training people to program for work, we're talking turning universities into trade schools, and i ranted about that one elsewhere in this thread.

      (and i apologize for "craphead" ;-) )

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    113. Re:I would say IDEs by NetRAVEN5000 · · Score: 1
      First off, you don't need an IDE for color coding.

      Second off, it WILL help them in the real world. It'll teach them to debug programs without a debugger (believe it or not, debugger programs quite obviously don't catch all bugs. A human can catch more, if properly trained.), and it'll allow them the advantage of not knowing an IDE - they can learn any IDE they want later on.

    114. Re:I would say IDEs by NetRAVEN5000 · · Score: 1
      We never learned an IDE in my Java classes, and I'm quite thankful for it. Why? Simple. I'm a Linux guy. They had Windows computers. If we had used J++ or something, I'd be clueless when it comes to Linux programming. But since we used Notepad, I had no problem switching over. And I'll probably have no problem if I want to use MacOS either.

      It may not have been an "intro" class but I only took one Java class (and actually I didn't think it was going to be Java - that's not what it was called, it was called "Computer Science".

      An IDE does a lot to hinder the learning process. It points out a good portion of your errors, which means you won't learn to find them yourself. It forces you to learn to use the IDE which keeps you from learning the language for a while (want an example? Walk into any "intro" Visual BASIC class - the first week or so will be learning the IDE and maybe minimal amounts of coding). It tells you how to interface with different classes and objects, preventing you from taking the initiative to learn them for your own. And on top of all this, it's often wrong - I've tried out J++ and it points things out for no reason - for example, "undeclared variable" warnings when the line it's complaining about is a function declaration.

      And if pointers aren't being discussed, there's something wrong - Java uses pointers quite a bit.

      "think you should maximize the time spent learning the language and minimize the time spent on learning semantics of something like vi, emacs, or other not-so-user-friendly environments."

      Who said anything about vi or emacs? They could use Notepad or Word. Or is that not "user-friendly" enough for you?

      People aren't born with the knowledge of how to use an IDE. I'd say there's a better chance they'll walk into the class knowing how to use Notepad or Word than being familiar with J++ or Eclipse - only programmers would be familiar with these tools, and if they're already programmers what're they doing in an "intro" class?

    115. Re:I would say IDEs by Anonymous Coward · · Score: 0

      "1. That's not true, because it was a solution to a problem they were already using in live systems. They knew the right answer. Braces and semicolons aside, they knew what actual algorithm itself should do. Few programmers get the entirety of a program right on the first try without a single bug."

      But you make my point for me. If they wanted to know your ability to come up with an algorithm, they could have just asked. Writing an actual program in C just muddles the issue.

      As for knowing the right answer, that's part of the problem. They know the algorithm they know. If they were presented with a different algorithm would they actually be able to determine if it was correct within an interview? Problably not.

      Many of these interview tests are just as much about trying to assert that the current programming staff is smart as they are in determining the ability of the candidates.

      "2. Whether it could compile and run is irrelevant to the interview; what matters to the interviewer is the approach and whether an applicant can even begin to approach the problem in the first place. If I grew up thoroughly dependent on an IDE to suggest code to me, I really would not be able to even start answering a question like that one."

      You must be using a much more advanced IDE than I'm familiar with. Your IDE "suggests" code to you to solve general problems? Using its non-trained-speaker-independent-voice-recognition AI interface no doubt.

    116. Re:I would say IDEs by ClosedSource · · Score: 1

      I'm a former Atari 2600 game programmer so I know a bit about programming "close to the metal". The debate about IDE's vs. other tools has nothing to do with low-level programming. I'd also say that people who do low-level programming don't typically make a lot more money than other developers.

    117. Re:I would say IDEs by Anonymous Coward · · Score: 0

      This is absurd. Using an proper editor is so fundamentally important for any CS person that it should taught first thing, long before any language is taught. I've seen graduated CS students writing C-code in notepad, what just makes me want to cry and scream!

    118. Re:I would say IDEs by trogdor8667 · · Score: 1

      I think he's got it right. When we went through Java, our teacher showed us how to compile command line, two weeks later showed us Textpad. If we wanted to use Dr. Java or Netbeans or anything else, is was up to us. Textpad simply color codes and matches brackets, and its what I use to code now. Let the student use whatever they want, because as soon as they leave your sight, if you tell them not to use an IDE, they still can. Just don't teach them about it if you're concerned.

    119. Re:I would say IDEs by mmeister · · Score: 1

      Non IDE Way - They might get through 4/5ths of the above lesson plan, but on the flip side they'll be closer to the metal, as someone already said and they'll learn to develop good style habits from the start and to debug even when they have no tool to lean on, just the JDK.

      Sorry -- being closer to the metal in no way guarantees you'll learn good style habits or that it will improve your debugging skills.

      The command line is nothing more than a LAME IDE (one that makes YOU do all the work).

    120. Re:I would say IDEs by adlaiff6 · · Score: 0

      Right now, I'm in a Java class where we use Eclipse, and I've seen most kids use the auto-create try/catch block all year, and then have no idea what one is, or even why we use it.

      This is just an example, but the problem with IDEs is that students begin to lean on them as a crutch without even understanding the concepts.

  3. Integrated Development Environment by caryw · · Score: 2, Informative

    An integrated development environment.

    I could ramble on about it, but I'll just link you to the wikipedia article
    --
    NoFluffNews.com: Slash-based site for REAL news. Template still in development. Seeking intelligent journalists and editors.

  4. Go with what they are familiar with. by Fredwick.com · · Score: 2, Insightful

    Since you mentioned that they already have experience with VB or C++ (and I'm assuming when you say C++, you mean Visual Studio), just go with what they already know. If it were me, I'd stick them with an appropriate IDE for whatever language(s) you end up teaching. Speaking as a community college student myself, you should realize that unless you live in a predominantly technical area, most of your students students are going to be more comfortable learning with an IDE than with a blank vi screen. If you were teaching at a university, that might be different.

    1. Re:Go with what they are familiar with. by Elf_h34d3r · · Score: 0

      I graduated from High School about a week ago....

      I'm still rather annoyed with my Programming teacher who made us use the VB IDE. While The language alone was not IMO that great, the IDE caused bulky code that was hell to work with in plain text form. Yes it was, erm, "prettier," but for beginning students, if they ever want to get an idea of what real debugging is like, it's best to give them a simple text editor so they can learn the language for what it is and not have to rely on the IDE's "features" in order to do what they need to do.

      To sum it up, I had a much better time learning C++ with vi than VB through an IDE, however some students like to learn the IDE. I suggest you let the student choose what to use.

    2. Re:Go with what they are familiar with. by Anonymous Coward · · Score: 3, Insightful

      "Since you mentioned that they already have experience with VB or C++ (and I'm assuming when you say C++, you mean Visual Studio), just go with what they already know."

      I would suggest the oppsite. Go with something new. If they have already seen various IDE's in the past then go with a stright text editor. The worst you could possibly do for a student is lead them to believe there is only one way. There is nothing like the experience of being confronted with that blank screen, it builds competence.

    3. Re:Go with what they are familiar with. by jma05 · · Score: 3, Interesting

      Our university introduced students who are otherwise not programmers and will not be programmers - Java with Vi (or Pico - most students preferred that due to the learning curve). After the black unix terminal screen, now the students think programming is a black art. Those that started programming with Access and VB atleast are not afraid of programming and can create some simple data tools for their work (They however over estimate their skill but I prefer this outcome for our specific course). Since, real learning happens outside class, I think it is very important to make the students get interested in programming and let them have little rewards (It's a lot more fulfilling for students to get a GUI app that manages a database than see number crunching at the terminal).

      I think the environment should not interfere with the actual subject content since the instructor will often leave the students alone in this area. I thoughts are to first determine what you want to teach - and choose the easiest tools for the students.

    4. Re:Go with what they are familiar with. by KingMotley · · Score: 2, Informative

      Go with the IDE. Unless the purpose of the course is about how to get things to compile, and how to use outdated editors (Like vi), dropping them on the command line will just turn your course from Java/Python into a unix/linux 101 class instead. Overburdoning your students with cryptic command line syntax (For a specific compiler and editor -- of which they will probably use neither of ever again) doesn't really do your students that much good, and lands up detracting from them learning the language itself.

      I'm all for teaching basic command line skills to those that actually want to do it for a living, but that's a different course entirely.

    5. Re:Go with what they are familiar with. by Schraegstrichpunkt · · Score: 1
      I agree with everything you said except this:
      how to use outdated editors (Like vi),

      Vim 7 was released less than 2 weeks ago. I'd hardly call that outdated.

    6. Re:Go with what they are familiar with. by samkass · · Score: 2, Funny
      Vim 7 was released less than 2 weeks ago. I'd hardly call that outdated.


      Yeah, and COBOL2002 isn't outdated, either.
      --
      E pluribus unum
    7. Re:Go with what they are familiar with. by Itchy+Rich · · Score: 4, Insightful

      I would suggest the oppsite. Go with something new.

      I'd suggest you both fell into the trap posed by an incomplete question. Teaching someone to use an IDE and teaching them not to use an IDE are not mutually exclusive.

      A good programmer should know the basics without distraction, and also know when to save time by using an IDE.

    8. Re:Go with what they are familiar with. by StarvingSE · · Score: 2, Insightful

      COBOL is still used heavily in industry, with 80% of the world's codebase written in the language, especially in the financial industry.

      If you are a proficient COBOL/mainframe programmer, you will not have a hard time finding a nice high paying job for life. So no, it's not outdated by any means.

      --
      I got nothin'
    9. Re:Go with what they are familiar with. by ameline · · Score: 1

      It would be only around 10% or so (instead of 80%) if COBOL weren't so verbose.

      So what would you call an OO Cobol?

      c; -> c++;

      COBOL -> ADD ONE TO COBOL GIVING COBOL. :-)

      --
      Ian Ameline
    10. Re:Go with what they are familiar with. by Chabil+Ha' · · Score: 1

      A good programmer should know the basics without distraction, and also know when to save time by using an IDE.

      I agree. I remember when I took an intro to Java class (having completed a VB 6 course) and spent more time in frustration trying to track down that elusive unclosed brace. Instead of focusing my time on actually learning something useful, I had to spend a lot of it trying to figure out where I had left some relatively useless thing out.

      However, when we made the leap from using Notepad to IBM's Websphere, we jumped to the other end of the spectrum. Now instead of trying to figure out how to find the damn brace, now I had to spend countless hours trying to figure out how to get the tool to do something I wanted it to do.

      So, now it comes down to finding a sweet spot between the two. Something that isn't cumbersome like a 3000 lever machine and under complicated like a chisel and a stone tablet. I find something like Eclipse to be something in between. Heavy enough to be productive, but lightweight and intuitive enough to manage.

      --
      We're all hypocrites. We all have hidden parts, it's the contrast between them that make us more a hypocrite than others
    11. Re:Go with what they are familiar with. by dhasenan · · Score: 1

      So would the distraction be more of a benefit to new programmers? I think class browsers would be quite helpful when learning a language, as well as autocompletion; but if you actually have to go through some effort to get any information you've forgotten, it might encourage you to memorize it sooner.

      Regardless, I find it awkward to use an IDE. I'd at most give each method one lecture, then tell the kids to use whichever they prefer and go to office hours for additional help.

    12. Re:Go with what they are familiar with. by Anonymous+Brave+Guy · · Score: 2, Interesting
      COBOL is still used heavily in industry, with 80% of the world's codebase written in the language, especially in the financial industry.

      Would you care to cite a source for that incredibly high number?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    13. Re:Go with what they are familiar with. by chthon · · Score: 1

      COMPUTE C = C + 1.

    14. Re:Go with what they are familiar with. by SamLJones · · Score: 2, Interesting

      Maybe something in between would be appropriate. Instead of a full-fledge IDE or barebones vi/notepad, try a text editor with syntax highlighting (like TextPad or NotePad2). Helps with those easy things like unclosed braces, but leaves you to do the more in-depth debugging. Also gives line numbers (not so with notepad). I live on line numbers...

    15. Re:Go with what they are familiar with. by feijai · · Score: 1
      COBOL is still used heavily in industry, with 80% of the world's codebase written in the language, especially in the financial industry.
      Nonsense. Y2K took care of that myth. COBOL is rather little-used at this point.
    16. Re:Go with what they are familiar with. by angel'o'sphere · · Score: 1

      Nonsense. Y2K took care of that myth. COBOL is rather little-used at this point.

      No it did not. Most Y2K problems in COBOL software where solved with fixing the COBOL code and not with rewriting the software.

      However the number 80% of your parent is much to high. Nevertheless its hard to estimate.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    17. Re:Go with what they are familiar with. by eonlabs · · Score: 1

      You might consider taking a two step approach. Open up with programming in VIM or emacs. Vim's syntax isn't too hard to pick up. Then switch to something like eclipse half way through the semester. Assuming they're expecting the change (mention it in a syllabus), there shouldn't be any issues. Also, knowing modern IDEs like Visual Studio or eclipse seem to be valuable on a resume. An added bonus.

      --
      I wouldn't consider the mad hatter mad. Just reality impaired. He sure can make a mean cup of tea.
    18. Re:Go with what they are familiar with. by Fredwick.com · · Score: 1

      That's definitely true, but for most students there's hardly enough time in a single semester to master one method. If they're taking the class to actually learn to program instead of for required credits, then they'll continue to learn on their own after learning the basics in class.

    19. Re:Go with what they are familiar with. by danparks · · Score: 1

      I agree with going with an IDE.

      I've written about twenty programming books, including entry-level books (like "Mac Programming For Dummies"), and I think writing to the beginner is harder than writing to experienced programmers. It's not easy never being able to write "as you know from previous experience with ..." - very hard not having that crutch to lean on ;-) From feedback I've received from readers, and from the fact that computer users are familiar with apps that have many options/features (like MS Word), I'd go with the IDE.

      Just as most users have no problem ignoring/never learning most MS Word features (table of contents, tracking changes, online collaboration, etc.), most beginning programmers won't have any problem ignoring the vast majority of IDE features. Make a handout that includes a few screen dumps of the IDE with only the most pertinent menu items highlighted, such as Compile and Run. Tell them they're free to explore IDE features, but they'll only be expected to know a few (the ones you detail). Users know about hierarchies from working with files and folders on the desktop, so they shouldn't have a problem viewing files and folders in a pane of an IDE. Users know about typing text in Notepad, so they shouldn't have a problem typing code into an IDE's integrated text editor. For most non-programmers compiling by selecting a menu item is probably more intuitive than typing a compile command from a command line interface. Most users have never used a CLI, so that's something new. They use GUI apps all the time, so an IDE isn't really something new - it's just another app with a bunch of menu item options.

      Dan Parks Sydow

    20. Re:Go with what they are familiar with. by Anonymous Coward · · Score: 0

      At a Junior College, the first semester Computer Science class i took used VI and gcc from the command line as the "development environment". Then i transfered to a 4-year University. For some reason, the Adviser thought i need to take their first semester computer science class. i didn't feel like arguing with them. The class was nearly identical, except it used Microsoft's Visual C++ as a development environment. We basically used it like a complex, feature bloated editor for most of the semester. How we used it was not different from how we used VI in any significant way. In the latter half, as our projects began splitting into multiple files, the instructor gave us some tips on how to use the IDE to navigate the projects (find variables, functions declarations and definitions, etc...) The biggest advantage to the class using an IDE was that instructor eventually showed us the basics of using the built in debugger.

      i would say that the difference between teaching with an IDE and without are not very significant. (Typing out the compiler command or writing the Makefile by hand vs. going to a menu. Maybe there is some merit in that.) Flip a coin if You must, but what ever You choose, be certain to introduce Your students to the basics of using a debugger. Whether it is a command line debugger, one with a GUI, one integrated with an IDE, or a combination. Those lessons will be very important latter on, even if the projects in this semester are simple enough that that a debugger can be avoided.

      You might also want to give a brief introduction to code navigation tools (which ever ones You prefer), But it will be a great boon to Your students if You give them an intro the basics of using a debugger, with or without an IDE...

    21. Re:Go with what they are familiar with. by tehcyder · · Score: 1
      Would you care to cite a source for that incredibly high number?
      Wikipedia says:-

      "In the late 1990s, the Gartner Group, a data-processing industry research organization, estimated that of the 300 billion lines of computer code that existed, eighty percent or 240 billion lines were COBOL."

      I'd guess that is the source, but who knows how accurate it is?

      --
      To have a right to do a thing is not at all the same as to be right in doing it
  5. Go for the IDE by TheKidWho · · Score: 1

    Go for the IDE, its all a tool used to get work done. You don't want to spend time learning little technicalities of compiling something when you could actually be programming usefull code.

    1. Re:Go for the IDE by NihilEst · · Score: 1

      At the early stage of a student's career, everything they can learn about what's under the hood: the details of compiling, linking, stripping and so forth ... is all goodness.

      Getting tied to an IDE is badness. None of the real popular IDEs seem to work the same, unless you want to call "point & click" a commonality.

      --
      Founding member: He-Man Windoze Hater Club
    2. Re:Go for the IDE by thelamecamel · · Score: 2, Insightful

      Yes, we hate said English teachers, but being forced to write things by hand often does produce a better assignment - you are forced to redraft (at least once). When you redraft by hand, you have to write every word again, which gives you time to think carefully about every individual sentence each time you write it out. If you use a Word Processor, then if you redraft at all, you're likely just to skim read what you've already written.

      The same goes for copying down what's written on the board in maths lectures, compared to reading through the notes. One way forces you to take longer over each point, giving you time to completely digest what is happening rather than saying 'i understand that' and moving on.

    3. Re:Go for the IDE by Nutria · · Score: 2, Insightful
      I'm sure we all hate the English teacher who has us handwriting because word processors are a tool of Satan.

      What planet are you from?

      My teachers probably would have given an extra 5 points for papers that had been typed. That way, they wouldn't have to read boys' illegible chicken scratch.

      We probably all think "But the word processor helps EVERYONE to write better, thus improving the writing capabilities of humanity as a whole!"

      I'm pretty sure that write better is poor grammar, but don't hold me to it.

      What the text editor does is allow you to easily rewrite what turns out to be poor phrases or malformed thoughts. Of course, you've got to give a rat's ass, and not be destroyed by IM-speak.

      --
      "I don't know, therefore Aliens" Wafflebox1
    4. Re:Go for the IDE by mikiN · · Score: 1

      Devil's prosecutor here (wow, what a change after playing his advocate all the time...)

      Consider what you would do when you were marooned on an uninhabited island. Would you rather write your SOS message, put it in a bottle and cast it into the sea, or wait for one or more container ships to spill their cargo until you've collected enough parts (PC or laptop, matching battery pack, solar panels or a generator with matching fuel, a power converter, a satellite transceiver with matching dish, cables to hook all that up, etc.) until you could finally send a message asking for help?

      --
      The Hacker's Guide To The Kernel: Don't panic()!
    5. Re:Go for the IDE by Impy+the+Impiuos+Imp · · Score: 1

      We probably all think "But the word processor helps EVERYONE to write better, thus improving the writing capabilities of humanity as a whole!", but apparently the English teachers disagree; they are just selfish old geezers who want us to "Suffer As They Did."

      Actually, for grade-school students learning to write, there is mounting evidence that learning to type instead causes them to suffer in the language department. There seems to be something about hand-drawing letters that gives a distinct advantage.

      Whether that's still valid at the high school level though, I don't know.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    6. Re:Go for the IDE by ComputerizedYoga · · Score: 1

      If they're learning java and python, they're not getting "details of compiling, linking, stripping and so forth" anyway.

      I'm a big fan of teaching with an IDE for most oo languages, because popup lists of member variables and autocompletion is a great tool when you're not 100% confident of every language feature around.

    7. Re:Go for the IDE by jonadab · · Score: 1

      > being forced to write things by hand often does produce a better assignment -
      > you are forced to redraft (at least once). When you redraft by hand, you have
      > to write every word again, which gives you time to think carefully about every
      > individual sentence each time you write it out. If you use a Word Processor,
      > then if you redraft at all, you're likely just to skim

      I would have said pretty much exactly the opposite. When I had to write every draft by hand, I seldom revised anything more than two or at most three times. Frequently, I would hand in my second draft as final, even for English writing assignments, simply because the prospect of rewriting the thing by hand was so painful.

      With the advent of word processing I found myself able to revise much more often, because it didn't take nearly as long. Frequently I would go through half a dozen drafts or more even for minor assignments in non-language courses.

      For English composition teachers, the best piece of advice I could give would be to build repeated revision into the cirruculum -- assign the students to pick out some of their best work from earlier in the semester and improve it further. Good writing comes from good writers. Great writing comes from mediocre writers who tenaciously keep revising and improving their work for years or, in extreme cases, decades. Tolkein is an excellent example here: if you read the Book of Lost Tales, it becomes immediately apparent that *much* revision was needed, but Tolkein realized this and spent most of his life revising his material, eventually ending up with something really great.

      Computer programming teachers would do well to keep that same principle in mind. However, I'm not convinced that the question of whether to use an IDE or not has anything to do with that.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    8. Re:Go for the IDE by Dan+Ost · · Score: 1

      I'd like to learn more about this sort of thing. Could you please direct me to
      the research you're referring to?

      --

      *sigh* back to work...
    9. Re:Go for the IDE by Zork+the+Almighty · · Score: 1

      There seems to be something about hand-drawing letters that gives a distinct advantage.

      The "advantage" is simply the amount of time the student spends thinking about writing. Writing by hand is time consuming. Also, you are forced to think about what you write, because if you make a mistake then correcting it is tedious and the result tends to look bad. With a word processor you don't have to think very much about what you write. You can just pour crap onto the page and "edit" it later. Most people don't spend a lot of time editing. Certainly they expect to spend less time editing a paper than they did writing it. The end result of this process is almost always crap, because the person can get away with putting less thought into what they are doing. This is true of any intellectual task, and the justifications for quicker approaches (calculators in math class, IDEs in computer science, etc) usually boil down to an excuse that something is not worth the time it takes to learn. That can be true in many cases, but it is never true for the foundations of a subject.

      --

      In Soviet America the banks rob you!
    10. Re:Go for the IDE by Toshio · · Score: 3, Insightful

      Why the need to choose between paper and computer? Why the need to choose between vi/emacs and IDE? This is all nonsense. First thing is to decide what knowledge is student expected to display. If the sudents needs to display good organizing skill, mental discipline, good memory and expert knowledge of problem domain, by all means push them to paper or vi/emacs. If you want the students to display the knowledge of grammar, whether in natural or synthetic language, then remove the obstacles that require so much more. You might not want to give students an IDE with RAD tools integrated, but any GUI text editor with syntax highlight should do, just like any word processor with spell-and-grammar checker will do for texts.

      First step in school of writing is to master the grammar and style. This can only be achieved if the student doesn't have helpers (live or automated) that clean up his/her mistakes. The student must be able to proof-read own texts, spot mistakes and fix them. No need to to this on paper, but it certainly shouldn't be done with F9.

      First step in school of programming is to master the grammar and style. This can only be achieved if the student doesn't have helpers (live or automated) that write plumbing code for him/her. The student must be able to read his own code, understand it and write it from first "public class", to the last "}". No need to do this with vi/emacs, as there is not context help, no language reference a single click away, no drop down context menus to insert class member names. However, there should be no magic Alt-Whatever key to create complete class construct all ready for inserting the code into members, let alone some magic RAD builder. These things hurt students, not help them.

      Once the students are past the introductionary stage, you can start moulding them. Once you know your natural grammar and style, you can focus on what do you want to write. Once you know synthetic language grammar and constructs, you can focus on whole applications with GUI and all. Just like established columnist writes a column and presses that magic F9 button to catch anything he/she missed, the programmer clicks couple of buttons to write that plumbing that holdes the logic together. But stay away of tools that will do this for you when you don't master those things yet.

      One thing is to lecture basics of programming. IDE can be used for all the help in writing the code, but it shouldn't be abused to write code constructs. When the students know how to write these basic construct by themselves, then comes the time to start lecturing the use of IDE and the tools that it provides. Students should obtain complete knowledge from the basics of how to write in plain editor, all the way to knowing the tools that will make them productive when they go out and start doing this for life.

      It's similar with algebra. As a student, I had to display knowledge in three areas:

      1. theory
        where I had to display the knowledge of axioms and theorems
      2. practice
        where I had to display the knowledge of using the theory on short practical tasks
      3. and Mathematica (Wolfram Research)
        where I had to display the knowledge of solving large problems in as efficient ways as possible

      Catch was that you couldn't take tests 2 and 3, if you failed test 1, and you couldn't take test 3, if you failed test 2. It was simple bullshit filter, that worked perfectly.

      Programming is just like that. You should first understand the syntax (statemets, operators, how do they fit together), only then you can start writing short snippets (reading, writing, calculating, sorting, ...), and only after you know this, you can start thinking about writing complete application with GUI (using data binding, database access, designing usable GUI, ...). Each step takes you further to the point of useful knowledge, but you just can't skip any of them. Lecturer just has to decide on the right tools for the right level and don't let the students skip steps that are needed for complete understanding.

      --
      To boldly invent more hot water.
    11. Re:Go for the IDE by Main+Gauche · · Score: 1

      "I'm pretty sure that write better is poor grammar, but don't hold me to it."

      FYI, you'd be wrong: "Better" is both an adj. and an adv.

    12. Re:Go for the IDE by ClosedSource · · Score: 1

      For most languages there is no standard commands for compiling, linking, etc. The commands and options depend on the platform and the vendor. So knowing how to use these commands for a particular CLI toolset is no more fundamental than knowing how do the equivalent for a particular IDE.

    13. Re:Go for the IDE by Anonymous Coward · · Score: 0

      Even professional writers who shun computers typically use the typewriter. So based on your theories nearly all professional writing that has been written in your and your parent's lifetime is crap.

    14. Re:Go for the IDE by Zork+the+Almighty · · Score: 1

      Professionals will take the time to do something correctly, regardless of the tools available. I was talking about students who are supposed to be learning something, often against their will.

      --

      In Soviet America the banks rob you!
  6. yes by Anonymous Coward · · Score: 0

    Go with an IDE. They could use the experience with easy debugging.

    Besides, even if you push vi/emacs and a commandline compiler, a lot of students will most likely use an IDE anyway. At least that is what I saw when I was a student.

  7. vi/emacs as the IDE by bn557 · · Score: 1

    I can't speak from experience for emacs, but I know vi has the ability to do syntax highlighting. While most IDEs do statement completion for you(along with listing parameters and options), I always found having a language reference next to me to be more useful as when I was in need of knowing the function I needed, I also needed to know it's parameters and what they did anyways. I'd say vi would be great to learn the language if they don't already have to learn vi. If a majority of the students don't already know how to use vi, using an IDE would probably allow the students to get more out of the course.

    --
    Humans are slow, innaccurate, and brilliant; computers are fast, acurrate, and dumb; together they are unbeatable
    1. Re:vi/emacs as the IDE by epee1221 · · Score: 1

      I know vi has the ability to do syntax highlighting
      That's still a long way from what you can do with an IDE.
      Syntax highlighting is nice, but I also like being able to use some other features found in IDE's:
      - Creating individual objects and running specific methods on them
      - Statement completion (which you also mentioned)
      - Running a debugger

      On the other hand when I use a text editor (especially for non-programming work), I don't much care about most features. I generally use gedit or jEdit (yes, jEdit has some interesting features, but I generally don't make use of them).

      I guess what I'm trying to say is that I use something as bare-bones as a text editor, it's because I'm not concerned with features -- if I am concerned with features, I'll use something more advanced (word processor, spreadsheet, IDE, etc.).

      --
      "The use-mention distinction" is not "enforced here."
    2. Re:vi/emacs as the IDE by Anonymous Coward · · Score: 0

      I'm not sure what you mean by #1, but vim does #2 and #3. In fact, i'm not exactly sure of a definition of "ide" for which vim doesn't qualify.

    3. Re:vi/emacs as the IDE by Anonymous Coward · · Score: 0

      emacs does all 3 plus refactoring. vi and its derivatives are for retards who just like the keybindings. Newsflash: you can change the keybindings in emacs and probably pretty much any editor to suit your preferences.

    4. Re:vi/emacs as the IDE by Zeinfeld · · Score: 1
      I can't speak from experience for emacs, but I know vi has the ability to do syntax highlighting

      Vi and emacs are to an IDE what a Ford model T is to a 2006 Lexus.

      No matter how much lipstick you put on the pig it is still a pig underneath. The real value of an IDE has nothing to do with the syntax highlighting or other eye candy. The value of an IDE is in the effortless integration of the components.

      In visual studio the debugger, compiler and editor are absolutely and totally integrated without any rough edges. Emacs gives me sharp edges everywhere and a file to round them off after I discover them the hard way.

      Do not teach the students with vi or emacs, you will teach them to build code that looks like vi and emacs - shiny tools for geeks that are utterly incomprehensible to people who don't know the handshake.

      Lots of people like being in the freemasons. Most of us can get by without dressing up in leather aprons, rolling up a trouser leg and being buggered by a goat. When I learned to write I did not begin by learning how to make ink and cut a quil pen.

      The people who think emacs and csh should be absolute prerequisites to 'real computing' are no different to the people who used to think that FORTAN, COBOL and MVS were absolute requirements before anything of any importance could be done on a computer. Most of the old timers who thought that way are currently unemployed writing whining letters to the papers about how terrible it is that the government is allowing new H1B hires of programers while they can't find a job. The fact that this is entirely due to the fact they refuse to learn to use the in demand tools completely escapes them.

      This is a technology business. If you are not prepared to learn the most cutting edge technology of the day you probably won't have a technical job in ten years time and you certainly should not be teaching others.

      --
      Looking for an Information Security student project suggestion?
      Try http://dotcrimeManifesto.com/
    5. Re:vi/emacs as the IDE by Reverend528 · · Score: 1
      The value of an IDE is in the effortless integration of the components.

      So, use vi or emacs as an editor and use bash as the IDE.

    6. Re:vi/emacs as the IDE by jonadab · · Score: 2, Interesting

      > Vi and emacs are to an IDE what a Ford model T is to a 2006 Lexus.

      I won't talk about vi, but this is a terrible analogy for Emacs. If an IDE is a 2006 Lexus, then Emacs is the car from the movie Batman Begins. It's much more intimidating and harder to learn how to use, but under that hard exterior there is all sorts of functionality that you previously never realized was possible.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    7. Re:vi/emacs as the IDE by ScottyH · · Score: 1

      I'd mod this insightful if I had points...and I'm on the IDE side of this argument. I've just never seen things that way before.

    8. Re:vi/emacs as the IDE by noldrin · · Score: 1

      Emacs can syntax highlight. You can also compile your code from the editor and then click on a list of errors to be brought to your error. I really don't see the need for more IDE for an intro level class. If yo want to be fancy, it can also debug.

  8. Not at first by trewornan · · Score: 4, Interesting

    I'd have to go with a non-IDE approach initially and introduce an IDE later on so as to avoid teaching dependence on something which shouldn't be required. Incidentally - vi would be a bad idea, it's got to much of a learning curve when they're really supposed to be learning programming - gedit or notepad might be better.

    1. Re:Not at first by kunakida · · Score: 2, Interesting
      I agree about not starting with an IDE.

      IDE's are a crutch, and the make/build files they create are not amenable to automation.

      If you are teaching on Windows, Notepad is OK, but Notepad++ is a good open source editor with color syntax highlighting for various languages.

      Unfortunately on Linux, the Editor should be vi (maybe not as a first editor). It is available on almost any Unix like platform (even Windows)

      I would also suggest not letting them use a debugger at first.

      Use printf, System.out.prinln, Logging, Trace macro, whatever.. It improves the ability to deal with finding and fixing bugs, as well as promoting a personal coding style that avoids bugs. Test early, test often. Code a little, test a litle. Write literate code, etc.

      Using a debugger all the time is a crutch that makes it too easy to not bother with working on your code quality. And when they get to systems that don't have a debugger, they are clueless.

    2. Re:Not at first by Simon80 · · Score: 1

      there are some things that are hard to debug with print statements, such as hey, which chunk of memory is this Java array pointing to? AFAIK, that's an impossible thing to figure out. There was a time when I didn't know that multi-D array copying was shallow, and it took an IDE to figure it out.

    3. Re:Not at first by 4D6963 · · Score: 1
      vi would be a bad idea, it's got to much of a learning curve when they're really supposed to be learning programming - gedit or notepad might be better

      Well, in first year of college, the first thing we were taugh was vi, the linux one with no gui. But for some mysterious reason, it worked much more like any other editor, meaning that you didn't need to us x to delete a character or dd to delete a line, you could just you the backspace key. So the only thing to know about vi was a for append, i for insert, and the combinations of :wq!. Then only later we've been taught emacs.

      Btw the GUI vi is just as simple to use, I use vi on Windows all the time (and compile with gcc in cygwin) and I never have to type anything but a for append, not even :w or such. And btw don't forget about the syntax highlighting and formatting, I find it precious (for some reason the vi at school didn't have any of these, go figure). I would hate programming in notepad.

      --
      You just got troll'd!
    4. Re:Not at first by Anonymous Coward · · Score: 0

      I'd have to go with a non-IDE approach initially and introduce an IDE later on so as to avoid teaching dependence on something which shouldn't be required.

      I think implanting the interface later is a great idea because IDE will likely become outdated and require replacement anyway with an interface capable of higher bandwidth. Would USB be better than IDE to begin with? ;-)

    5. Re:Not at first by Anonymous Coward · · Score: 0

      I agree. Because it's not just "Intro to Programming", it's also "Intro to Becoming a Computer Stud". Time to seperate the men from the boys (with a crowbar).

    6. Re:Not at first by dubl-u · · Score: 3, Insightful

      I'd have to go with a non-IDE approach initially and introduce an IDE later on so as to avoid teaching dependence on something which shouldn't be required.

      I would agree with this. I think you can't be a professional programmer without knowing what goes on under the hood. On the other hand, you can't be a professional programmer in a language like Java without mastering one of the better IDEs.

      Modern IDEs like Eclipse and IntelliJ IDEA, by making it easy to follow the relationships and jump around the code, permit a more modular, granular style of development than you get using a text editor and opening up one file at a time. And these days I won't even hire somebody who doesn't know and use the automated refactoring tools if their language supports them.

      Of course, I also won't hire somebody who can't write reasonably correct code on paper. So yes, do both!

    7. Re:Not at first by gravy.jones · · Score: 1

      Instead of one or the other, why not both? Show them how to cc and link and then how to do it using the studio. A good basic windows programming linking problem is how to override system calls in kernel32. The answer is changing the link step to link a custom library before kernel32, then the code contains your function instead of the one in kernel32. One that makes for a good example is OutputDebugStringA. In order to do things like that in the studio you need to issue linker directives, such as pragma. This also drives home that there are ANSI and Wide versions of functions, which is usually transparent at coding time.

      --
      Where's the 0xBEEF
    8. Re:Not at first by brewt · · Score: 1

      You must be using vim not vi, since vi doesn't have syntax highlighting. And you must have been using vim in modeless mode (evim).

    9. Re:Not at first by zootm · · Score: 1

      I would agree with this. I think you can't be a professional programmer without knowing what goes on under the hood. On the other hand, you can't be a professional programmer in a language like Java without mastering one of the better IDEs.

      In my experience, though, it's easy to learn an IDE if you've been using a plain editor for a long time. I can imagine that the converse is not true. So yes, plain first. Some languages don't have competent IDEs, and some tools are so different that migrating when one IDE's View Of The World is all you know would be difficult. When you know the basics, you have a better understanding of why things work that way, and each IDE just has a different way of helping you.

    10. Re:Not at first by wwwillem · · Score: 4, Insightful
      Unfortunately on Linux, the Editor should be vi...

      If you go the non-IDE route, I still think vi is not the way to go. I (have to) use it all the time when sys-admin-ing systems, but for developers there is no reason not to use something like gedit, nedit, etc. Giving them vi is a guarantee for your students to hate sw development.

      And personally I would spend one lesson on CLI based compiling and linking of 'hello world', to show what happens under the water of an IDE and then I would quickly move on to something like Netbeans.

      --
      Browsers shouldn't have a back button!! It's all about going forward...
    11. Re:Not at first by professionalfurryele · · Score: 1

      Since they are being taught to program you shouldn't try to teach them to use a text editor (this coming from someone who uses vi and wouldn't write a text document in anything else). Your best bet is to start with a simple text editor (if you can find one with syntax highlighting but nothing fancy that would be ideal). You then want to move them onto an IDE when you get the chance to teach them to use the IDE. For all intents and purposes Emacs is (when used in this context) a super powerful IDE with the mother of all text editors bolted on the side. It might however be a bit hard core as a 'first IDE' to use. As much as I love vi, it's a text editor, not a development environment, at least as far as I use it.
      Using an IDE properly requires either lots of practice, or less practice and education. When you are first starting you need to make a few of the mistakes that the IDE will stop you making just so you know how to use an IDE properly.
      In the end it is a compramise. If you use an IDE, you will lose some of the power that text editors offer, but gain some of the power IDEs offer. Since you are teaching them to program, using an IDE seems a more suitable skill to teach them that using a text editor. Especially since it is very easy to misuse a IDE and much harder to misuse a text editor.
      Just my two pence worth.
      If you had infinite time available the ideal would be to have them programming in emacs with all the suitable extensions and whatnot by the end of the course, but that is like saying by the end of a course on classical mechanics the ideal would that students could do string theory. Heck I've been programming on and off for years now and I haven't got around to learning how to properly use emacs in this context yet. It would seem a bit much to expect your students to reach that level.

    12. Re:Not at first by Antique+Geekmeister · · Score: 1

      Unfortunately, a lot of schools don't teach this way. It takes away from the certification tests, especially in the Microsoft certification courses and their like. They tend to ask highly specific questions that you can only answer if you spent the time memorizing the manual, not if you've spent the time to actually get things working. The result has been that a lot of "certifications" aren't worth the fake sheepskin they're badly inkjet printed on.

      It's also the source of a lot of absolutely awful Java and Perl code that we see today. It looks pretty in the IDE, but it doesn't check its error results and give useful messages, it uses very inefficient ways to do things that are cut and pasted from elsewhere, and it tends to be very fragile as the poorly documented "features" of functions get removed or added with the next software release.

    13. Re:Not at first by Anonymous Coward · · Score: 1, Interesting

      Good advice. I'd suggest the command-line approach not just because it takes away their dependence on a particular IDE, but because it gives them a better understanding of traditional/basic program design, ie the engine, powertrain, and suspension instead of the chrome door handles. Better to hit them with cryptic command line options and the need for a sharp eye/correctness in freshman year than to hit them with it junior year. It may turn some of them off at first, but if they're majoring in this, it's likely going to be a career for them, not a sideline. Anyone's particular like/dislike for Unix should not an issue, since Microsoft gives away a suite of compilers and API's free as well, not to mention Borland compilers and all the other open-source offerings that have practically been ported to toasters.

    14. Re:Not at first by ChadAmberg · · Score: 1

      Text editors are such a damn crutch, I can't believe any real programmer would ever use them. And then you lazy bastards are all using a compiler!

      Real programs use: copy con kernel.exe
      Write binary directly from the keyboard!!

      Wait, I know using a keyboard is nothing more than a crutch, but my jackin/jackoff interface is busted!

    15. Re:Not at first by zootm · · Score: 1

      Agreed. It's hard to express how glad I am that I learned abstract language concepts, and languages themselves, more than specific languages or IDEs.

    16. Re:Not at first by sjames · · Score: 0, Redundant

      vi does have a learning curve, but once learned is very fast and efficient. It's also a great bridge to an IDE later. Variations like elvis do good syntax highlighting, can invoke make and then take you to each error or warning, and if you add ctags, you can navigate quickly through the code.

      So, DO start with vi. Later, the very same commands will work with the very IDE like features in vim or elvis.

    17. Re:Not at first by cbcbcb · · Score: 1

      I haven't written a line of Java for 4 years, but I'm pretty sure the default toString() method for an array will give you some sort of unique hash describing the array.

      Secondly, the idea you need an IDE to learn the basic semantics of a language is laughable.

    18. Re:Not at first by EchoNiner · · Score: 4, Insightful

      Don't jump out and mark this as Troll, but...

      I think emacs is a better editor to start off with than any of the others suggested so far. Here's why:

      Easy to use basically in X mode since it has menus, etc. You can save and quit without knowing c-x c-s c-x c-x at first and other useful functions are available via the menus.

      Indenting! Emacs teaches us what good code looks like because hitting the tab key puts the line in the right spot. If we're talking python, this is a little different, but C, Java, etc. you need to be bashed in the head with good code style when starting off.

      Why jump into a different editor that is just as easy to use as emacs in seperate window mode (or even just XEmacs) when you get all this with the integrated debugger, split windows, indenting, etc?

      I am not trying to start up a vi vs. emacs debate because I myself use both editors (I know, blasphemy) when it suits the purpose (vi is good for quick edits, macros; emacs is good for development, debugging; I can go on and on). I am just saying that emacs is totally scalable in terms of ease of use and it is a good editor to start with.

    19. Re:Not at first by angel'o'sphere · · Score: 1


      Use printf, System.out.prinln, Logging, Trace macro, whatever.. It improves the ability to deal with finding and fixing bugs, as well as promoting a personal coding style that avoids bugs.


      I completely disagree with that.

      Lately someone here on /. linked a hughe article why debuggers are bad. Sorry, my opinion is if you are faster finding a bug with printf style then you never have learned how to use a debugger effectively.

      How should using printf teach you how to avoid bugs? Thats a very silly statement, either you LEARN how to avoid bugs or not. And basically you learn it by MAKINg the bugs and by fixing then later and finally by learning a bit about testing and design for testability ...

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    20. Re:Not at first by A.Gideon · · Score: 1

      This is the power of "language survey" courses. As much as they provide an overview of the various languages, the real strength is that they teach the differences. How is LISP different from Java different from SML? What difference do those differences make, and how does it alter one's approach to problem solving.

      Another advantage is that it provides access to a set of "problem solving" approaches that might not be "natural" in a given language but which might still be the best way to think about a problem.

      I agree with those writing to skip the IDE in an introductory course. It's a distraction. Further, the advantages an IDE provides only truly appear with more complex software - software not likely to be written in an introductory course. Therefore, using the IDE that early (1) takes time away from the primary goal of the class and (2) forces the student to use a tool that provides little advantage.

      Better to teach an IDE concurrent with more advanced programming projects that can really benefit from such a tool.

    21. Re:Not at first by The_Wilschon · · Score: 1

      I somewhat agree. I learned (first) with an IDE (Borland Turbo C++ 3.0 (no, take that back. First was GW-Basic... an IDE? It defies classification as anything other than hell.)), and I never grasped the underpinnings of having a compiler and a linker etc until the IDE was gone. OTOH, I never use an IDE at all now, I use vi and make every day. I've learned vi quite well by now, and I don't care to bother with another learning curve for some IDE.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    22. Re:Not at first by Simon80 · · Score: 1

      Well, think about it from my point of view at the time, I was (ironically) a student, and Java was my second programming language after VB (stop laughing at me!). I was just trying to debug my program, not learn language semantics..

    23. Re:Not at first by Anonymous Coward · · Score: 0

      there are some things that are hard to debug with print statements, such as hey, which chunk of memory is this Java array pointing to? AFAIK, that's an impossible thing to figure out. There was a time when I didn't know that multi-D array copying was shallow, and it took an IDE to figure it out. If you did not know that then you obviously did not really know Java.
      You are better off first learning without an IDE. You need to understand what happens when you compile. How inner classes get compiled to different class files etc. How to use the command line debugger, etc. How to create jar files. Use vi/vim as it has syntax highlight and you can run the compiler from it. The student can learn to use an IDE later in the course. Also use a decent text and make sure they have access to a supplementary texts such sa Horstmann and Cornell.

    24. Re:Not at first by Iron+Condor · · Score: 1
      Why jump into a different editor that is just as easy to use as emacs in seperate window mode (or even just XEmacs) when you get all this with the integrated debugger, split windows, indenting, etc?

      Well, nobody ever denied that emacs is a great operating system. But in order to compete with Linux or the *BSDs, it needs a decent editor.

      --
      We're all born with nothing.
      If you die in debt, you're ahead.
    25. Re:Not at first by Cederic · · Score: 1


      Oh, don't. I went for one job interview where they asked me to write code - on paper. With a pen.

      I still regret not just walking out on the spot. I will next time.

      Apart from that, yes, concur completely.

    26. Re:Not at first by kunakida · · Score: 1
      Sorry, my opinion is if you are faster finding a bug with printf style then you never have learned how to use a debugger effectively.

      I never suggested not learning a debugger at all. In fact I have learned and used many. I merely suggested that you should first learn to do without, so you don't cripple yourself in situations where debuggers are not available (such as new platform environments, or in debugging compiler optimization problems with released code) or not as useful (such as event driven, or heavily multi-threaded code). Using a debugger is only one possible tool. The most important one is the meat processor sitting between your ears.

      Besides, these are students. Why does finding a bug faster really matter so much? From my experience it is only important when you are firefighting code most of the time, and you have to get it out the door because your customer and your manager are yelling. Shops that code this way are the worst sort of places to work.

      A more important lesson is to create better code, so that your overall project has fewer bugs and can be delivered sooner by avoiding all that debugging of sloppy code. Not to mention giving a break to the poor overworked Q/A that has to test your code, or to the angry customer that ends up reporting the uncaught bugs. It also has the side benefit of reducing the cost of maintenance.

      How should using printf teach you how to avoid bugs? Thats a very silly statement, either you LEARN how to avoid bugs or not. And basically you learn it by MAKINg the bugs and by fixing then later and finally by learning a bit about testing and design for testability .

      By making it not so easy to debug through bad code, your code quality will have to improve as a defensive measure. Everyone is more willing to learn (or look for) advice when it will get them out of pain. Everyone is more willing to use good techniques when it will help avoid re-experiencing remembered pain. Think of it as accelerated learning. Using a debugger, will only defer the pain, and allow people to avoid fixing things. Sometimes, such code will only be discovered after someone leaves the team and the pain ends up being transferred to another. I don't know too many programmers willing to be that other. I've had to be that other too many times, I would love to be able to avoid a repeat.

      These lessons are also better taught the sooner the better, when they don't have as much to unlearn, and the code they work with is relatively small and simple, and the consequences of not doing it right are relatively small. Plus, it helps teach them to look on their own for advice or solutions, communicating with others and doing research. In my experience, you can't have too much of that either.

    27. Re:Not at first by dubl-u · · Score: 1

      Oh, don't. I went for one job interview where they asked me to write code - on paper. With a pen. I still regret not just walking out on the spot. I will next time.

      It's not like I ask them to prove the four-color theorem. I ask them to do "Hello, World" in as many languages as they can, hopefully as many as they list on their resume.

      The main goal here is to separate the poseurs from the real coders. It also lets me see how people perform under pressure. With people who pass the initial technical screening, I also do a two-hour, test-driven pair programming session, so they get plenty of screen time. In my experience there's a strong correlation between people who can write basic code on paper and people who write real code well on the screen.

    28. Re:Not at first by SuhlScroll · · Score: 1

      Giving them vi is a guarantee for your students to hate sw development.

      I couldn't agree more. I had to struggle through a Motorola 68k class in my senior year of college and it was more of a struggle to learn the ins-and-outs of Unix and vi (both which I had to deal with for the first time in this class) than it was to do the assembly programming. Since then I've come to love vi/Vim, but there was a pretty long learning curve. To put the learning of vi in the way of having to learn some other technical material is really kind of cruel.

      And personally I would spend one lesson on CLI based compiling and linking of 'hello world', to show what happens under the water of an IDE and then I would quickly move on to something like Netbeans.

      I would agree again. I'd say keep the students as close to the metal at the start until they understand the mechanics of the process to get to a working program, but don't make them break stones with a sledgehammer after that. Some programmers won't ever learn the science of programming in favor of the mechanics; don't keep the rest of the class's collective head under water because of that.

    29. Re:Not at first by Billly+Gates · · Score: 1

      so does (g)vim.

      But you can tell with both that they were not designed with the gui in mind and have quirks for a true newbie.

      For example gvim doesn't go into insert mode by default which confuses newbies when they click the buttons. Also if I recall it was a pain to get anything done in xemacs like turning autoindenting on and off and running make from within emacs.

      In gvim I just do a :make.

      But this discussion is dumb and I hate editor wars. The goal is learning to program and reading documentation to solve problems.

      It seems most newbies like eclipse which supports several language now as editors are very 1980's and dated for programming.

    30. Re:Not at first by cof · · Score: 1

      For your intro work - go ahead and use an IDE. Let the students get something up and running, with as little overhead as possible. It's a chance for them to see they can make something happen. What you achieve, hopefully, is to whet their appetite for more.

      In the end however, they won't know what's going on. Not in any comprehensive sense of the word. Java or Python won't let them know what's going on either, so you've lost very little by using an IDE. Using command line tools will only change the focus of leaning from the code to the tools. Just make sure the program (the education program) gives them an oppertunity to get a real understanding through a language that makes what's actually happening visible.

      I've watched with dismay the level of understanding drop year over year. I don't see anything checking the fall. The poor showing of US schools in the recent ACM programming contest is a reflection of this problem.

      Watching my daughter learn programming leaves me with no question about this issue. When she went from Java to C her understanding of what was actually taking place went up dramatically. It reinforced my belief that learning a low level language - C or assembly - is necessary for real computer literacy. (Please, not C++, with C++ you end up with the worst possible combination: tremendous complexity and no support. And the addition Object Orientation doesn't really help.)

      While there are few programs (at least by line count) that require C today, the deeper understanding of what's happening pays off. It pays off in being able to know what to expect. It pays off in better code in any language. Understanding the details allows you make informed choices. It seems the academic community has lost this perspective. There seems to be a belief that the "details" are beneath them. "You shouldn't have to think about memory management" is a popular comment to this effect. Unfortunate this is simply out of touch with reality - perhaps one too any levels of indirection.

      Any computer education program should require a significant investment in low level coding. Demanding academic programs should require most of the work be done this way. The quality of the graduates would increase substantially. What we're getting instead, as Alan Kay put it in an recent interview, is "java certification" which is a much lower standard. And, as a standard, it's simply too low.

    31. Re:Not at first by Anonymous Coward · · Score: 0

      Emacs is BAD.
      It is bad because none of the ctrl-s, ctrl-c, etc. work. NONE.
      Gedit etc. can do syntax highlighting as well as Emacs, obey all the ctrl-v's and therefore are much better for beginners.

    32. Re:Not at first by jandrese · · Score: 1

      IMHO, it'd be cruel to start out programmers on an editor that can't at least do some syntax highlighting. I know I started out that way (back in the Turbo Pascal days) and when we upgraded to the version that had syntax highlighting, my frustration with programming dropped immediatly. Computer languages have far too many fiddly rules for students to be expected to memorize all of them on the first day, especially for beginner programmers. Syntax highlighting will allow the users to spot the error right away (although it doesn't give away the answer, forcing them to think and learn!) and avoid the otherwise inevitable 300 error messsages on the first compile of their mostly trivial program.

      Heck, most of the features in an IDE won't be useful to a beginner student programmer anyway (it's not like they need to manage multiple libraries or modules or anything like that), so I'm inclined to say let them use what they want. Once a student moves past the beginner stage, then it's even more important that they start to learn what IDEs can do.

      --

      I read the internet for the articles.
    33. Re:Not at first by pthomsen · · Score: 1

      This is what I did. I taught 2 semesters of Java (intro and 'advanced'). during the 'intro' semester I did not use any IDE. I wanted to be sure that the students understood the basics of how to develop: edit, compile test, rinse, repeat. IDEs are not conducive to this. Too many mistakes that are excellent learning opportunities are missed in an IDE. Understanding that class/variable naming makes a difference for the understanding of your program, and that you need to think about what you call your idetifiers; Actually running the compiler to generate (in this case) the byte code that will be run. An IDE glosses that over for you. There are many more things that make the non-IDE method good for the intro-type classes.

      When I taught the same people the 'advanced' class, I started them out with an IDE. Just the fact that they realized how many things the IDE did for them was a major learning experience. Catching syntax errors, color coding, compiling, documentation links, etc. IDEs do, however, nudge you towards a particular way of programming, which may not be desirable. Syntax errors are caught immediately, which when you're writing a new piece of code with new variables, etc. becomes a distraction. You feel like you have to fix the syntax error before you can continue with your new code. Especially when you're just learning, this will make you lose your train of thought, and can get annoying pretty fast.

      Anyway, bottom line: I am in favor of using the non-IDE approach for getting started with programming, and then graduating to an IDE. Not because "I had it bad, so you have to as well", but I really think there's merit in learning the basics of it, to gain a more complete understanding of the process of development.

  9. ... Yes and no by GWBasic · · Score: 4, Interesting
    No, students should not: Not using the IDE shows students everything that goes on "under the hood" during compilation.

    Yes, students should: Part of teaching programming is showing students how to best use all tools at their disposal. IDEs have some valuable features that are vital to professional programmers.

    IMO, the best time to go without the IDE is around the same time that you teach assembly. The non-IDE experience is mainly valuable to students who are going to be professional programmers. For into-type classes where there will most likely be non-major students, keeping them in the IDE will help them be more effective if/when they ever need to program in the future. Likewise, once you reach very advanced CS classes, your students will have better things to worry about then command-line switches, and thus will be able to make good use of the IDE's features.

    Again, the above statements are just my opinion.

  10. Without by Hegh · · Score: 5, Insightful

    I generally prefer without. My intro CS course (in Java) five years ago was taught using emacs (which I actually didn't like at the time), and part of the beginning of the course was graded on knowing emacs shortcuts. A later course that I was a TA for used BlueJay, and again grading was done dependent on using that IDE.

    I am more a fan of letting students choose their own environment. I've been using UltraEdit for a long long time, and I'm very happy with it. My suggestion would be to give students a list of good editor options, but not require them to use any single one. Maybe a later lesson could focus on the debugging potential of one IDE or another (I hate to say it, but Microsoft has some great debuggers). My experience, though, is that the main issue for students is what they're writing, not how they write it.

    --
    Bravery is not a function of firepower.
    ~J.C. Denton (Deus Ex)
    1. Re:Without by Greeger · · Score: 1

      I think it would be best to start out with the class all using the same method. In my intro to programming class we had a central linux server that we could all connect to and we would use vi to program on it. I liked this because as a Mac guy I had no software problems. It also gave many of us in the class our first taste of linux since everything we did was in the command line.

      I do feel that IDE's are important but it is my opinion that a student should be taught in the most simple environment as possible and I found that environment to be the command line. My next programming class used an IDE(Visual C++) which I feel was necessary to learn, but has convinced me that locking students into one environment is the best way to turn them off programming.

      For those interested my first programming class just used a redhat server and gave accounts to every student. Students would then just use Putty to connect to the server and do all their work on the server.

    2. Re:Without by epee1221 · · Score: 1

      My experience, though, is that the main issue for students is what they're writing, not how they write it. Agreed. In the coursework I've done, students were graded based on how well the program met the requirements. There was a brief discussion at the beginning of each semester about what software would be useful for writing the programming assignments, and suggestions for editors/IDE's were exchanged.
      It seems to me that requiring a certain editing environment is much like telling students that they must know the ins and outs of MS Word. Sure, MS Word is good for what it does, but there are other word processors out there -- we don't need people getting confused because they don't know where to find some wizard.

      --
      "The use-mention distinction" is not "enforced here."
    3. Re:Without by CryptoKiller · · Score: 1

      Love the quote in your sig. Deus Ex is a truely amazing game! :-)

  11. depends on what you want to teach by yagu · · Score: 4, Interesting

    It depends on what your goal is for teaching, but by your words, "I will be teaching an intro to Java and an intro to Python course", using an IDE will mask much of what could be valuable in learning, to the extent students don't even "get" some of the important underlying principles.

    I've seen kids of friends who ostensibly have taken "programming" classes, and virtually all of them are IDE based curricula. And every one of these kids lacked the most basic understanding of programming. They could cobble together a simple form, but lacked skills to extend much beyond.

    Sometimes it's the school/teacher's fault. I know of one example where a teacher had to teach java, and had never used java before. The kid I know who took the class constantly complained about how stupid the teacher was (he mentioned she had a "Java for Dummies" book for herself). She not only didn't know and understand java, but picked an inferior IDE (I won't start any flame wars by naming it, but it was lesser known, and lacking in features).

    Admittedly I'm from old school, I started with a 3Gl (PL/I) as an introduction, and my second course was assembly. Things are obviously different today, but I'm glad I understand technology at the level I was required to learn it. I don't think I'd have insights for solutions today without that background.

    Since you're asking for opinions: If you want students who'll come back later and thank you, try to emphasize the language and its semantics in your curriculum, and sprinkle in a little exposure to IDE late in the course (that indeed will server a useful purpose).

    Good luck.

    YMMV.

    1. Re:depends on what you want to teach by xero314 · · Score: 2, Interesting

      You can fail to teach/learn the basics of programing with or without and IDE. I don't think the fact that an IDE was used in a class is the cause for not knowing the programing basics. I assume the original poster was not talking about using a drag an drop IDE like Visual Studio for VB, but something more on the lines of JCreator, JEdit or Eclipse (sorry for the Java centricity). Knowing the basics of programing is very important yet most developers under the age of 30 have no clue what those are. But since the original poster was talking about teaching a java class the students should probably have already taking a programing basics/fundimentals class.

    2. Re:depends on what you want to teach by OAB_X · · Score: 1

      Likely they will not have take any programming basics/fundamentals classes (Pascal, Turing, etc.) as Java is now being used in most high-schools at least as the introductary programming language. As far as teaching it, I would start with notepad and the command line for the first few weeks (i.e. "Hello World"), then go ahead and use something like JEdit because its basically notepad with syntax highlighting (when I used it last it was like that, but that was years ago).

      If you learn with notepad, you can always go to an IDE, it can sometimes be very difficult to learn notepad after learning an IDE (I was not able to adjust easily managing (somewhat) C programs going from using Visual Studio to VIM, for example: Visual Studio can make a makefile for you automatically at the press of a button, VIM cannot.

    3. Re:depends on what you want to teach by Danga · · Score: 1

      As far as teaching it, I would start with notepad and the command line for the first few weeks I completely agree. My intro to programming class at the Ohio State University was taught with Java and using a GUI from the start was pretty confusing to me. It wasn't too hard, I finsished all the assignment easily and got an A in the class but I think keeping it at the command line level would have been better. It wouldn't have been as "pretty", but everything we did could have easily been accomplished in C/C++ using cin/cout and I think I would have learned more about what was actually going on at a lower level (which is where I work at my current job).

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    4. Re:depends on what you want to teach by Sax+Maniac · · Score: 2, Interesting

      There's a big difference in IDEs. I've taught and intro to Java class that had no programming prerequistes, and so was not intended for CS majors. I had a choice - there were people who could barely use computers at all. What was I going to do, point them at the JDK, and expect them to learn how to use a command-line compiler and Notepad? We'd spent a month getting "Hello World" compile, and they'd wind up knowing nothing more about Java or programming at the end of it. Learning how a command-line works is not the same as learning how a programming language works.

      So, I pointed them to a super-minimal shareware IDE. It had little more than an integrated editor and button that you can run the program, but that was enough. No form or GUI designers, so they can concern themselves with thinking algorithmically, and not what font to use on which button. The only stuff the IDE hid was the mechanics of compilation, the fileystem, and running.

      Still, the IDE is not the point of the class. I'd never test them on keyboard shortcuts or anything similarly stupid. Anyone who wanted to buy a different IDE or go with notepad was perfectly free to do so.

      It worked, some of the students really went from knowing nothing about computers at all, to actually writing working programs.

      --
      I can explanate how to administrate your network. You must configurate and segmentate it, so it can computate.
    5. Re:depends on what you want to teach by xero314 · · Score: 1

      Likely they will not have take any programming basics/fundamentals classes (Pascal, Turing, etc.) as Java is now being used in most high-schools at least as the introductary programming language.

      This may be off topic, but this is the problem with the students coming out of school with CS degrees today. Arguing over wether to use an editor with or without syntax highlighting and code completion is certainly not a major issue. The basics supplied by many IDEs do not diminish the ability to learn the basic of programing. One does hurt learning the basics is teaching an OO language as the first language with out giving some understanding of what the computer is doing. As far as I am aware no one has yet to build an Object Orient Processor (The Cell may be closest thing out there). I don't know that we need to go to the level of teaching logic gates and registers (thought this is probably how I would teach it), but certainly something a little closer to the root than a OO language that runs in a Virtual Machine would be a much better place to start.

    6. Re:depends on what you want to teach by Gareth+Williams · · Score: 1

      I am of the opinion that IDEs are a crutch. They condition you not to think.

      When I'm coding in vim I keep all my class names, function names etc in my head without much difficulty (admittedly this would be much harder with a large project, but we're not discussing large projects), and when I need to type foo.bar() it's right there in the front of my mind. When I've been coding in an IDE for a while my brain starts to get lazy, and I find myself typing foo. and then scrolling through a dropdown list of functions looking for the one I want that I can't quite think of the name of :)

      I was first taught C++ programming in a course in high school, some years ago now. I was new to the concept of OO programming. The course consisted of "when you want to do this, click here in the IDE. then click here. then drag this here. Then if you want it to do this you can click here and type this" - you get the idea. I was overwhelmed with a million buttons and options, it was really quite confusing, and I never really understood what the heck was going on in my programs. I didn't get much out of that course except how to construct basic programs using a specific IDE - an IDE produced by a large software company and sold for a considerable sum of money, that I never actually used again after that course. If you're going to teach a specific IDE, please, teach one that's freely available.

      In contrast, my university taught their programming (C and Java, later haskell and prolog) using a text editor - they recommended and taught emacs, but didn't didn't specifically assess the editor (so we were free to use whatever we were more comfortable with, thank FSM. Vim in my case :) I learnt far more there, and it's knowledge that still serves me well.

      If you want to teach programming, you should start by teaching ideas. Concepts. Ways of thinking. The first few lessons should be pen and paper IMHO, and then you should introduce a basic text editor, a simple hello world program, a compiler, and a debugger. Once you understand the concepts well you can build upon this by using better tools later. But understanding must come first.

      IDEs can help you be more productive, more efficent. Once you understand what you're doing. But in my opinion they're designed by and large for experienced programmers to use, as shortcuts to a lot of things that they already understand. They're not a teaching tool, and are far too complex for beginners.

      --

      --Gareth
    7. Re:depends on what you want to teach by OAB_X · · Score: 1

      The reason I believe they do is because "all major" lanugages now use objects because its simpler to program for them on a large scale then with OO languages instead of procedural ones. Correct or not, that is how universities are teaching it.

    8. Re:depends on what you want to teach by Anonymous Coward · · Score: 0

      I started with a 3Gl (PL/I) as an introduction

      You started programming PL/1 and didn't swear off programming forever? amazing!

    9. Re:depends on what you want to teach by Lehk228 · · Score: 1

      was it BlueJ ?

      --
      Snowden and Manning are heroes.
    10. Re:depends on what you want to teach by cduffy · · Score: 1

      As far as I am aware no one has yet to build an Object Orient Processor (The Cell may be closest thing out there). I don't know that we need to go to the level of teaching logic gates and registers (thought this is probably how I would teach it), but certainly something a little closer to the root than a OO language that runs in a Virtual Machine would be a much better place to start.

      I absolutely agree that before one graduates with a computer science degree, one should have a reasonable understanding of how a CPU works -- from designing state machines with Karneaugh graphs to CPU design (hardware implementation of simple opcodes; MMUs; interrupt handling; etc) to assembly language. I'm not sure that that's the right place to start learning, though.

      I disagree that the use of VMs in teaching computer science is a Bad Thing. Look at The Art Of Computer Programming. Certainly, there's no OO there -- but all of Knuth's code is written (in assembly language) for a virtual machine (or, at least, nonexistent hardware)! There's nothing wrong with using VMs to teach computer science; rather, there's quite a bit wrong with substituting knowledge of the abstraction layer the VM provides for knowledge of how the VM works and what goes on underneath it.

      OO isn't such a bad thing either. To be sure, it's necessary that folks be able to think in terms other than objects -- but I'm not suggesting that OO be used exclusively, but rather that it can reasonably be used in introductory classes. Data structures are core to algorithmic thinking, and objects are a reasonable way of thinking about a data structure and the code intended to operate on it; further, such thinking can be used when writing code in languages without explicit OO support. To make sure that folks don't get to thinking that that's the only way to structure their algorithms, they get some assembly (in their OS classes, maybe) and some LISP, Scheme, and/or Prolog (in their AI classes)... but OO is useful for beginners, and languages like Python help get folks quickly into working on algorithms without so much time spent on learning syntax and other such junk as is otherwise needed.

      The problem isn't that OO and VM-based or interpreted languages are taught, but that the underpinnings are sometimes given less credence than they used to be. Can the underpinnings wait for one's 2nd or 3rd year, so long as they're taught? I'd argue so.

    11. Re:depends on what you want to teach by rhendershot · · Score: 1

      >>using an IDE will mask much of what could be valuable in learning, to the extent
      >>students don't even "get" some of the important underlying principles.

      Generally I agree with this. But if the underlying principles you wish to teach are the Object Oriented concepts, and not the system issues of classpath, object files, etc, then the BlueJ IDE might be a good compromise.

      This year I served as a resource to a High School program which taught beginning java programming. They used the Java Concepts 4th edition textbook (Wiley - ISBN 0-471-73755-0) and from what I've heard it went well.

      The BlueJ environment is cross-platform and allows the student to initiate classes, interfaces and abstract classes and provides a graphical way to implement those. I was dubious at first, coming from a JBuilder/Netbeans/Eclipse background. And those habits still had me providing advice using snippets of code or java files. BlueJ allowed the teacher to paste my code examples into the IDE though, so there really was no problem for either of us.

      ---
      http://www.bluej.org/about/what.html

  12. Focus on the goal of the course by Subacultcha · · Score: 2, Interesting

    There's good reason for any developer to be familiar with a good IDE and with tools like vi and Emacs, but do you really want to spend valuable classroom time teaching them about editing tools instead of the language?

    You probably should spend some time during one class to discuss the choices available and what your own preferences and biases are, but they'll probably have to use whatever their employer uses when they get into the workplace. Better to spend your time teaching them to be carefull and thoughtfull coders and they'll use that skill to decide what environment to code in themselves.

    1. Re:Focus on the goal of the course by Jeff+DeMaagd · · Score: 1

      I think the terminal and command line are interesting and all, an IDE is going to behave closer to what they understand with other text management software, such as a word processor. Character mode software, especially vi or emacs, is going to seem pretty backwards to anyone that has been exclusively using a GUI for computers. You'd need to make a pretty solid case as to why they are useful for a student to agree with the idea of using them.

    2. Re:Focus on the goal of the course by Anonymous Coward · · Score: 0

      There's good reason for any developer to be familiar with a good IDE and with tools like vi and Emacs, but do you really want to spend valuable classroom time teaching them about editing tools instead of the language?

      Would you rather have the students memorize all the method calls BufferedReader has? Or how to spell their reallyLongMethodName?

      What you're advocating is like a "old skool" carpenter saying that one should pound in nails with their hands as that's how he did it as a yoot and you get more of an appreciation for the craft by experiencing the pain.

    3. Re:Focus on the goal of the course by petermgreen · · Score: 1

      Would you rather have the students memorize all the method calls BufferedReader has?
      no just the one that they'd actually be likely to use

      Or how to spell their reallyLongMethodName?
      do you have any examples of a 4 word method name that a newbie is likely to have to use?

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  13. Check the Work World by xero314 · · Score: 1

    My experience in the as an long time employed developer would tell me that you should use an IDE. In the last ten years I have not held a job where anyone in the staff, under the age of 40, used anything but a well known IDE. This is even more true regarding Java, and I can't really comment on python, havening never used it profesionally. In general I have always felt that school should be educating people towards practical skills, and even the old school developers (I'm an old school assembler myself) use IDEs now days.

    1. Re:Check the Work World by bladesjester · · Score: 1

      Agreed on using an IDE. There is, however, something that most people here seem to have completely glossed over:

      Java is a great and useful language, but it can be really painful to code in without using an editor that has code completion.

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    2. Re:Check the Work World by TheRaven64 · · Score: 1
      Ah, but which IDE? When I was an undergrad, I was taught using Delphi (which, by the way, is absolute torture). I very much doubt you would find many jobs these days using Delphi. I didn't mind too much, since I'd already been coding on and off for a decade when I started my degree, and I learned without an IDE. Several of my contemporaries found moving to C and Java in the second year was very difficult, because they didn't have IDEs (or they had IDEs that behaved differently). The course is now taught with BlueJ, and a lot of people have real problems going from using the IDE to not using it; they don't understand how the concepts map from the IDE to the source. People who learn the other way around tend to do a lot better. Once you understand the structure of the code and how to create it with a text editor, then an IDE with an integrated debugger is a really nice tool, and you can learn how to use one quickly because you understand what it does and what happens under the hood when you click on the pretty buttons. Although having said that it took me a little while to get used to GUI builders that created serialised object graphs after using ones that created code.

      I would not tell students to use an IDE at all. I would teach them using a text editor, and a few weeks in tell them that a few IDEs are installed on the system and they should try them out. I also would make sure that their first language was something that could be interpreted, so if they are unsure about something they can drop into a command-line interface and enter one line at a time, seeing it executed. Languages like C and Java are very bad at this; the languages that do it best are Lisp and Smalltalk.

      --
      I am TheRaven on Soylent News
    3. Re:Check the Work World by xero314 · · Score: 1

      My suggest of using an IDE was not to teach an IDE. Most major IDEs can be used with very limited coding assitance. Eclipse, for example, which is a fairly powerful IDE, can be used to create all sorts of code, completely from scratch. True, nost people that use IDEs, use all the help the IDE gives them, but these are not things that need to be specifically talk. Simple things like code completion will allow an instructor to teach the language with out needing to teach the libraries, which are often well documented and should be easy to figure out by a competent student. In the end teaching the language is the most important thing, and an IDE is just a way to assist in that teaching.

      Again, this is a class on Java and Python (which is interesting to see taught together having completly different inheritance patterns) so the students should already have a decent background in programing fundimentals.

      Lastly, before learning an interpreted language the student shold learn any Machine Language and Assembly, which is after learning the fundimentals of Computer science.

  14. With. by Telastyn · · Score: 2, Insightful

    Part of practical language experience [since you're not actually teaching programming] is learning to use a/the common IDE.

  15. Why bother? by illuminatedwax · · Score: 3, Insightful

    Why have one at all? Unless your class is on the specific IDE or "Software Development Techiniques", why chain them to a specific technology? Let your students figure out how to run the damn editor. If it wasn't so tedious, I'd say have your students turn in assignments on paper. You are teaching programming, not a program, no matter how community college you are. Give your students a chance to figure something out for themselves and they will become smarter.

    --
    Did you ever notice that *nix doesn't even cover Linux?
    1. Re:Why bother? by Puff+Daddy · · Score: 1

      Amen. Many times my CS exams require us to write functions out on paper. Write a function that won't compile, lose points. It was rough at first, but forcing me to write code on paper made me much better at writing code in general.

    2. Re:Why bother? by dubbreak · · Score: 1

      I agree completely. Why should you "teach" an IDE? Teach the concepts, give them the basics of a language and let them decide what they use to edit and compile it with. For courses where a binary will be tested in some way (either through scripts or a demo) my school specifies what computers the code is expected to compile on (well compile or be interpretted, depends on the language) so the students can verify their assignment works (either through ssh'ing in or running it in person), it doesn't matter what the student uses to create the code.

      I used VI and gcc on linux for my OS class since everything would be run under linux anyhow, but that wasn't the case for everyone. I had a friend that would write the code in Visual Studio and would later sftp and test his code on the system it would be run on (I never got a clear answer on that one). Some people used pico, some people eclipse.. to each their own. Even for java not everyone would use an ide (first year courses they encouraged using textpad) however you were free to use anything (eclipse, netbeans, VI, Emacs, notepad etc).

      There was one class that was basically an intro to perl and C that we were "forced" to ssh into a computer and do our coding there (3 choices of editor iirc: VI, Emacs and pico). There was no (s)ftp, no email, no x forwarding, nothing (CLI progs only). They also claimed that they would check that keystrokes were a realistic stroke rate (as to catch people copy and pasting from local). Man how people b*tched.. but I learned VI because of it and am thankfull to this day. And now that I remeber that I would say that at least one prof should do something like that. IDEs are great, but it seems that some people rely on them a little to heavily.

      --
      "If you are going through hell, keep going." - Winston Churchill
    3. Re:Why bother? by ultranova · · Score: 1

      There was one class that was basically an intro to perl and C that we were "forced" to ssh into a computer and do our coding there (3 choices of editor iirc: VI, Emacs and pico). There was no (s)ftp, no email, no x forwarding, nothing (CLI progs only). They also claimed that they would check that keystrokes were a realistic stroke rate (as to catch people copy and pasting from local). Man how people b*tched..

      Instead of bitching, write a proxy program that sends a text file over SSH connection with rate limiting. Shouldn't be hard either - read a character from standard input (or file), write it to standard output (connected to the SSH program), sleep 250 milliseconds (better yet, 200 + random(1-100), to keep the rate from being suspiciously even), repeat until end of file is reached, exit. A better version might even calculate the distance between this letter and the last on the keyboard, and vary the sleep time accordingly. And insert random larger delays - real people don't type continuously, they stop to think and read what they've written.

      Honestly, people, you are not drones, you are programmers, the computer is your bitch, so make it work for you... That's what you'll be paid for when you graduate.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    4. Re:Why bother? by Sheridan · · Score: 1
      Instead of bitching, write a proxy program that sends a text file over SSH connection with rate limiting. Shouldn't be hard either - read a character from standard input (or file), write it to standard output (connected to the SSH program), sleep 250 milliseconds (better yet, 200 + random(1-100), to keep the rate from being suspiciously even), repeat until end of file is reached, exit.

      The original poster could even re-use the code in the Expect language entry for the 99 bottles of beer song which not only simulates a human typing, it also simulates said human getting drunker and drunker as the song goes on and making more and more typing errors. Entirely consistent with student programming projects ;-)

    5. Re:Why bother? by bm_luethke · · Score: 1

      That's the way we did it. The only class where the teachers cared what tools you used to produce the software was one of the Software Engineering course and that was only because as pretend managers we had to evaluate and choose what tools our teams would use. Still, it didn't really matter what tools we choose, as long as we justified it and that part of the project was more about how to choose the correct tool instead of using that tool. IIRC correctly our file processing class required use of the UNIX workstations (the only other time a tools was required), but we were free to install our own stuff in our directories, but most used VI/emacs and gcc. Though Visual C++ was the "official" devel environment, that just meant all the profs were familiar with it and could answer questions *after class*.

      We gave the teacher a print out that most of the grading was done on and a disk (later e-mail a zip instead of the disk, was in college during the 90's and the shift towards that mode) for them to run against thier data sets.

      In fact, the very first day of intro to comp sci we were told this is a programming course, not a program course. It's our responsibility to learn to use our tools (language was specified, but you could usually ask and write it in something else).

      During my stay at ORNL we had around 15 students - all of them were the same as me. Never even really occured to me a "real" comp sci course (word processor usage and anything involving a computer was also in the CSCI courses) would teach you how to use a program, IDE or otherwise.

      Really, as you say, if they are teaching you to use and IDE they are wasting time they could spend on actually writing software. IDE's change, what you start with in college will not be useful when you graduate for the msot part, but *how* to write programs is independant of an IDE or not (plus if you are using wizards for programming before junior/senior level courses you getting screwed on your programming education). You can even forgoe the computer all the way for many classes, though I do prefer that *some* programs are written.

      --
      ------- Sorry about the spelling, I suffer from two problems. Dyslexia makes it difficult to spell well, lazy makes it
    6. Re:Why bother? by syousef · · Score: 1

      When is the last time you wrote a serious piece of code sequentially and didn't modify or replace entire sections as you went? Being able to use an editor actually frees you up to think about the problem by breaking the problem up into more managable pieces and filling
      in the blanks for the piece you're not focusing on later.

      I'm going to go against the grain here and say that you need to make an introduction to programming as simple as possible for two reasons. The first is you don't want to put people off by making it an ordeal. (Initiation rights and rights of passage are stupid primitive behaviour that don't belong in a coding class). The second is that the way you solve any problem or learn any skill is by breaking it up into smaller manageable pieces so that you can cope with each piece then put the skills together. Not everyone taking one of these classes already has exposure to programming.

      --
      These posts express my own personal views, not those of my employer
    7. Re:Why bother? by Decaff · · Score: 1

      Why have one at all? Unless your class is on the specific IDE or "Software Development Techiniques", why chain them to a specific technology?

      Because you can't easily teach important modern development techniques like refactoring without a good IDE. You don't have to teach them a specific IDE to do this - but doing this without a good idea is vert difficult.

    8. Re:Why bother? by Anonymous Coward · · Score: 0

      I absolutely agree, both with the "assignment on paper" approach, as well as "no specific IDE". Just mention at the very first lecture that they can use {your text editor of choice} or {the "recommended" IDE} or whatever else they please. Then never mention the topic again. Let them make up their own minds - some will use the IDE, some will use the text editor, and others will use their own favorite editor - and that's just fine - remember, a program is just a text file, and it absolutely does not matter which editor was used to create it.

    9. Re:Why bother? by Danga · · Score: 1

      Instead of bitching, write a proxy program that sends a text file over SSH connection with rate limiting.

      A good idea but I what your are describing probably is harder than most of the entry level programs I had to do. Plus, I never understood people who cheated on assignments. If you really want to be a decent programmer then why spend money to learn how to copy and paste? I usually went into the computer labs the day before assignments were due and I can't recall how many times I was offered money to turn over my code that actually worked. It would have been easy to just do that then actually work at a shit job on campus but the fear of getting caught along with the moral instict of not wanting to "help" a future programmer be a POS made me decide not to do that.

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    10. Re:Why bother? by MudX · · Score: 1

      You'll be doing them more of a favor if you don't go anywhere near an IDE. If you teach them without the IDE, they will learn what's really going on; once they come into contact with an IDE, they'll figure out where the buttons are soon enough, and be on their way. If you teach them with the IDE, then they'll be totally lost the day they have to code without one. They'll take a lot more away from the class by learning what the devil's really going on, than if it's masked behind the IDE. It's very analogous to systems administration. Put a unix admin on a windows box, and they'll figure it out pretty quick. Try to put a windows admin on a unix box, and they're totally lost.

    11. Re:Why bother? by Anonymous Coward · · Score: 0

      I have to agree on this. Learning to program on paper definately made me stop and think about what I was doing. It definately prepared me for the onslaught of interviews where I was asked to write code on whiteboard. Programming on paper is great for mastering new programming concepts before applying them to your programming projects.

    12. Re:Why bother? by ultranova · · Score: 3, Insightful

      A good idea but I what your are describing probably is harder than most of the entry level programs I had to do.

      What I'm describing is a simple read-write-sleep loop. It can't possibly be too hard for someone who's supposed to write a working program on his own as an assignment.

      If you really want to be a decent programmer then why spend money to learn how to copy and paste?

      Because knowing vi or some other Unix text editor has nothing to do with knowing how to write C code ? The requirement that you had to use a pre-installed editor in the server was simply stupid. Unless, of course, it was meant to inspire such solutions.

      A stupid man walks through a rock. A smart man walks around it. An engineer builds a hydraulic arm to move the rock aside and walks where it used to be. When all is said and done, it's the engineers that are movers and shakers, everyone else is simply along for the ride.

      The point ? I'm not really sure. I guess it's that an engineer, including a software engineer, is supposed to have a mindset of seeing challenges, not problems. If someone tells you that you must use Vi over SSH to make a program, you don't bitch and whine - you work around the problem. That's what makes you and engineer - you don't complain about problems, you solve them. That attitude is more valuable than any particular skills, since without it, those skills don't do you any good.

      I can't recall how many times I was offered money to turn over my code that actually worked. It would have been easy to just do that then actually work at a shit job on campus but the fear of getting caught along with the moral instict of not wanting to "help" a future programmer be a POS made me decide not to do that.

      I doubt very much any of those are going to become programmers, even if they somehow manage to graduate. If they can't get their code working now, why would they magically achieve that ability somewhere in the future ?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    13. Re:Why bother? by illuminatedwax · · Score: 1

      When was the last time you wrote a serious math proof and wrote it all in one go on a piece of paper? Killing trees isn't all that bad.

      I disagree about the ordeal. I think it's necessary in an introductory course to break people of any preconceptions that they have of programming. I personally was taught Scheme as an introductory course, and all they gave us was a link to Dr. Scheme - we didnt have a single instruction on how to use it.

      This is a little simplified, but if you're doing a programming course (NOT a software engineering or design course), you should be teaching people how to compile their program but not how to use make. But that should even be done in a neutral manner. It all falls under the heading that you should be teaching your students principles and not programs. Plus, your students, pointed in the right direction, should be able to follow tutorials on their own.

      --
      Did you ever notice that *nix doesn't even cover Linux?
    14. Re:Why bother? by illuminatedwax · · Score: 1

      Sure you can do it without an IDE. "Refactoring" I think is a buzzword anyway for "cleaning up a rough draft" or "good coding practices." It's certainly made easier with an IDE, but student projects are never large enough to require one. I think teaching IDEs would be great for classes that teach software design or other higher level concepts, but not other programming classes (OS, compilers, etc), and certainly not intro programming courses.

      --
      Did you ever notice that *nix doesn't even cover Linux?
    15. Re:Why bother? by Decaff · · Score: 1

      Sure you can do it without an IDE. "Refactoring" I think is a buzzword anyway for "cleaning up a rough draft" or "good coding practices."

      No, it isn't - it is far more than that. Refactoring is a fundamental set of tools for modern development. It includes things like determining where methods and classes are used, and allowing instant experimentation with abstract classes and inheritance - things that are very useful for an interactive understanding of OOP, interfaces etc. With an IDE you can show these approaches easily, whereas without this would be a struggle.

      It's certainly made easier with an IDE, but student projects are never large enough to require one. I think teaching IDEs would be great for classes that teach software design or other higher level concepts, but not other programming classes (OS, compilers, etc), and certainly not intro programming courses.

      The thing is, they are going to have to use some sort of interface to edit their code, run it and debug it. If you give them VI + bash you are effectively giving them an 'IDE' - a very poor one. Why not allow them to easily step through their code, set breakpoints; examine what happens to variables? Setting all this up as a standard project in an IDE (you can even script examples) is far easier. In fact, I would say this is the best way to run an intro class, as it means the teacher has far more control over what the student is doing - trying to deal with a mess of windows with VI or notepad.exe is far harder than to have a pre-configured Eclipse or NetBeans.

      I just can't see the point of forcing students back to the way development was done in the 60s and 70s.

    16. Re:Why bother? by Antique+Geekmeister · · Score: 1

      Don't forget to do it both ways, with witnesses, then show the "cheating" program to the instructor and the class. I almost got flunked for doing something like that because I explained, in my final presentation, how to get around the TA's awful security steps to get at the answers to all the problem sets, but also had a complete separate paper showing completely distinct ways to do the same problems which the TA had never discussed, which I had in hand to show the instructor directly to get my grade re-instated.

      If you have to tease the bear like this, make quite sure you brought a big enough shotgun to stop him when he charges.

    17. Re:Why bother? by richpulp · · Score: 1

      My thoughts exactly. One of the first steps I was taught in coding was to plan out the program on paper. My instructor was most insistent on this: he said this allowed me to get an idea of how the program would work, the various sub-routines would suggest themselves as a result of the flowchart sketched out on paper. If you are teaching on Linux, and if you are using XWindows, it seems a bit pointless to use something like vi, I would go with gedit or a similar equivalent. If you are not using XWindows, then select an editor that you feel best works. Obviously, using vi requires an extra step in teaching them the commands. If your students are coming from a windows or mac based background, you may need to transition them into using the command console. I imagine that the students would already have been inducted into using Linux as an operating system.

    18. Re:Why bother? by ndunn · · Score: 1

      Well said. It is about solving problems. At the undergraduate level, I would worry about overworking students. I have freshmen using emacs and C++ in a unix environment with no b*tching at all. I am flabbergasted, but VERY encouraged. I think that part of it might be that they don't know that there is a better way to do this, despite me showing them a few things (I have gotten several to adopt bash over tcsh). I don't really worry about people with that type of attitude, as they are the folks who eventually figure it out.

    19. Re:Why bother? by syousef · · Score: 1

      Wait a sec. One minute you said you got no instruction on how to use it then the next minute you're on about tutorials.

      If all they gave you was a link, you paid a lot of money to have a lousy professor tell you to go learn on your own. This isn't something to strive for. It's an example of an education system letting the students down. There should be no reason to expect students to go out and learn on their own if the goal is to have them come out with some common frame of knowledge.

      Would you put a student airline pilot in a simulator with no instruction and say go learn???

      --
      These posts express my own personal views, not those of my employer
    20. Re:Why bother? by illuminatedwax · · Score: 1

      Tutorials that come with the program, of course.

      I would not expect a student to be able to even begin to know how to work a simulator. But I would expect them to be able to figure out how to start the program or be able to install it and run it on their computer.

      Plus your analogy is all off, anyway. When you put a student in a simulator, let's say for a commercial airline, you are teaching them to fly the aircraft that simulator is simulating. Do you want to also include flight attendants, hijackers, angry travellers, company politics, etc.? No, you're just learning how to fly. In the same respect, you're just learning how to program, not use an IDE. Why include all that extra crap when students are just going to want to be able to do it their way, anyway?

      About the download link: You should at least be able to download Dr. Scheme and figure out how to run the goddamn thing without any instruction from the professor.

      --
      Did you ever notice that *nix doesn't even cover Linux?
    21. Re:Why bother? by dubbreak · · Score: 1

      If anyone could have done that, then they would have gotten an A for sure, but it was a pretty remedial course. The point was to give students and intro to *nix and force them to use the tools, not to create a challenge for them to work out so they can stay comfy with their windows tools. I was not one of the "bitchers", iirc the first assignment ended up being like 40-60 lines of perl at most (begginer perl which could be compressed down to a lot less), so it's not like you were being forced to do a huge project from the command line. The idea was to get students out of their comfort zone and get them using *nix tools and it worked. Ohh, it was also most people's first introduction to versioning systems (CVS back then, I have no idea what they are using now).

      --
      "If you are going through hell, keep going." - Winston Churchill
    22. Re:Why bother? by syousef · · Score: 1

      Tutorials that come with the program, of course.

      Oh yes because we all know that every program ever written comes with brilliant tutorials.

      I would not expect a student to be able to even begin to know how to work a simulator. But I would expect them to be able to figure out how to start the program or be able to install it and run it on their computer.

      First of all most commercial simulators actually require a team of technicians to run and maintain them. You're assuming that everything's simple. A setup.exe to launch or a command line tool to look up. It really depends on the environment. I've worked with compilers and environments that were hell to set up. (Eiffel comes to mind, as does a full blown J2EE environment). In any case familiarity with a particular operating system, installation etc. shouldn't be assumed. You're being elitist and excluding anyone that doesn't already have familiarity with computers (presumably on the basis that a non-hobbiest isn't interested and has no business doing the course). This is just plain wasteful. I've seen people go from not knowing any of this stuff to being very proficient coders in a short timespan. However that did require some help pointing them in the right direction.

      Plus your analogy is all off, anyway. When you put a student in a simulator, let's say for a commercial airline, you are teaching them to fly the aircraft that simulator is simulating. Do you want to also include flight attendants, hijackers, angry travellers, company politics, etc.? No, you're just learning how to fly. In the same respect, you're just learning how to program, not use an IDE. Why include all that extra crap when students are just going to want to be able to do it their way, anyway?

      You're not teaching them how to install a coding environment either. Why do you think the IDE is extra crap, but learning to install is necessary. Both tasks are going to be useful in the real world. I'd argue exposure to both is absolutely essential. Where we disagree is that I don't believe doing an install and working out what the best literature to learn from is the best place to start, and while an IDE does require extra effort in some areas I also believe it simplifies the development process enough that it's worthwhile including in the introduction.

      That doesn't rule out excercises or proficiency testing on either the install process or the manual use of a compiler - it's just not the first thing you show the student.

      About the download link: You should at least be able to download Dr. Scheme and figure out how to run the goddamn thing without any instruction from the professor.

      Why? A lot of these students are kids are fresh out of highschool. They don't have the maturity level to be doing self paced learning. That's what university should teach them. There's a difference between hand holding and teaching them how to learn for themselves. "This is the big bad world work it out for yourself" is just a lazy teacher's method of avoiding any real work. What exactly is the point of even having a lecturer if he's not going to help point you in the right direction. Anyone could get themselves a web connection and save a fortune in tution. I've been a lecturer, and while was never a hand holder if I wasn't providing pointers to the information and making sure there's clarity on what's to be assessed I wouldn't have considered myself to be any good.

      --
      These posts express my own personal views, not those of my employer
    23. Re:Why bother? by illuminatedwax · · Score: 1
      So do you want professors to help set up students' net connections? You want to teach them how to navigate Windows? Do you need to teach them how to turn on their computers? Where do you draw the line before you say "You're big kids now, you can figure out how to run the 'compile' command on your own. If you want to use an IDE, have fun!" Non-computer students are expected to use web interfaces to do non-computer classes. If kids have trouble with getting stuff to compile, the professor^W TA is there, but it does not need to be part of the curriculum. Now, my point was twofold - one, that students can figure out how to compile code with very little instruction. Often just a link works. But two, that IDEs should not be taught because they are above and beyond the scope of most programming courses. So, yes, if IDEs were being used in the class, they are complicated enough that instruction might be helpful. But in most classes, IDEs are not necessary and detract from what students are being taught. They need to learn to write code, not "Solutions" or whatever the hell they are calling them now, unless the course is specifically for that.

      I did an intro to Java class as a blowoff class (I was a third-year CS), but not once did the professor in class tell us how to run the darn thing. That's what TAs are for :) But there doesn't need to be any "platform" because code is just that.

      They don't have the maturity level to be doing self paced learning.


      They can only be taught by making them do just that.
      --
      Did you ever notice that *nix doesn't even cover Linux?
    24. Re:Why bother? by illuminatedwax · · Score: 1

      But students rarely have to write programs that are that complex that that kind of stuff is necessary. When it is necessary, generally some kind of tools are introduced and used - but they don't become part of the curriculum. For example, in my OS class, we couldn't use an IDE. In other classes, we were told to use gdb - but we spent probably just one class on the details. Probably less.

      I think there's actually a better tool to help students understand complicated parts of OOP - a whiteboard.

      Intuitive understanding of OOP comes from programming in it, not from having an IDE to play with. When students are taught OOP, the professor is the one that dictates the pace and method that he gives his students an intuitive understanding with.

      Debugging is a great way to catch errors, and IDEs are a good way to make more readable code, but intuitive understanding is going to come from being able to write a program on paper without any fancy toys.

      And refactoring just looks like an automated way to fix your code - having the computer help you so that when you do rewrite your code you don't break it because you weren't paying attention or something equally human. But why give our students calculators when they are learning how to multiply?

      --
      Did you ever notice that *nix doesn't even cover Linux?
    25. Re:Why bother? by syousef · · Score: 1

      So do you want professors to help set up students' net connections? You want to teach them how to navigate Windows? Do you need to teach them how to turn on their computers?

      There are two ways to tackle this. Make this part of an intro to programming class or have a special class for teaching basic computer skills. Yes these skills should be taught. Either way if the person you're teaching is new to these things you don't expect them to pick it all up instantly.

      When I did my undergrad we had an intro class that was pass fail and taught and tested you on your ability to do the basics including use Explorer and Office (Excel and Word) properly. (eg. advanced formulae and chartin in Excel). I already had these skills and it was a walk in the park. For others this was all new and without it they may have sunk in other subjects.

      So do you want professors to help set up students' net connections? You want to teach them how to navigate Windows? Do you need to teach them how to turn on their computers?

      That's a great thing to say to someone who doesn't know what a compiler or an IDE is. Yes you teach them how to become computer professionals. If they've enrolled in a computing or IT course they're paying good money to at least be pointed in the right direction.

      If kids have trouble with getting stuff to compile, the professor^W TA is there, but it does not need to be part of the curriculum

      No, the TA is there to help clarify what to do, not to teach new material. Again you don't have to stand up in class and say here's the command blah blah blah. You point them at a good resource - either your own lecture notes or a book or a good tutorial. What's more you teach them what they're doing not just how to to do it. What does the compiler do? Why do we need all these switches? etc.

      one, that students can figure out how to compile code with very little instruction. Often just a link works.

      Depends on the quality of the link. A good link would have lots of instruction. You're again not thinking in terms of someone who doesn't even know what a goddamn compiler is.

      But two, that IDEs should not be taught because they are above and beyond the scope of most programming courses

      In the real world as a coder you're much more likely to be sat in front of an IDE at some point early in your career. Most IDEs are there to simplify the process not make it harder. It's no harder clicking a compile button than typing in an obscure command line you don't understand.

      So, yes, if IDEs were being used in the class, they are complicated enough that instruction might be helpful. But in most classes, IDEs are not necessary and detract from what students are being taught. They need to learn to write code, not "Solutions" or whatever the hell they are calling them now, unless the course is specifically for that.

      What the???? Code implements a solution to a problem. It's not some abstract and separate thing to be taught. There are technical aspects to code that are technical and have nothing to do with any one solution. Either that's really badly phrased or you've totally lost the plot. What's more it sounds to me like you've never used a decent IDE in your life. Most IDEs can be used as little more than editors with a compile button. How is that complicated compared to your simple idea of telling them to go work out how to compile by themselves.

      I did an intro to Java class as a blowoff class (I was a third-year CS), but not once did the professor in class tell us how to run the darn thing. That's what TAs are for :) But there doesn't need to be any "platform" because code is just that.

      If by 3rd year you don't know how to compile software there's a problem. You should have seen several languages at that point. If it's a first year course you better explain the compiler. Furthermore if it's a 3rd year course and they haven't seen an IDE there's a problem. That's like a 3rd year carpenter that's

      --
      These posts express my own personal views, not those of my employer
    26. Re:Why bother? by illuminatedwax · · Score: 1
      When I did my undergrad we had an intro class that was pass fail and taught and tested you on your ability to do the basics including use Explorer and Office (Excel and Word) properly.
      No offense, but I would have shot myself. That course has no place in a CS curriculum for concentrators.

      For what it's worth, students were pointed in the right direction. The professors put up tutorials online, made themselves available after class (or made their TAs do it) for people that didn't get it. But we didn't waste time making it part of the curriculum. You need to expect some amount of computer competency before you can teach people how to program. Those that don't have it can spend the extra hours learning it. Why should a calculus class spend time reviewing algebra?

      You're absolutely right, though - teaching what the compiler does would be a good topic. For a compilers course. But in an introductory programming course, informing the student that the compiler takes program code and creates something the computer can run is all you need. Here's a link to a program or three that you can use, now do your homework. Then, when the student is a 3rd year, you can put it all together and make a project that works from start to finish. But by that point, they should know what tools to use. The hope is that, no matter what fancy new time-saving tool people are using in the future, your students can learn to assimilate it and use it properly. I feel that if you teach your students proper programming fundamentals, they should be able to run any IDE they want with a minimum learning curve.

      I know full well what a compiler is, and if you remember, I said that the course was using Dr. Scheme - an interpreter for Scheme that was documented well enough that students could download it, figure out what buttons make the program go, and start using it. It was technically an IDE, but we didn't spend any time learning how to use it. You could have done all your programming in Notepad if you wanted to, and you could have done just as well. I believe we pointed to other Scheme interpreters too, but the point is that Dr.Scheme never became a topic in the class.

      It's no harder clicking a compile button than typing in an obscure command line you don't understand.
      Then why bother teaching it? ;)

      Using IDEs can be very simple, but showing how to use the "advanced" features can take quite a bit of instruction - instruction that has no place in a class that isn't teaching you about IDEs.

      In the Java class, most students had never seen a program before. It was a blowoff class because it was for non-programmers. Yet we didn't spend any time learning Java tools, or Java IDEs, or anything like that.

      I never claimed the students wouldn't receive any help - only that it doesn't need to become part of the curriculum because it's not necessary. I never said IDEs were unnecessary - only that IDEs were unnecessary in the classroom, where things never get complicated enough to require one. Students should be able to write code on paper. God knows I had to.

      I seriously think that getting a complier up and running, on any platform, with the proper links given to the student on where to find said compiler, should be enough for anyone with half a brain. Then again, since your classmates had difficulty figuring out how to run Microsoft Office, maybe I'm underestimating the idiocy and computer literacy of incoming CS or programming students. I say we cull those without computer literacy. If they really want to program but don't know how to use Explorer, they need to take a course on that first before beginning programming, instead of wasting the department's time.

      I said this in another part of this big thread: why give your students calculators when you are teaching them to multiply?
      --
      Did you ever notice that *nix doesn't even cover Linux?
    27. Re:Why bother? by syousef · · Score: 1

      No offense, but I would have shot myself. That course has no place in a CS curriculum for concentrators.

      I found it very useful. The easy stuff required no study and was a matter of completing a 20 minute test to show proficiency. Typing was also included so those who couldn't type were forced to get to 20wpm - reasonable for a coder. The more complex stuff - Excel advanced formulae, pivot charts etc. was good for picking up skills I didn't have because I'd had no need for them to that point.

      You're absolutely right, though - teaching what the compiler does would be a good topic. For a compilers course. But in an introductory programming course, informing the student that the compiler takes program code and creates something the computer can run is all you need.

      That's all I'm talking about. You're assuming anyone who's enrolled in a computer course knows a compiler takes one form of code and produces another. I'm not talking about a compiler course. But some knowledge that the compiler can build for different levels of optimisation, include debug code or not etc. isn't so bad (or so complex). It's just not something everyone entering the course would know either.

      Then why bother teaching it? ;)

      Using IDEs can be very simple, but showing how to use the "advanced" features can take quite a bit of instruction - instruction that has no place in a class that isn't teaching you about IDEs.


      If it's so simple why bother teaching it. If it's so complex, it has no place in the course? Why is it all or nothing with you? Why do you insist on assuming computer knowledge that may or may not be present.

      I'm not and never was talking about teaching advanced features. I was talking about an introductory course introducing both the ideas of a command line driven compiler, and an IDE, as they are both commonly used tools.

      I seriously think that getting a complier up and running, on any platform, with the proper links given to the student on where to find said compiler, should be enough for anyone with half a brain.

      Truely is that simple for some environments. Truely isn't for others. Depends on setup complexity and documentation provided.

      I said this in another part of this big thread: why give your students calculators when you are teaching them to multiply?

      You don't if you're teaching them to hand multiply. However at some point you assume they can do that and move on. By the way why on Earth calculators are used these days for anything more than the simplest equations is beyond me. Anything beyond about 10 operations and I fire up a spreadsheet. Gives you repeatability, what if scenarios and the ability to fix errors very quickly without rework.

      --
      These posts express my own personal views, not those of my employer
    28. Re:Why bother? by illuminatedwax · · Score: 1

      We're not teaching "general computing theory of everything" courses here. We're teaching people about computers, and dividing it up into several logical parts. If I'm trying to teach my students what the hell a queue is, I don't give a rat's ass about optimization flags. If I am teaching them how to program networking code, I don't care about debugging code. That information might be useful, but save them for another class. You're saying to muck up every computer class with the Computing Theory of Everything. You don't need an entire course on IDEs, nor do you need them to be taught to non-programmers. Typically, non-programmers will only be using interfaces that are very easy to learn - Java, Javascript, HTML, CSS, and PHP. Some of the stuff you mention isn't worth more than a fleeting mention. For example: "Oh by the way, type -O2 on the command line to optimize your code" or "Check this option to optimize your code" or even better "Check your compiler's manual to find out how to turn the optimize flag on." This is all small stuff that can be learned by experience. Don't sweat the small stuff, don't spend more than a class period on it. Basically there is a place for IDEs in higher-level courses, but you can really bog a class down and get sidetracked trying to put one in. The original question was about an Intro to Python and an Intro to Java course - neither of which requires any difficult setup or IDE instruction beyond a few minutes of class time to be able to solve Introductory level homework.

      --
      Did you ever notice that *nix doesn't even cover Linux?
    29. Re:Why bother? by syousef · · Score: 1

      You're honestly telling me you don't understand why IDEs and compiler flags belong in a course about programming? Your entire justification for not teaching the IDE is that it's not needed and not useful yet when it's used correctly the IDE is a very powerful and simple to use tool that makes things easier. People justify not teaching use of IDEs because otherwise people don't know how to use the command line compiler and I'm saying both have a place in an intro course and no you don't have to go into every detail, but an introduction to the tools is a good thing.

      Just what kind of IDEs are you using anyway? If I find an IDE is bogging me down and I have a choice in the matter I ditch it. Eclipse for example takes next to no setup. Install Java, unzip the damn thing and you're done with it. Set up a project. No problem. File->New Project. What's so freaking hard about that? Want to run the code, its a simple menu command.

      I'd teach 1st year intro to Java with some mention of javac compiler options and Eclipse or similar. Your suggestion that neither are suitable is just plain ridiculous. Your experiences in a 3rd year class are irrelevant since we're talking intro to programming.

      Have a nice day.

      --
      These posts express my own personal views, not those of my employer
    30. Re:Why bother? by illuminatedwax · · Score: 1

      I'm not saying they don't belong, I'm saying that spending, say, a week covering them is overkill. Say a few sentences about it, point students to where they need to go, and they can figure it out. Maybe a "oh and by the way if you do X in program Y, this happens. Moving on..."

      If they need to know about compiler options beyond the basics, they are smart enough to know what they are looking for and can read man pages. For example, if in an advanced course your students need to omit frame pointers or create archives or whatever, the professor would just need to describe what they have to do. The rest is in the documentation.

      It's because IDEs are so simple to use for basic purposes that they don't need to be taught in beginning courses, and because they have so much potential complexity that you could teach an entire class on them. They also have so many features that if you start teaching them in an intro to programming course, you might get too caught up, you teach students too much about IDEs and not enough about programming.

      So to review:
      You say that we should teach students IDEs because they can't figure it out for themselves, and I say that they can, and then you go on to show me how easy a using an IDE is for simple tasks and how anyone can figure it out.

      As a second point, I said that IDEs have so much extra crap that you would spend too much time on them if you taught all the "advanced features" in an intro course, and therefore they should be moved to a separate course, probably on Software Engineering or Software Design or something.

      Lastly, I took an introductory course to Java in college. I, in great shame, admitted I was a 3rd year when I took it, but explained that it was a blowoff course because my GPA was suffering. My point was that other, beginner programmers had no trouble with compiling and running Java applets all by themselves with minimal instruction from the professor (maybe 15 minutes out of the whole course).

      ahh slashdot :)

      --
      Did you ever notice that *nix doesn't even cover Linux?
    31. Re:Why bother? by Decaff · · Score: 1

      But students rarely have to write programs that are that complex that that kind of stuff is necessary.... Intuitive understanding of OOP comes from programming in it, not from having an IDE to play with....And refactoring just looks like an automated way to fix your code - having the computer help you so that when you do rewrite your code you don't break it because you weren't paying attention or something equally human.

      This is completely the wrong approach, and was shown to be wrong 30 years ago, with the interactive approach introduced by languages such as Smalltalk. It was clearly shown that the best way to understand OOP was indeed having an IDE to play with, so that objects and classes could be experimented with. Even though modern IDEs for other languages are still not up to the level of Smalltalk IDES in the 70s, the same principle applies. Anyone trying to teach OOP with a whiteboard and not by allowing the students to actually create their own objects and inspect and experiment with them (which can be easily done in modern IDEs like Eclipse) is rejecting decades of understanding of this subject.

      Sorry, but my view is that anyone who states such things about refactoring is illustrating a deep lack of knowledge about what refactoring is and how it is used. I am not a supporter of all the approaches of 'eXtreme Programming', but one approach I do support is the use of refactoring as a key part of development. Even more conventional developers would not reduce it to 'an automated way to fix code'! (That is as bad as calling OOP 'just a way to organise libraries' - a phrase I have heard far too often).

  16. IDE by Anonymous Coward · · Score: 0

    For Java, I've heard some good things about Eclipse. The learning curve may be a little steep. Sun is supposed to have a good (and free) IDE for java also.

    In Python, I like Idle. It comes with Python, and while sort of basic, it does all I have needed.

    Go with an IDE, even if it is a free one.

  17. what do you really want to teach? by hazem · · Score: 4, Insightful

    There are lots of factors that will probably make this decision for you:

    - what do you want to spend your time teaching? Every class minute you spend teaching vi or emacs is a minute you're not teaching the programming. Every assignment you assign to practice vi and emacs is an assignment that can't focus as much on the programming

    - what does the college expect someone who passes your class to know? Are they expected to know how to use an IDE for the class that has yours as a pre-req?

    - which gives more value to your students? while learning an archaic text editor might be handy, learning to make the most of an IDE might serve them better - knowing how to set breakpoints, watches, stepping through code, etc.

    I would suggest you pick the method that will let your students spend more time and energy learning to write good code -- and let them use the system that serves them best.

    1. Re:what do you really want to teach? by AuMatar · · Score: 2, Insightful

      I'd think the first point is more a slam at IDEs than text editors. IDEs require a lot of knowledge to use- teaching the debugger, how to create projects, etc. Meanwhile, everyone has used a text editor. They can just use notepad if they want. If you want to focus in on the programming (the right choice, IMO) just tell them to use a text editor and let them figure out IDEs if they want to.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    2. Re:what do you really want to teach? by OAB_X · · Score: 1

      Or you could just forget all the "project" and "debugger" options in the IDE and just use lots of system.println statements in all your dozens of if statements to do your debugging for you. Yes, its horribly innefficient, but it teaches programming concepts. They are universal, debuggers are likely not going to be of very much use anyways if its beginners programming. You going to use a debugger on Hello World?

    3. Re:what do you really want to teach? by Anonymous Coward · · Score: 0

      what do you want to spend your time teaching? Every class minute you spend teaching vi or emacs is a minute you're not teaching the programming.

      Bingo. I would extend this to te language, as well. Every class minute you spend teaching syntax they won't understand, anyway ("public static void main(String args[]) ...") is a minute you're not teaching programming.

      Java, as a language, really begs for a good IDE. It's fairly verbose, and often requires a bit of infrastructure just to get to the code you want to write. And it has some rather good IDEs these days, which have helped build it up in the areas where it' lacking.

      My real answer, then, is: don't teach Java in an intro course. Stick with higher-level languages like Python or Scheme. Or even something further removed from the machine, like Haskell or ML. If they like it enough to stick around for another course, they should probably learn C at some point, but there's no reason to start throwing curly-braces at them right away.

      (Background: I'm a professional developer, and I bought into the whole Java Fad in college. Now that I'm out in the real world, I don't use Java, and I don't know anybody else who does, either.)

    4. Re:what do you really want to teach? by colinrichardday · · Score: 1

      And how difficult is it to use emacs?

      emacs foo.c

      start typing

  18. Python by Anonymous Coward · · Score: 0

    For Python, just use IDLE. You don't really need much more for python...

  19. Free is good by LihTox · · Score: 2, Informative

    I'm completely naive as far as IDEs are concerned, but is there a freeware IDE available for these languages? It won't matter while they're in school, maybe, but if they become comfortable with a program, and then leave school and find out the program runs $900, they will be in a (minor) bind if they want to do some programming on their own. (I'm thinking of the parallel case of people working with Matlab and Mathematica; yes they are great programs to work with, but as an unemployed physicist I can't afford either one.)

    1. Re:Free is good by epee1221 · · Score: 1

      I'm completely naive as far as IDEs are concerned, but is there a freeware IDE available for these languages?
      I don't know about Python, but there are plenty of freeware tools for Java. Most of the people I know use Eclipse; I use BlueJ since I've had trouble getting X11 to run properly on my machine.
      FWIW, in my high school classes, we used CodeWarrior. It's not free, but it was on all the lab machines, so students didn't have to own their own copy (I only got my own because I was doing an independent study and didn't always have lab access, but I still had to submit CodeWarrior projects).

      --
      "The use-mention distinction" is not "enforced here."
    2. Re:Free is good by OAB_X · · Score: 1

      Java there are. JEdit, JCreator, Eclipse. JCreator is my favourite (of the three I mentioned), it does have a "pro" version that offers automatic syntax completion and what-not. JEdit is the most stuited for beginner programmers because its a fancy text editor, not a gigantic automatic-everything IDE like Visual Studio or JBuilder.

  20. IDE for Python by Anonymous Coward · · Score: 0

    I don't have any significant experience with Java, but I have done a fair bit of work in Python. When in my freshman year in college, I wrote several physics simulators that used the Visual module (also known as Visual Python or VPython) and I can safely say that the IDLE IDE was a big part of my being able to pick up the language quickly.

    So for Python, definitely use IDLE in some form or another.

  21. history repeats itself by tonigonenstein · · Score: 0

    Those who choose convenience over inconvenience deserve it

    --
    The sooner you fall behind, the more time you have to catch up.
  22. Depends on the scope of the course. by ShyGuy91284 · · Score: 1

    If they are just going to be coding scripts or simple small programs, a normal editor like Vi/Emacs might work quite well, or a similar text editor. but if it may be on a slightly larger scale, an IDE might be better, since it allows greater organization.

    --
    In undeveloped countries, the consumer controls the market. In capitalist America, the market controls you.
  23. I say no IDE by donaldGuy · · Score: 3, Insightful

    I am a high school student.. I'm currently taking (and often teaching more than the teacher ) an AP Computer Science course which, while actualy about the concepts (OO Principles, Algorithims, Data Structures (well they _should_ be included), etc.), is taught in Java.

    The course is taught using an IDE which did make it easier for most of the students, but as a result no body even knew javac existed.. as far as they were concerned they clicked a button and it magicaly was compiled.. while some would call this good decoupling, what it showed for me is that people ended up completly ignorant of the underlying implementation... they dont know what the command line options are for the compiler or VM, or that javadoc or jar exist (or the related concepts). It left me playing tech support in class so much that I had to do all my actual coding at home.

    This point would be even more important in the case of python given that it can run as an interactive interpreted language and all (I haven't atually finished learning python yet).

    The point is that learning without an IDE gives the student better background on how the language works. If you use an editor with syntax higlighting then other than some ease of use there is no real advantage to the IDE.

    You mention emacs and vi.. if you are running under a POSIX enviornment then you should really teach without an IDE because it better teaches the principles of the UNIX system ideal (small programs with one purpose). Even if you run Windows it wouldn't hurt the students (and future programmers) to be introduced to the UNIX way of doing things.

    hope that helps.

    1. Re:I say no IDE by coshx · · Score: 2, Interesting

      Going by this logic, should we not let them use a shell, but rather force them to launch the compiler through execve calls (how one would write the launcher program itself and run it is beyond the scope of this comment).

      Or should they start off coding in assembly or even machine code?

      At some point, it makes sense to abstract away details so that students can understand important concepts. Now, if your assignments or understanding of the concepts you were taught required knowledge of javadoc or jar, then I agree that your teacher did not use the right tool(s) to teach these concepts, or should have modified the course so that these tools weren't needed (e.g. generate documentation in eclipse should have been all that they needed to run).

      So, given this, do you still believe that an IDE abstracts away too much of the detail needed to understand OO, Algorithms, and Data Structures? If so, which needed details are left out?

    2. Re:I say no IDE by epee1221 · · Score: 1

      The point is that learning without an IDE gives the student better background on how the language works.
      Correction: the student gets a better background on how the compiler works. I didn't learn anything about Java as a language by learning to use the javac tool; if I'd learned something about the language itself, I'd write better code as a result of having used javac.

      If you use an editor with syntax higlighting then other than some ease of use there is no real advantage to the IDE.
      Similarly, other than range, speed and power, a gun has no advantage over a fist.

      --
      "The use-mention distinction" is not "enforced here."
    3. Re:I say no IDE by nacturation · · Score: 1

      Similarly, other than range, speed and power, a gun has no advantage over a fist.

      There's also another important difference: in some social circles, people would think you're cool if you carried a gun stuffed down the front of your pants.

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    4. Re:I say no IDE by Bender0x7D1 · · Score: 1

      I'm currently taking (and often teaching more than the teacher ) an AP Computer Science course which, while actualy about the concepts (OO Principles, Algorithims, Data Structures (well they _should_ be included), etc.), is taught in Java.

      You seem to be against using Java for these purposes and I am wondering why. For example, Java is arguably better for OO Principles than C++ because it is more strongly typed. In C++ you can get away with non-OO coding, Java is a much stronger OO language. Second, Algorithms are not dependant on a programming language, which is why they are most often expressed in pseudo-code. So the language choice for algorithms really doesn't matter and at your level of study is more dependant on available documentation/previous language knowledge than language design.

      As for data structures, when learning data structures I recommend C++ since it doesn't hide the underlying memory management. Once you have an understanding of how memory is managed in C++, switching to Java is easy. Going the other way is not. However, data structures are also independent of the language choice. I think it is a bit harder to understand in some languages, but a doubly-linked list is still a doubly-linked list and a B+ tree is still a B+ tree.

      --
      Reading code is like reading the dictionary - you have to read half of it before you can go back and understand it.
    5. Re:I say no IDE by donaldGuy · · Score: 1

      ...Or should they start off coding in assembly or even machine code?
      For the sake of learning yes, In practical terms no

      At some point, it makes sense to abstract away details so that students can understand important concepts.

      Yes, I agree, there is a line where convienience oversteps the need to learn, but I don't feel that this is across it.

      Now, if your assignments or understanding of the concepts you were taught required knowledge of javadoc or jar, then I agree that your teacher did not use the right tool(s) to teach these concepts, or should have modified the course so that these tools weren't needed (e.g. generate documentation in eclipse should have been all that they needed to run).
      She never required us to use Jars but when I had a bunch of inter-working classes it was alot easier. She never required docs, but its just a good idea to get in the practice. Yes, the generate documentation wizard would be sufficient, but we were using JCreator because the teacher mandated it (I used Eclipse at home).

      So, given this, do you still believe that an IDE abstracts away too much of the detail needed to understand OO, Algorithms, and Data Structures? If so, which needed details are left out?
      Your point is valid when it comes to my class (I just like to learn and think it is good to learn the language and its suite so that I have a real working knowledge). The difference is that the author was talking about an actual "Intro to Java" class, not a conceptual CS class like mine. Don't you think that in this situation it makes sense to learn what goes on under the hood of the IDE before ignoring it?

    6. Re:I say no IDE by donaldGuy · · Score: 1

      I just don't like Java as much as C++.

      I think the way my school system runs the curriculum is the reason, they only have one AP CS class (hence I being the only person in the city (the largest city in VA) taking the AB exam (which includes data structures, algorithim effeciency (big-O notation mostly), and more advanced coverage of the other topics).

      Even though there is only one APCS class they have a "Computer Programming" class .. thus for some one who follows the same path as I did (which usually is anyone seriously interested in computer science) you end up taking one year learning C++ (though it might as well be C since we never use the OO features and the kids all seemed confused about the iostream-style I/O ( >, etc.) ) and then get plopped into a one year class about CS concepts using Java.. unfourtounatly most of the year is spent on the language rather than the concepts and since the syntax is so similar I end up being bored with nothing to do.. this is probably why I dislike Java.

      Wow that was a terrible explination, I'm tired and can't think .. please don't mod me down for my incoherence

    7. Re:I say no IDE by Penguin+Programmer · · Score: 1
      I am a high school student.. I'm currently taking (and often teaching more than the teacher ) an AP Computer Science course which, while actualy about the concepts (OO Principles, Algorithims, Data Structures (well they _should_ be included), etc.), is taught in Java.

      The course is taught using an IDE which did make it easier for most of the students, but as a result no body even knew javac existed.. as far as they were concerned they clicked a button and it magicaly was compiled.. while some would call this good decoupling, what it showed for me is that people ended up completly ignorant of the underlying implementation... they dont know what the command line options are for the compiler or VM, or that javadoc or jar exist (or the related concepts). It left me playing tech support in class so much that I had to do all my actual coding at home.


      Of course, it's being taught in Java, so there's no hope of anyone understanding what really goes on under the hood anyway.
    8. Re:I say no IDE by Tony · · Score: 1

      Or should they start off coding in assembly or even machine code?

      Yes.

      Hell, yes.

      Hell, fuckin' A yes.

      The last thing the world needs is a bunch of little code monkeys. We've got enough "computer experts" in the world who's only qualification is the ability to do a mail merge in MS-Word. If you want to learn to program, then learn to program. Don't fuck around teaching object-oriented programming to beginners. Most professional coders I know fuck up C++ and Java already, simply because they never got a good programming foundation.

      Java and Python and the like are the modern BASIC. Learning them as a first language doesn't necessarily destroy your chances at being a good programmer, but it's a serious detriment.

      I have learned a lot from the various languages I have learned, but I learned the most from assembly on the 6502, and later on the 8088, and eventually on an aging PDP-11. I learned about the workings of the machine. More importantly, I learned how the machine can be different from implementation to implementation, and how also I learned the ways in which they are not different.

      Am I a good coder? Maybe, maybe not. But I do know that starting a student out in an IDE is seriously fucking with their chances of ever being a decent coder. Just like I wouldn't take my car to a mechanic who doesn't understand how an internal combustion engine works, I'd never trust a coder who doesn't understand their tools, from the hardware on up.

      (This isn't to say a mechanic should know all about the first law of thermodynamics. But I'd place bets a mechanic who does is probably better-than-average.)

      --
      Microsoft is to software what Budweiser is to beer.
    9. Re:I say no IDE by pchan- · · Score: 2, Insightful

      Are you sure you don't want the students building their own transistors and generating their own electricity? How will they learn? Welcome to reductio ad absurdum.

      javac, javadoc, and jar are fundamental tools of java programming. Understanding execve() and assembly programming are not. Using javac is the minimum you need to program java in any environment. It is in fact all you need, unless you want additional tools. An IDE is nice to have, if you're into that kind of thing, but it is far from a requirement for java development. A student who has learned the IDE and not the fundamental tools has been done a disservice by a poor teacher.

    10. Re:I say no IDE by Schraegstrichpunkt · · Score: 1
      Precisely.

      My favourite language (right now) for teaching is good old line-numbered BASIC, because it has a structure that parallels assembly language, but lets you do things like PRINT "HELLO WORLD" in one line (which is much more rewarding to beginners).

    11. Re:I say no IDE by Decaff · · Score: 1

      Yes.

      Hell, yes.

      Hell, fuckin' A yes.


      Absolutely no way is machine code necessary, in fact it is a serious distraction from learning good development. (How could understanding the details of wildly different machine codes such as Sparc or IA64 be of any relevance?) I see far, far too many developers worrying about details of optimisation of their C++ code and not working in a far more productive way that is abtracted from the workings of the machine.

      I learned about the workings of the machine.

      That may well have been relevant on the 6502 or 8088 (it was when I used them), but is a total waste of time now. First of all, good compilers should abstract away these details (just as modern machine code abstracts away microcode), and these days any decent developer should have portability as a primary concern of their development, which means using languages like Ruby, PERL, Python and Java, and even well-written C++. This means understanding general details of what a stack or heap are, but in no way should it require any understanding of the underlying machine code. Extrapolating back to the 8088 or PDP/11 days is equivalent to suggesting that we all write our BASIC code with single-letter variables in order to save memory - historically interesting, but of no practical use for modern development.

    12. Re:I say no IDE by osi79 · · Score: 1

      > Using javac is the minimum you need to program > java in any environment. It is in fact all you > need, unless you want additional tools. I don't know what the magic is behind javac you want to teach. It's quite simple: javac SomeClass.java; java SomeClass", or similar. You can teach that at the beginning when teaching "Hello World", that is where it fits in. For any bigger project with more than 2 files you better should teach them how to use a build system like ant. I remember myself in my beginnings (mostly in highschool times) writing handmade compile scripts where a Makefile would have been far more appriopriate (and less time-consuming when compiling). If you need to teach specific tools at all, do not spend all the time at this basic level. Start with the basics, yes, but don't stop there, go on to higher-level tools, more appriopriate for building large software systems. Otherwise people will try to build skyscrapers by assembling sandcorns manually.

    13. Re:I say no IDE by Antique+Geekmeister · · Score: 1

      I built transistors (germanium diodes, actually!) It's helpful to understand how things really work, so that you can tell when the hardware salesman is talking complete nonsense or you can look at the physical layout of a system and say "this is going to have problems with too long of signal traces: go back and do it again".

      It also drives consultants nuts when I look at their complex customized GUI and say "it's not cross-platform, it's not ADA compliant because it relies on sound and badly formatted display that is impossible for text->speech synthesizers, the server-side runs only with an expensive and unstable backend database that is known to present a security problem, the fancy flash display that can't be skipped takes 3 minutes to download over a normal modem and can't be cached due to your settings, your URL's aren't bookmarkable, the back button doesn't work, etc., etc., etc." And that was on only one project! But to notice all those things, you have to have an understanding of how things really work. Focusing on a specific IDE too tightly can actually trap people from looking at the rest of the system.

    14. Re:I say no IDE by aonic · · Score: 1

      When I took APCS, (back in the C++ days...) we were using Codewarrior almost exclusively to compile and run our code. It wasn't required -- more tech-savvy people could just as easily use GCC, but the majority of the class new how to create projects, include and link in the libraries graphically, and press F5 to compile.

      And it worked great! ...until I had to do some programming for a job. Suddenly, my comfy codewarrior environment was gone, and I had to use GCC and makefiles (and automake... /shudder), and my beloved C++ was starting to look more and more like Greek. With very little background in "manually" compiling my code, it took me forever just to get off the ground.

      Basically, I believe that IDEs are nice, once you know the underlying workings of it. The same way that you teach people how to integrate before you give them Mathematica, you should introduce GCC, nano, and makefiles before you give them Anjuta.

    15. Re:I say no IDE by MoneyT · · Score: 1

      I don't know, from my own experience (just a few years ago) I would say that I learned quite a bit from doing some assembly programming. Granted for sake of not being machine dependant we learned fake assembly (LC3) but it was still an interesting and rather useful lesson. One semester only to be sure but still useful.

      --
      T Money
      World Domination with a plastic spoon since 1984
    16. Re:I say no IDE by Decaff · · Score: 1

      I don't know, from my own experience (just a few years ago) I would say that I learned quite a bit from doing some assembly programming. Granted for sake of not being machine dependant we learned fake assembly (LC3) but it was still an interesting and rather useful lesson. One semester only to be sure but still useful.

      Yes, but my point is what did you actually learn from it? How was it useful? Machine code development today is vastly different from the way it was decades ago, with multiple cores and multiple pipelines even in the same processor - my view is that assembler programming has moved beyond a useful skill for the average programmer to something best left to specialists and compiler writers.

      In the 70s when I first learn C, assembler was useful because it had some direct relevance to what was happening in the C code. But now, it often doesn't. So what is the point?

    17. Re:I say no IDE by jouvart · · Score: 1

      I took the AP Computer Science AB exam in May. There's nothing on the test that depends on learning how to use javac, jar files, etc. The test focuses on abstract concepts and ideas (e.g. recursion, data structures, big-O notation), and not implementation details. Even on the writing portion of the test (which involves implementing methods for some provided classes) there was no need to know anything about the compiler or underlying environment. If the goal of a course is to teach students to do well on an AP CS test, then it's undesirable to spend extra time teaching students the details of software development. The course should instead spend more time teaching OO design, data structures and other abstract ideas.

    18. Re:I say no IDE by Whaargh · · Score: 1

      Start in machine code? Bah.

      My first college CS course started with "This is an n-type transistor, and this is a p-type transistor." We learned to make logic gates like AND, OR, NOT, NAND, and NOR. Then we used those to make flip-flops, muxes, etc. Next step: memory and a CPU.

      Our first programming assignment in college was a list of 1s and 0s. THEN we moved to assembly. We learned to hand assemble our code (and hand disassemble). Moving on, we covered C and how to hand compile it to assembly. One of our questions on the final was to provide C code for a binary string of machine code.

      Think I'm kidding? Check out the text book.

      How was this possible? The professor had developed a very simple processor architecture that allowed us to focus on learning a lot of concepts without having to deal with most real-world issues. e.g. no floating point support in the processor, only 16 registers, minimal set of interrupt routines available, etc.

      That was a great semester! It gave me the framework for the rest of my 4-year program. All my other classes felt like they were just flushing out more detail on this or that area. One thing that worked well for me was that I had some programming experience, but not in C. Everything was new to me, but I had a basic understanding of how a computer works, how to write code, etc.

    19. Re:I say no IDE by 16K+Ram+Pack · · Score: 1
      Coding in assembler isn't quite a parallel.

      The key thing being taught is the language. The problem with an IDE is that it takes away a lot of language learning. It often teaches you how to do things the IDE way, not how it should be done.

      For instance, I've seen developers put a header or menu on each form in asp.net, because they don't think to create a mypage class based on page, which does it as common practise. In part, because when you start doing such things, you break the IDE being able to show it in "development mode".

      Hand coding makes people look at the code they are writing for things like form building. Makes them perhaps look more closely at it.

    20. Re:I say no IDE by eldorel · · Score: 1

      What college did you go to, and how long ago was this?
      I'm a sysadmin, but want to improve my programming ability.
      I've been sadly disappointed by our local and state colleges CS programs and this is exactly the type of class I would love to attend.

    21. Re:I say no IDE by coshx · · Score: 1

      yes, i admit that i was bordering on the ad absurdum argument, but i do think it often helps to take ideas to their logical extremes and then discuss why the extreme situation is or is not parallel to the given one. For example, the situation you give of having students generate their own electricity might seem absurd to many of us, but at the same time many physics classes will do just that, and some would argue that this is an important experiment for a computer science student to do as well.

    22. Re:I say no IDE by Eli+Gottlieb · · Score: 0, Troll

      On the one hand, you're completely correct about the AP exam. It has nothing to do with developing real software, and everything to do with "data structures", "algorithms", and other things I look up when I want the details. So yes, language and compiler internals are useless for AP CS students.

      On the other hand, if you want your students to really understand software, then for God's sake teach them about the call stack, the heap, and (GASP!) pointers! People need to understand somewhat what's going on under the hood.

    23. Re:I say no IDE by mdwebster · · Score: 1

      I'm not the person you're asking, but we used this text in ECE206 at NC State University. The LC-3 ISA is even reused in other classes. In the ECE406 Verilog class I took last year, our major project was to synthesize a simplified version of the LC-3 using Synopsys design tools.

    24. Re:I say no IDE by venir · · Score: 1

      I am a CS major, but still fairly early into my degree. My first programming class was intro to Java using Eclipse for the IDE. We used Eclipse for the first and second quarter of Java and then when my third quarter programming class came along which was in C. My teacher (the same for all 3 courses) then moved us from programming in Eclipse on Windows, to Emacs on Linux. It only took a class or two to get everyone rolling in both Linux and Emacs and we all like it a lot more.

      Starting with an IDE helped make it easy to get some code written and compiled so we could learn the fundamentals quickly, but as we got better at programming, switching to Linux and Emacs made us see what the IDE was doing for us. I feel this was very effective and has helped lay a stable foundation for me.

  24. It's not about the IDE by Cylix · · Score: 1

    For simplicity sake, you can introduce them to an IDE on day one, but it's important to cover what is happening.

    Case in point, I had a friend who is taking some programming classes and was absolutely baffled on compiling from multiple files. Their instructor apparently likes them to "dig" in and then teach from what I gather. It's a simple matter in the end, to create some header files and segment logical code and make sure they are included under that project hierarchy. However, certain compiler flags and inclusions are essentially hidden from their point of view. I don't know if they planned on covering that, but I pointed them out some resources and gave my fairly rough explanation. (It was already written else where so I didn't feel much need to regouge the wheel)

    So while I don't think it's a bad idea to start someone off on a good IDE, I don't think it's entirely a bad idea either to explain whats happening or even show off how things work on the command line.

    It's along the same lines of how a past instructor taught VB. (Yes, had one class of VB, but we mostly used it for the GUI side and wrote our dll's in C++) As he taught the programming, even with some dig in approaches, he explained a great deal of things going on behind the scenes. I can say the extra understanding helped me to be a better VB programmer because understanding how things worked helped me optimize my code. (Extra points as well since our end sememester bonus points/work/competition included several pieces of code to optimize for speed. Slammed 3 of the 4 for best speed improvements and I didn't even need it for the A... I'm a bastard.)

    --
    "You should always go to other people's funerals; otherwise, they won't come to yours." -- Yogi Berra
  25. IDE ..... by the+eric+conspiracy · · Score: 1

    A big IDE like Eclipse would not be a great idea, but vi and emacs would also get in the way of teaching the students about the language. I'd suggest something simple like jedit.

    1. Re:IDE ..... by bladesjester · · Score: 1

      I don't see what's so daunting about eclipse. If they're new, the only features they really have to bother with are Open, New, the editor window, Save/Compile, the console at the bottom that says they have errors, and run as.

      You have the same features in pretty much every other ide. The rest you can basically ignore until you want to look into it further.

      I started out with edit in dos. When I got to unix in college, I went through pico and xemacs. At the same time, I was using Visual Studio 6 and Code Warrior on Windows.

      Now it depends on what I'm doin and the platform - xemacs, pico, eclipse, visual studio and various other things.

      To tell the truth, I still don't use half of the functionality for most of them. I'd be willing to wager that most people don't.

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    2. Re:IDE ..... by the+eric+conspiracy · · Score: 1

      I think the UI in Eclipse isn't that great for a beginner. There are a lot of views etc that can be a PITA to figure out.

  26. Teach them without computers by MarkusQ · · Score: 4, Insightful

    Teach them without computers.

    No, seriously.

    If you really want to teach programming (instead of teaching "using a computer"), start them out on paper and make them actually think about what they're trying to do instead of getting caught up in using the interface. Then have them work in groups using a whiteboard, and don't let them test their code until they've all agreed that it's correct. Teach them to look out for their own mistakes, and the mistakes of others, rather than counting on the computer to do their thinking for them.

    There was a definite advantage to the old submit-a-deck-of-cards system, in that mistakes were annoying and you worked hard to avoid them. To do this, you had to really think about what you were trying to accomplish, how you planed to do it, and what might go wrong. In other words, you were really learning to program.

    On the other hand, with highly interactive environments (which are extremely useful once you know what you are doing) beginners are all to tempted to fall into a trial and error loop until they get something that "works"--which is to say, it happens to produce reasonable results for whatever limited test case they are using--without ever really thinking about the program.

    Suppose you were teaching flying. Would you start your students out in an advanced aircraft with an autopilot that could take off and land unassisted, and all sorts of doodads to make flying easy--or would you sit them down with a pad of paper and make them work out things like stall speed and fuel requirement problems until they really understood the issues?

    -- MarkusQ

    1. Re:Teach them without computers by Toba82 · · Score: 1

      I wish I had mod points for you. But I don't.

      --
      I pretend to know more than I really do by mooching off google and wikipedia.
    2. Re:Teach them without computers by Above · · Score: 1

      I can't say how much this poster gets it. Right on, bravo...and if only most professors understood.

    3. Re:Teach them without computers by Anonymous Coward · · Score: 3, Insightful

      Some people (like me) learn by reverse engineering everyhting, and that requires trial and error, we need to see what works and what doesn't, only then can we understand why. Your suggestion excludes those people. Yes it's true that most students have to be taught the way you describe, but you are excluding the most skilled ones, those who have the highest chances of scoring high in the real world without cheating.

      Your analogy is also wrong: you can experiment with software as much as you wish as the chances of breaking anything are slim (unless you are developing an embedded operating system and accidentally erase a firmware which cannot be easily replaced or something), but if you try to fly an aircraft all by yourself and crash, the craft is lost, and probably so is your life.

    4. Re:Teach them without computers by vmardian · · Score: 1

      I disagree. He doesn't get it. It's not an intro to programming course. It's a Java course.

      --
      PowerLevel.com - A next generation marketplace for virtual items and services
    5. Re:Teach them without computers by Chandon+Seldon · · Score: 0

      Why the hell would you do that? That's like writing the first draft of an essay on paper and correcting all the spelling mistakes before typing it ino a computer.

      There are some things that computers are very good at, like identifying syntax errors. They also let you compile and test your code as many times as you want.

      Now, it's important that students understand that programming has a design phase. It's also not always optimal to use the "debug an empty source file" programming technique, but there's also no reason to go back to the bad old days of batch systems and writing code away from the computer.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    6. Re:Teach them without computers by Anonymous Coward · · Score: 0

      i could see doing a segment of the class like this, but if you don't teach them how to actually program in java then i think you're wasting their time.

    7. Re:Teach them without computers by dugjohnson · · Score: 1

      This is brilliant. I have taught at the junior college level and found the experience very frustrating because of the mix in student interest....although it did match the classic bell curve. Getting them to interact as a programming team before touching the computer can get them to think like designers, not just coders, and to understand better what the discipline of programming is truly about. I have always contended that the easiest way to tell if someone has at least the potential to be a programmer is to ask them to give you directions to someplace across town that you both know....if they can get you there verbally, not relying on visual cues as they drive, they at least have a shot at it.

      --
      My brain is overly lubricated
    8. Re:Teach them without computers by ramoth4 · · Score: 1

      I remember doing this in high school, and it was a HUGE help. I can't recommend this enough. I did notice many students doing the trial and error approach, especially with the automated tests. They would just hammer away until they passed them all. They were all thrown for a loop when we had to write our own tests.

      For the OP, my advice is require them to not use an IDE at least once. Requiring them to submit the output of java(1) and other such tools will help.

    9. Re:Teach them without computers by Antiocheian · · Score: 1

      To mod him up or down?

    10. Re:Teach them without computers by cgenman · · Score: 4, Insightful

      The two problems with this is that it is difficult to catch errors and discourages test-based development methods.

      I used to do this in high-school, though. I would write applications down in a notebook one line at a time, then type them all in when I got to my calculator. It could be valuable, but there were many programs that had to be scrapped and re-written because there was an error somewhere in the code and it was impossible to figure out where the problem had arisen.

      A tight success / failure loop does help teach people to seek out and find problem areas quickly and painlessly, before more and more code gets committed on top of the bugs, burying them in layers if misdirection.

      Suppose you were teaching flying. Would you start your students out in an advanced aircraft with an autopilot that could take off and land unassisted, and all sorts of doodads to make flying easy--or would you sit them down with a pad of paper and make them work out things like stall speed and fuel requirement problems until they really understood the issues?

      I'd drop them in front of MS flight simulator so that they would get a feel for what they were going to do. "The maths" generally don't teach a pilot how to recover from a downdraft.

    11. Re:Teach them without computers by Anonymous Coward · · Score: 0

      That might be helpful for an introduction to programming course. However, most or all of the students already know programming.

      An exception would be if the previous courses didn't already go over programming concepts. If that happened then the college needs to change their curriculum.

      You could apply the idea to introducing OO concepts thou because VB/C++ courses usually don't cover OO. Visualizing how OO programming works would be very helpful for those new to it.

    12. Re:Teach them without computers by Puff+Daddy · · Score: 2, Insightful

      Teaching without computers has its merits and its limitations. I think the happy medium, for intro courses at least, is to ask to see pseudocode. It teaches the students good programming principles while not chaining them to any one language or program. Of course, also require an executable program, but only after decent pseudocode has been submitted. This can extend to mid-level courses and understanding various data structures. This is where the variety of tools should be introduced. Introduce an IDE, or two. Begin allowing projects to be submitted in the student's chosen language. By the time students have reached the advanced level, they should be able to choose the best tools for the job. By this time, most of the non-majors will have ceased their study of CS, and most of the majors who never belonged there in the first place will have quit. Grade the remainder on their results, inquire about their methods. If you feel that their methods are holding them back, provide guidance.

    13. Re:Teach them without computers by David+Rolfe · · Score: 3, Insightful

      When I was in CS in the mid-90s we took Theory of Computing (no computers) before we took Intro to C, Algorithms, Data Structures, etc for exactly this reason. Professors could presume we knew some actual fundementals (and unlearned all the BASIC and Pascal we'd done in grade- and highschool). We wrote software at terminals in a computer lab or via SLIP from home (with pico, vi or emacs). We turned in from the shell prompt. Same for Assembly and later, Unix Administration with Perl (first edition Camel book was the text :-p). It wasn't until Intro to Computer Graphics (description: "This course isn't how to use PhotoShop, it's how to write PhotoShop") that we where using IDEs.

      parent: On the other hand, with highly interactive environments (which are extremely useful once you know what you are doing) beginners are all to tempted to fall into a trial and error loop until they get something that "works"--which is to say, it happens to produce reasonable results for whatever limited test case they are using--without ever really thinking about the program.

      I concur, the trial and error method of "write a line of code, try to compile it, fix the compiler error, repeat until program runs, then test an input, if it's wrong make a change, recompile, test an input... etc" isn't really learning how to program (and at worst it's only teaching how to choose good tests). I mean it's kind of like the slowest most terrible implementation of evolutionary programming (highschoolers get a head start, google Lawrence J. Fogel) or a slightly better optimized "one million monkeys" scenario. Maybe it is learning how to program, but it isn't really learning how to be a programmer. Maybe that's a distinction worth discussing.

      Not that I'm especially qualified, but this is how I'd teach a programming course: Present the concept, explain the concept, train the concept (this is all face time, auditory, visual learning); assign reading and homework on the concept, test/quiz the concept (student opportunity to take ownership and get special attention, hands-on learning); assign implementation of the concept and then grade the implementation (hands-on practice); repeat until finals week. Homework over short breaks m-w, w-f and t-r with imlementation over long breaks r-t, and f-m assuming two and three per week meetings. Kids love weekends in the lab! (Do they even program in the lab anymore?)

      Whether or not the implementation phase involves an IDE or just a text editor shouldn't really have a huge impact on the students' understanding unless one has to spend time teaching the environment -- taking away time that students need spent on teaching and learning the concept. :-D Just my two cents.

      --
      Read Heinlein's 1953 Revolt in 2100, now more than ever.
    14. Re:Teach them without computers by Toba82 · · Score: 1

      Up.

      --
      I pretend to know more than I really do by mooching off google and wikipedia.
    15. Re:Teach them without computers by Anonymous Coward · · Score: 0

      Did you read the write up? They have already taken courses in programming, they're not complete newbies. Now try again.

    16. Re:Teach them without computers by syousef · · Score: 1

      Nope. Bad idea. A good program isn't written serially in sequence. Parts are added and deleted as requirements change and parts evolve. What's more having code in computer form makes it searchable.

      When is the last time you wrote a non-trivial piece of code in sequence? Be honest now.

      --
      These posts express my own personal views, not those of my employer
    17. Re:Teach them without computers by maxume · · Score: 1

      The analogy is fine. It's not the chances of getting something wrong or the consequences of getting something wrong that is important in the comparison, but the understanding of fundamental concepts, ya know, walking before running. Or are you saying you wouldn't be able to learn how to fly a plane until you had crashed a few?

      Perhaps the o.p. put a little too much emphasis on the paper and whiteboard, reinforcing the concepts by actually messing around on the computer is also good.

      --
      Nerd rage is the funniest rage.
    18. Re:Teach them without computers by Anonymous Coward · · Score: 0
      I concur, the trial and error method of "write a line of code, try to compile it, fix the compiler error, repeat until program runs, then test an input, if it's wrong make a change, recompile, test an input... etc" isn't really learning how to program.
      I agree. It's learning how to program in the language you're trying to learn. Just as trying to speak Spanish with a helpful native speaker, listening to corrections isn't "learning linguistics". Of course, so isn't ploughing through a Spanish grammar that happens to contain tables and rules, but not a single sentence in Spanish. Likewise ISO C could be C if you take out every "sentence" of C from the specifications (code block examples, etc) and just leave the rules. So you go ahead and print out the WC3 specs and "learn HTML", and I'll just use a standards-compliant browser that likes to complain when it isn't parsing something strictly correct. You can complain "I'm not learning markup" from whether my browser's output looks good and it doesn't complain of non-compliance, you can complain I'm not learning linguistics from a helpful Spanish speaker, and you can complain that I'm not learning programming from the syntax errors my random approaches produce.

      That's fine. You be your linguistics-major, programming-theory, strict-WC3 compliant self, and I'll continue to speak all the world languages of interest to me, to program quickly and correctly in all the computer languages I find useful, and to produce beautiful, lean web pages that look great on every released version of every web browser ever made, for any platform. "But testing by slogging through a thousand+ images on different VM client architectures so you can back up the last thing you just said isn't learning about client-side Web markup and programming! Reading the WC3 specs is!" you say? Well go ahead. No one's stopping you.

      p.s. programming languages are an interface between logic/functionality and the programmer's intentions. imagine a new "front-end" to a programming language consisting only of all-new syntax. If you know the old language, then learning this new syntax isn't "learning to program", but it sure as hell is what most of learning to program actually consists of! Students don't have trouble saying "I want the sum of all the prime numbers less than 100", especially if that's what the question written on the test is.
      Everything else is just funcationality and syntax. (For example, most languages require you to know what a prime number is -- functionality -- in order to answer the question, since isprime is not a built-in test.)
    19. Re:Teach them without computers by Alt_Cognito · · Score: 0

      and unlearned all the BASIC and Pascal we'd done in grade- and highschool

      Pascal... The language nobody respected because of it's strongly typed nature. Sad we had to wait until Java rolled around before any gave strong-typing respect again.

    20. Re:Teach them without computers by KillerCow · · Score: 1

      Then have them work in groups using a whiteboard, and don't let them test their code until they've all agreed that it's correct.

      I really have to disagree with this. It flies in the face or iterative development, test driven development, and small releases. Students need constant feedback on their work, and the sooner that they get it, the more effective that it is. Writing things on a white board does not give them any form of feedback. They will not even be able to catch compile errors in this set-up. It will just frustrate them and slow their learning.

      There was a definite advantage to the old submit-a-deck-of-cards system, in that mistakes were annoying and you worked hard to avoid them. To do this, you had to really think about what you were trying to accomplish, how you planed to do it, and what might go wrong. In other words, you were really learning to program.

      No. The cost of catching an error early is much less than catching it later. It would have been better to have been testing things all along instead of just being careful and thinking hard. Errors will happen no matter how careful you are. If you test early, the cost of making them will be much less. There is nothing that says that you can't still be careful and plan if you are testing as you go.

      On the other hand, with highly interactive environments (which are extremely useful once you know what you are doing) beginners are all to tempted to fall into a trial and error loop until they get something that "works"--which is to say, it happens to produce reasonable results for whatever limited test case they are using--without ever really thinking about the program.

      I will agree with this in the case of "beginners," but this would be negated if they followed test driven development practices.

    21. Re:Teach them without computers by bhtooefr · · Score: 1

      That's how I taught myself Python.

      All of my PCs except my Apple //c were broken, and I had this RHL 6.0 book that had an appendix on programming languages, complete with crash courses in them.

      So, I slapped together a CMS in Python... ON PAPER.

      A few days later, I typed it in verbatim... and it almost worked. It didn't error out, anyway. w00t!

      Python's now my favorite language...

    22. Re:Teach them without computers by Siker · · Score: 1

      I think Markus' lack of faith in trial and error reflects a very common and fundamental misunderstanding of how the human brain works. In fact, it reflects one of the basic flaws in American modern education over all.

      Programming is easy. Easy as hell. But by tackling it with an academic 'hands off' approach a problem is created and that is why you can find room-fulls of hopeful future programmers who couldn't write a Tick Tack Toe game to save their lives.

      When learning anything, anything at all, the only efficient method is trial and error. Now you might say, 'but when I was 18 I had to memorize a programming bible backwards and forwards and it sure came in handy.' But what you might not realize is that memorizing that was just a tool to allow you to do different, more roundabout, trial and error. The human brain is a neural network. It is built to find solutions in very vast search spaces. One such search space might be finding the right program to solve a given problem. When the neural network is untrained, it will find very random solutions which are likely to be very far from the correct solution. But by reacting to negative and positive stimuli the correct patterns are eventually created in the network and a solution crystalizes. This neural search process is amazingly fast compared to almost everything else we have studied just because it is a feedback loop.

      The more complicated you make the feedback loop, the harder it is to learn anything and even something ridiculously easy as programming starts to look hard. This is the fault of today's and yesterday's education systems.

    23. Re:Teach them without computers by 42forty-two42 · · Score: 1

      Would you mind clarifying the Lawrence J. Fogel bit? A google for him doesn't explain what you're referring to here, alas.

  27. yes and no by coshx · · Score: 2, Insightful

    No to Visual Studio, but yes to an IDE. Well, emacs and vi can be thought of as IDE's that is.

    My first course in programming was at UMass Boston, which is basically a community college, and we started off learning emacs, then went on to our first cup of java.

    It was pretty gruelling.

    But now I still know emacs and use it every day, while the java technology (1.0) has changed a great deal.

    My point is that if you're going to teach them a tool, use one that will still be useful and helpful later on in their academic and professional careers. Visual Studio may not even be around in 5 years, but most likely, it'll still be around and will use a different interface that they'll have to relearn. Instead, focus on the fundamentals of any IDE, such as compiling, linking, testing, debugging, so that they'll have no problem learning whatever IDE their company uses. In this sense, I think it makes more sense to learn that to compile a program into bytecode or machine code, you have to launch another program that does this (gcc program.c or javac Program.java) rather than just click a Run button and have everything magically happen for you.

    This goes along with teaching the fundamentals of programming languages and operating systems rather than preparing them to work in a single specific language or OS and have them out of work in 10 years.

  28. Students should be taught with a debugger by Zigurd · · Score: 0

    The IDE is a convenient way to combine tools. The important thing is that students understand how to use a debugger to inspect a program as it is running, and a profiler so that they gain an understanding of what is and isnt important to performance. Most good IDEs make debugging easier and more powerful. Some have good profiling tools, too.

    But then, this depends on the curriculum actially taking advantage of tools like debuggers and profilers. But, with Eclipse, Netbeans, and some versions of Visual Studio available at no cost, there is no excuse to deprive students of the easiest environment in which to use these tools. The command line adds nothing to the learning experience.

    1. Re:Students should be taught with a debugger by Anonymous Coward · · Score: 0

      Actually, I tend to agree with the guy a few posts ago. (i.e. program without a computer). So once you get past that stage and really know how to program... you really ought not to have to debug.

      Programming is best done with the intent of not requiring to debug. Introducing a debugging tool on the onset seems to suggest to the student that "oh.. it's ok to get this a little wrong... coz we have tools to help you *fix this later*".

      That is very likely going to end up teaching them to be lazy and thus poor programmers.

      Note this is not the same as saying that knowing how to debug and test properly is unimportant.

      -wbt.

  29. IDE as Tutor by travellerjohn · · Score: 1

    I would consider a powerful IDE like Eclipse as a important teaching aid in itself, almost an automated tutor.

    I have just completed an MSc course myself which looked at computer aided training. The conclusion was that the best computer aided training is one that interacts with the student, identifies mistakes and suggests possible solutions, much like a live tutor does.

    My Eclipse installation is as close to that ideal as I have come across; it highlights missing punctuation, identifies missing import statements and points out many errors as I make them, and generally directs me to write correct code. If you pay attention to what your IDE is telling you, you can learn a lot, and quickly. I certainly considered the learning experience more fulfilling and more enjoyable than wrestling with obscure compiler errors.

    Perhaps an IDE shopuld be considered as a teaching aid, a better question is what Eclipse plugins would Slashdot readers recommend to build the perfect learning environment.

  30. If you think "Hello, world" demands an IDE... by Darth+Liberus · · Score: 2, Insightful
    Then by all means, teach with an IDE. Otherwise, the KISS rule would say "give them a choice of text editors and teach the basics."

    IDEs are insanely useful when working on large projects, and should be introduced towards the end of the class, but IMHO if you use an IDE from the start you're going to end up with a bunch of students who understand the IDE instead of the core concepts they need to know.

    --
    Beauty is just a light switch away.
  31. Teaching Java, not teaching programming by torok · · Score: 1

    The man says he's teaching Intro to Java and Intro to Python. He does not say that he's teaching "Programming 101". These are courses mainly on basic language syntax, and how to write simple programs in each language - why not use an IDE to help out?

    The type of person taking an intro course with a title like that is not trying to learn to program in general terms, they're trying to learn the basics of a language, and an IDE can help with that.

    1. Re:Teaching Java, not teaching programming by iluvcapra · · Score: 1

      Along this line: What is the Perl instructor using to teach his class? If you align yourself with the other instructors you all will make it much easier on the students.

      What are the pre-reqs for this class? I know it's probably a bit late for the submitter, but I wouldn't give a language introduction class to someone who didn't have an "Introduction to Computers" and an "Introduction to the Command Line" class as pre-requisites, or at least as concurrent enrollment requirements.

      --
      Don't blame me, I voted for Baltar.
  32. Emacs and Ant by jonabbey · · Score: 3, Interesting

    I'd recommend emacs. You'd be giving them a tool powerful enough to let them get work done, but not yet a tool that would remove the burden of thinking from them. They'd have to spend time learning a couple of handfuls of command key sequences, but all in the service of competently manipulating the source text, not in the service of learning how a given IDE wants to frame the software development process for them. If you wanted to help them put their code together, you could give out handouts for Jakarta Ant.. that way they'd get to directly touch and view the construction process for their programs.

    Emacs and Ant are also available on all platforms your students might conceivably be using, whether it be Windows, Mac, or Linux.

    1. Re:Emacs and Ant by Antique+Geekmeister · · Score: 1

      Good old "make" is to Ant what Emacs is to Eclipse, and people should learn how to use it first for the same reasons.

      Make is far more portable, runs reliably an many more platforms, and does not need the unreliable and closed source structure of Java to run correctly. Similarly, Emacs and especally vi work when a graphical IDE is infeasible or fragile and tend to block you from the useful underpinnings of the work. Make works when you can't afford Java for your environment, for performance reasons and weird limitations like cross-platform compilation, or because the variations in different Java Development Kits destabilize the project.

      If forced to use an IDE for productivity reasons, and they really are handy for big projects and debugging code dynamically, then start with the simple and portable ones. DDD, for example, is fabulous and quite portable, and works in a reliable way that commercial Java based debuggers can't hope to approach due to the Java platform dependency weirdnesses.

    2. Re:Emacs and Ant by jonabbey · · Score: 1

      Good old "make" is to Ant what Emacs is to Eclipse, and people should learn how to use it first for the same reasons.

      Not really. Make is actually quite terrible for doing Java builds, since it has no cognizance of the structure of the Java build process. Make was built for an environment in which there is a two step compile and link process, but Java doesn't work like that. Java is built to do simultaneous compilation.. any time you have classes that mutually reference one another, they need to be compiled together so that all the symbols can be resolved.

      Ant knows how to do this for Java code, Make does not.

      In addition, for the purposes of this question, Ant is more portable than Make, inasmuch as Ant runs wherever Java runs, and if you're dealing with a platform that Java doesn't run on, you're not going to be having much luck in this gentleman's class in any event. Ant runs great on Windows, specifically, whereas with Make you'd either have to install Cygwin in order to get all the Unix bits, or you'd need to deal with a variant Make which might not work the same.

      For the Python portion of the class, something like Make shouldn't be necessary, as you can just run the source code directly with the interpreter.

    3. Re:Emacs and Ant by Antique+Geekmeister · · Score: 1

      Despite the claims, Ant cannot work on a large number of platforms because *Java* does not work on them. Many real-time OS's, micro-distributions, and several commercial grade high-availability operating systems simply do not have a workable Java for them to run Ant with, particularly for resource-starved systems but also for systems where Sun or IBM have never bothered to compile and distribute one. Becasue Java remains closed source, don't expect to see Java for them soon. And don't get me going on what "simultaneous compilation" really means at the operating system level.

      If the "IDE" class is actually a Java IDE class, fine, use Ant. But for a more basic development environment class, it's better to keep it simple and portable. Save Java IDE refinements for a more advanced or specialized class.

    4. Re:Emacs and Ant by Anonymous Coward · · Score: 0

      Are you that dense? The parent to your post explained why ant is 100% portable in the context of this Ask Slashdot question. This question was about teaching a Java programming class.

    5. Re:Emacs and Ant by owlstead · · Score: 1

      Bugger that. I've used emacs my first years and I hated it even more than Vi. You simply don't do that to trusting students. Type one wrong command and I had to spend the rest of the hour trying to find out how to get rid of that window, how to undo something etc. Now I would not have so many problems with it, but I know for sure back then I thoroughly hated going *back* to trap like that.

      Keep those over-engeneered ASCII-text editors out of my way.

  33. Re:... Yes and no by DaveAtFraud · · Score: 4, Insightful

    BTW, given the way the original question was asked, I would have just answered "yes".

    I taught college level math (trig through intro to calculus) back in the '80s and the same debate raged with regard to using calculators. If I was teaching arithemtic, I would argue against using calculators since the whole idea is the class is supposed to be about learning simple skills like add, subtract, multiply and divide. If I'm teaching a higher level subject like trig or calculus, I'd say using calculators is great because it allows the students to concentrate on the concepts and not get bogged down in the arithmetic. Hell, when I was working on my MS I used an IBM 5100 running APL to do a bunch of the matrix manipulations for my abstract algebra class and the prof thought it was great since I wasn't spending hours row reducing matrices to get eigenvectors and eigenvalues.

    I would argue that the same principle applies here. Higher level classes should encourage the students to use an IDE and higher level languages since the idea is to teach them concepts like data structures, complexity theory, numerical algorithms, etc. Introductory classes really benefit from having the students flail at things like compiler errors and trivial logic errors that a good IDE flags so they understand how little a computer can do until someone programs it. In between, the students need to be exposed to an IDE in a way that makes the transition itself a learning experience and ties in with software engineering, tools and the whole mess that Fred Brooks charaterized as accident vs. essence.

    I'd also like to see a class that has students solve a problem using a programming language that's appropriate for the task and one that isn't (e.g., COBOL for a CGI problem) just so they also get some understanding of how using the right tool for the job makes a difference and the problem domain for a given tool is limited. This is probably beyond the scope of the original question.

    Cheers,
    Dave

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
  34. A Brief Overview by miyako · · Score: 1

    I think students definitely need to be introduced to coding without an IDE. I have a good friend who graduated a couple of semesters before me. I sent him some code to look at that I had been working on, and he had absolutely no idea how to compile it without using an IDE (and it wasn't some horribly complex application in 12 different languages or anything, it was around 4 .java files, and had no weird dependencies or anything). This was someone who graduated with a degree in CIS and already had a degree in CET, had been using Linux for years, and he still didn't really get what was going on with compilation.
    That said, I think a short introduction early on should be enough. For beginning students a good IDE can help to re-enforce the learning. Syntax highlighting can help them to remember keywords, and auto-intention and braces can help keep their code clean so they don't get too frustrated early on.
    Code completion is a bit of a double-edged sword. It can help students to remember the names of functions, etc. but it could be bad if they come to rely on it too much early on.
    I also agree with some of the other posters who have said that vi and emacs might have too steep of a learning curve. If you are on Windows, then Textpad is a fairly nice program that is sort of half-way between a text editor and a fully featured IDE.
    I've been trying to put materials together recently to start teaching a volunteer community education class on Java programming, and considering everything I've mentioned above, my plan is to give an introduction to compiling from the command line, and have student practice building demo programs from the command line, and then introduce a couple of IDEs (I plan to demo Eclipse, Netbeans, and X Code). From there on I'll probably tell students to play around with each and then stick with their favorite way of developing, while giving demos in Eclipse, simply because it's the IDE I prefer (though I run most things from the command line outside of Eclipse, and end up using Eclipse as a glorified text editor, mainly because my notebook is underpowered enough that the speed difference justifies the tiny amount of extra effort).

    --
    Famous Last Words: "hmm...wikipedia says it's edible"
  35. From a professional Java instructor... by ChaseTec · · Score: 1

    I like vi(vim) and while it does have syntax high-lighting it also has a learning curve to it. The goal here is to teach the students a language, not an editor. If you don't want to go for a full IDE I'd suggest using JEdit, it's free and has syntax highlighting for just about every language. It'll also help match up curly braces but that's about it without any plugins.

    The thing I like about using JEdit instead of an IDE is that it does NOT do auto-completion by default. It makes the students memorize Java syntax a little better but they'll also have issues running the command line compiler.

    Beginning Java students will have trouble understanding the error message of the command-line compiler. With a little introduction an IDE will provide a much less frustrating experience for students. Another positive of an IDE is a standardized project structure which will make your life easier when students turn in work.

    I've trained several college instructors and had this discussion a couple of times and they usually end up using JEdit, Eclipse, or Netbeans. Myself, I lean a little bit towards JEdit but I typically get to hover over my students and help them with any problems.

    --
    My Hello World is 512 bytes. But it's also a valid Fat12 boot sector, Fat12 file reader, and Pmode routine.
    1. Re:From a professional Java instructor... by platypuszero · · Score: 0

      Honestly, I am a biology major. I took an intro to Java class because I was interested in it and a few of my lab buddies joined me in this endeavor. If it is an intro class it would have been neat to see some of the underlying compiler options stuff, but it would have been out of the range of the course. We used NetBeans because everyone could download a copy no matter what OS they used, so the professor and TAs only had to deal with tech support stuff for one program i guess... but really any lightweight multi-platform and free IDE will do I guess. I tend to agree with those that said that stuff should be upper division stuff. One of the neat things about Java and Python is that they are such accessible languages and because of that many non-computer science people take classes in them.

  36. Without at First by Nashirak · · Score: 1

    I agree with what has been proposed previously, teaching both. However, I think students should be taught without an IDE for most of the time. I can remember being in a computer lab and a sophmore asking me how to compile some program. He had no idea that you could compile a program without his pretty IDE. All he knew was that he wrote some code and pressed a magic button and presto... his program was compiled. He had no idea what to do if something went wrong. Teaching without an IDE will take away some of the mystery and give students a better grasp of what is going on.

    If you teach it without an IDE you will also make a better cross platform programmer. *nix OSes typically use Makefiles for most projects. Typically with makefiles you need to know what options to give your compiler (ie. know something other than push a button on the IDE) for the program to correctly compile.

    There is also no common interface to IDEs (although most have similar features), so what you teach with in an IDE the class could become "This how to use this particular IDE tool". If you teach the stuff behind the IDE, in my opinion, the programmer will be able to handle just about any IDE because he knows whats going on behind the scenes. Just like when you teach programming, you teach Data Structures, Control Structures, Algorithms, etc., rather than simply teaching how to program in a particular language because if you know these fundamentals then you will be able to use any programming language, because its simply a matter of syntax. If you teach the fundamentals of the compiler, different IDE s will simply a matter interface.



    Thats just my 2 cents.

  37. for Java... BlueJ is nifty. by MrFlannel · · Score: 1

    Because it allows the kids to play with methods/objects independant of the rest of the program. Great for debugging when you're learning (and just plain learning).
    It's somewhat of a lightweight, no frills IDE at that. It also does a bit of the UML stuff.

    After playing with it a while, I wish I had something like it for C++ debugging. Makes testing a whole lot easier.

    --
    Clones are people two.
    1. Re:for Java... BlueJ is nifty. by FishWithAHammer · · Score: 0

      BlueJ is the worst pile of sludge I've ever had to work with (and I've used vi and emacs to boot--well, no, not to boot; we know it can, but I really do prefer Linux under my emacs instead of emacs under my emacs).

      It uses soft tabs (spaces). Most students in my class (I'm a high school senior in an AP Computer Science A class because I needed the elective credit to graduate, so I help teach) are none too bright and click somewhere in the middle of the whitespace, then hit tab. This brings the cursor to the nearest tabstop--and fills the area between the cursor's last position and its current tabstop with spaces. Moron students don't see a problem with this and they're off on their merry way. Meanwhile, those of us who have to LOOK at their code are puzzling over why there are four spaces before the beginning of an if statement and seven before its final brace (no, it isn't GNU-style). BlueJ encourages hard-to-read, poorly formatted code. Its text editing functionality could be duplicated in about four hours using Visual Basic 6 and a richtext control.

      It also seems to crash a lot on WinXP machines. And its layout is ugly as hell. If you're forced to teach Java, use an IDE that someone out there is actually going to use.

      That means Eclipse.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
  38. No IDE by nukem996 · · Score: 1

    Im a bit old school myself. What I see in people that turn how to program with an IDE is they are tied to that IDE, they dont want to use another. Its like pulling teeth to get them to switch. The other problem they have is they know nothing about the compiler. The same people taught on an IDE would have no idea how to compile by command, now this is not a problem if they always use an IDE but when you get into optimization and such it makes things easier. Now many people here have mentioned that it will help them get away from making simple mistakes, well you want them to make these mistakes. You learn from your mistakes, this way you dont make these simple mistakes and will help them get into the habit of cleaner, better written code.

  39. Both... by wtansill · · Score: 1
    When first learning, force them to use a plain text editor and force them to use ANT. In this way, they have to learn the syntax, and they have to learn how to set up the project so that ANT can package it appropriately to run under Tomcat or what have you.

    After they have learned the basics and are comfortable with the mechanics of writing/compiling code, introduce them to an IDE (Eclipse and NetBeans are both free, as id Sun's Java Creator Studio) since that's the environment they will likely use in the real world.

    --
    The contest for ages has been to rescue liberty from the grasp of executive power. -- Daniel Webster
    1. Re:Both... by joss · · Score: 1

      Are you out of your mind ? Just how much time do you expect students to spend working on this course ?

      Ant is a painful necessity for professional java programmers. Its only useful or necessary with large projects. This an intro course, they'll have quite enough to worry about learning the basics of OO, java syntax and the java language. How many fricking classes do you need to deal
      with in java to read from a file: [File ?.. oh, InputStream .. oh FileInputStream, great, no wait.. maybe FileReader but then better use BufferedReader, oh wait, I need to deal with IOException too, but what should I do with that, use throws or rethrow RuntimeException] ? Seriously, they've got enough to worry about getting to grips with the language. Learning bloody ant is too much.

      --
      http://rareformnewmedia.com/
    2. Re:Both... by wtansill · · Score: 1
      Are you out of your mind ? Just how much time do you expect students to spend working on this course?
      As much time as they need to in order to understand the fundamentals as well as some of the surrounding tools and concepts. I've always found it useful to put in more time in my classwork than was minimally necessary as I tended to get much more from the experience than others.
      Ant is a painful necessity for professional java programmers. Its only useful or necessary with large projects. This an intro course, they'll have quite enough to worry about learning the basics of OO, java syntax and the java language.
      Oddly enough, I did not find ANT all that difficult to learn and use, and it's use has simplified my life considerably -- not only at the office where I am a "professional programmer", but also in continuing education courses. It's not just for large projects, IMHO.
      --
      The contest for ages has been to rescue liberty from the grasp of executive power. -- Daniel Webster
  40. I firmly agree by SlappyBastard · · Score: 1
    IDEs are such a matter of personal preference. I know people that hate IDEs because they feel the friggin program is more a roadblock of suggestions and conventions. I know folks who insist that by the 12th straight hour at a computer, your mind just isn't up to the task of diagnosing what's wrong with code.

    There is a point in coding where your eyes just glaze over and you cannot quite fathom where the hell the tiny little mistake is because everything reads right.

    Your head eventually clicks: oh, it's a damned semi-colon needed right there! Grrrr.

    And then you resume life for a few hours.

    For these reasons, it's better to let folks find their own groove.

    --
    I scream. You scream. I assume that means we're both acquainted with the problem. We proceed.
    1. Re:I firmly agree by i.r.id10t · · Score: 1

      A decent editor with good syntax highlighting would take care of that for you...

      --
      Don't blame me, I voted for Kodos
  41. Why hate MS? by Kawahee · · Score: 2, Insightful

    I hate to say it, but Microsoft has some great debuggers

    Why hate Microsoft? They should have some great debuggers - they're in the business of writing tens of thousands of lines of source per day, some of which isn't going to be perfect. They've got the knowledge and expertise, and most of the people working there are a lot like you and I, it's just that their business ideology is to mostly focus on the desktop market, and Windows etc reflects an operating system for a normal person to use.

    You can also thank them for making an awesome IDE.

    --
    I'll subscribe to Slashdot when I see a month without a dupe, a typo, or an article the "editors" didn't read.
    1. Re:Why hate MS? by Danga · · Score: 2, Informative

      You can also thank them for making an awesome IDE.

      I agree. After I left school I had almost no experience programming for windows (not a bad thing). But it was VERY nice to have VS since my first job was programming windows apps. I had used UltraEdit all through school and (while UE is awesome) it was nice to have a built in debugger as well as all the other goodies VS has. It is seriously the 2nd MS app I am happy to use (the other not being an app but Windows XP Pro is pretty damn good too IMHO).

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    2. Re:Why hate MS? by Schraegstrichpunkt · · Score: 0, Offtopic
      Didn't MS buy their IDE from some other company? I thought they did but I can't find the link.

      On the other hand, you can at least thank them for not totally screwing up their IDE. Not like Internet Explorer, where the best version was probably version 2.0, or maybe 3.0, and it pretty much went downhill from there.

    3. Re:Why hate MS? by Hegh · · Score: 2, Insightful

      Oh, I don't hate Microsoft, I just wish that some other people (read as "open source" or at least "free") could come up with debuggers that are as friendly and functional as theirs. That said, though, I've never actually tried their J# IDE for anything other than editing (because it does some nice syntax highlighting and code completion). I used the command line to compile, and never touched their debugger.

      --
      Bravery is not a function of firepower.
      ~J.C. Denton (Deus Ex)
    4. Re:Why hate MS? by Anonymous+Brave+Guy · · Score: 1
      On the other hand, you can at least thank [Microsoft] for not totally screwing up their IDE. Not like Internet Explorer, where the best version was probably version 2.0, or maybe 3.0, and it pretty much went downhill from there.

      Actually, for those of us who use Visual C++, a lot of people will tell you that version 6 was the high point, and everything's gone to hell since all the .Net rubbish got tied into it. There are precious few changes since v6 that actually add value, while performance has plummeted and key features have been removed entirely, or removed and then reintroduced in a half-assed fashion. (Yeah, yeah, Visual C# has all the funky new toys. That's not much use to those of us who program C++ for a living.)

      I work in an office where the devs have pretty much a free choice of tools. (We build on a dozen or so platforms anyway, so which one people prefer to develop with can be left to personal preference.) I don't think it's a coincidence that more people still use VC++6 than anything else, and that includes several people who installed one or more .Net incarnations and subsequently removed them again after a few days.

      Now, VC++ 6 had an IDE that's probably about right for the kind of intro course we're talking about: it has basics like syntax highlighting and some source code navigation aids, it has a good, well-integrated debugger, and it provides a friendly front-end to the various compiler and linker options, but you still have a clear "compile", "link", "clean", etc. on the menus for when the instructor is explaining the build process.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    5. Re:Why hate MS? by sconeu · · Score: 1

      I would kill for the VC 6 IDE with the VC7.1 or VC2005 backend.

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    6. Re:Why hate MS? by owlstead · · Score: 1

      Indeed. Compared to UltraEdit, it's a very nice IDE.

      Only in 2005 there was rudimentary refactoring support and code completion (before doing a complete build). There still is no visual editor that handles manually generated code either. Don't even talk about sourcesafe. Oh, and to install a build environent you have to upgrade your system, your browser, restart a few times, then to find out a lot of dependencies are broken and that sourcesafe 6.x doesn't work anymore.

      Let's not talk about 2003 version, which was basically a broken first attempt. I even messed up the assembly cache unintentionally.

      But then again, I'm a very spoiled Java programmer. Install Java JDK, unzip eclipse, double-click eclipse. Get nice environment.

    7. Re:Why hate MS? by cduffy · · Score: 1
      They should have some great debuggers - they're in the business of writing tens of thousands of lines of source per day

      ...which doesn't necessarily say anything about the quality of their externally sold dev tools. Visual Source Safe, for instance, they sell but don't use internally.

      Now, I'm not saying they don't use the same debugging tools internally; rather, I'm just pointing out that what they sell to The Outside World and what they use between their walls are not one and the same thing.

  42. Be careful what you are teaching by CokeJunky · · Score: 1

    The question is whether you want to teach people to program, or teach them to use an IDE.

    On the left hand, the ide simplifies some the 'magic' to get the beginner going and writing code as quickly as possible. On the right hand, the ide does so much for you that you might not learn the underlying structures.

    I am right handed on this one. While IDE's are an excellent tool, without knowing how a program is actually assembled (both literally and figurativley speaking,) then what the IDE is doing is just magic as far as the student can understand. However with that knowledge, then the IDE becomes a powerful tool to be used and abused to maximum gain.

    I worry about the seperation between learning to program, and learning how to use one vendor's non-portable tools. Learning to program is more about problem solving, symbolic logic, and learning how to read the manual -- generally being flexible. In the real world, most of the time you will be given a workstation with some IDE or related system already in place, and told to use it. Without the basic understanding, you are screwed. Of course, after a few years and promotions if you are a good little code monkey, you may get to help choose the new tools, but most places I have ever been have so much time and code invested in legacy systems that the only change vendors when they go out of business -- and then, the places I work ususally use the last released version of the tool untill it will no longer compile executables for the target systems.

    Besides, if you learn how to do it purely in text mode, then you have the moral authority to talk about the good old days and weigh in on editor wars. And, you would be suprised what a breath of fresh air finding someone installed an old version of VI (not even VIM, true VI) is when you sudenly get handed a software maintenance task on a VMS-Vaxen, and you are not old enough to have used them in kindergarten!

    --
    More Caffeine. NOW
  43. Standard Reply by rgraham · · Score: 1

    This comes up a lot on the Sun's Java Fourms and the response I always like to give that when learning Java you should avoid using a full-blown IDE until you can compile and run applications from the command line and use the online javadocs, otherwise you learn a tool, i.e. Eclipse, NetBeans, Intellij, etc., rather than the language and/or "how to program". Saying all that, I do think it's ok if students want to use an editor like JEdit or TextMate, that provides syntax highlighting and code formatting.

  44. Are you introducing programming, or languages? by abb3w · · Score: 1
    If the primary objective to to introduce programming in general via these languages, I'd say skip the IDE; it's counterproductive to learning the basics of coding. I'd even go so far as to require the non-use of an IDE, unless your class covers automated test cases.

    If the primary objective is to introduce the specific languages, the IDE will be a useful tool; however, I'd recommend that they be made to work in more than one IDE (or with just a text editor for some assignments, if economics preclude multiple IDEs), since it's dangerously easy to develop knowlege of and over-reliance on a particular IDE, rather than knowlege of and skill with the language desired.

    --
    //Information does not want to be free; it wants to breed.
  45. Old School? by sakusha · · Score: 1

    When I was your age, we didn't have no fancy IDEs. We used Coding Forms. And we LIKED it.

    1. Re:Old School? by Waffle+Iron · · Score: 1
      Oh yeah? Well, in my day, we didn't have "Coding Forms". We typed our first programs straight onto punched cards. ...Except our high school's card punch irreparably broke after a couple of weeks, so then we had to scratch out code combinations for each character by hand onto "mark sense cards" with a #2 pencil. (I'm not joking.) And we HATED it. Talk about RSI; after spending a few hours scratching out a 100-line program this way our wrists would feel like Jello.

      Anyway, the debate back then wasn't about IDEs, but instead whether you had to draw up a flowchart before you wrote down your algorithm. I was in the camp against flowcharting, and thankfully it's been made mostly obsolete by the introduction of modern structured languages anyway.

      Likewise, I think that the need for IDEs and debuggers in general are a vestige of deficient languages. In many years of writing Python code, for example, I have only felt the need to fire up the debugger a couple of times. For C or C++ OTOH, I might need to use a debugger once or twice per week to track down some segfault, almost always due to a stupid braino. As time goes by and languages improve, the need to use external tools to effectively work with each language should diminish.

    2. Re:Old School? by sakusha · · Score: 1

      You are the only person I know of (besides me) who ever HEARD of Mark Sense cards, let alone USED them. I still have vivid memories of scratching away on these cards with a #2 pencil. But we still used coding forms before committing to cards.

  46. No Emacs either by metamatic · · Score: 2, Funny

    What I see in people that turn how to program with an IDE is they are tied to that IDE, they dont want to use another. Its like pulling teeth to get them to switch. The other problem they have is they know nothing about the compiler.

    Same is true of a lot of people who use Emacs too much. It becomes impossible to get them to even try another program. Introduce them to some new concept like, say, an N-dimensional sparse matrix manipulation system with typed data cells, and they say "So, is there an emacs interface for this?" They read their e-mail in emacs, they read news in emacs, some of them even use emacs as a web browser and shell.

    So I'd say start with a text editor. Something simple. For Java, get them at least as far as building a small project with a handful of files into a jar and running it. Then, you can say "So, now you get how it works, here's a tool that can save time and effort..." Then you introduce an IDE. And also Ant, ideally.

    Also, I'd say don't force the students to use a particular IDE or editor. That's not the point of the class. If they want to do the assignments using NOTEPAD.EXE, let 'em.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:No Emacs either by nukem996 · · Score: 1

      Personally I use vim, ive used it for all size projects and its worked out fine. Id say stick with vim since its easy to learn the basics. Then teach them the basic compile commands. It might be troublesome on win since there really is no command on win. Try to get them a *nix environment, it will work out much better.

  47. Short Answer. YES. Long Answer... by MrCopilot · · Score: 1
    Teach them how to utilize the tools available to maximize thier productivity.

    They must know the commands, and the switches, but they should also be able to use an IDE to automate the task of retyping the same commands over and over and over and over, Sorry.
    For Students, I recommend Eclipse. Start plain and teach the commands to do each task and then teach it to the IDE.

    *Disclaimer, I use Kdevelop but drop to command line to compile and strip and tar and copy. This is usually an Up arrow keystroke. Maximized Productivity.

    --
    OSGGFG - Open Source Gamers Guide to Free Games
  48. yeah... by Anonymous Coward · · Score: 0

    Yeah, it's basically impossible to go 'old school' with Java, being such a high level language.

  49. You shouldn't let them use an IDE... by Coleco · · Score: 1

    ...just in case they are ever stranded on a desert island without an IDE. *Then* what would they do?? Huh?? You little punks!!

  50. It isn't an either/or situation by bigbigbison · · Score: 1

    Last summer when I took intro to programming we did both. We started off using DrJava and then eventually learned to use vi. It was better at first to use the program because as an introductory course, it was incredibly frustrating to try to make a very basic program run when you hadn't yet learned the little things. Using DrJava made it easier and better to get a sence of achivement when something actually worked. Plus it gave us a bit of a sandbox to mess around in without having to compile every single time when we just wanted to see what would happen if we changed one little bit of the code. Once we got the basics down, then we gradually stopped using DrJava.

    --
    http://www.popularculturegaming.com -- my blog about the culture of videogame players
  51. Let them decide by Anonymous Coward · · Score: 0

    Offer them an IDE (there aren't many good ones for Python, and Eclipse is a piece of steaming crap) and offer them to use an IDE of their choice. Offer them to use any text editor they like and show them how to use the command line compiler interfaces (quickly, they can read, they aren't stupid).

    If you force them the ones who get slightly annoyed will learn to passionately hate it (thus is the origins for my hatred of Eclipse). Interestingly enough, I was also forced to use Visual Studio at one point; but it's actually a well written piece of software that works. Eclipse loves to do two things:
    1.) Suck a hundred times more resources than makes sense.
    2.) Crash when I'm doing something important.

  52. Umm, you're teaching programming, right? by Dr.+Mu · · Score: 0

    So why erect any more barriers than you have to? If students associate vi or emacs with programming, they'll end up hating programming. Forget "old school". It's the 21st century, and IDEs make programming fun.

  53. teach everything by Anonymous Coward · · Score: 0

    I think you should teach them three things:
    1) how to compile using a shell script. this is probably only appropriate for the first "hello world" assignment with one class. this will show them how to use java and javac directly.
    2) how to use ANT. this would be a more complex program with several classes. this will teach them how to compile a lot of open source projects.
    3) how to use eclipse. probably you would have some kind of GUI widgets. maybe have them make a calculator.

  54. Re:... Yes and no by ocelotbob · · Score: 1
    COBOL for a CGI problem

    Actually, Fujitsu was promoting COBOL, more specifically, a few of their extensions, as a CGI type language back in the late 90s. I picked a book on COBOL back in the day, course I never programed even hello world, because COBOL has a syntax only its mother could love.

    --

    Marxism is the opiate of dumbasses

  55. Not a matter of IDE or no IDE... by pla · · Score: 1

    I don't consider this a simple matter of using an IDE or not...

    Most modern IDEs include "wizards" that write 90% of the framework code of a given project. The programmer just needs to plug in a few callbacks and call it a day.

    Now, although I personally think I can write better framework code, I don't have a problem with someone using a wizard, once they already understand exactly what it does for them.

    Put bluntly - Someone taking a college-level programming course should damned well know how to write, from scratch and with nothing more helpful than emacs/vi/notepad, a program that will successfully compile.

    Even in the Windows world, and even just a single dialog-box with a custom windowproc version of the standard "hello world" program, a coder should have the ability to write that from scratch.

    If they can't cut it with that - Better they learn they can't actually code in the second semester than the eighth.

  56. Open Source! by anadem · · Score: 1

    Specify use of an open source compiler, and leave the editor to the students. Demo simple emacs and recommend vi too. Set up ssh to individual student accounts on a linux box at the college, and collect homework by having sourcecode dropped on your linux box. Then just teach the language.
    From personal experience, this works well -- students start thinking.

  57. use both by azakem · · Score: 1

    I was first taught to program C++ back in high school with Visual Studio, and then introduced to vi in undergrad for Java, C, and everything else. I like having an IDE available to work with Java applications and whatnot, and I like using emacs or something equivalent for writing in perl and C. Introduce your students to both and let them pick what they like, its really a matter of preference after all. Just make sure that if they are using an IDE, they don't become reliant on wizards to write their code.

  58. Two IDEs? by Anonymous Coward · · Score: 0

    The problem is to clearly separate the language, the compiler and the IDE in the students' mind. So, either show them how it works without IDE, or show two different IDEs.

  59. Both... by junkgui · · Score: 1

    Real java projects generally use ant as the main build method, show them how to set up aq project with ant for the first half of the class.. Show them the command line tools and emacs of vi, Then let them take that same project and run it in eclipse... Programming on a modern IDE is a completly different experience then emacs... But both are valuable...

  60. Don't need an IDE anymore... by aapold · · Score: 1

    SATA or SCSI drives should easily handle their needs better anyway.

    --
    "Waste not one watt!" - CZ
  61. Make young dogs learn old tricks by Anonymous Coward · · Score: 0

    Learn how to write a make file, learn how to configure and use emacs and learn how to use the commandline debugger.

  62. 1/2 by Anonymous Coward · · Score: 0

    teach first who-to program only after it teach who-to use a good ide, theres is no ide that kick ass a good programer,becouse ide don't make programs they just draw the app and have a bunch of wizards that make code actions for it, I can program a DB app using jb*ilder whitout type 2 lines of code,but if I have to make something the iDe don't do, only g**gle can help me :D

  63. Great way to kill any interest in your course by jbellis · · Score: 4, Insightful
    Remember, submitter is planning to teach _intro_ courses to Java and Python.

    One of the most important things when you are starting out (and, actually, when you are experienced as well, but that's less obvious) is to get feedback on what you are doing wrong as quickly as possible. Don't throw this away lightly.

    It's quite easy for students to work very long and hard doing something _completely and utterly wrong._ This does _not_ make them better programmers than if they got immediate feedback on what was wrong; it just frustrates them.

    (I spent over a year teaching 100-300 level CS classes, and we actually started with paper-based flowcharting in one intro class, so I'm not speaking hypothetically here.)

    --
    Carnage Blender : Meet interesting people. Kill them.

    1. Re:Great way to kill any interest in your course by MarkusQ · · Score: 1
      One of the most important things when you are starting out (and, actually, when you are experienced as well, but that's less obvious) is to get feedback on what you are doing wrong as quickly as possible. Don't throw this away lightly.

      I disagree. One of the most important things when you are starting out is to not fall into the trap of thinking that you will get feedback on what you are doing wrong quickly. Because the computer quickly and reliably reposts some kinds of syntax errors (and because beginners lack a sophisticated taxonomy of errors) it's easy for them to think that the computer will report all syntax errors--in fact, all errors--when this is not true.

      It's quite easy for students to work very long and hard doing something _completely and utterly wrong._ This does _not_ make them better programmers than if they got immediate feedback on what was wrong; it just frustrates them

      Yes, exactly. But an IDE is going to make the problem worse by guiding their attention to the wrong level of detail. They could easily spend hours in the IDE getting the details right on a wrong headed approach that they would have caught (or a classmate would have caught for them) if they'd tried to defend it standing at a whiteboard.

      --MarkusQ

    2. Re:Great way to kill any interest in your course by Anonymous Coward · · Score: 0

      Good point. You can be very intelligent and hard working. You can work for a very long time on something and have it all be 100% wrong because you made assumptions that were incorrect, or something trivial (but universal) killed what you were trying to accomplish. Having 30 or 50 or 200 hours of work thrown in the garbage, told its all wrong (and you failed), or to redo it all over again is not fun. You might be intelligent and hard working, but you will be looking to do something else. Start with small steps, give lots of examples and move on is what you need to do. Perhaps start without an IDE, go for 3 weeks without one (including a test), then move on to the ide. Its important to have them be able to do it without the hand-holding, just like it's important for someone doing calculus to do arithmetic. If you can already do arithmetic, calculators eliminate excessive busywork.

  64. let them choose by adrianmonk · · Score: 1

    Let them use any tool that allows them to compile the code properly. Choose one or two tool sets (perhaps one IDE tool set and one non-IDE one) to recommend, and provide instructions for those two. Make it clear that although they can use anything they want, you can't guarantee that you can help them with questions unless they are using one of the recommended ones. Explain the advantages and disadvantages of both so students can make an informed decision.

    Being flexible has the advantage that students will learn to make choices that affect their ability to get things done. They can judge based on their experiences and their classmates' experiences whether they've made the best choice or not. If they've never used anything but an IDE and they want to learn about the command line, they can. If they don't want to or aren't at the level where they're ready, they don't have to. But those who are ready and who are interested can learn more of the guts of the compilation process. Also, even if most students don't choose the command line, the fact that some students do choose it (hopefully) might create awareness that it's an option. The act of thinking about the choices educates them no matter which they pick.

    Basically, unless I understand the purpose of the course wrong, learning about the compilation process isn't one of the core goals. Some people won't be ready for that and it will only frustrate them for little gain if any (it might be a net loss if the frustration prevents them from learning everything else), so making it optional relieves that problem but allows those who want to learn something extra to learn it.

    (For what it's worth, I originally learned on an IDE: it was Turbo Pascal 3.0. Worked well. I learned to use vi and cc (no, not gcc, yet) soon enough.)

  65. Which came first? by _aa_ · · Score: 1

    What do the people who program the IDEs use? I guess the guy who wrote the first IDE used vi, but what did the guy who wrote vi use? It boggles the mind.

  66. When I was in college ... by supun · · Score: 1

    When I was in college is didn't matter if you used an IDE or not. What mattered was when you took a test, in front of a piece of paper, you knew how to code.

    When we were tested, we didn't do it in front of a computer. You had to hand write the code. It wasn't type something, compile, run, fix mistakes, repeat. It was, get it right the first time else get reduction for each mistake.

    If if you wanted to use an IDE, you could, however if you couldn't code on a piece of paper, you failed.

    --
    :w!
  67. Comment removed by account_deleted · · Score: 2, Insightful

    Comment removed based on user account deletion

  68. Me too! by symbolset · · Score: 1
    Seriously.

    The current minimum level of tech is a fixed-width font (effectively) unlimited line length editor such as gedit, kwrite or notepad.

    This is a reasonable level for an introductory programming student to write their code in. It offers the user the opportunity to validate grammar, speling and style.

    A more advanced student will humor you and tell you he used the prescribed program to edit the text.

    I hate to confess this, but the days spent looking for those missing commas, close parens, close braces and semicolons was in hindsight time well spent.

    vi is over doing it. No modern programmer would use such an antiquated editor.

    :q!

    --
    Help stamp out iliturcy.
    1. Re:Me too! by vga_init · · Score: 1

      vi is over doing it. No modern programmer would use such an antiquated editor.

      This story is only 12 days old. Also, it's easy to prove absolute statements like yours false--be careful where you point that thing.

    2. Re:Me too! by TelJanin · · Score: 1

      That is Vim, which is very different from vi.

    3. Re:Me too! by nightowl03d · · Score: 1

      Yes, the grandparent has committed the cardinal sin of posting to Slashdot WITHOUT reading all the potentially related Slashdot articles for the previous 6 weeks. I would think they would have fixed slash code to prevent that by now.

    4. Re:Me too! by mqj · · Score: 2, Funny

      Yeah, it was fixed in cvs!

    5. Re:Me too! by angel'o'sphere · · Score: 1

      Well,

      vi is a program for professional unix users, not for beginners in programming.

      However: vi is over doing it. No modern programmer would use such an antiquated editor. is not quite adequate.

      I personally prefer IDEs, makes no sense for me to edit code in a terminal and use a comand line debugger to run Java code.

      However some people in my company use VI to write Java code. Similar programs like ctags make navigation easy, and lots of commands in vi makes it easy to jump from usage of symbols to their declaration. For C you use a tool like ctags to tell vi how to do that I guess the Java aequivalent is jtags then.

      A lot of "pro" programmers never touch anything except vi ;D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Me too! by Abcd1234 · · Score: 2, Interesting

      Heck, I consciously switched *to* Vim from Emacs, after using the latter for *years*. Why? Primarily because RSI, particularly in my pinky finger and my mousing shoulder, has become a bit of a problem for me, and Vim allows me to do all things I can do in Emacs (and a few things I couldn't, or at least never learned how to do :) without the need to chord or move to the mouse all the time. 'course, the fact that Vim is lightening fast to start up, works great in GNU screen (which I use to migrate my shells between work and home), and is amenable to laptop keyboards (which have funky modifier key positions) and ssh sessions (which can sometimes mangle modifiers, like meta) is pretty nice, as well. :)

  69. From someone who has taught intro CS courses by jbellis · · Score: 0, Flamebait
    Short answer: Go with the IDE.

    Long answer: the goal of an intro course can be one (or both) of two things:

    1. provide "enough to get by" instruction in an area
    2. excite students about the area enough that they take more in-depth courses

    Neither one of these goals is served by teaching the details of what goes on under the hood in an IDE. That can come later, for students in category 2.

    --
    Carnage Blender : Meet interesting people. Kill them.

  70. How it works at UNH by spinfire · · Score: 1

    At University of New Hampshire, most people begins with vi and emacs (or even pico, but it was not recomended) on the University Linux systems. As they get into classes which require more programming many people typically "discover" IDEs on their own. Additionally, in some courses a grad student TA will give an introductory lecture about an IDE like Eclipse. It works pretty well. I began myself with vim, then used Eclipse for Software Engineering class taught in Java. I switched back to vim and make for my last class and now I am using Visual Studio at work :)

  71. Learn 2 IDEs and VI by davidwr · · Score: 1

    Every serious programming student should learn at least 2 IDEs from different vendors, at least 2 different command-prompt-styles from different vendors (e.g. DOS and *n*x), and at least two different text editors, at least one of which should be nearly-bare-bones (open, save, backspace, insert, and cursor-movement or goto-line-number/character-position). If such a bare-bones editor isn't readily available, they should know how to use at least one editor as if it were a bare-bones editor. Doing so gives them a better understanding of what goes on in the compile/run/unit-test cycle. It also gives them some insight into what happens in the "build process" of a team project. It's the same reason students should learn to multiply in their head before they learn to use calculators.

    Now, over the course of a student's degree, he may spend 90% of the time on a single IDE. The goal is to make sure he CAN edit, save, compile, link, and run hello_world.{language} using two different IDEs, without IDEs using a plain and not-so-plain text editor using two different command interpreters in two different run-time environments.

    If your students are getting their "taste of doing it the hard way" in another class, no need for you to torture them again. Likewise, if your students are in a short program of study, something less than an associates degree, it may not be worth the bother either.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  72. Re:... Yes and no by Solra+Bizna · · Score: 1

    BTW, given the way the original question was asked, I would have just answered "yes".

    Q: Should students be taught with or without an IDE?
    A: Yes.

    -:sigma.SB

    --
    WARN
    THERE IS ANOTHER SYSTEM
  73. http://www.moolenaar.net/habits.html by Anonymous Coward · · Score: 0

    YES! Vi is definitely a good first assignment. Learning to edit efficiently is just another aspect of programming. In fact, many professionals suffer from an inability to edit efficiently. Doomed to waste years of their lives using the mouse to slowly click about. Just be sure to use the Seven habits of effective text editing as at least an available resource.

    On undertaking a particularly large assignment in college I took it upon myself to learn vi in the process. I can definitely say it was something I should have done a long time before. Pico/Nano, notepad, edit, text edit, gedit. All of those inferior editors should be uninstalled from the labs or students will never learn to do better. I can't believe how stupid I was for ever using pico.

  74. What's your audience? by OttoErotic · · Score: 1

    Browsing through the other comments, it looks like everyone's assuming you're going to be teaching 20 year old kids who are expected to delve deeper into programming. Is that the case? To me, intro to programming at a community college could just as easily mean teaching someone who's taking this class alone without anything further. The first question I'd ask is who you're teaching. If you're trying to teach my grandma to add some sparkle to her webpage or write some Excel macros, go with an IDE or you'll make her cry. If it's someone who's going to take a class or two & wants to know a little bit for improvements at a non-programming centered job (like me), go with an IDE. If it's someone you expect to spend a lifetime programming, start with the basics.

    --
    "Once in Hawaii I had sex with a 102 year old male turtle. It is difficult to argue that it was consensual." - Steve Ma
  75. What is the venue of the class? by CFD339 · · Score: 1

    If we're talking a long term student taking a computer sci course, no ide. At most, ide agnostic. If you're teaching a community college class where students are taking a one-off course to get up to speed on a language or enhance their career, you're job is to give them the best tools and advice. Its about the students, not the teacher or the language.

    IMO, a good IDE helps teach the language. I learned Java 100 times faster than I've learned any of the myriad other languages because Eclipse has a fabulous IDE for Java. I already knew programming constructs in general, and the Eclipse Java IDE led me through using those skills in a new language. Now I can dump the IDE and use joe or ultraedit or (FSM forbid, notepad or vi) and do fine.

    --
    The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
  76. no IDE by countach44 · · Score: 0

    The upper level CS classes (300+) at my school are all taught with no IDE restrictions and we turn in code via a svn repository. I'd say that's the way to do it, that way people can use what they are comfortable with. If they don't know where to start, have them use vi or emacs, that way they can learn the skills early on.

  77. IDEs vs not by hackwrench · · Score: 1

    All of you make the division seem magical. Care to clarify the difference? Remember any technology sufficiently advanced is indistinguishable from magic.

  78. Don't use IDE by philci52 · · Score: 1
    Having learned to program without an IDE, I would have to recommend not using the IDE. Here's why:

    1. An introduction to java course should not only teach about the language, but how to use the default tools (java, javac, javadoc, javap...) as well. Remember that java is more than just a language it is a runtime concept (VM) as well. I also suggest that you show your students the output of "javap -c" for hello world.
    2. Teaching without an IDE is keeping it simple. Students aren't stuck on how to try and use the IDE and are focused on learning the concepts that you want to teach them.
    3. I've found that some people coming out of college today don't really know what's going on behind the scenes because they've been allowed to use an IDE and not forced to use the command line. Using the command line forces students to understand what is going on behind the scenes.
    4. Sometimes you can't use an IDE in real life. I've actually had this problem at work in a couple situations. One - after IT installed an upgrade to our IDE, the IDE had several problems, basically making it impossible to edit or debug code. Since I didn't rely on the IDE, I had no problems completing my work. Two - (well with C++ apps) we would deploy with all debug information removed, to a machine that did not have an IDE or debugger installed, so we only could use logging and other runtime tools for debugging anything that we couldn't reproduce under development conditions. Third time - I decide to do some work while visiting my parents and bring my laptop with me. Unfortunately, it just doesn't have the RAM to support Eclipse. I had no problem dropping that and using ant/vim/javac.
    I must say that it probably would have saved me a lot of time using an IDE for my initial developement classes, but I feel that I've gained a much better understanding of what is going on and I'm a better programmer for learning things the "harder" way.
  79. Re:... Yes and no by JoshDanziger · · Score: 1

    I couldn't agree with your statements more. Our introductory computer science course (a "primer" for non-majors) spends the first third of the class learning how to use Linux. In my opinion, this is the dumbest use of class time possible. There is absolutely no value in knowing the Linux prompt; all this section of the course does is show students how to use the command prompt to traverse the familiar filesystem abstractions instead of a GUI.

    This Linux ramp-up literally serves the sole purpose of getting students ready to use gcc when they learn C++ in the next third. Intro students would be better served by learning more about what it means to write a program. Frankly, I would be more than happy to have intro students learn VBA to script Microsoft Office.

    The point is that intro students should learn why computer science is useful, and how computers can be put to good use in general. I know too many people who spend hours doing repetitive tasks that I could solve in 10 minutes with a short script. Intro classes should show students, at the very least, when asking a computer professional for advice can save them lots of time.

  80. Let me check my calendar... by ml10422 · · Score: 1

    Let's see, looks like it's now the 21st Century. Go with the IDE.

  81. start without by Anonymous Coward · · Score: 0

    I took a Java course and the first day we ever did programming it was on a IDE and for the longest time I had no idea how Java internals work. I still cannot compile a java program from the command line as I have never tried I've gotten so used to the IDE that I don't even bother learning. However when I learned C++ independently I started without a IDE and developed a greater understanding of C++ from doing so. It makes more sense to start without one then integrate it in at a later point in time that way they get the full spectrum of programming environments.

  82. iud by Anonymous Coward · · Score: 0

    I thought an IUD was standard procedure for college co-eds-

  83. Automation by hackwrench · · Score: 1

    For me, one of the main points of using an IDE is because the creation of make/build type files is automated. Different ideas of automation, I suppose.

    1. Re:Automation by kunakida · · Score: 1
      If you use "for example" Visual Studio, yes the creation of the solution file is "sort of" automated (except for all the values that you have to put in through various dialog boxes). However try and add the solution file to a nightly build engine, the sort that a build engineer would use.

      It's doable, but the component of the build which the solution file encompasses is not really visible to the rest of the automation script (the outer one controlling the overall build process). Ideally, for an automated build, you want to detect an error, report it and stop the build immediately (try building multiple branches using the continous build approach). This is not so easy with Visual Studio, that's why VS2005 has MSBuild. However, MSBuild suport was not added to the Visual C++ tools (the team was apparently busy fixing something else).

      The only real alternative is to replace the automatically generated crap with a build script designed to be plugged in to something bigger. At which point, you begin the awful game of keep-up with what the developers are putting into the "automated" script.

      Personally, I like distinguish automatically generated scripts from automation enabling scripts by calling the first "automatic" and the second "automated".

  84. Students should not be taught to type by Fubar420 · · Score: 1

    In my courses, we were not given typing lessons on how to use an IDE, or vim, how to compile with VS or gcc.

    They should be allowed to use what they like, so long as they can write code that compiles for your test environment.

    --
    -- (appended to the end of comments you post, 120 chars)
  85. IDE by blank89 · · Score: 1

    I would personally teach with an IDE, but allow the use of any IDE (this is what I've seen done in most of my classes before). However, it might be a good idea to explain that the ide isn't needed, and that it's just to help the programmer. If there are any tests or exams they have to take without an IDE, it might be a good idea to prepare them for that sort of coding too.

  86. This Slashdot right? by Anonymous Coward · · Score: 0

    Then why is everyone suggesting, gasp!, notepad as a text editor?!

  87. What's an IDE??!?! by Anonymous Coward · · Score: 0

    HARD DRIVE CABLE

    1. Re:What's an IDE??!?! by Anonymous Coward · · Score: 0

      Yes, let them use SCSI instead... ;-)

      I HATE acromyms with double meanings...

  88. both by omry_y · · Score: 1

    My take on it that students should be taught to use the standard command line tools, they need to realize that the language is independent of a particular IDE.
    once they know that, they can start using an IDE.

    --
    Omry.
  89. Shouldn't need to worry by Xipher · · Score: 1

    I would say don't worry about using one, it can help simplify the build process (which can over complicate things at first), but they shouldn't be using the IDE to generate the code for them. Later on though, I think it would be best to actually talk about what it is and how it can help, along with covering using a debugger. The debugger can be one of the most powerful tools, but figuring one out on your own isn't exactly the easiest task.

    --
    I don't know everything.
  90. First the command line, then the IDE by bill0755 · · Score: 1
    I believe you need to perform the development steps by hand until you fully comprehend what the IDE will be doing. When these are understood and comitted to memory, move to the IDE.

    To stall at the point of building by hand and not continue to learn and gain the productivity advantage of the IDE would be a mistake with measurable consequences.

    At the same time, becoming dependant on an IDE without taking the time to fully understand the mechanics of software development leaves you ill prepared to diagnose the inevitable problems that will occur with the IDE.

    As far as editors, sampling a variety might be a good idea before settling on a favorite. I'm comfortable with visual editors but find 'vi' invaluable for some tasks outside source editing. For source editing, anything that formats well and color codes the source is fine by me.

    Some people feel that expertise with primative tools is some how macho. I value my expertise gained "back in the day" but failing to get comfortable with modern a IDE is failing to become as productive as you could (skipping the IMHO disclaimers here).

    "We demand guaranteed rigidly defined areas of doubt and uncertainty."

    -- Adams, Douglas

  91. At least teach them how to use a debugger by Ichijo · · Score: 2, Insightful
    "Maybe a later lesson could focus on the debugging potential of one IDE or another..."

    You'll give your students an lesson in frustration if you wait until later to teach them how to debug their programs.

    I recently took a college course on C, and I was one of the few students who knew how to use a debugger (which wasn't taught in the course). Most of the other students had a really hard time with the course because they were basically expected to get their programs right the first time.

    So I'd say teach the students how to use a debugger from the beginning. Unless you intend the course to be one that "weeds out" any student who isn't 100% dedicated to earning a CS degree...

    --
    Any sufficiently unpopular but cohesive argument is indistinguishable from trolling.
    1. Re:At least teach them how to use a debugger by Danga · · Score: 1

      So I'd say teach the students how to use a debugger from the beginning. Unless you intend the course to be one that "weeds out" any student who isn't 100% dedicated to earning a CS degree...

      I disagree. Most of the intro class program assignments don't require an IDE or debugger to finish. I think at the beginning it was beneficial to have to debug compiler errors on my own and if I had a problem I couldn't solve on my own I could ask the instructer or TA. IMHO it made me the above average software developer I am today. Being able to step through your code is a great ability to have, but for simple programs I think it's more beneficial to have to solve and think why your program is not working without the assistance of a debugger. Debuggers are definately timesavers, but I am glad I didn't get to use them from the start of my university level education.

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    2. Re:At least teach them how to use a debugger by Schraegstrichpunkt · · Score: 1
      I disagree. Most of the intro class program assignments don't require an IDE or debugger to finish

      Exactly. Also, it adds overhead to the class, because you'd have to teach the students how to use a debugger.

    3. Re:At least teach them how to use a debugger by Anonymous+Brave+Guy · · Score: 1
      So I'd say teach the students how to use a debugger from the beginning.

      I'm sorry, but I couldn't disagree more. It's entirely possible to debug most programs without ever needing a debugger, just by using some basic instrumentation. If anything's going to be taught about defensive programming and debugging in an introductory course, it should be the simple idea that you can add diagnostic output to your code using the same tools you use for any other I/O, with a little thought about how this can tie in with other programming ideas (e.g., a good place to dump data is on the way into or out of a module). Perhaps the use of assertions could be mentioned in the same context.

      These are simple ideas, directly related to what the student should be learning anyway, and they take little time to mention. Debuggers, profilers and the like are all valuable tools to a professional who knows how to use them, but they're well above the level of an intro-to-programming course, and in the real world instrumentation is usually more useful anyway.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:At least teach them how to use a debugger by pjt33 · · Score: 1
      Most of the other students had a really hard time with the course because they were basically expected to get their programs right the first time.
      Come off it. I'd been programming for over 10 years when I first came across debuggers. If someone can't manage to print useful debug information, they almost certainly can't write useful code without a psychic (WYWIWYG) compiler.
  92. should I use a hammer or rock? by fermion · · Score: 1
    I believe that programming, as many things, are taught in at least three stages. The first is concept development, the second is a framework in which which to restate the problem in standard form, and the third is the solution from the standard form. During this process the student will learn various tools that helps them organize and amplify their efforts. Some may call these tools crutches. Some may decry the errors promoted by these tools. But the tools do not create errors, it is the lack of understanding of the process that causes the errors. This lack of understanding is caused by an incomplete education, which in turn can be attributed to any number of factors.

    Look at it this way. A parent is teaching a child to build a dog house. The parent explains that the nails hold the wood together, and for that to work the nails have to be straight and true. The parent then using increasingly difficult tasks and teaches the child to use a hammer to complete this task. Note that if the child did not understand the goal of a hammer, the child would not be able to adjust to the proper use. Also note the parent did not give the child a rock, as we have hammer technology that is very mature. Also note that the parent did not give the child a nail gun as that would not have taught the concept. Also, depending on what the child might want to do, he or she might have to be very skilled in the use of a hammer, as a nail gun might be inappropriate for the job.

    So here is what I think, and generally the way I was educated. Start with the basics, which is process development and flow control. Have the students develop incresingly complex processes. Examples might be getting ready for school, sharpening a pencil, washing clothes, etc. The processes should be personal and common as they must develop the steps themselves, not just copy instuctions.

    Once they understand the basics of process, they can start working on the standard cannon of practice programs, i.e. 'hello world', and convert the process into a standard language. What the standard language is, and how it is used to compute the solution, depends on the expected outcomes and needs of the students.

    Specifically, many say that the kids should use vi, ed, or emacs. The question must be asked are those tools the kind that will useful for developing the complex code that are expected to develop. Unless these kids at CS majors, is the overhead of learning the command structures of these application of any use, in other words are the opportunity costs justified. The kids must know the baics of code development, and the generalities of modern languages, as well as specific languages. But why make it more difficult. When I was in middle school we started on a teletype and in high school moved to a VT52, in college a VT 100, then quickly to an IDE on microcomputer. Did the school ever make me work a card punch? No. Did it do any harm? Maybe, but not enough to justify the loss of coding time. Perhaps I should have been taught to hardwire code?

    So I gues what I am saying is don't look at it from a tool point of view. Look at it froma concept and objective point of view. Introducing advance tools will reduce skill, but it will also increase effeciency. Very few people are going to have to do assembly any low level code. For the most part, people will put widgets together to form large applications. To be honest, most people will just use a macro language to write scripts. If they understand the basics, they will have a huge advantage over thier co workers. Those that are going to low level stuff need to be in classes that caters to those details, and those that aren't don't need the distraction. This does not mean that the kids don't need to know the tools. Start in a text editor. Play with gcc. But they can learn much more of the language if they ar in a simple IDE and not fighting with the tool. Furthermore, when we are taking very high level languages like Java, with heavy API dependence, not using and IDE is just going backwardsOn that VT100 I wasted a day because I forgot to reset a redirect. Was it a good lesson to learn. Yes. Did it prevent me from learning even more useful stuff? Absolutely.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    1. Re:should I use a hammer or rock? by demon · · Score: 1

      An IDE is not equivalent to a hammer. It's more like a nailgun - saves a lot of time, and can be very useful, but it's not necessarily needed all the time, and may be overkill. Would you give your kid a nailgun instead of a hammer and nails? I don't think so.

      "Using a rock" would be more like hand-editing machine code into a binary file - something which is doable, but generally considered sufficiently primitive that it's not something you'd teach a student to do. You might mention, and even spend a bit of time explaining, that things were once done that way, but that it's impractical for any real general use.

      --

      Sam: "That was needlessly cryptic."
      Max: "I'd be peeing my pants if I wore any!"
  93. Re:... Yes and no by Anonymous Coward · · Score: 0

    I have to say if you have the opportunity to teach vi and command line tools then DO IT. I have seen too many "professional" programmers that have no idea how to do the stuff that an IDE does for them. They don't understand what those check boxes mean for build properties. They don't understand what is being generated and how it works. They just know "push this button and I get an EJB."

    I think people need to start taking the mentality "if I don't teach them the right way then nobody will," because every other teacher isn't even considering this question right now.

    This reminds me of a CS student who had gotten his degree without having to program C/C++ because there was a big Java push. Every professor allowed Java so none of them taught C/C++. In the end you get students who don't know the first thing about low level programming walking out with CS degrees. The same is true for command line vs ide. Some students will go through the paces without ever having to invoke "gcc" or even "javac" or for crying out loud "ant" or "make".

  94. Simplest environment possible by hackwrench · · Score: 0, Offtopic

    copy con file

  95. Prime example why you need to. by RoadWarriorX · · Score: 1

    Members of my own team are useless without Visual Studio.NET IDE installed. I once had a peer who had his computer replaced, but could not VS.NET installed on his system right away (because of some weird license issues). He needed to compile a couple of files together to create a single executable. I pointed out that if he already had the .NET framework installed, a compiler already installed also. He could have used the command-line compiler, but admitted to me that he could not. The reason: the school where he learned how to program did not teach him. After polling other people, I was shocked that about 75% of my team does not know how to use the command-line compiler, either. My jaw hit the floor.

    So, I would teach your students without the IDE at first. Let them learn how to code in the editor of their own choice. Expose the compilers to them from the command line. Fundementals first. Leave the IDE whiz-bang time-savers for future training opportunities.

    1. Re:Prime example why you need to. by Anonymous Coward · · Score: 0

      WTF? I've contracted at Microsoft (where VS.NET can be installed from the network and costs $0) and over 90% of the devs I met live in gvim or emacs. Daily builds are made with nmake.exe driven by build.exe (which the public can get from the DDK), so you're screwed if you don't understand makefiles and search paths. Maybe knowing that will motivate them...

  96. I doesn't really matter. by Anonymous Coward · · Score: 0

    If you don't have strong feeling either way just see what the prevailing attitude is at the collage and follow it.

  97. As a student... by astraycat · · Score: 1

    As a student, I would say don't introduce an IDE until you feel they can really appreciate what it does for them. Our professor just started out recommending we use vi, and gave us all the information we needed to compile the programs using a makefile.

    Being a windows user, I gave up on vi after a while (yes, I'm weak :<) and started using TextPad to edit my files. My professor never really introduced us to IDEs, instead he simply mentioned them in class and gave Eclipse as an example. I played around with it for a bit, but it wasn't until we were doing programs with many classes that I thought "maybe this would be easier with an IDE."

    It worked out well. At that point I could say "Wow! It does all this for me! Now I can procrastinate even more!"

    In conclusion, I really don't think you should teach with an IDE, but don't discourage the use of one. By teaching how to program without an IDE you really give students the knowledge they need to properly use an IDE in the first place. That way, rather than using it as a crutch, they use it as a tool.

  98. You need both by jalfreize · · Score: 1

    IDEs are a great tool, but they can often obscure the details that one should know too. For instance, I know a lot of people who use Visual Studio who would be lost if they ever had to use make files or script-based configuration/build tools.

    I myself learnt to program on an Apple ][e with BASIC, and later graduated to using M$ QBASIC on DOS 6.0. The former, of course, didn't have an IDE, but still ended up teaching me a lot about modularity and thoroughness, whereas QBASIC taught me how powerful an IDE can be, provided you have one.

    If you can figure out a way to have a different set of exercises, one which targets IDE-based projects, and another which teaches survival skills using the command line to use the interactive shell for the language you will teach, or to use tools that the language distribution provides, that would be great.

    I mean I would have loved to have been taught that way :).

  99. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  100. Without an IDE of course by rollonet · · Score: 1, Funny

    SATA is much better

  101. Both! by RyuuzakiTetsuya · · Score: 1

    No IDE, then after they pick up what a compiler is, and a few options...

    Then teach them the IDE.

    --
    Non impediti ratione cogitationus.
  102. With IDE by Jekler · · Score: 1

    As progress is made, it's important to incorporate our technological advancements in teaching the next generation. Teaching programming without an IDE is like teaching tailoring starting with a cotton gin. It's important for historical significance to understand how things were done by your predecessors, but that doesn't mean you should start out learning how to do everything the same way they did.

    I've listened to many discussions about the proper point to introduce a person to IDE usage. Two major reasons people argue not to use an IDE are:

    • IDEs are easier and therefore the quality of learning must be inferior.
    • Some scenarios exist where an IDE won't be available.

    I disagree with both points. On the first point, IDEs increase students learning capacity because they are not distracted by minor technical details that are not directly related to the concept at hand.

    On the second point, although scenarios exist today where IDEs are unavailable, it can realistically be assumed the number of such scenarios are going to diminish as we move towards the future.

    IDEs should not be treated as a gimmick or luxury. They are an integral part of many development environments. The goal of learning programming is to teach students how to solve logical problems. The usage of an IDE allows a student to focus on the logic problem, where the focus of human attention should rightfully be, instead of mulling over minor syntatic mistakes, the correction of which can be automated.
  103. not eclipse, maybe some javac by Anonymous Coward · · Score: 0

    I have had some recent experience with this issue. Our course which is pretty much set in stone by the department is an intro to programming which teaches java. The class is pretty fast paced though it is available to a wide range of students, Arts, education . It is aimed at just in terms of time/pace people who are pretty serious about learning how to program but have close to 0 background. Pretty much a crash course...and many crashes. For some reason the school chose the eclipse IDE . This was a bad choice for a few reasons. 1. There was this whole process of getting it all set up with the current version of java. Many students had problems. It required the first week to pretty much just be a tutorial in setting up eclipse. 2. Your TA's may know how to program, but if someone has been working on a phd in theoretical computer science for the past few years, they probably wont be of much help answering questions about why ecplise wont work. 3. Even once it is properly set up students still have problems. The interface is perhaps not so intuitive for begginers. 4. Though they might be totally disgusted with the command line , its still the most sure fire way to compile. 5. the first intro tutorial week gives a false impression that the course will be a cake walk and that they will be hand held the entire time. Week 2 can be a very rude awakening. my stance at this point is : Teach most basic command line tools. If they want something more and are capable of going and figuring out eclipse, etc...more power to them, they will probably learn more this way. you dont want to be wasting everyones time learning the latest and most robust profesional IDE which will be long gone by the time these beginers are anywhere near a position to take advantage of them!

  104. Anti-IDE snobbery... by patio11 · · Score: 2, Insightful

    ... seems to me a lot like trying to teach your hardware guys circuit design without using VHDL, Xilinx, and the other automated tools that make this a heck of a lot easier. "Back in the day, I drew out all my circuits on an easel! If I wanted a multiplexor, I had to understand how the multiplexor worked and write it out directly in NAND gates rather than just picking it from a box of commonly used components! And I walked uphill both ways to school through the driving snow! Whippersnappers like you don't know how stupid you really are and how much your tools are a crutch!" Which is great, except the complexity of actual hardware design nowadays mandates the use of VHDL/Xilinx/etc and if you want to persue it professionally you will need to know how to work these. Software is similar -- even if you *could* do everything in Notepad and a command line there's no reason to do so when the guy in the next cubicle doing the same stuff in in an IDE produces better stuff quicker than you do.

    It seems to me that there are two purposes to CS classes: theory and skills aquisition. You'll get plenty of the theory of computer science in your algorithms/data structures/whatever classes. For the CS101s of the world, if you get out of the class without being able to produce a simple program in the language you were using, thats a failure. In the real world, you will probably end up using an IDE, because its a tool which increases your productivity by an order of magnitude and makes managing the complexity of non-trivial programming assignments *possible*. When you've got three classes and two of them were provided by the instructor, sure, Notepad will work for you. When you get to your job and are tasked with adding a simple feature to one file which calls functions from 45 classes, then you'd best have an IDE or a lot of time on your hands to waste. Things like autocomplete, syntax checking (we all make typos or have brain farts, having a little squiggle beneath "if (x = 0)" or "if (!x.contains(y)) x.add(y);y.addContainer(x));" as soon as you type it can save minutes or hours of lost productivity), and integrated debuggers (I use and love print statements, but when you're trying to figure out why a hash function is failing for *one* input halfway through a list of ten-thousand a debugger is worth its weight in gold) are all tools that engineers should be introduced to as soon as possible.

    1. Re:Anti-IDE snobbery... by thoglette · · Score: 1
      ... seems to me a lot like trying to teach your hardware guys circuit design without using VHDL, Xilinx, and the other automated tools that make this a heck of a lot easier. "Back in the day, I drew out all my circuits on an easel! If I wanted a multiplexor, I had to understand how the multiplexor worked and write it out directly in NAND gates rather than just picking it from a box of commonly used components!

      As a VHDL consulting engineer, the first test we give grads is: "Draw me a flip-flop". "Now turn that into a four bit divider". Stunning how many didn't understand that. How the poor bunnies were expected to do clock recovery or clock domain transfers escapes me.

      As a VHDL consulting engineer I spend a lot of time doing stuff like a) making that multiplexer work when time foldered into a pre-calculating CRC engine across a four clock deep pipeline and b) knowing what parts need review, verification or testing.

      The differences between training (see MS certified monkey) vs education are:

      • knowing first principles
      • exposure to state of the art
      • being able to extend your knowledge
      If you've planned your work properly, 90 percent is rote and should be automated or outsourced to Elbonia at would-you-like-frys-with-that salarys.

      It's the other ten percent where the engineer earns half his or her keep. Getting the planning right is the other job.

      Computer programmers should be aware of IDEs: one needs to understand the principles behind them and they are the state-of-the-art in one area.

      But training on a particular IDE is, well, training.

      --
      -- Butlerian Jihad NOW!
    2. Re:Anti-IDE snobbery... by mickwd · · Score: 1

      "...even if you *could* do everything in Notepad and a command line there's no reason to do so when the guy in the next cubicle doing the same stuff in in an IDE produces better stuff quicker than you do."

      Using an IDE does not necessarily mean that you will produce the same stuff more quickly.

      Your hardware analogy is more appropriate to using code libraries rather than implementing everything from scratch, which no-one is arguing against here, as far as I can tell.

      "In the real world, you will probably end up using an IDE, because its a tool which increases your productivity by an order of magnitude and makes managing the complexity of non-trivial programming assignments *possible*."

      Here, you are simply wrong. There is no way that just using an IDE makes someone that much more productive.

      I've got a command-line, Unix background. I've also used Visual Studio, and currently use Eclipse (the latter being a great development environment, and Visual Studio is pretty good, too). It might make me 10%-20% more productive, nothing more (I'm talking about using it for Java here).

      As for IDEs making the complexity of non-trivial programming assignments *possible*......I can't think of many things more complex that the Linux kernel. Now how do you think that was, and is, written ?

      From the assertions you've been making, I'm curious as to your actual level of experience.

    3. Re:Anti-IDE snobbery... by joss · · Score: 1

      > Your hardware analogy is more appropriate to using code libraries rather than
      > implementing everything from scratch, which no-one is arguing against here,
      > as far as I can tell.

      Well, be fair, that's because it wasn't the subject. Some libraries are
      harder to figure out than writing from scratch... for example, if you need
      to draw graphs you can write your own [in OpenGL, X, DirectX, awt, whatever]
      or you can find a graph-drawing library.. which might be appropriate, or
      might end up being more work to figure out than just doing it yourself.

      The larger the project the more likely it is to be worth implementing things
      yourself rather than relying on a library. If it takes 2 weeks to write
      it yourself v. 2 days to figure out how to use a library, you use the library right ? Then months down the line you hit a bug or a missing feature that turns out to be part of the library, and you dont have the source, or even if
      you do, you dont understand it properly and its harder to change than just
      writing your own from scratch with your in house coding practices etc.

      So anyway, even this subject isnt cut and dried.

      --
      http://rareformnewmedia.com/
    4. Re:Anti-IDE snobbery... by Anonymous Coward · · Score: 0

      They must be pretty clever to build a 4 bit divider from just 2 gates! Or did you let them use more than one flip-flip?

      I don't understand how chips these days can multiply clock speed (I can understand division from a fast crystal easily enough). Does it involve cheating? (i.e. using something that is not a nand/nor gate)?

      As a humble programmer, I get requests from the hardware guys (board level (Hong Kong), not chip level (Taiwan) admittedly) to write test modes that exercise all the hardware to draw as much current as possible because of something vague known as "crosstalk". Don't they have programmers themselves? And their solution to every problem is to add a bigger capacitor :-)
      I am of the "how many programmers does it take to change a lightbulb? None! it's a hardware problem" opinion but fedexing boards takes so much time...

      Sorry, just moaning there...

    5. Re:Anti-IDE snobbery... by petermgreen · · Score: 1

      seems to me a lot like trying to teach your hardware guys circuit design without using VHDL, Xilinx, and the other automated tools that make this a heck of a lot easier.
      and guess what in the first year here at the university of manchester thats exactly what they do. An entire module on manual logic design.

      Then in the second year they teach you the automated tools to do it for you along with more advanced design concepts..

      And some processes are still often done manually, for example while altium situs will certainly route a board for you if you give it enough room to play with manual routing often allows more compact layouts and less vias (vias are BAD for reliability))

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    6. Re:Anti-IDE snobbery... by NeoSkandranon · · Score: 1

      I had to understand how the multiplexor worked and write it out directly in NAND gates rather than just picking it from a box of commonly used components!

      Funny you mention that.

      I took a hardware system design class this past semester in which the professor taught exactly that. Nevermind that our design suite came with a HUGE library of parts (two actually. one of "perfect" gates and one modeled on real transistors), we had to make and test every component, even down to logic gates (yes, that's right folks, we had to make symbols for each logic gate, that consisted of ONLY the corresponding gate from the library)

      It was a horrible pain in the ass, as we had already covered many of the simpler components in earlier classes, and roughly tripled the project time due to simulating and printing out mundane crap like multiplexers, flip flops and adders. If you've never seen a multiplexer before, sure, do it in AND gates. But by the time you're an engineering junior, you've had 3-4 logic classes, and you've done mux's in ALL of them.

      His excuse was that doing it this way let us switch between "perfect" and "modeled" gates quickly and easily (which we never did once in the class) --I see the use of that, but it seems like any suite of tools worth its money should let you do that at-will anyway via a global setting.

      --
      If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)
  105. perspective of a dinosaur by CommonModeNoise · · Score: 1

    I find myself agreeing with everyone (a /. first?). Myself, learned to program on an early PDP (N less than 8 but I can't remember how much less). Wrote the binary program directly in
    a 3-ring binder (ever wonder where the term "page" came from re RAM?) since we had no
    assembler available. Entered the code with front panel switches and/or paper tape.
    Well I learned a LOT about how a very basic CPU works at the bit level. Modern CPUs
    are very very much more complex -- but the underlying mental model of languages
    like C and its offspring is exactly that primitive old CPU. So going down to the guts
    has some benefits. BUT, some years later concepts like data abstraction, functional
    languages, etc were invented. I found that the interpretive nature of LISP for example
    made it MUCH easier to understand, implement, and debug programs using these techniques. LISP does not, IMHO, try to present a program representation that looks at all like that old primitive CPU, or indeed any CPU. And yet data abstraction (of which
    OO is a subset) is certainly a vital thing for almost any computer literate person to
    understand, plausibly more important than undesanding indirect memory references or interrupts for most folks. I also later learned to work with programs that were not
    examples or toys, and they always turned out not to be "a program" at all but a largish
    collection of interrelated programs, headers, etc. That's where IDE's are really good.
    Last point. I last did programming "manually" (no IDE) when "make" was new. Nowadays everybody uses automatically generated make files that are basically not readable
    by humans. Personally I use an IDE on the few occasions I program at all anymore, so no make files. But I have to figure out and at times correct packages that come with a zillion c, cpp, h files etc plus unreadable make/imake files (or worse) -- there must be tools that will take these configuration control file things and translate them into something a human can understand, so that one has a chance of finding which one of the zillion modules one needs to fix and/or modify -- clue an old dino in: what's that tool called (Unix/Linux
    environment please).

    Even laster: the whole point of python and friends is to hide all of this stuff, so just use whatever makes life easy if that's what you're teaching. Still won't simplify the hardest part: thinking hard before coding. To teach that, I suggest changing the requirements for medium size class projects every few days up to or even including the day the project is due. This will teach respect for the importance of clean, well-structured design in any language. It's also a lesson in how the real world of programming tends to work.

  106. Absolutely not by Tweekster · · Score: 1

    In my opin, it is just too much to learn, this wierd new program and trying to get the concepts of what coding is. Programming is a whole new world for most people on a computer, new software, new ways to think. I would recommend something very simple like SciTe or an easy to use programmer's editor. Simple, with some ready to use macros. That is all you need to start coding, then take them to using IDE's and projects in those.

    --
    The phrase "more better" is acceptable English. suck it grammar Nazis
  107. Don't teach the IDE by Anonymous Coward · · Score: 0

    Teaching them to use a specific IDE would be a waste of time. From what you described they should be at least in their second year of college. By then they should be able to select their own IDEs.

    The course should be focused on learning Java or Python. Don't turn it into an Intro to Eclipse, Netbeans, etc... course. If you plan on doing in-class lab exercises you might want to select a few common IDEs for them to use. Otherwise, don't make assignments or tests about the IDE instead of the language.

    What you can do is give them is a list of IDEs that they could try out. If you narrow down the course to a specific IDE you're just restricting the students.

  108. IDE by surredeth · · Score: 1

    Learn with the IDE, since learing the IDE is a job within itself.

  109. mod commentary and commentary by Anonymous Coward · · Score: 0

    Whoever modded this insightful is retarded (it's not insightful, the mod just agreed with the sentiment). Oh really, when you aren't trained how to fly a plane you'll crash it? Isn't that the goddamn metaphorical point?! If you aren't trained how to program you'll crash it. Well yeah, duh, that seems pretty apt to me.

    If you really are learning-disabled, then I am symphathetic and empathize, but it sounds like a hollow excuse "I can only learn by trial and error". Imagine how long it would take kids to get through the third grade via trial and error (spelling by trial and error), how how about English Lit (essays by trial and error?!). I know it hurts, but sometimes you just have to learn what's right the boring way: from a book, from a lecture or from an experiment. E.g., you'll fail physics if you design your experiments by trial and error or don't perform prescribed experiments because you want to just figure it out by trial and error -- ignoring that this is in some cases extremely dangerous. My point: Computer science and computer engineering aren't uniquely special fields that require all these crazy new techniques for proper/effective instruction. Again, making exceptions for the disabled.

    1. Re:mod commentary and commentary by lukas84 · · Score: 1

      I disagree. Not everybody learns in the same way, and that was his point.

      I do mostly sysadmin stuff, and when i have to learn something new, i usually go down this route:

      * Read some basic quickstart howtos
      * Get a virtual machine online, install the software according to the quickstart howto
      * Do Trial & Error till everything works as desired
      * Save the configuration someplace
      * Get the complete documentation, reset the virtual machine
      * Start from scratch, with the complete documentation

      It's much easier to understand documentation if you know at least the basics of what you're trying to do. When learning something new, trial&error has been a great way for me to get a "feel" for a system.

      Trial&Error, though, does not help you understand the software completely. So it's a two step process for me. Getting familiar with a software, and then understanding it.

    2. Re:mod commentary and commentary by Anonymous Coward · · Score: 0

      > Oh really, when you aren't trained how to fly a plane you'll crash it? Isn't that the goddamn metaphorical point?! If you aren't trained how to program you'll crash it. Well yeah, duh, that seems pretty apt to me.

      What you don't seem to understand is that you won't have a second chance of crashing a plane... If software crashes you fix the bug and repeat the test, and this is where the analogy fails. You were trying to prove yourself right using a flawed analogy, period.

      > If you really are learning-disabled, then I am symphathetic and empathize, but it sounds like a hollow excuse "I can only learn by trial and error".

      I'm not learning disabled, far from it, and neither of my comments is an excuse attempt, more like the perspective of someone who is in a position which you don't think to be possible. It's not like reverse lerners can't learn by themselves (that's the thing they are best at), the problem is that they will lose interest in your subject because your teaching method is not challenging.

      > Imagine how long it would take kids to get through the third grade via trial and error (spelling by trial and error), how how about English Lit (essays by trial and error?!).

      First you are using a flawed analogy again because English Literature and spelling has nothing to do with programming (you cannot test the results quickly, so trial and error doesn't work there), second I'm Portuguese and learned English all by myself from the net through observation, trial, and error, which by itself proves how wrong you are.

      > I know it hurts, but sometimes you just have to learn what's right the boring way: from a book, from a lecture or from an experiment. E.g., you'll fail physics if you design your experiments by trial and error or don't perform prescribed experiments because you want to just figure it out by trial and error -- ignoring that this is in some cases extremely dangerous.

      Yes sometimes I have to learn it by reading documentation, I just can't understand why during this process I should be deprived from experimenting. Your analogy is wrong again because you mention cases in which the object of experimentation can be damaged, if incorrectly used, this rarely happens with software, and that's why I'm a developer, not a scientist.

      I won't reply to the rest of your conmment as it lacks content, but I would like to make this final remark: you are free to believe in whom and what you want to believe as long as you respect other people's opinions. Understand that you don't know everything and that the possibility of your theories about people being wrong exists. You've made some pretty big assumptions about me and the moterators who modded my previous comment up withough knowing nothing about neither of us, I advise you to be careful with this kind of behavior in the real world as it may lead to embarrassing situations.

    3. Re:mod commentary and commentary by Anonymous+Brave+Guy · · Score: 1
      What you don't seem to understand is that you won't have a second chance of crashing a plane... If software crashes you fix the bug and repeat the test, and this is where the analogy fails.

      Not all bugs crash code. The kind of bug that creeps in with the trial-and-error approach that MarkusQ challenged is usually far more sinister: it may give you subtly incorrect results, and often go unnoticed for many years. Even if you use automated unit tests, they rarely give 100% coverage; they're an extra layer of security on top of writing clean code with a systematic design, not a substitute for it. (This is where the so-called extreme programming crowd often miss the point, IME.)

      Here's a real-world example: not so long ago, I spent around a year reworking the core subsystem of a mathematical library, to bring it back to a coherent design that didn't suffer from ten years of small changes on top of other small changes that weren't fully thought through but had "worked at the time". That's your trial-and-error approach in action.

      Now, all those changes hadn't caused regressions in our automated test results, and they did fix whatever bug they were supposed to fix. But alas, two wrongs do make a right, if both of them are multiplying by -1. You don't spot the bug until the time you get a positive number when it's normally negative, and then you realise that the code should actually have taken an absolute value instead of doing the second sign-flip.

      It took a long time to rework that code, during which I fixed rather a lot of such bugs. Perhaps unsurprisingly, in the process I also fixed rather a lot of the outstanding minor bug reports that had been hanging around as low-priority things where no-one could immediately see what the problem was.

      This is the benefit of understanding your code rather than playing try-it-and-see until you get something that looks right. It's not that the latter can't be a good way to learn, but it's no way to write production code.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:mod commentary and commentary by Anonymous Coward · · Score: 0

      > Not all bugs crash code. The kind of bug that creeps in with the trial-and-error approach that MarkusQ challenged is usually far more sinister: it may give you subtly incorrect results, and often go unnoticed for many years.

      Thank you for agreeing with me in that the plane analogy is flawed even if it was not your intention. ;-)

      > Even if you use automated unit tests, they rarely give 100% coverage; they're an extra layer of security on top of writing clean code with a systematic design, not a substitute for it. (This is where the so-called extreme programming crowd often miss the point, IME.)

      XP also talks about design and and simplicity, please check your facts.

      > Now, all those changes hadn't caused regressions in our automated test results, and they did fix whatever bug they were supposed to fix. But alas, two wrongs do make a right, if both of them are multiplying by -1. You don't spot the bug until the time you get a positive number when it's normally negative, and then you realise that the code should actually have taken an absolute value instead of doing the second sign-flip.

      That's when you have to rewrite the code if there's nothing more important to do or your client is willing to pay for that (this isn't always an option in real world conditions and the norm is to hack around). Free software development is a completely different matter as at least my pride forces me to write trivial and clean code that everyone can understand and reuse, the difference is that I have all the time of the world to fix broken stuff and rewrite things.

      > This is the benefit of understanding your code rather than playing try-it-and-see until you get something that looks right. It's not that the latter can't be a good way to learn, but it's no way to write production code.

      <sarcasm>Yes because the people who learn the theorical way with paper and pen don't cheat in exams and don't memorize whole textbooks only to improve their final results, no, they understand everything they read during that last week before their exams.<sarcasm> The trial and error learning process is not blind as you think, each particular failure gives you more experience and improves your general awareness.

    5. Re:mod commentary and commentary by Anonymous+Brave+Guy · · Score: 1
      XP also talks about design and and simplicity, please check your facts.

      Sorry, but it's going to take a lot more than a cheesy Wikipedia citation to undo the damage here. The entire XP approach, and repeated comments by its high-profile advocates, revolve around the idea that unit tests are the primary means of ensuring program quality, and that the primary goal of writing or changing code should be to make sure that it passes, and continues to pass, those tests.

      Perhaps more significantly, those few people I know who actually work in an XP-based environment (or, to be fairer, their managers who set their procedures based on XP) have bought into this philosophy hook, line and sinker. I have been told by some senior developers, quite categorically, that it's perfectly safe for them to hack around - RefactorWithFunnyPunctuation or whatever they call it this week - as long as the tests all still pass, because that guarantees that nothing can go wrong. Guess what? My current project has thousands of automated tests, too, but neither my training nor my experience on this project tell me that hacking around is safe as a consequence. There is simply no substitute for understanding what your code is supposed to do and why.

      That's when you have to rewrite the code if there's nothing more important to do or your client is willing to pay for that (this isn't always an option in real world conditions and the norm is to hack around).

      The norm for crappy coders is to hack around. Good coders know that the extra time taken in the short term to maintain a clean design pays for itself many times over in the long term. My employer learned the hard way, when they had to pay me a year's salary to get a feature they should have been able to have in six weeks, because the underlying model had become so flawed after a decade of hacking around that we'd reached breaking point, and there was simply no alternative but to spend the time going over it and ironing out all the wrinkles before we continued. (This is not a statement on my abilities as a designer or coder. When I explained to my team leader and project manager why I believed it was necessary to clean up the design before doing the project they'd asked me to do, and provided examples to illustrate the sort of thing that had slipped through the net, they agreed and allowed me the extra time.)

      <sarcasm>Yes because the people who learn the theorical way with paper and pen don't cheat in exams and don't memorize whole textbooks only to improve their final results, no, they understand everything they read during that last week before their exams.<sarcasm> The trial and error learning process is not blind as you think, each particular failure gives you more experience and improves your general awareness.

      Why so defensive? Your sarcastic comment is pointless: whether people make the effort to learn properly or just cheat is entirely irrelevant to the question at hand.

      As I said before - you even quoted me - the trial and error process can be a good way to learn. But if you continue with that mindset when you're writing production code, rather than taking the time to work out what should be happening and why and then making sure that your code gets the right results for the right reasons, then you will always be a crappy coder.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  110. Definitely without by Anonymous Coward · · Score: 0

    IDE's come and go like fashions, but the underlying language (or at least the concepts) tend to be relatively stable. Given that you're teaching programming anyhow, I really can't see any reason to add the overhead of also learning an IDE that will probably be replaced soon enough anyhow.

  111. IDE' MAKE YOU DUMBER by w1z7ard · · Score: 1

    or so says some articles I've read. Come on, people. It sort of encompasess the top level perspective vs hands on approach. Once the lower level tools are "stable", it makes sense to create higher level tools that manipulate the lower level tools in convenient automated fashion.

    Yes, some creativity is stifled by limiting ones scoop to a set of tools at a certain level. But the gain is the ability to worry about higher level problems. Hopefully this focal shift will lead to an increase in overall productivity.

    --

    "Recursive bipartite matching"- try it!

    1. Re:IDE' MAKE YOU DUMBER by Anonymous Coward · · Score: 0
      I'm not against automating part of the programing process. The problem is automation of things which you need to know about. A java programmer doesn't need to know how the code is translated to machine language so doesn't need to look into the compiler. Whereas, the lower abstractions in C may require a bit of knowledge about the compiler's output. So treating the compiler as a black box would be bad.

      In the more general case, IDE's automate some things any programmer should be able to do. Any programmer should be able to look at her code and trace it in her head. Graphical debugging and Edit'n'Continue encourage people to let the IDE show what happens instead of thinking about it. Much like clicking the 'hint' button over and over in a sudoku game.

      Actually debugging is my main concern. Syntax highlighting helps comprehension, nobody needs to grok makefiles (just learn as needed), auto code generation won't likely be an issue.

  112. scite by evershade · · Score: 1

    i've just gone back to school for a bit and the instructors at the college got us started using scite for java (works for any language).

    it has the advantage of looking and acting like a basic text editor, but is highly manipulable using text based configuration files

    so you can set it up to do a build or make directly from the menu, but in order to edit the config file you have to know how to do it on the command line properly

  113. To IDE or not to IDE? by OverflowingBitBucket · · Score: 1

    As someone who learnt without pretty IDEs...

    We don't insist that people learn assembly code before they learn C and Java. We don't insist people turn assembly instructions into machine code by hand. We don't insist on learning electrical engineering skills before putting machine code into RAM. The way this is taught is to cover the basics first of all, then go into detail about assembly code at a later stage, and if someone goes that far, look at compiler technology and opcode generation.

    Starting students should be using nice, friendly GUI IDEs. More advanced, specialised courses should go into the details of how to work without them. Think of it as another layer to dive into later.

    Yes, the best developers will know how to work without IDEs. Just like better developers code higher-level languages with an awareness of how the code will be compiled. But there's no need to force that detail onto someone in an introductory course, just because we had to do it.

  114. 2IDE || ! 2IDE by Kevlar_Sindome · · Score: 1

    If your goal is to teach them programing fundamentals, you should skip the IDE.

    However, according to the post this is a intro to Java/Python class and it sounds like it has non-trivial programing related prerequisites (1 semester in programming in C++/VB was mentioned). Therefore when using these skills in the real world, they will benifit from having experience with the tools of the trade, and in the Java world the IDE is king of tools.

    Teach them how to walk first, show them what is going on under the covers, and once that intro is done, switch to the IDE, demonstrate how the two relate, and don't look back except at the mid-term and the final. The IDE can also be a very powerful teaching tool to help graphically demonstrate things like Class hierarchies, and how important good documentation can be made an integral part of the experience.

    --
    If this sig is witty, it was probably borrowed from someone else's sig.
  115. use bluejay by fiziksphreak · · Score: 1

    When I learned Java my instructor made us use a program called Bluejay. I think it is a good platform to learn on and it is free. It is specifically designed for teaching. You can find out more info at http://www.bluej.org/

  116. What in Tarnation!? by Anonymous Coward · · Score: 0

    Should Students Be Taught With or Without a Monitor? We can't spoil students today with these fancy programming aids. They should be making their punchcards and deciphering the results in hex-lights displays.

  117. Good IDE allows correct focus by say · · Score: 1

    I had to take an introductory course on Java a couple of years ago, even though I am fairly proficient already. But the course came in two flavors: one course in "object-oriented programming" (my course) and one in "java programming".

    My course used the extremely simple IDE-ish BlueJ (http://www.bluej.org/). I think it was really great for all the non-programmers, because it allowed the teachers to start where you should: at the conceptual level. The other course started with syntax, compiler commands, files and Javas idiosyncracies (only one public class per file etc). They even spent an hour learning unix commands before they could start programming!

    We started straight at objects: instances vs. classes, inheritage, methods, instance variables. BlueJ makes it simple: You open an example project (for instance a "shapes" program), and then you can instantiate objects and run their methods through a GUI. The objects even appear on-screen with quasi inheritage lines!

    If you're teaching Java AND Python this object-oriented conceptual approach will be invaluable, in my opinion. And BlueJ is free as in beer.

    --
    Roses are #FF0000, violets are #0000FF, all my base are belong to you
    1. Re:Good IDE allows correct focus by petermgreen · · Score: 1

      bluej is a nice concept (the object bench rocks) but a buggy heap of crap, try terminating a hung program sometime (iirc after doing this you generally ended up restarting bluej before it would work again). and it only highlights one line as an error per compile and when you start typing that line gets erased unless you click first.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  118. Guys, this is "intro" by mikelang · · Score: 1

    If you really want to teach "intro to programming" class, don't bother about showing them "under the hood". Select simplest IDE with hinting, error highlighting, so they spot problems more quickly and learn what you want them to learn.

    For Python I'd recommend DrPython or like (PyShell/PyCrust/PyAlaMode).
    Never seen beginner's environment for Java though.
  119. Teaching how to use an IDE is a waste by Error27 · · Score: 2, Interesting

    Don't teach vi. That's a waste of time if the class is about programming. Let the students use whatever they want and figure that out on their own.

    Visual C++ really sucks. You've got all these weird autogenerated project files. With C++ it's simpler to just not use an IDE at first. Python IDEs are much easier since python programs don't need a build system or any of that.

    Teach whatever will let you focus most on Python or Java and the IDE.

    1. Re:Teaching how to use an IDE is a waste by ardor · · Score: 1

      Heh. Obviously, you don't know how to use Visual C++ properly. Aside from the .vcproj and .sln files (which are necessary since they contain information about all files in the project), VC does not have to generate ANYTHING. In fact, VC is easier to use than most Linux C++ IDEs.

      --
      This sig does not contain any SCO code.
  120. Re:Because you are teaching by Anonymous Coward · · Score: 0

    Why not just stoping teaching and have the students figure everything out for themselves.

    The point of teaching is to not let your students hang there head on the walls against stupid problems.

  121. there's more to it by Xtravar · · Score: 1

    What good is learning a programming language if they don't know how to compile the program on systems without the IDE?
    Every programmer should know how to use a typical unix terminal. Since most of the students have already had a programming course, they should be able to handle it.

    Regardless, I don't understand how it would affect your teaching style, unless they're all watching you program... If you're teaching the language, teach just the language...

    --
    Buckle your ROFL belt, we're in for some LOLs.
  122. Both! by naoursla · · Score: 1

    Use an IDE and tell them how to use the debugger. Make sure they also know how to use the command line tools. Don't require them for all of the projects, but be sure to put it on the test.

  123. This is unfortunate by John+Nowak · · Score: 2, Interesting

    In an intro to programming class, you should be teaching true programming concepts... Not Python or Java or anything else. Teaching from a book like How to Design Programs using Scheme is the way to go in my opinion. Give them the concepts, not knowledge of Java or an IDE that will be obsolete in five years. If they know how to truly *program*, they can handle the IDE themselves later.

    1. Re:This is unfortunate by Anonymous Coward · · Score: 0
      Teaching from a book like How to Design Programs using Scheme is the way to go in my opinion. Give them the concepts, not knowledge of Java or an IDE that will be obsolete in five years.

      I agree with not depending on specific IDE's, but with regard to languages going obsolete... I can remember people saying the same thing about C/C++ 20 years ago. Scheme? I really don't understand the fascination with teaching students something this useless. It's insulting -- like they can't handle a real language and should be forced to play with the strictly "academic" ones. Why teach them languages that will be "obsolete" in "5 years" when we can teach them one that's already obsolete (or largely useless) now?

    2. Re:This is unfortunate by gg3po · · Score: 1

      Do you mean to suggest they should start out using C or C++?

      --
      ---
  124. Yes, then No by cowtamer · · Score: 1

    A favorite professor of mine once quoted "teaching is a practice in diminishing deception."

    First, you teach them with an IDE so that they "get something to work." [The IDE is like the training wheels]

    Then, you take the IDE away (say, in a 2nd or 3rd semester course) and let them understand what's under the hood. [You take the training wheels off]

    Finally, you give them real problems and let them come up with the solution [They can drive a car, ride a motorcycle, or take mass transit]

    Good example of how this was done at my school:

    1st course: C++ using Visual Studio
    2nd course: Data structures using UNIX (editor of choice) & gcc
    3rd course: Assembly language (What's an IDE??)
    4th course: Operating systems using UNIX/C++
    5th course: AI using LISP !!! (at this point, you _need_ something to do paranthesis matching :) )

    I'd say keep the IDE for Java, but be sure they can actually write code on paper...

  125. IDE worth it in an intro class by dezert_fox · · Score: 1

    Learning the nitty-gritty details of a language is absolutely necessary to program successfully in it. However, for an introductory CS course, the nitty-gritty details of a language shouldn't matter. In fact, teaching it in a language with as few details is possible is probably best. I learned to program in Scheme (no, I don't go to MIT) and I must say it was probably the best thing that could have happened to me; Python, used in conjunction with an IDE, would probably be just as good. Worrying about what needs to be included in your interface has nothing to do with OOP and everything to do with Java. The fact that I learned about everything conceptually long before I ever actually programmed anything has made me a much stronger coder than I would otherwise have been.
    And, if you must use Java (a ridiculously verbose caricature of a language IMHO...) definitely use an IDE. You will spend more time trying to get people to type the right sequence of commands than actually teaching anything about CS if you try to use javac to do everything.

  126. How valuable is printf debugging? by tfinniga · · Score: 1
    At the university where I study, they typically teach making text files and makefiles for c++. The main downside of this imho is that a lot of the students never learn to use debugging tools properly. Instead, everyone just sticks with the printf school of debugging, which is not as useful for many classes of bugs.

    IDEs allow you to step through the execution, to see what's happening. They remove tedium. They also often have useful syntax markup - specifically in the case of Python, this is important. I've used a python IDE (SPE) that shows how your indentation breaks down into execution blocks. That's very important for python editing, and giving your students help visualizing it is probably good.

    Other than that, I agree with other statements that IDEs are fine, as long as you understand what's going on behind the scenes. Specifically with java, showing them that java programming essentially uses only 3 executables - the editor, the compiler, and the VM.

    --
    Powered by Web3.5 RC 2
    1. Re:How valuable is printf debugging? by pe1chl · · Score: 1

      When having to choose between "the printf school of debugging" and "single-stepping" for teaching I would prefer the first one.
      Students have to learn to define pre- and postconditions of their functions and other program blocks, and to do pencil-and-paper "proofing" of their code. This leads to a global view of program code and correctness. Printing some values and then finding out why it is going wrong can be better than stepping to the actual fault.
      Single-stepping tends to lead to a "aha when this is occurring than that goes wrong so let's insert this if() here and it will be OK" type of fixing program bugs.
      It is usually better to look at larger parts of code and consider "is this code doing what I want in all possible conditions". A printed listing and a cup of coffee can actually be a better tool than an IDE with symbolic debugger for that.

      Also note that testing can only prove that there are bugs. Not that there are none.

  127. ed, em, en, ex, vi (Was: Re:Which came first?) by jamesc · · Score: 2, Insightful
    ... I guess the guy who wrote the first IDE used vi, but what did the guy who wrote vi use? It boggles the mind.

    That would be Bill Joy, originally. Back then (~1976), he probably used ex, which was an extended rewrite of en, itself an improvement on em by George Coulouris. Em was Editor for Mortals, since only immortals could use ed. I've used ed. The horror! The horror! 8^)

    All the programs from ed to ex were line editors. Vi contained ex, but also was a screen editor using termcap.

    (For details, see Bill Joy's greatest gift to man - the vi editor and Interview with Bill Joy.)

    --
    "You've crossed my Line of Death!" "What? No! Where is it?" "Here in the fine print...."
    1. Re:ed, em, en, ex, vi (Was: Re:Which came first?) by marcosdumay · · Score: 1

      "Em was Editor for Mortals, since only immortals could use ed. I've used ed. The horror! The horror! 8^)"

      I know how do you fell. I've tryed to use ed... But I'm a mere mortal. I survived, barely.

      Anyway, I like its first manual :)

    2. Re:ed, em, en, ex, vi (Was: Re:Which came first?) by Eudial · · Score: 2, Funny

      Which springs the question: What was used to write ed? (Or was ed created in an explosion of bytes at the dawn of time?)

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    3. Re:ed, em, en, ex, vi (Was: Re:Which came first?) by @madeus · · Score: 1

      Or was ed created in an explosion of bytes at the dawn of time?

      I believe it to be constructed from all the leftover bytes AT&T employees found themselves with once they were done writing Unix (hence the rather terse "interface").

    4. Re:ed, em, en, ex, vi (Was: Re:Which came first?) by Yer+Mom · · Score: 1
      But where does TECO fit in?

      ("As far away from me as possible" is a perfectly acceptable answer, BTW :)

      --
      Never mind Spamassassin. When's Spammerassassin coming out?
  128. Use an IDE. by Chuck_McDevitt · · Score: 1

    What are you trying to teach? VI? Emacs? or are you trying to teach the programming languages?
    Why make it harder than necessary? Just to slow them down by doing things the 20 year old way?
    Or just trying to preserve the tradition of doing things the hard way?

    If you want to teach the languages, worry about that. They can learn vi and/or emacs if and when they need it.

  129. IDE for Java, the basics for Python by Gumber · · Score: 1

    Speaking as a non-programmer who has taught himself a middling amount of Java (and C#) and a slightly less middling amount of Python I say, for a community college course (which I assume is going to be pretty oriented towards practical programming, rather than computer science): For the java course, use an IDE because that's what you do when you write java. For python, I say give them a decent editor with syntax highlighting, and show them how handy it is to be able to use the interpreter interactively and do 'dir' on objects, even without some big IDE.

  130. How I love time travel by Anonymous Coward · · Score: 0

    Back in the bad old days when I was being taught to program, we had to write everything out by hand then review it, then when it was agreed it was reasonably correct, type it up, check it again, then eventually compile it. The more compilations the less marks.

    What a complete waste of time and energey it all was. Of course you should use and IDE to get people started. The more enjoyable and the easier it is, the more likely they will stick with it and want to explore later.

  131. Transfer or Training? by jIyajbe · · Score: 1

    Seems to me the answer depends on why the students are taking the course--are they training for a future job, or is this course meant to be transferable to a degree program at a four-year university?

    I teach physics at two very different community colleges. At one, the course is intended to meet the prerequisite requirements of both of our local universities, while the other college is a technical school, focused on job training. While the course and the material is ostensibly the same, the emphasis (and therefore the student experience) is utterly different.

    If this is intended to be transferable, you (or your department head) needs to contact the local universities and determine their transfer requirements.

    Cheers,

    jIyajbe

    --
    "Don't blame the log for the fire." --Andrew Ratshin
  132. syntax highlighting by coldhg · · Score: 1

    The first 2 years you should teach them python| C | C++ |Java only using an editor with syntax highlighting like vim, gedit, kedit, or even anjuta.

    Only when they master the language thought and only then you may pass to a more advanced IDE (this is not mandatory, due to the fact that in the begining the student should also be concerned with the syntax of the language.

  133. IDE gives you options by tjuricek · · Score: 1

    IDE's are great for getting past a lot of details of computer languages. It seems that there's a general consensus that a beginner working with an IDE will lose these details... but I have to think, "so what"?

    Actually, so what is the goal of your course? Is it learning a language to know it's details, or learning to use a tool to solve problems? I can see valid reasons for both approaches.

    Focusing on the language ability is a tremendous skill that forces people to understand the weaknesses and strengths of their selected tool. It's a critical trait I look for in a professional programmer, because that guy you hire that doesn't understand the language ends up writing code that you have to fix or rewrite. But then again, this is school, not work. And focusing on the language can also be a very dry subject to many people.

    Focusing on solving problems can be a great way to inspire interest. If you can find interesting problems, your classwork will have a nice "approchability". The best problems also inspire the students to find their own nuances. Ergo, say you're going to make a pong-like game. This is great, since your inspired students may actually take on tweaking the game quite a bit to make it do different things: add more pads, more balls, obstacles, etc. If you can get to a "theme and variations" aspect to your problems, the students will probably learn more than hammering them with language details. (And, in fact, it may serve to have them find out the language details on their own, and asking good questions...)

    I guess I'm coming from the opinion that school is not there to create professional programmers. But some people, and students, go to class just for that reason. Ergo, it's a grey area. But my advice is to use the IDE, and have the students do something complicated, rather than making them jump through hoops.

  134. Re:... Yes and no by grahammm · · Score: 2, Insightful

    Yes but.. What you say about tools like calculators and using APL for matrix manipulation is true. However, the student should be taught the 'manual' way first. When I was taught maths in the '70s (before the days of calculators, simple 4 function calculators were becoming affordable at about the time I left school), we were taught trig and calculus from first principles. Only when we had learnt that were we told "You will probably never have to do that again, you use books of tables etc where someone else has done the hard part for you, but you need to understand how the 'everyday working methods' work".

    With IDEs, the same applies. The student should be taught how to do things manually before being introduced to the tool which will do all the "behind the scenes" work for them.

  135. Use the best IDE of all by Anonymous Coward · · Score: 0

    Vim.

    1. Re:Use the best IDE of all by tHeSiD · · Score: 1

      huh
      Vim?
      its not even an ide.. dumbo.. leave alone being the best..

  136. What about EE students? by rahard · · Score: 1
    Most of the discussions is around CS students, who have longer time. What about EE students?

    I taught (and probably will teach again) introduction to programming for EE students. We use C++ as the language. We only have one formal class to teach programming. Thus, everything has to be packed in one semester. I decided to use command line (and sometimes the concept without computer).

    My thinking is, if you want to teach a kid how to communicate, you don't ask her to use a sophisticated dictionary. The most important thing is she understands how to communicate. The language of choice is just to make it easier for us (teacher and student). Imagine teaching a kid with different languages at the same time. Make it simple.

    IDE was introduce as a show-and-tell so the students know what's available out there (what's being used by professionals).

  137. teaching a language by Anonymous Coward · · Score: 0

    If this is an intro course, you probably should be going over the basics in the language, not showing them how to use an IDE. Give them the freedom to choose their own editor, but challenge them on the language.

    All ya need to do is teach them the basics, provide a reference, then give them assignments that go above an beyond what you've taught them by a slight amount. The more they learn to grep the reference on their own and not be dependant on a human to teach them the better off they will be in the long run. Today it's Java, tommorow they are on their own with the boss breathing down their neck while they are working with a new language they have never seen before written by a developer that moved on to another job, and they are gonna have to know how to pick up the language in a hurry.

    If there are no courses required that are programming related before this course, teach them print debugging for one class, after you've taught them what System.out is. :)

    And if you could do more of what most of my teachers never did and teach them to catch and deal with errors from the beginning and burn it into their minds you might start quality developers out into the world.

  138. A scary story related to this question by swillden · · Score: 4, Interesting

    Several years ago (early 90s), I was hired as an adjunct faculty member to teach some night classes at my local university. The first class I taught was "Advanced C++", which was a fourth-year CS class, and presumed that the student had previously taken "C++", and before that had taken a variety of other programming and theory classes, working in Pascal, assembler and C, at the least.

    During the first week of class, I gave them a quick review of C++ syntax. One evening I touched briefly on the 'static' keyword and gave a quick rundown of its meanings in various contexts. When I mentioned what it does in a global scope (make the symbol local to the current compilation unit), I could see glazed eyes and baffled expressions so I started asking some questions.

    Well, they didn't know what a compilation unit was, so I explained that, but they were still confused. After digging further it dawned on me that the root of the problem was that these students had never even heard of a linker, had only the vaguest idea what a compiler was, and weren't sure how the editor was different from the compiler. They were quite certain that single-stepping through code made use of the compiler, though.

    These were Computer Science seniors, most of them one semester away from a Bachelor's Degree. I was shocked and dismayed to think they they could have gotten that far without ever understanding these pretty basic concepts. I'm still confused as to how they could have passed their compiler design course without figuring out what a compiler is.

    The reason the students all lacked this basic understanding was, of course, the fact that they had used nothing but IDEs (specifically Turbo Pascal and Borland C++), except in their assembler class, and that had been done entirely on paper, so they never actually had to use an editor or an assembler.

    I didn't have time to teach them these things, of course; I'd also discovered that most of these students had also managed to pass their previous C++ course without learning hardly anything at all about C++, so we had a great deal of material to cover. My solution was very simple, and probably somewhat cruel: I announced that I would compile and run all of their programming assignments on a Sparcstation, using the GNU compiler. I required all assignments to be e-mailed to me in a .tar.gz file that included source, makefile and any necessary supporting files. I informed the students that they were welcome to do their development on any platform they wanted (everyone had PCs and Borland C++, of course), but that any assignment that failed to build and run on the Sun would get a maximum of 50% credit, and probably far less, so testing on the Sparcstation was highly recommended. There were plenty of X-Window terminals in the lab, so there was no problem getting access to the equipment.

    Nearly a quarter of the class dropped that week. The rest learned something, though, so I don't think that was such a bad outcome.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    1. Re:A scary story related to this question by EastCoastSurfer · · Score: 1

      IDE or not, I'm not sure how you could get through any c or c++ and never have heard of a linker. I would blame how the earlier courses were taught and not the fact they had used an IDE. Hell, most(all?) of my c/c++ code is either written in VC or XCode and I have to deal the the damn linker all the time lol...

    2. Re:A scary story related to this question by Impy+the+Impiuos+Imp · · Score: 1

      these students had never even heard of a linker, had only the vaguest idea what a compiler was, and weren't sure how the editor was different from the compiler.

      Wonderful. I heard a few years ago universities started not requiring a class in Shakespeare of their English majors.

      I guess that brainiac move has infected the CS departments -- no assembly language class required for you!

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    3. Re:A scary story related to this question by jsebrech · · Score: 4, Insightful

      I work at a small software development company, and am often involved in the hiring of new programmers (for Delphi-based software projects). You can roughly divide them into two categories: the ones who know their stuff, and the drag-and-droppers.

      The drag-and-droppers solve every problem with ready-made components. They depend on the components provided to them by the IDE to such a degree that they generally are not able to design an actual algorithm. Yes, they know how to make a function, and a loop, or use an if structure, but they can't build a sorting algorithm, or build a data structure in memory and perform calculations across it. For what we do these people are useless.

      Here's the rub: most of them have programming degrees of one form or another, and almost all of them have years of experience as a programmer, with adequate references.

      We've learned the hard way to make everyone that comes to apply for a job with us take a basic programming knowledge test, where they have to design and implement an algorithm to solve a relatively easy problem that can not be solved with ready-made components (we place no requirements on the solution, other than that it should work), but can be solved by a competent programmer in less than an hour, and we give them four hours to do it. Most of the people that apply are incapable of even getting close to a solution. Some people with years of experience can't even produce one line of code towards the solution (after four hours they literally have nothing at all).

      This is why I'm distrustful of teaching programming with IDE's. Sure, use IDE's, but please give them tasks that require them to understand about data structures, algorithms, and actual programming. It doesn't even have to be OOP (from my experience you can teach that afterwards). Just teach them programming beyond ifs, loops and functions. Make them build data storage facilities that use self-balancing trees for quick lookup. Make them implement various sorting algorithms and test their relative performance. Just make them do stuff that demonstrates actual competence.

    4. Re:A scary story related to this question by Anonymous Coward · · Score: 1, Interesting

      I agree completely with your approach.

      In my CS programme they taught us a bit of Pascal and Modula three in the beginning (first and half of second year) of the programme -- always in the context of the relevant concepts involved. From that point forward there was hardly any teaching of a 'language', as, for example, our concurrency course did an optional one-week intro to C++ and then focused on a myriad of concurrency issues, paradigms, etc.

      All of our assignments required the submission of working code as well as our various documented (and working and demonstrable) test cases.

      Honestly, it wasn't that difficult. And the question of what editor we used, IDE, etc. was completely out of the scope of the class. Honestly, there'd have been an uprising if they had tried to dictate the tools we used to write the solution. By the third year, there were various grumbles on why we had to even use a particular language for our algorithms course. (in fact, there was a short-list where merely for the professor's sanity.)

      I think any university or even community college level course that intends to teach a particular toolset for the purposes of the course has the wrong approach. Perhaps familiarization with a tool to help jump-start the process -- but in the real world people use a wide variety of things. (whether it's vi, emacs, pico, some fancy IDE [maybe emacs!], or anything else.)

      Similarly in many of our group (and non-group) course assignments we started using CVS/RCS not because it was mandated but because we were all becoming seasoned professionals.

      Just my two or three cents!

      Mark

    5. Re:A scary story related to this question by pnewhook · · Score: 2, Insightful
      Wow that is scary. No wonder I can't find programmers that know how to do anything in an embedded environment without a button marked 'run'.

      By the time I graduated 10 years ago, we had to (among other things):
      - write a real time multi-tasking OS with a non trivial application for a Motorola 68K processor in C/asm
      - write a compiler for a given language (their own unique language)
      - write a real time multi-process application to control a PBX in C
      - write a real time application to control a physical robot

      None of these used an IDE, and nowhere was a language ever taught (except Prolog) - it was expected you learn the languages yourself as it was the application that was important to the class.

      The complier course especially gave great insight as to what a compiler really does. The quality of my code improved immensely once I learned what the compiler really does with the code.

      IDEs come and go. If you are teaching a language, then give them an environment that doesn't hide anything of the language from them. It could be an IDE if its minimal, or it could be just text. Better yet let them choose whatever they want, but give them problems that the IDE can't help them with.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    6. Re:A scary story related to this question by DrNoNo · · Score: 5, Interesting
      After digging further it dawned on me that the root of the problem was that these students had never even heard of a linker, had only the vaguest idea what a compiler was, and weren't sure how the editor was different from the compiler. They were quite certain that single-stepping through code made use of the compiler, though.

      Yes, all too familiar. When I teach C, lesson 1 is Preprocess, Compile, Assemble, Link. Then we do 'Hello World' with notepad, compiling by stages from the CLI, looking at all of the intermediate files. Only after that do we talk about C programming.

      The benefit is that from the outset, everyone understands the process, and from the outset, if something doesn't work, you can talk about did the compiler fail or the linker - which you have no meaningful basis to do without explaining the process.

      The problem wth doing 'Hello World' first is that learning a programming language is like climbing glass mountain. There is so much to learn before you can do anything useful, so conventionally, teachers are very tempted to miss things out. The thing you can afford to miss out is the IDE, going through the Preprocess Compile Assemble and Link process is far more essential. By setting that scene, your students have a context against which to understand everything else.

      Trust me it works. With groups of 3 on a 3 day course, after 1.5 days we do a Yourdon analysis of the mastermind game [see this if you don't know what it is - we don't do graphics, we do it with numbers on the CLI], then we split it into 3 modules and each student codes a module. Then they share their object modules NOT the C code, they link them and we always get a working program either first time or after 20 mins.

    7. Re:A scary story related to this question by Life2Short · · Score: 1

      "The problem wth doing 'Hello World' first is that learning a programming language is like climbing glass mountain. There is so much to learn before you can do anything useful, so conventionally, teachers are very tempted to miss things out. "

      Wise words indeed! All of this illustrates the need for a _curriculum_ that has some sort of oversight at the top. The original poster mentions that he was hired as an adjunct to teach an upper level programming class. That should set off all sorts of warning signs. This program sounds like it was struggling to cover the classes it needed to offer. There wasn't time for anyone to sit down and think about what part of the puzzle each class in the curriculum should be covering.

      As education budgets are stretched, and as schools rely more on adjuncts, I'd look for more of this happening. The adjuncts themselves might be great teachers, but if they aren't placed in an organized curriculum...

    8. Re:A scary story related to this question by alas_anon · · Score: 2, Interesting
      > and presumed that the student had previously taken "C++", and before
      > that had taken a variety of other programming and theory classes, working
      > in Pascal, assembler and C, at the least.

      Doh!

      I'm a teacher also. I have had this problem. You should first check the syllabii and try to determine the student's background. Even then, don't believe that the previous teachers have taught the curriculum.

      There's nothing more heart-wrenching than walking into class and expecting to teach the course, only to find out you have students who are not prepared to learn the required materials. It also makes me look "unprepared" when this happens, because I have prepared to teach the syllabus and the students are not at that point of development. When this happens I stall the first class by asking them questions (it's an "oral quiz") and then I quickly rewrite my class plans based on their existing knowledge.

      I have never complained to other teachers about this. I normally just drop back and punt. I want to stay on good terms with the other faculty and not start a war. I believe teachers need to stick to the content of the syllabus and if they deviate, it should only augment the course and not ignore it. If a teacher has a disagreement with the syllabii curriculum, they need to lobby to change it rather than just ignoring what it is trying to do. Teachers need to row together to keep on course (pun, haha).

    9. Re:A scary story related to this question by b17bmbr · · Score: 1

      You sir are my hero!! Seriously though, I teach AP Comp Sci in high school, and they use Jedit. I thought it cruel to make them learn emacs/vi, although...

      but, you're point touches on somethign else that I see. I teach history, gov't, and econ as well, and the lack of any discipline or effort in the students is amazing. It goes for my programming kids as well. I tell them all the time that they need to code at home and that it won't work. They need to figure out why. They are all stuck in the "right answer" mode, or the "I'm an AP student" mode, they think that if they can't get it to compile and run the first time, I didnt' teach them well enough. As for history, etc., again, when I assign more challenging reading than the textbook, they almost all won't do it. Why? It's too "hard". So, I imagine they probably had some classes in c++ but it wsa "too hard". or worse, "when am I ever going to use this...". So, since they all figured they're going to work at some big firm with and get to use visual studio, while actually learn how to program for real. It's sad.

      --
      My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
    10. Re:A scary story related to this question by MoneyT · · Score: 1

      Honestly from my own experience, it's because all the programming courses are taught too abstractly. There was one course I took my entire time in college where I felt the course was taught the way a programming course should be. It was a software engineering course, and the whole course focused on a single semester long project where every concept learned was applied to the end project. In this way we learned not only the concept, but it's application to a relevant project AND how and why it improved on the code we had previously written. As an example, in some earlier data strucures class, the question that always turned up from someone was why bother having a size variable in a data structure when your sizeOf function could just calculate it on the fly. The explination given was of course that as your structure increases in size, it becomes more costly to calculate that size on the fly, however nothing drove this point home until we were programing something using a prebuilt list structure and some people assumed that the sizeOf function just returned a variable as we had been taught it should. In truth it was calculating the size of the list every time it was called and a simple modification of that cut the run time of that part of the program down from about 15 minutes to about 2 seconds

      Unfortunately the way that courses are taught now there are very few similar moments so no one sees the logic behind any one "improved" method because all of the abstract short exercises run equaly as fast or as well in both methods.

      These new and improved methods were not concieved in a vaccum with no point of reference and no problem to solve, why should they be taught that way?

      --
      T Money
      World Domination with a plastic spoon since 1984
    11. Re:A scary story related to this question by mdarksbane · · Score: 1

      That's how my school (OSU) teaches everything. Every assignment must compile on the solaris system in the lab, and be submitted as source.

      Which I generally agree with but, but does seem to have a few pitfalls:

      1) Computer graphics courses. The solaris system doesn't really do opengl too well, and all their lab machines that do are running windows, with no cygwin or mingC++ installed. So there's no real coherent development platform for computer graphics.

      2) Every job I've had they expected me to already know Visual Studio inside and out. Now, it's just a program, I can kind of stumble my way through learning it, but it's a huge program and I always feel that since no one and no tutorial I ever found actually explained to me how it does anything, I'm making life much harder on myself than it needs to be.

      The overall problem is that no matter what you teach, you don't have time to teach everything, so that leaves something that you'll be completely clueless about :(

      Although I definitely agree that for starting out, making them get used to a command line (although a halfway decent editor that a least has a decent find button and keeps track of your tabs for you or something will be more of a headache saver than a crutch) and manually linking/loading (even better, get them used to making their own make files) will give them a better understanding when they do go to an IDE.

    12. Re:A scary story related to this question by Anonymous Coward · · Score: 0
      I guess that brainiac move has infected the CS departments -- no assembly language class required for you!


      I hope you don't think that's a joke. I've already worked at and/or attended three major universities, two of which have already stopped teaching assembler. I'm an academic IT support wonk with a background as a technician level programmer (i.e. I'm not an architect). The two scariest things I've heard in the last three years:

      1. The teaching of assembly language is obsolete. Right now to give them a systems background we've consolidated computer architecture, C programming, and assembler into one semester.

      2. They don't need data structures as almost all application programs are tied to a database back-end anyway. (I'm sure glad none of us will ever have to write systems code or a database! Whew!)

      One good thing from back in the day years ago at the University of Arizona: "Okay, you understand what a linker does and what a loader does. It's time to write one of each." The sad thing is these were computer engineering kids, and again CS got a pass.
    13. Re:A scary story related to this question by Hal_Porter · · Score: 1

      Having a size parameter is for versioning. E.g.

      BLOCK_DEV_OP
      {
              UINT32 Size;
              UINT32 Function;
              UINT32 SectorNumber;
              void * pData;
      }

      There's a size parameter, a function code (e.g. 0 for read, 1 for write), and a sector number.

      BLOCK_DEV_OP_EX
      {
              UINT32 Size;
              UINT32 Function;
              UINT64 Sector;
              void * pData;
      }

      When the system ships, both the OS and the callers use BLOCK_DEV_OP with 32 bit sector numbers. Later on the system supports both and the callers use a mixture. Old callers still use the old one, new callers use the _EX one. The OS can tell which is which from the size parameter.

      It's a pity that most people who used purely open source stuff at college never learn about binary compatibility techniques like this.

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    14. Re:A scary story related to this question by ScottyH · · Score: 1

      So what's the question?

    15. Re:A scary story related to this question by bensch128 · · Score: 1

      Funny, I had a similar course load when I graduated 5 years ago from UC Berkeley. (And I even thought the projects looked good on a resume.. hahah how naive i was!!)

      Again, they tended not to focus on the language (except for Scheme as the first lang., java as the second and MIPS risc asm+c as the the third)

      I suspect that it's more the quality of teachers, the resources at their disposal and the drive of the student's peers (as a whole) which determines how successful an education a student will receive.

      Cheers,
      Ben

    16. Re:A scary story related to this question by swillden · · Score: 1

      I guess that brainiac move has infected the CS departments -- no assembly language class required for you!

      As I said in my post, the students in question had taken an assembler course. It was called "Computer Architecture", but assembly language programming was a major component. All done on paper, though.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    17. Re:A scary story related to this question by swillden · · Score: 1

      We've learned the hard way to make everyone that comes to apply for a job with us take a basic programming knowledge test, where they have to design and implement an algorithm to solve a relatively easy problem that can not be solved with ready-made components

      I do the same thing. I give them two problems: Implement strcpy and implement a function to insert a node in a sorted singly-linked list.

      It's amazing how these simple problems separates the wheat from the chaff.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    18. Re:A scary story related to this question by CableModemSniper · · Score: 1

      By the time I graduated 10 years ago, we had to (among other things):
      - write a real time multi-tasking OS with a non trivial application for a Motorola 68K processor in C/asm
      - write a compiler for a given language (their own unique language)
      - write a real time multi-process application to control a PBX in C
      - write a real time application to control a physical robot

      You make me sad, I never got assigned to do any of these cool projects. Do programs like this still exist?

      --
      Why not fork?
    19. Re:A scary story related to this question by swillden · · Score: 1

      Every job I've had they expected me to already know Visual Studio inside and out. Now, it's just a program, I can kind of stumble my way through learning it, but it's a huge program and I always feel that since no one and no tutorial I ever found actually explained to me how it does anything, I'm making life much harder on myself than it needs to be.

      True, but keep in mind that five years from now it will be an entirely different environment that you'll need to know.

      The overall problem is that no matter what you teach, you don't have time to teach everything, so that leaves something that you'll be completely clueless about :(

      Lots of things, actually. That's why the real purpose of college is not to teach you the details, but to give you the broadly applicable theory, and to teach you to how to learn the details for yourself. I think the best CS programs (a) don't teach any tools or any languages and (b) require students to develop programs using several different toolsets and different languages, teaching themselves each time.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    20. Re:A scary story related to this question by pnewhook · · Score: 1
      You make me sad, I never got assigned to do any of these cool projects. Do programs like this still exist?
      Yes, faculty of Engineering University of Waterloo. The program is not unique though, there should be plenty of good schools that teach that sort of thing.
      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    21. Re:A scary story related to this question by mdarksbane · · Score: 1

      I've heard this argument a million times, and I agree with it... for the most part.

      I still think that there should be one semester or so on C#/.net, or just how to use OpenGL, or SQL, or how to set up a server, or.... all of the tech school stuff that a college offering CS degrees thinks are below itself.

      The ability to pick up new skills and work with any toolset using the core concepts of software engineering and programming is THE most important thing you get out of college, no doubt about it. But it would still be nice to have a quick "here's how to do what you're actually going to be doing when you graduate" class somewhere amidst that curriculum.

      Computer Science programs produce great computer scientists... but unless you're going to grad school that's NOT what you're actually going to be doing all day. You also need to be a good computer programmer, and to actually do that you need to know the hardware and software tools that you will be using to do that job in addition to the software engineering background that will make you write better code than someone coming out of a tech school in the long wrong. I mean, electrical engineers get a course on Matlab in addition to their theoretical analysis courses. Mechanical engineers learn autocad, not just hand drafting.

      I'm graduating this spring, and while I feel that I have a pretty good grasp of what technology can do that I've acquired outside of the classroom, I still have no idea on some key areas retaining to actual hard reality in computer science that my program has completely ignored. Things like how to actually write optimized C++ and C code - I know that early optimization is the root of all evil... but I also know you'll have to go back and optimize SOMETIME.

      Just because we'll all be using a different language/toolset/platform etc in five years doesn't mean that colleges shouldn't give include an overview of what you will be using now in their curriculum. It just means that it shouldn't be the core of it.

    22. Re:A scary story related to this question by swillden · · Score: 1

      But it would still be nice to have a quick "here's how to do what you're actually going to be doing when you graduate" class somewhere amidst that curriculum.

      There are two practical problems with that.

      First, there is far from one "here's what you're going to be doing". That was the case when I graduated 15 years ago, and is even more the case now. Consider, for example, just the tools and environments I've used in the last couple of years:

      • Operating systems: Linux (Debian, Red Hat, SUSE, MontaVista embedded), Solaris, Windows
      • Programming languages: C, C++, Java, bash scripting, SQL, XSLT
      • Databases: DB/2, Oracle, MySQL
      • Application servers: Websphere, Tomcat
      • Widget sets: Qt, GTK, raw X11, Swing, SWT
      • Build tools: GNU make, qmake, Sun make, ant, Visual Studio
      • IDEs: Eclipse, Visual Studio, EMACS
      • Debuggers: gdb, jdb, Visual Studio
      • App packaging tools: RPM, dpkg, Sun Package tools, InstallShield
      • Areas of programming specialty: Network programming, concurrent programming, security/cryptology programming, embedded programming, cross-language programming (e.g. JNI).

      Now that's just what I've actually used, for work, in the last couple of years. It's obviously not possible to cover even a significant fraction of that list in any useful amount of detail, and my list is just a fraction of the skills that are required by the industry. So, if the school is going to teach you specific tools so that you'll be ready to hit the ground running, just which tools should they teach? Even if they pick the stuff that is currently the hottest in the job market (which is probably J2EE stuff using a major SQL database like Oracle or DB/2 and the eclipse IDE), they'll still have picked wrong for the majority of students. Even trying to teach the top two or three toolsets will only cover the needs of maybe half the students. There is simply too much variety, too many tools and too much specialization.

      And the industry is getting more specialized every year.

      The second practical problem is that the only way to really be current on the latest tools used in the industry is to be working full-time in the industry, which means that most professors are invariably going to be less than competent with the stuff. That's not a knock on the professors; they're very bright and certainly capable of learning the ins and outs of the latest tool, but there's really very little value in them doing that. They won't be pounding code for the 8-10 hours per day that is needed to really learn the tools and then to get utility from that knowledge.

      So even if the school tried to teach what you think you'd like them to teach, you'd be learning from someone that doesn't know all that much more about it than you do.

      No, the better solution is the one we have: Universities teach broad theory and produce students who know how to learn and industry provides on-the-job training in the specifics, sometimes in the form of tool-specific courses, sometimes in the form of mentoring, but usually in the form of simply requiring the employee to use the tools to produce working code, accepting that the employee will be less efficient for a while.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    23. Re:A scary story related to this question by swillden · · Score: 1

      Now that's just what I've actually used, for work, in the last couple of years.

      And as soon as I hit 'submit' I realized there's a bunch of stuff I forgot, like OS X and all of the tools for that environment. I'm sure there's more, as well.

      There's just an unbelievable amount of stuff out there. About the only way I could see giving you useful job-specific training in college would be if you knew where you were going to work upon graduation and could have a syllabus defined by your employer-to-be. Of course, that still wouldn't address the issue of whether or not the professors have the knowledge to be able to teach to that syllabus.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    24. Re:A scary story related to this question by Savantissimo · · Score: 1

      I'm all for teaching using practical applications that require integrating a grreat deal of different areas of knowledge, but I think that there is a bit of bashing of CS students on the basis of matteres that are really more related to engineering than the what CS is really about.

      Look at the problems of about average difficulty on the CS GRE practice subject test (the percentages of test-takers who answered each question correct ly are listed on page 48). I think you'll find many of them quite challenging, and the real test has gotten even harder.

      Here, with the logical symbols translated into standard ASCII is the easiest question on the test, 96% got it right:

      6. Suppose that P(x, y) means "x is a parent of y" and M(x) means "x is male". If F(v,w) equals
      M(v) & Exists x Exists y(P(x,y) & P(x,v) & (y != v) & P(y,w)),
      what is the meaning of the expression F(v,w)?
      (A) v is a brother of w.
      (B) v is a nephew of w.
      (C) v is an uncle of w.
      (D) v is a grandfather of w.
      (E) v is a male cousin of w.

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    25. Re:A scary story related to this question by BalanceOfJudgement · · Score: 1

      This was the first problem I had to solve when I took my Java programming course (without the strcpy part, of course).

      It took me two weeks to make sense of the damn problem, because my brain didn't want to wrap itself around the idea of a linked list.

      Once I got it though, and saw how beautifully elegant the solution was, I never looked back - it hooked me on programming forever.

      These days, I'm glad I learned programming the hard way, because I understand so infinitely much more than people who learned just enough to 'get by,' like the drag-and-droppers in the GP's post, or who learned by using an IDE (I never used anything but emacs and notepad). These days I DO use an IDE, but I carry with me the good programming practices I have learned along the way, and only use the IDE to streamline stuff I already understand how to do.

      Having done everything the hard way, I think I've earned that.

      --

      We are the fire that lights our world.. and we are the fire that consumes it.
    26. Re:A scary story related to this question by pnewhook · · Score: 1
      I'm all for teaching using practical applications that require integrating a grreat deal of different areas of knowledge, but I think that there is a bit of bashing of CS students on the basis of matteres that are really more related to engineering than the what CS is really about.
      In not sure what you are trying to say. Good questions but there was nothing on that site that wasn't covered at some point in my computer engineering curriculum.
      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    27. Re:A scary story related to this question by EvilSporkMan · · Score: 1

      That sounds like a CE program, not a CS program. When someone says "programming", I don't think "computer engineering", but maybe I'm just off-base.

      --
      -insert a witty something-
    28. Re:A scary story related to this question by Anonymous Coward · · Score: 0

      Hmmm: students never heard of a linker, don't understand the compilation process. Yep, sounds common enough ime. I've supervised final year project students who regularly ask things like "what is a .h file?". It wasn't quite so bad when undergrads here were made to do most of there work in unix - that forced at least some understanding of basic principles, at least in larger projects - but now they've moved to windows dev in ide's pretty much exclusively... shudder.

    29. Re:A scary story related to this question by pnewhook · · Score: 1
      That sounds like a CE program, not a CS program. When someone says "programming", I don't think "computer engineering", but maybe I'm just off-base.
      It is a CE program. But I would expect that and more from CS (since I had to learn hardware, electrical and controls in addition to the above).

      What's the point of just learning a language without learning how to apply it? That's like learning all the vocabulary of a spoken language but not the grammar. You don't know how to use what you've learned.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    30. Re:A scary story related to this question by Durandal64 · · Score: 1

      It's an unfortunate trend. With languages becoming more and more high-level, computer science students are simply being taught to hit the "compile" button and go. What happens between the compilation and running of the program might as well be a black box for a good chunk of students. It's true that the "science" part of computer science is really the modeling of algorithms, but some people take this to mean that the technical and engineering aspect of the discipline doesn't need to be emphasized. The attitude is "As long as they learn how to write algorithms, they can just pick up whatever programming languages they need." Sorry, but someone who's been strictly taught in Java would have a far more difficult time picking up C++ than someone who knows C++ trying to pick up Java.

      After I took my school's introductory programming courses in C++, my school switched those courses to Java. But the algorithms course remained in C++. Things like pointers and linking confused the Java people to no end, and many of them did poorly in the course. And it's not their fault. The school let them down. Half of the things I learned were on my own, whether they were self-motivated research or related to my job somehow. (I worked as a Mac OS X programmer for the school while I was taking classes.) Some very useful debugging techniques, like defining debug symbols, were completely foreign to just about all of my classmates. When I would program in pairs, I had to explain the concept to my parters. Hell, in my second-level C++ course, I was the only one who could tell the teacher why #ifdef'ing a symbol for a library or class was required and what it did.

      The sad fact is that many people go into computer science for the money. They have no drive to learn anything beyond what their courses tell them, and they have no real love for computing. And the worst part is that the trend of abstracting the shit out of languages so programmers don't have to deal with linking, pointers, symbols, etc ... is making the field more accessible to these kinds of people. And they can get decent grades by just regurgitating everything. Hell I sat next to a guy at my graduation who was dumb as a fucking box of rocks when it came to computing, and he was wearing three tassels and graduated cum laude! I'd never, in my life, want this guy anywhere near any kind of programming project.

      I think that an introductory course in straight C programming would serve well to weed out the people who really don't belong in the major. Computer science is as much an engineering discipline as it is a scientific one. It's not supposed to be easy. Graduates could potentially be entrusted with sensitive data like bank accounts and customer records. If they don't know what the hell they're doing, it's a disservice to the people who trust them.

    31. Re:A scary story related to this question by MechaStreisand · · Score: 1
      "Let's impeach the president for lying
      And leading our country into war
      - Neil Young"
      OT, but... I thought Neil Young was Canadian.
      --
      Disclaimer: IANAL. This post is, however, legal advice, and creates an attorney-client relationship.
    32. Re:A scary story related to this question by pnewhook · · Score: 1
      OT, but... I thought Neil Young was Canadian.
      He is. So is Leslie Nielsen, Leonard Nimoy, William Shatner, Tommy Chong and a host of other people living in the U.S. What's your point?
      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    33. Re:A scary story related to this question by mdarksbane · · Score: 1

      I'm thinking something along the lines of the language elective courses I have to take. For instance, I have to take a 1-hour course on the basics of a language of my choice - C, C++, pascal, cobol, java, etc. to graduate.

      What not have a technical elective in applied databases - give an overview not of the commands of MySQL (they only recently added the concept of SQL at all to our database class, and the professor hates it) but of the standard ways one sets up a database in terms of user security, stored procedures, etc. Or have an introduction to .NET, or whatever. Bring in someone out of industry to teach it for a quarter as a seminar, and have a requirement that you take some of them in the areas that you are interested.

      I guess, anyone coming out of a tech school gets that kind of education, and for a "we need someone who can be useful right now" type of job, that gives them an advantage over someone who just spent twice as long learning to prove their programs correct, when 99% of jobs don't require that proof. Or other fields - there are very important general skills that one learns getting a degree in computer graphics, but you're definitely going to KNOW Maya or 3D Studio when you graduate in it and standard production techniques.

      Like I said, I agree with your point in general, and its one of the reasons that I hate the homogeneity of environments in most labs (all PCs, or all Macs, or all Solaris terminals, whatever). I think that I've gained a great deal of useful ability to learn by running multiple operating systems and multiple solutions. I think that college does a great job of preparing you for your lifetime of working... I just think it does a much shittier job than it could, if it tried, of prepping you for your first couple.

    34. Re:A scary story related to this question by ubergeek65536 · · Score: 0

      It's the instructor's fault for not providing a lesson or two on what happens when you press run. Keep in mind that not all programming environments make use of a compiler and linker. Why give an assignment that can only be completed by making use of the preprocessor, compiler, and linker? I'd also expect a fourth year student to understand differences between static and dynamic linking, late and early binding, stack/heap allocation, how to use an assembler, etc. I'm all for using an IDE. My productivity is much higher when I have intellisense and integrated help. I don't know anyone that has the entire .Net framework memorized and doing so would be a waste of time. By the time one framework is memorized a new one comes along and you're back to square one.

    35. Re:A scary story related to this question by maop · · Score: 1

      Is your company casting a narrow net by only hiring people with experience on your specific platform? The thing that is discouraging is that some companies look only at candidates with X years of experience on Y development platform. I would argue that programmers are not drag and drop either and a little investment could go a long way on certain candidates. Your company would get a higher hit rate on finding people who pass the programming test if HR changed its criteria. (Oh yeah, I vote no on the IDE's too. So this comment is still relevant.)

    36. Re:A scary story related to this question by MechaStreisand · · Score: 1

      Well, then it isn't really his country. If he calls it "our" country and he isn't American, then that's an incorrect use of language. That was my point, really.

      --
      Disclaimer: IANAL. This post is, however, legal advice, and creates an attorney-client relationship.
    37. Re:A scary story related to this question by wtansill · · Score: 1
      It's not just Delphi... I've worked in the field for over 20 years now. On one of my earliest jobs back in the 80's, I had to help re-write code originally written by a young lady with a BS/CS degree from the University of Maryland. One of the first things I found was a block of code containig 22 nested "If" statements... Myself and a few others significantly re-organized the code so that it ran faster, used less code, and used significantly less memory (this was back in the day of the mighty PLink linker with its static overlays that had to be manually calculated and allocated).

      Since then, I've interviewed folks for positions where they would be programming against a database who did not know what keys were, what "normalized" tables meant, etc. I've also taken continuing education courses, and some of the students are completely unskilled in lower-level design. One instructor asked us to create a project using an array to simulate a priority queue. Only about 25% of the class knew what a queue was, much less a priority queue...

      --
      The contest for ages has been to rescue liberty from the grasp of executive power. -- Daniel Webster
    38. Re:A scary story related to this question by Savantissimo · · Score: 1

      "In not sure what you are trying to say."

      CS grads still are being taught a lot of good stuff, just not always the specific engineering-type stuff you were lucky enough to be taught.

      --
      "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    39. Re:A scary story related to this question by Anonymous Coward · · Score: 0

      If he feels sufficiently at home to refer to it as "ours", why the hell does it matter where he was born?

    40. Re:A scary story related to this question by jamsessionjay · · Score: 1

      I AM SHAKING IN MA BOOTS I AM SO SCARED OH GOD HOW CS UNDERGRANDS UNPREPARED I HOPE THIS DOES NOT SPREAD TO OTHER UNIVERSITIES Yeah, I've seen lots of cs undergrands that didn't understand what was going on. Yet somehow this is a major that students who do not fully understand the concepts of computer science can manage their way through - the proof is the ever increasing number of complaints of inadequate new hires fresh from college.

    41. Re:A scary story related to this question by tehcyder · · Score: 1
      seasoned professionals
      And by 23 you'd become grizzled verterans, no doubt?
      --
      To have a right to do a thing is not at all the same as to be right in doing it
    42. Re:A scary story related to this question by Anonymous Coward · · Score: 0
      One good thing from back in the day years ago at the University of Arizona
      Sorry you went to a terrible school. They really ought to tear down the dump.
    43. Re:A scary story related to this question by jsebrech · · Score: 1

      Actually, we have tried that in the past, but we've found that the cost of teaching these people what they need to know is so cost-prohibitive, and the overhead so demanding, that it's just not worth it. So we'd rather not hire people than hire someone who requires that much hand-holding and burn-in.

      Let me be clear: we don't have any requirements with regards to technology. It doesn't matter if you're a cobol or a lisp programmer. As long as you can actually program, and you know the fundamentals of data structures, algorithms and (ideally) some OO, you're a serious candidate for hiring.

      The programming challenge we make applicants take can be taken in the language of their choice. And if they don't feel confident in any language, they can write it in pseudo-code. Even then most are unable to even start at solving it.

    44. Re:A scary story related to this question by Kender506 · · Score: 1

      This thread brings home the obvious point that programming is more than producing code. Students today lack an understanding of the need for knowledge and, more importantly, comprehension. With that in mind, it is impossible for a four year state university program to cover everything. Not with requirements like a class on racial equality and PE and the large number of general credits. Students need to do more outside the class requirements. But where to start?

      What books do you think an aspiring computer programmer should spend time over? What books should they purchase to retain as a reference? There is always the appeal of the game design books that draw in potential or learning programmers. How much do they actually learn about programming with those, other than the need to spend a lot of time on larger projects? Will the end point be useful?

      There are so many books on programming out there, and I have yet to take a class from a professor who reccommends anything. Yes, I have asked. I have found a couple I like through painstaking internet queries and use of the University's inter-library loan programs.

      Slashdot does review books as they come out, but where does one find out about the classics? Where is the definitive tome on the compiliation process? Where is the book on Sparc assembly langauge?

      I am a junior in college, and between the classload, working in an IT department, and being married, I cannot personally review as many programming books as I would like. Where do I turn for this information?

    45. Re:A scary story related to this question by Anonymous Coward · · Score: 0

      A linked-list...in Java. *This* is what you consider learning to program the hard way? And two weeks??? God, I could have done that in an hour when I was 8.

    46. Re:A scary story related to this question by Stinking+Pig · · Score: 1

      "some people assumed that the sizeOf function just returned a variable as we had been taught it should"

      It takes real world experience to disabuse them of the assumption that things work as documented. If you read that it works in fashion A in the manual, the textbook, and on several fora, you think that's what's what. It's not until you use the product/function/tool that you realize fashion A is the designed behavior, but it isn't the only possible behavior. In your special corner case, it's going to be fashion B. Maybe that's a bug, maybe it's a safety valve the developer applied to keep the thing from core dumping, maybe it's just an accident, but it is what it is. If you don't try, you don't know.

      Today's example (and yes, most days have one): IIS 6.0 logs and returns error code 404 2 1260 when it doesn't want to deliver a .exe file for permissions reasons. MSIE pops an error message and doesn't give you the file, but Firefox offers to save the file to disk, then does so successfully. Documented, expected, logical behavior is for the server to return an error, but actual behavior is for the server to return an error _and the file_.

      --
      "Nothing was broken, and it's been fixed." -- Jon Carroll
    47. Re:A scary story related to this question by jsebrech · · Score: 1

      The 4 year CS program at the university I went to (in Belgium) did not involve any general knowledge courses. General knowledge courses have no place in a university education.

      Amazon has a pretty reliable ratings system for computer books. Whenever I want to learn more about a subject I just buy the book recommended in amazon reviews, and I've never really bought anything I regretted (maybe I've been lucky).

      I think the problem with a lot of CS educations is that they don't teach enough foundation. Diving straight into java is good from the perspective of drawing in students and getting them "market-ready", but it does little towards actually teaching programming.

      There are a number of subjects which you must learn about to truly be able to call yourself a programmer. These I think are important:

      Computer architecture
      By this I mean the generic computer architecture. You have to be able to understand the internal workings of the CPU, and how it relates to the various types of memory in the system, before you're able to reliably write code that is performance-sensitive or memory-constrained. The book I learned from in my CS education was Computer Organization and Design by Patterson and Hennesy. It was good enough, but there may be better books on the subject out there.
      Algorithms and algorithmic complexity
      I'm talking about all the basic data structures (lists, stacks, queues, trees, and so on), and all the algorithms that operate on them, plus an understanding of how to build additional data structures and algorithms, and how to analyze the memory size and execution time requirements (aka the complexity) of the algorithms you're designing. A good book on the subject will probably not even be tied to a particular language. Introduction to Algorithms by Cormen seems to be popular. You'll need to be able to write code already to understand books on this subject though.
      Object Orientation
      This one is pretty obvious, but you can't figure this stuff out without learning it from a book (or something equivalent). I learned it from my second-year programming course, so I can't recommend a book, but I'm sure they're out there.
      Parallel programming / concurrent programming
      This stuff is really tricky, and sooner or later you're going to have to write multi-threaded code. It really helps to know the fundamentals. Principles of Concurrent and Distributed Programming has some good reviews, but may not cover enough practice to really get you going writing parallel code.
      Numerical computation (floating point arithmetic)
      Another subject impossible to avoid and that you must understand the fundamentals of or you're going to have code that "is only slightly wrong". Again I can't point to any books I've actually read (it was all from courses that had only loose coupling with books), but Numerical Computing with IEEE Floating Point Arithmetic seems like it has the right stuff.


      There are some other subjects that are very useful, but not absolutely required, like learning about compiler design (fascinating and useful), databases (from a theoretical standpoint), networking, computer graphics, artificial intelligence, code verification and so on. I used to think that my CS education was overkill, until I took a programming job in the real world, and found that I did in fact use almost all of the knowledge in my daily job. My AI and code verification knowledge hasn't proved to be of much use in the real world though.

  139. Whatever it is it better have syntax highlighting by StarkRG · · Score: 1

    Syntax highlighting and paren/bracket/brace matching are a must. It shows when you've screwed up and where. To me this is the most useful part of an IDE. The only other part of an IDE that I generally use is any function reference it may have.

    So, basically what I'm saying is that you should use syntax highlighting, brace matching and a function reference. The compilation and project management should be done via command line.

    Now that I think of it, though, code completion (like methods popping up when you type "object.", with the parameter types available) is useful and generally won't hurt a student's learning.

  140. Substitute IDE with.... by Pleb'a.nz · · Score: 1

    Calculators, and you're now back in the early 90's in regards to maths. As long as there's a fundimental understanding of coding, (i.e. their BEDMAS in maths terms) I can't see why not use an IDE.

  141. India and China want you to teach vi by Anonymous Coward · · Score: 0
    India and China want you to teach vi, in order to put off as many american students from programming as possible as early on. Bangalore thanks you!

    seriously: even considering teaching in an obsolete tool (except for seasoned sysadmins) as vi borders on criminally insanity. I suspect that you are one of the legions of shit TAs out there that plague american universities. Pity.

  142. As always the correct answer is "it depends" by jopet · · Score: 1

    What kind of course for what students? If you teach computer sciene students and the emphasis is on the concepts of the languages, do not use IDE. Using the IDE needs learning too, will take away time from what you really want to teach and is useless because most programming projects will be very small. Let them use whatever editor they like, on whatever OS they like.

    If on the other hand you teach a course on actual programming for future commercial programmers, use not one, but several IDEs and let them program actual projects where modularization, source code-dependencies and version control are issues too. However, that will still need a lot of additional time so it would be better to have seperate courses for the introductory stuff (no IDE) and advanced stuff (IDEs and more realistic projects).

  143. Use an IDE by puggsincyberspace · · Score: 1

    I would use an IDE, for the very simple reason, they wont be typing code in a text editor if they get a job coding. If you pick one pick Eclipse, http://www.eclipse.org/ as it is the one that is most likely to be used in the real world. Also as there is so many APIs in java with their imports that most students will forget about what to do and will not enjoy the experiences so they are less likely to do their best work. Just my 5c worth

    --
    Access Point Live Mapping Access Points with Google
  144. Why not use Integrated Drive Electronics? by Mike+Peel · · Score: 1

    You could possibly get away without using an Integrated Drive Electronics (IDE, i.e. PATA or SATA HDs, CD-ROMs, ...), but it'd probably be a bit expensive - SCSI isn't cheap.

    Personally, I'd recommend you go with the norm and use IDE. It's what they'll be using when they grow up, anyway.
     
    ;)

  145. Regular or Optical Mouse by Frankie70 · · Score: 1

    I submitted an "Ask Slashdot" question about whether students should be taught
    programming using a regular mouse or an optical mouse - wonder why it got rejected.

  146. Why the false dichotomy? by Money+for+Nothin' · · Score: 1

    Why not have them do *both*?

    Start them out in a normal text editor -- vi/vim, emacs, Notepad, etc.. Then, after a while, have them use the IDE. That way, they get to see the progression that has occurred in the actual practice of using a programming tool. They will see firsthand how much nicer it is to be have the IDE do all kinds of grunt-work for you (building a GUI by typing in (x,y) pixel coords vs. click-n-drag the window and control sizes you want, etc.). They will also see the value in having a lightweight text editor around for looking over log files, etc..

    As with learning anything, a broad set of experiences lets you see what is available and make an intelligent decision as to what your personal preference is. In this case, it will also provide a bit of historical background... (i.e., "in my day, when the brontasaurus was stepping on programmers who compiled using MSFT tools, all we had was the command-line and a text editor like this..." - much to the horror of students who didn't know a "command prompt" ever existed.)

  147. Definitly With by grrrgrrr · · Score: 1

    I see most people are saying not use a ide but do they have experience teaching or are they teachers who hate the students? What are they trying to teach, programming or patience and neatness and the memorisation of al kind of particular shit? I do have experience teaching. Using a good ide gives you a lot of precious time to really teach programming. Learning programming is difficult enough the particulars of compilers is a different course al together i think. Use somthing like drscheme or bluej and maybe even prepare some code your self that they can expiment with and change. Do not throw them in at the deep end of the swimming pool!

  148. Re:... Yes and no by Greyfox · · Score: 1
    They shouldn't even get a GUI. The first couple of semesters should be taught on Linux machines without X installed. I've seen nothing to indicate that a GUI does anything other than get in the way of understanding what's going on behind the scenes.

    Anyway, kids these days... back in my day we had to type the bootstrap code into the system by hand! In octal! And we liked it that way. I know someone with a master's degree in CS who can't explain to you what a linked list is, much less code one. They just don't make 'em like they used to...

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  149. IDE by __aahlyu4518 · · Score: 1

    I think they should be taught with a SATA ;-)

  150. Use a simple IDE by vikstar · · Score: 1

    One that has syntax highlighting and possibly symantic checking, but all compilations, runs and source organization are done from the command line. I don't know if any editors like that exist. Since your students already know how to program a little bit, I think going back to paper and pencil is a bit extreme. However, syntax highlighting is a must, it will allow your students to recognize and learn the various structures and keywords faster. Try it yourself, open up a source in notepad and try to quickly see what it does and do the same thing with another piece of source in a syntax highlighted IDE.

    --
    The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
  151. Use a modern editor. by EnglishTim · · Score: 1, Flamebait

    Ignore all these fools telling you to use emacs or vi. Your audience will be used to using Windows programs, and if (as you say) they've been doing VB or C++, they've probably been using Visual Studio anyway. You might as well let them continue. If you try and force vi or emacs on them you'll be wasting valuable time teaching a cryptic and outdated UI. Leave them with what they're used to for editing. Anything else will just get in the way.

  152. Use TextPad or the likes. by AJanuary · · Score: 1

    Don't teach them in a full blown IDE. But I'd say definatly use some form of advanced text editor like TextPad with color formatting etc. It will make it easier to learn without so much of the dependancies.

  153. I'd tech with IDE by dazk · · Score: 1

    I would definately teach with an IDE. But for me the reason is not to prepare them for the job where they have to know IDEs. In my opinion it's seldom a problem to get to know the toolchain used once you start working somewhere. The real question is what is to gain from not using an IDE? In my opinion it's not much. The students will probably have better syntax skills sooer because making syntax errors is much more time consuming than with using an IDE. They might get to know the languages apis better but that really depends.

    With using an IDE they can concentrate more on the programming side. They don't waste valuable time fixing stupid syntax errors or searching for why there are errors. They are even sometimes told if they produced not so ideal code. IDEs like eclipse support certain kinds of refactoring pattens. If it's about the patterns there's nothing to be gained from actually copy and pasting a method to the source file of the parent class but from applying the concept.

    In my experience you can learn a language much quicker with a good IDE because it guides you with all the small things you usually have problems with in the beginning and you can therfore concentrate on the programming much quicker. But you will eventually also learn the small things eventually and then the ide just makes you be more productive and focused because it helps identify the occasional typo. That's especially usefull with languages having huge libraries like Java.

  154. Not far enough by I+Like+Pudding · · Score: 1

    New students shouldn't even get an editor. I say keep it simple; bang out the cadence of ones and zero with your head against the desk. If your app compiles, the university covers hospitalization and rehabilitation costs. If not, piss off, because this is exactly what programming for most corporations is like.

  155. What kind of students? by mattwarden · · Score: 1

    You never said what kind of class this is. Are you teaching CS students or MIS students? Or business students taking a few programming classes as a submajor? It matters...

  156. do what thou wilt by Anonymous Coward · · Score: 0

    sink or swim. don't teach an ide. those students who begin using notepad and fail to grasp the limitations of their medium will sink, and that's a good thing, because they shouldn't be programming. i know it sounds harsh. i started with DOS edit, used it up to college, then was forced into vi by lack of alternatives (other than emacs, whose philosophy i completely disagreed with). after trial by fire i'm now an expert vim user. i guess what i mean is, let students find what suits them best, and those with no real opinions after surveying the field should pick a different career.

  157. In related questions... by OpenSourced · · Score: 1

    Hey, I'm a teacher in an elementary school. Next year I will be teaching adding and substracting to a bunch of kids. I was wondering what the prevailing wisdom is when it comes to teaching arithmetic- should students be taught with or without a pocket calculator? I am a bit old school and wouldn't mind having them all use pencil and paper, but using a good calculator does have some advantages as well. I should note that the students I will be teaching already manage to use both their hands to add to ten, and in summer, to twenty. In the end, after all, they'll be all using calculators to perform those operations, and there will be lots more of time to teach other things if the lesson for teaching to add consists simply in showing them the + key.

    --
    Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
    1. Re:In related questions... by dazk · · Score: 1

      While this seems a similar question at first I'd suggest to keep the caluclator out of math as long as possible. Learning to add, substract, divide and multiply quickly in your head or if need be on a piece of paper is a basic tool you need again and again and again in your daily life. I'm alway surprised at people in a restaurant if they can't spot that by accident they were charged for one beer to many because they can't simply add what they had in their heads or at least get a quick idea about wether it's around 25$ or around 35$ they have to pay. Those are the things people should get out of elementary school math. Later on if numbers get really big or people need to calculate Nth roots and other difficult things a calculator really saves time and helps too keep focus on the subject. But then, being able to use your head still has an advantage. You should be able to notice if you missed to type in a digit while multiplying. There's not a chance you'll notice that if you can't do basic math in your head. This makes it much harder to verify your results.

      But in my opinion using an IDE is a different matter. There is not too much of a difference between the IDE reminding you of a missing semicolon or the compiler. It just takes more time if you notice at compile time. What do you gain by typing in a complete method name of a library class and getting it slightly wrong and then hunting down the errors with api docs and compiler messages compared to the IDE telling you the difference or even helping you to get it right in the first place. I don't see too much of a difference there except for the increase in productivity and the possibility to actually concentrate on what you want to program.

    2. Re:In related questions... by OpenSourced · · Score: 2, Insightful

      What do you gain by typing in a complete method name of a library class and getting it slightly wrong and then hunting down the errors with api docs and compiler messages compared to the IDE telling you the difference or even helping you to get it right in the first place

      Nothing. If you know what the IDE is doing. Similarly, you gain nothing by doing a multiplication by hand if you have a calculator ready and you know what you are doing. If you have never learnt to do the thing by hand, you introduce a factor of "magic" in the process. Like, you do this, you do this, and then something happens and you have the result. The teacher probably has explained what is the magic doing. But the likelyhood of you remembering is small. What's the use of remembering it if it's always done by magic?

      I can see that in many programmers, both young and old. They program by some magic recipes, and the moment something fails, they don't know how the basic structure is (for example they don't really know about libraries and linking. They just know that when you need to access function X, you need to add Y to the code, and then an error can pop up in the magic linking process, and that means that you have done something wrong in your incantation to get X working, so you retrace your magic procedure to see where you angered the Gods by not following the prescribed ritual.

      Also there are many that don't really know how the Internet works, they are at the same level with the user public. But they program Web apps! Only don't ask them if a feature is best done in server-side vs. client-side because you'll find the depth of their disinformation.

      --
      Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
    3. Re:In related questions... by dazk · · Score: 1

      I agree with your statements but I don't think they really apply to the question of using an IDE or not. Using an editor is still far from doing it by hand. The difference is mainly if you catch your error running the compiler or if the ide catches your error and marks it nicely or if you have to look things up in huge piles of documentation or if you have the lookup feature of your ide that gives you the details if you already know where to look.

      If you never learned the principles of programming in theory or never at least got an idea how a compiler works, how libraries are found and linked to your program, how objects, polymorphism and the like work in object oriented languages you feel and use magic no matter if you use an IDE or a simple editor. But those things are nothing using an editor can really teach you.

  158. It cuts both ways by Z00L00K · · Score: 1
    by using an IDE like Visual Studio or Eclipse you will get a lot "free", but I think it's essential to also know how to do it by the command-line.

    When it comes to programming there are actually two things to learn:

    • Knowledge of the language and runtime libraries.
    • Knowledge of the development tools.
    So personally I think that it is best to learn the tools of the trade first with rather simple and stupid programs and then learn the language using the preferred IDE for the task.

    Anyway - when teaching a programming language there are two parts to consider too, and one is the language sematics and another is how to break down the language in useful modules. You can actually cut even more into the art of programming, but I think it is essentially to teach how to think modules since newbie programmers tends to think in a huge blob resulting in the famous spaghetti programming syndrome.

    One advantage of an IDE like Eclipse is that it has support for breaking out code to a separate java method with a simple operation. Other IDE:s may have similar functions.

    And don't forget to mention programming style, which is important, especially the generic variable naming shortcuts that can be taken (i,j,k,i0,i1 etc) for index variables instead of longname index variables that tends to clutter the code.

    When it comes to code formatting I think that the guidelines offered by JavaRanch is a good start. Most formatting rules can actually be applied cross-language. Any decent IDE will allow you to do code formatting and can be configured to the preferred style.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  159. I don't see the distinction by khallow · · Score: 1

    Emacs (and I understand vim as well) can easily form the core of a text-based IDE (that was after all its intended purpose). So I gather what you're really asking is whether one should teach via a graphical IDE or a text-based IDE. This is a different flavor of question than whether or not to teach with an IDE at all.

  160. Given that my first programming by Cadallin · · Score: 1

    was done on TRS-80's on LOGO, and THAT had a system vaguely like an IDE, I'd say this entire discussion is rediculuous. Why don't you start doing entire four year degree's entirely on paper, no computers at all!

  161. Use all three - vi, emacs and an IDE by Bunyip+Redgum · · Score: 1

    During your lectures use a number of environments, starting with a text editor (no syntax checking etc). By the end of the course the students should know that there is more than one way to write code and some of the pros and cons of each.

    For most of the lab exercises use an IDE, but provide emacs if they want to use it.

  162. More importantly.. by Anonymous Coward · · Score: 0

    It is totally inconsequential what development environment students are taught with. I would be more worried about what students are being taught, rather than what tools they are using. Stick to something simple that doesn't require learning key combinations to use. You have limited time to teach a degree, and you don't want to be wasting that time on learning how to work a text editor. Anyone can pick that up later on with now problem. Most importantly, I would think that students need a good understanding of underlying computer architecture, how high level code ultimately is ultimately implemented as machine code, and exactly what the abstractions of a high level languages actually mean for the underlying code that is generated. I would be looking at the acutal machine code output from a common compiler, and showing exactly how it the native code maps to this. There are too many 'programmers' coming out of universities now who do not fully understand the implications of how they write code on runtime efficiency, and make stupid mistakes with things like pointers because they don't fully understand what they are actually doing. A good software development degree must include a strong understanding of low level architecture. A good degree will probably include at least the equivelent of a first year maths degree as mathematical content, covering applied mathematics that is generally applicable to Computer Science (ie. geometry, matrix algebra, ...). Do you want programmers who can't implement basic statistical code? programmers who don't understand how to detect when a user is clicking on a line on screen? programmers who don't know how to use matrics to make 3d projections? Design of software is important. Java/C# is good for teaching OO design. I would suggest that Visual Basic be avoided at all costs, as it often seems to lead to bad programming practices. C++ is probably too complicated for a first year course, but I would be looking to at least provide a solid introduction to it in 2nd/3rd/4th years. Common algorithms and Data structures, and their impact on efficiency are absolutely essential. Programmers who use common libraries should be able to understand 'O' notation, and evaluate the effects on things like insertion, deletion, and element access speed on common data structures, and select data structures appropriately for the task at hand.

  163. Here's how I do it by Qbertino · · Score: 1

    I first give my interns and trainees a CLI rundown explaining them the heritage of VI & Emacs and why they are such nutcases in operating and show them ssh, grep, pipes, etc.. Then I move to jEdit. jEdit is used for showing of jDiff, Regexes for search/replace and a bag of other cool jEdit-rules-all features and plugins. If your focus is Java dev'ing I'd make a stop at jEdit but then move on. It's to cool an editor not to check out some features and learn to use it. Anyhow, with java you'll want to move on to an IDE to streamline collaboration, toolkitting and GUI-building, even though editing itself will be worse than with jEdit. Here, of course, you've got two choices, Eclipse and Netbeans. If you're on Linux only add KDE Studio/KDevelop and Erics Python IDE to that.
    Both Eclipse and Netbeans are top-of-the-line and it's up to personal preference which one you teach.

    My rules are:
    1) Bash CLI is to cool, usefull, praktical and omnipresent it would be irresponsible not to teach a little of it.
    2) It's irresponsable to teach anything other than OSS tools. OSS is better and has more features than most people will ever use. If they wanna go MS afterwards, it's up to them. I (you) warned them.

    It's OK of course to give your students a peek if you have a favourite commercial tool - especially if it's Non-MS. IDEA comes to mind as a potential candidate. But don't do that for more of a day or two and not without explaining *why* you think it's fair to shell out money for the tool.

    Whatever you do, never forget to warn them of MS and protect your padavans from the dark side, Master Cliff.

    --
    We suffer more in our imagination than in reality. - Seneca
  164. Focus on the basics for an intro course by Rufford · · Score: 1

    An intro course should definitely focus on the basics and not worry about teaching with an IDE. Many of these students aren't going to be Computer Science majors and don't need the distraction. I do recommend higher level courses require use of Eclipse, MSVS, or whatever else is popular.

    Vi, Emacs, or even pico are good for the beginner if you don't focus on the many keyboard shortcuts. Personally, I liked the UNIX based systems and the exposure might spark the interest of students looking for a major.

  165. How I was taught by Fjodor42 · · Score: 2, Informative

    Just to chime in with a case story.

    At Aarhus University, Denmark, the introductory course is taught using BlueJay and the book "Objects First with Java", ISBN 0-13-124933-9. It is quite pedagogical, and thoroughly teaches the concepts of objects/classes, and BlueJay represents structures using UML. The next course, Programming 2, is then taught on the basis of using emacs, but with students being free to use vi(m), Eclipse or whatever they preferred. This is with the book "Object Oriented Design and Patterns", ISBN 0-471-74487-5, which I can also recommend. Worth noting is, that at AU, the semesters are divided into 2 quarters, so the introductory and the second course runs over just one semester. /Fjodor

    --
    "The number you have dialed is imaginary. Please rotate your phone 90 degrees and try again."
    1. Re:How I was taught by Fjodor42 · · Score: 1

      And yes, I am aware that it's BlueJ. Sorry for the typo. Please mod this correction neutral (0, I presume).

      --
      "The number you have dialed is imaginary. Please rotate your phone 90 degrees and try again."
  166. Dr.Java by Anonymous Coward · · Score: 0

    I remember the first course I took in Java at a community college, we had to do all our programming in notepad and goto the command line to compile and run it. When I went to university and had to do Java programming they recommended Dr.Java. As far as IDE's go it is minimal, basicly notepad with syntax highlighting. It also captures the command line output in the window and lets you compile and run code with out having to goto the command line.

    If you search for Dr.Java on SourceForge.net you'll find it.

  167. First without, then with by mark99 · · Score: 1

    I taught my son how to program when he was about 10.

    We did the first 10 or so little programs with just an editor and the javac. It was much easier to see how things worked that way.

    Then we moved to eclipse.

    It worked well. I think it is the way to go.

  168. IDEas by umbrellasd · · Score: 1
    I guess I'm in the minority here, but I've been developing software in the industry for about 8 years and am considered competent by most. I'm really in favor of using an IDE at all times if it is available for the simple reason that what IDEs do is, in my opinion, trivial.

    The really interesting work happens in my head when I am studying source code or looking at a list of requirements and coming up with a solution architecture or model. An IDE cannot even come close to that, and though I do understand what an IDE is doing it and could figure out what command line tools it is using, I'd prefer to just move on to the more interesting and important aspect of development.

    When I see people saying, "Oh, no. Make them do it without an IDE so they learn those fundamentals," I am a little astonished because honestly, if you really need to know how to compile a program from scratch that involves using a command line tool and the second you get into a nontrivial project, you need make or an equivalent and you want version control.

    Saying to do it the old fashioned way and not use an IDE is like telling me to do source control the old fashion way and name my files Woot.1, Woot.1.2, Woot.2.0 and keep a separate metadata file where I annotate what the changes were. Well, I hope people see what I am saying here. To me, using an IDE to handle something like building a project is no different than using a command line compiler that has dependency checking and recompiles source file dependencies.

    I'm really quite surprised that people are so passionate on both sides of this issue. Pretty much as I see it, what I really want students to learn as fast as possible is how to think abstractly about a problem in terms of objects or procedures or functions (depending on the type of language), and then begin to delve into the interesting aspects of code evolutions (refactoring) and testing. If an IDE gets people to that point faster, than use it. If at some point they really need to do something without an IDE (I've never been in this situation in the real world--only in the artificial world of a class where it was enforced that you not use all the tools at your disposal), you can learn that.

    A smart and capable student can learn to do basic things that an IDE does quite rapidly. But what a lot of students absolutely fail to learn coming out of school is how to leverage the hell out of whatever existing tools already exist to avoid reinventing the wheel.

    1. Re:IDEas by wigz · · Score: 1
      The problem with IDEs is that they hide some of the basic plumbing that ties everything together and students may not develop an understanding of what is going on. This leads to several types of problems:

      • poor designs that may work in development but do not scale at all.
      • when something goes wrong, the programmer cannot solve it because the IDE has always looked after the messy details.

      IDEs can be great for productivity but life is much easier if you understand what they are doing for you.
    2. Re:IDEas by umbrellasd · · Score: 1
      I've never seen an IDE that did design work, so I think poor designs are unrelated to the IDE. Whether you use one or not, you come up with the design whether it is a bad or a good one, and an IDE isn't a crutch for that process.

      As for when something goes wrong. If the IDE looked after messy details before, then it can keep right on looking after them while you figure out what went wrong. I haven't used a command line debugger in years, nor do I really recall the specifics of doing so for the several languages I've used. But I can darn well make a visual debugger from an IDE do magical things and find problems quickly. Keep on looking after those messy details I say. I don't need to know those messy details.

      People often use the, "What if there were no IDE? What would you do then?" situation to encourage people to understand the nuts and bolts, but there's never been a time in 15 years when I didn't have a very functional IDE to take care of the busy work. I'm not well versed in electrical engineering either, but I can do some interesting things with a computer.

      The first time a problem comes up that a person cannot solve because they are relying on an IDE to do some busywork and that busywork is bollucks, is the last time they will be ignorant of what the IDE is doing in that particular case. If they don't fill in the gap at that point, it's not the "using an IDE" that is the culprit. It's the person's fault. And you can't force a person to have initiative and curiosity and not be a lazyass by requiring them to take the tedious route.

      The best developers learn what they need to get a job done and don't spend time learning other things. When my company switches to a different source control product, I don't bother learning its wonders if I can just plug it into my IDE and keep using the same simple commands to take care of business.

      I mean honestly. Does anyone really think that a skilled programmer who has been working through an IDE for a couple years and created several interesting projects is going to be suddenly flummoxed when he has to figure out why the autogenerated WSDL is goofed in a particular situation? Heck, no. That's just your typical learning situation where you need to delve a bit and add to your knowledge.

      The dangers of using an IDE are blown way out of proportion. Ok, don't use 'em. The second you as a student get bored out of your tree by not using them, use 'em. Any developer worth there salt will use an available tool to save time. It's the guy that says, "No. You can't use a tool to automate this tediuous process because I want you to learn your fundamentals..." that's the guy that is a problem. That's the guy with little to teach.

  169. Answers vary depending on the situation... by Vellmont · · Score: 2, Insightful

    I think any advanced programmer should learn a language with all the tools available to him/her. But it sounds like you're teaching beginning students who've only done a semester of VB or C++. I think at this stage a complex IDE will only get in the way.

    A lot of people seem to be of the opinion that IDEs are somehow "soft" on students, and they won't learn anything with them. I think this is pure nonsense. It reminds me of the people who argue against letting kids who already know how to add, subtract, multiply and divide use calculators. (It's actually worse than this since an IDE doesn't actually program for you, while a calculator actually does do mathematical operations).

    IDEs tend to be extremely complicated pieces of software, so students will end up using a lot of time learning the IDE. When to introduce them to everyone is a judgement call, but I'd still say for 2nd semester students it's more of a hinderance than a help. If you could somehow find a very limited scope IDE that only did things like finding syntax errors and didn't take more than a few minutes to learn, I'd say introduce that IDE right away, even in a first programming course. After a third or forth semester of programming it should actively encouraged to use a more complicated IDE.

    --
    AccountKiller
    1. Re:Answers vary depending on the situation... by Starji · · Score: 1

      I'm just about to graduate from a Software Engineering program at a University and I can tell you, Visual Studio does make you soft. It's not so much about the programming; you're right, an IDE doesn't write code for you, but it does other things like automatically linking extra libraries you need, compiling all your files at the touch of a button. Having said that I think IDE's are very useful, but too many of my peers don't know how to write a Makefile, and don't know how to compile their projects from the command line; skills I have found very valuable (being a Linux junkie I've used emacs and gcc wherever possible, thus I've had to do that often). My recommendation would be to teach the students the command-line methods for maybe the first two terms of their programming, and then introduce IDE's while having classes that sometimes require the use of the command line again. This way they know how to do both. All in all, it's not like it takes very long to learn either method anyway, so perhaps it's a pointless question to begin with.

    2. Re:Answers vary depending on the situation... by Vellmont · · Score: 1


      but it does other things like automatically linking extra libraries you need, compiling all your files at the touch of a button.


      I think at some point many new tools become indespensable. I'm sure there's other professions where new tools have been invented, and the old tools have been abandoned for teaching new students because it's just inefficient. We don't have secretaries trained to use typewriters anymore because word processors have completely replaced them. I can't even remember the last time I actually saw a typewriter.

      --
      AccountKiller
  170. Use the IDE ... and automated tests by buzmeg · · Score: 2, Interesting

    Unless you are specifically teaching a Unix class, an IDE is really the only good way to get a useful programming environment on Windows. You know, Windows, that funny OS that runs on 99% of the x86 laptops that students now have.

    Using Eclipse, for example, allows all of the students access to JUnit and CVS via a consistent interface.

    The biggest shock for most of my students was automated testing. Projects had a base set of tests that ran automated up until the deadline. After the deadline, I would run an extra set of tests to make sure that they were solving the problem rather than just writing to my tests.

    All students had to do was check correct code into the CVS repository and the automated testing system would take over from there and produce a web page with the test results. Of course, creating correct code was always the trick ...

  171. As a teacher already by fenux · · Score: 2, Interesting

    I'm a teacher for 5 years already and i lecture courses in java, LAMP, linux and some other stuff depending on the demand. I can speak from experience when i say the following: When you are teaching students which have already had course in Microsoft Visual studio (Visual basic) You will have a hard time arguing with your students(they gravitate to lazyness). Even though, we teach the first year using a simple text editor for all of the obvious reasons: somethinmes you need to now some things by heart. The years after that we use netbeans, the all in one IDE. When using a simple text editor and a command line you will never get as far (at first sight) as the IDE crew, but i'm convinced that in the long run they will have a better understanding. You shouldn't try to teach advanced topics that requires an ide thinking about bigger programs, enterprise technologies, writing unhuman readable xml formats etc... the main thing to remember is not about the language or the ide itself its about grasping the concepts and a good teacher is able to explain them without a language on a chalkboard.

  172. Re:... Yes and no by zootm · · Score: 2, Insightful

    Definately. Although I don't agree with people who say you should be taught assembly language before normal programming (languages are a fairly full conceptual abstraction of machine code, learning it can be an impediment some of the time, other than perhaps languages with direct memory management, but even then I'm not sold on the idea), you should definately learn your languages first. If you learn the language, then the IDE, it eases your work, and it's easy to learn, because you understand why its features are helpful. If you start with an IDE, changing to another language, or even to another IDE, can be very difficult.

  173. Python / Jython interactive mode by Anonymous Coward · · Score: 0

    Python has an excellent interactive mode. For python, I'd recommend you teach that and let the students use whatever editor they please.

  174. Why must they be mutually exclusive? by Greg_D · · Score: 1

    Look, you're going to be the instructor, so what you say goes. My advice would be to use an IDE like Eclipse, to take advantage of the benefits the interface has like checking to make sure they have the correct number of parentheses and/or braces and... um... stuff like being able to create, open, and save files in an environment in which they are familiar with.

    Here's the thing... if you don't show them how to compile their programs with the IDE... they'll probably never figure it out. Let them use the editor for the programming and the command line for the compiling. That way, you get the best of both worlds, and avoid the headaches that will most assuredly come with trying to stay steadfastly with either one.

    Besides, it's not like you're going to be teaching them to design swing interfaces... because if you are, you have no business teaching that class. They should learn to program first, and there's a whole lot of ground regarding design and data structures to cover before UIs should ever be mentioned.

  175. Dont bite off more ... by vtcodger · · Score: 1
    A semester isn't a lot of time, and you need to develop teaching materials which will probably take a lot longer than you think it will. Moreover, you are going to find that your classes don't move at the pace that you as a student would think they should move. They are going to move at the pace of the slowest fairly dull student you decide to target and pull along.

    Unless they have used them in the past, vi and emacs are not going to be intuitive for many of your students. There is a subset of humanity that thinks that vi is about the most aggravating purported text editor ever deployed. (Yes, there really are folks that would choose ed if ed and vi were the only two choices.) Emacs is more capable, but not more intuitive. Doesn't matter if the folks who dislike these editors are right or wrong. What matters is that you may need to work some of your students through enough of their problems with the text editor to get work done. That means that to some extent you would be teaching a course in vi or emacs, not a course in Python or Java. Is that really what you want to sign up for?

    So you should go with an IDE? I don't know about that. The only Python IDE I have tried is IDLE and it runs so oddly under Windows that I quit using it after a couple of hours of struggling. (It acts like it saves files, but I'll be damned if I can figure out where it is putting them. Not where it says it is). I assume that it runs better under Unix, but I'm not sure that better is good enough. In any case, it certainly didn't make my life easier.

    So it seems to me like you might want use whatever editor will cause you and the students the least grief. If you can teach the entire course with four line programs input from the console, maybe that's what you should do. If you need an editor, maybe you need to look for one that is as intuitive as possible -- joe, pico, mc from a Linux console. nedit or something similar if your students have a GUI available. Notepad if you are on Windows.

    Maybe show them an IDE in the last class session just so they know that IDEs exist for Java and Python.

    Just my thoughts. Not an expert and have just enough teaching experience to think that you have signed up for about as much job as any sane person would want to undertake.

    --
    You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
  176. What do you mean, Emacs or IDE? by Anonymous Coward · · Score: 0

    Emacs _is_ a good IDE already. If you make use of the functions compile, next-error, gdb in connection with gcc -g, you get an integrated source code debugger, compiler, navigation of errors. Add to that etags and the tag-related commands, and you are quite set.

  177. Re:I say no IDE (off-topic) by mickwd · · Score: 1

    Good post.

    Just one comment.

    (I haven't atually finished learning python yet).

    Hopefully, you never will.

    Not a dig at Python (I think it's a great language), but rather just making the point that however long you use something, there's always room to improve, and learn new techniques and styles of working. Looking at other peoples' code can often be instructive (assuming they know what they're doing).

  178. I agree for java, but not for python by cies · · Score: 1

    I agree with the parent (first without IDE than imo with Eclipse) for Java. But with Python I would teach without an IDE simply because an IDE does not have so much to offer for an dynamically typed language.

    Dyn. typed languages are nice to teach in conjunction with other goodies like a the (in case of python) python-console (make shure to have readline in there for the [TAB] autocompletion funtionality).

    Cies Breijs.

  179. Compiled vs Interpreted IDE: Java-yes, Python-no by Anonymous Coward · · Score: 0

    It is common practice these days to use an IDE for Java development, in part because Java exposes the compilation step and there are many things you have to deal with there. Java lacks an interpretive mode, so to test things quickly you often have to resort to features provided by the IDE. Python has no explicit compilation step, and has an excellent interpretive mode which can be used to diagnose problems and run only parts of a program a little at a time.

    You should also make everyone have a lession in using a debugger, a profiler and a verifier as well. Learning that these tools exist early on is important. If these tools are provided via an IDE (which I believe is the case for Java but not so for Python) then that should also influence your decision.

  180. Emacs is not just an editor by efuzzyone · · Score: 1

    I think that you should teach using emacs.
    And IMO it is wrong to say that emacs is just an editor, it is rather a full fledged editor and with JDE mode, combined with senator, cedet, it has most of the facilities which other IDE's do.
    In addition, it has modes for programming in many languages, be it python, ruby, lisp or haskell.

    Best of all, it is programmable, and student can hack their way to their own settings and idiosyncracies.
    Introduce your students to the Church of Emacs

    --
    Creativity uninhibited www.kreeti.com
    1. Re:Emacs is not just an editor by efuzzyone · · Score: 1

      Mistake, it should be "it is a full fledged IDE with JDE mode" instead of "it is a full fledged editor with JDE mode"

      --
      Creativity uninhibited www.kreeti.com
    2. Re:Emacs is not just an editor by dazk · · Score: 1

      Yeah and if you are lucky, a small part of your students can even do the most basic tasks with that editor at the end of the semster.

  181. Forget IDE's, they are a brick wall by DrSkwid · · Score: 1

    IDEs are a brick wall to composition.

    Just get a proper editor

    As they kids would say : "IDEs are gay"

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
  182. Like maths by NaiL2001 · · Score: 1

    It's like learn math's, first you must do the roots by hand lete you'l never do that again. But you know howto.

  183. bblazer: You need to focus on what's important! by Schraegstrichpunkt · · Score: 1
    What's the purpose of this course? If your goal is to teach the language, then do that; If it's not a "text editors" course, don't try to make it into one.

    In my experience (I took an engineering degree, so YMMV), it's largely a myth that students will learn more if you make the course more complicated. Rather, your students probably have a fixed amount of time that they will devote to your course, so you want to make the most efficient use of that time. If you make students spend more time learning how to use the text editor/IDE, then the students will either spend less time learning actual programming, or they'll spend less time on other courses.

    I suggest that you let the students use whatever environment they want, but provide them with a suitable option that you're willing to support. Learning a new editor is easy if you're a good programmer, so concentrate your effort on making good programmers!

    That said, any time somebody asks you a question, point them to the official specification, not the IDE, not a FAQ, and not some 3rd-party tutorial. Likewise, during exams, the official reference documentation should always be made available. Never encourage your students to pass off code that they aren't convinced is correct!

  184. Why not paper? by PeacefulKiller · · Score: 1

    On my college I've learned how to program both C and Java using nothing more than pencil and paper, we had no computers on front of us. Our classes consisted on the the teacher explaining to us a new topic and at the end of it we had to write a program on paper based on this new topic, this program was used to evaluate us. At the same time, we had a project which we had most of the semestre to complete outside classes, so we had to know how to use and editor and a compiler at least (I think we had a tutorial written somewhere that explained us how to use gcc). I learned how to program in these languages fine, and even today when I have to do a small program to test something or something like that, I don't use an IDE. btw, I hear that these days students at my college no longer learn through this method, they now use the Eclipse IDE in their classes.

  185. Use the java tools by fxj · · Score: 1

    Java has some decent IDEs and editors written in java. So start with e.g. jedit and show your students how to use javac and friends. When you later start teaching GUIs then use an IDE like netbeans or eclipse. By using jedit you can teach them how to use java in every-day life.

  186. Go with the IDE by Anonymous Coward · · Score: 0

    Are you really considering to teach those kids two things at one time? Getting them to understand programming will be hard enough as is. An IDE resembles something that's already familiar, which allows them to focus on the programming - instead of focussing on both VI and programming at the same time.

  187. Problems with java by The+OPTiCIAN · · Score: 1

    Part of the problem with java is that to write it the way Sun encourage you to write it you need to fuss around with beans (lots of typing to make accessors unless you have an IDE) and having a class per file and packages, etc. You spend ages setting things up right and refactoring is laborious using command line tools. I think the reason that IDEs are popular is to help come up with ways around these problems.

    I despise IDEs because they never work quite right and I find myself fighting their intention to reformat my syntax or to ignore complains about imports I've made for classes I haven't yet imported. Many also lock you in to using their platform.

    When I write java I tend to cram everything into a single Application class until I've stablised my approach to the problem. That's a RAD approach. If you want to do things the Sun way then you need to design things on paper first and then write it once you know exactly what you're doing.

    IMO, if students are studying CS then they should get a grasp of unix early on, and being useful with one of the cardinal text editors is part of that experience. There's just no need for IDEs and it's bad to lock students into ways of working that they'll later need to break out of.

    --


    Believe with me, my saplings.
  188. No IDE, please! by metalmario · · Score: 1

    I work in a small Finnish mobile games dev company, and curse that IDE! Most of the guys have never seen a makefile. All they can do is click the icons in Eclipse, and mod the ant files a little. All their coding is Java/XML. Objects. Our tehcnical lead insists on having a object oriented design with tens of classes. Image how much that takes space when LO END J2ME handsets have JAR limit of 64KBs...

    Force the students to code asm, C, C++, Fortran, Basic... Not just Java with an IDE. And somehow, force the students to code on their free time. Force them to like about what they are doing. And force them to learn about things. Like about learning. :)

    1. Re:No IDE, please! by tomstdenis · · Score: 1

      I work in the C world and my experience is the same. I often [like at least once per month] get a support request for my LibTom projects that involves the MSVC IDE, my code and "I globbed all the files into a project" despite the fact I have MSVC make files...

      A lot of "programmers" out there don't know how building software works, e.g. compile, assemble, link, load, etc. They just think "I click build and an .exe pops out". Which may work well for limited windows applications, but when you start doing real work and have to pull in numerous libraries or have odd linker scripts it isn't as nice.

      Tom

      --
      Someday, I'll have a real sig.
  189. Oh come on.... by ardor · · Score: 1

    You know, IDEs do not mandate usage of RAD, usage of bazillion wizards etc. Aside from RAD, the real advantages of an IDE shine when your project spans multiple large source files. The IDE has knowledge about the files the projects consists of (at least, there is a list of all files for quick access, something I REALLY miss in vim for example). Going further, since IDEs know this list of files, they can apply refactoring properly, which is incredibly useful. (Refactoring is something I miss in Visual C++.) Autogeneration of the build system files is another benefit of using an IDE (although I recommend to stay away from IDE-autogenerated autotools stuff; then again, I generally stay away from them).

    I prefer an editor for small stuff, like a helper application which consists of only one or two files. An IDE is overkill there. And yes, for learning how compiling & linking works, using an editor and a makefile is wise. (At least it helps later when linker errors appear, which is quite hand when the people don't know what a linker does.) But for bigger things, I prefer an IDE.

    --
    This sig does not contain any SCO code.
  190. Depends on the language. by jonadab · · Score: 1

    Some languages should be taught with an IDE, some with a text editor (in most cases, letting the students each select any text editor they like, _even_ if they pick Notepad, because it just doesn't matter for purposes of learning the language, although you should mention in passing at least once that there are much better editors available), and for some languages you can really go either way, depending on what your goals are for the course. Every student should at some point have to take languages taught with an IDE and languages taught with a text editor.

    C++ is an example of a language that should be taught with an IDE. Among other things, the documentation features of an IDE are really necessary. Even more obviously, trying to teach Visual Basic without the IDE would be ridiculous and pointless.

    Perl is an example of a language that should be taught using text editors, letting the students pick whatever text editors they want. Teaching Perl with an IDE would be like teaching algebra with pottery wheels -- it would just get in the way.

    Lisp is a special case and should be taught with Emacs specifically, both because there are features you just have to have (not least, grouping-symbol matching) and because Emacs is customized using a dialect of lisp. Also, if you're teaching lisp, it's too good an opportunity to pass up to slip Emacs in there, so that the students are exposed to that.

    I can't tell you which category Java belongs in, because I never studied Java, but I can tell you that you should set aside the advice of anyone who bases his answer on experience learning or teaching other languages with or without an IDE, and focus on the answers given by people whose experience is with Java, because this is a question that has to be answered on a per-language basis.

    --
    Cut that out, or I will ship you to Norilsk in a box.
  191. Depends on the language-smalltalk. by Anonymous Coward · · Score: 0

    How about Smalltalk?

  192. Depends what the IDE offers by DrXym · · Score: 1
    If it's syntax highlighting, proper indentation etc., then why not. If you're meant to be learning the language, why try and hobble your poor students by forcing them to learn arcane commands and keystrokes just to get some lousy command line editor working?

    They can learn about makefiles, and text editors later on when they have a general grasp of the language. Personally I see no reason that anyone should have vi or emacs inflicted on them ever. While they're handy for people who live in the shell, they are masochistic environments and there are countless numbers of very good, intuitive GUI-based editors.

    I used to use jed (a micro emacs) all the time in XP for quick hacking, but since I discovered Notepad++, I really don't see much need for remembering a bunch of crappy keystrokes. Jed is great and all, but it is a pain to configure (and emacs is a nightmare), and when I just want to edit something I really don't want to be sidetracked trying to convince the POS to indent with 4 spaces not tabs when it takes 2 seconds to do it in other editors. Notepad++ does everything I need of an editor and has useful features like tabbed views and syntax highlighting. For more in depth hacking I use the IDE provided with the language which for me means Developer Studio for .NET or C++, or Eclipse for Java, xml, wsdl or html editting.

    Makefiles are an interesting exercise later on after the basics have been learnt, but I'd argue that makefiles are not important until your programs reach a point that they should be split over multiple files. Besides which, makefiles have been supplanted with ant / nant. Unless the language in question is C or C++, there is little reason to be using make.

  193. Depends on the intended outcome by _Shad0w_ · · Score: 1

    It depends on what they're learning programming for.

    If they're actually going to be writing code for a living then starting with the basics - ie a text editor and command line tools - will give them a much better working understanding of the language and programming in general. Introducing them to an IDE later on will teach them how to use it to increase the speed of their development; larger projects are easier to work on when you have a decent IDE to hold it all together and the wizards can be a god-send when you actually understand the theory behind the code it produces. With the good grounding they'll also be able to see when the automaticly generated code is crap and it's better to do it yourself.

    If, on the other hand, they're just learning for course credit and having another string for their bow, sod it and start with the IDE because they probably don't need a really good grounding in programming; knowing how to produce functional, if not polished, code quickly is probably more important to them.

    --

    Yeah, I had a sig once; I got bored of it.

  194. Let them choose by pupeno · · Score: 1

    When code I use whatever I want and my employee only cares that the resulting code works (if he cares about my tools I quit; I've already did it when they tried to force me to use some tools).
    Why don't you do it yourself ?
    Teach the code, test the code, don't mind how they did it ?
    I would give a short intro and if they don't know any editor at all I would show how to use a simple editor (not vi neither emacs, something graphical and easy to use like kwrite or gedit or for the console, nano or j-something); but tell them that they are free to use whatever they want.
    Some may feel motivated to search for better alternatives and that search will be educational in itself. They are likely to tell each other about different alternatives and argue whether emacs is better than vim... that will be educational in itself; it happens in the real world; let it happen in the classroom.

    --
    Pupeno
  195. let them eat scsi by TheGratefulNet · · Score: 1

    I had to use scsi when I was a kid. if it was good enough for us when we were kids, it should be good enough for them now!

    --

    --
    "It is now safe to switch off your computer."
  196. Re:... Yes and no by Zemran · · Score: 1

    Although in general, I agree with you, I think that an IDE that allows the student to step through a programme and see where a mistake has been made, and follow values to see how they are changed, is an invaluable training aid.

    It really depends entirely on the course. When I taught at college I used an IDE but when I was teaching post-grads I did not as I was teaching concepts rather than training them to programme. The post-grads were big enough to go and use whatever they wanted when they walked away and got on with their projects.

    --
    I love stacking my barbecues in the shed at the end of summer - you can't beat a bit of grill on grill action.
  197. Python interactive prompt by Ricin · · Score: 1

    This is IMO _the_ tool to learn the language quickly. Test small pieces of code there, paste them together later. Teach them how to use the built-in niceties like doc(), dir(), ..

  198. Re:Not at first (Seperate code and GUI) by Anonymous Coward · · Score: 0

    I second this. However, what I haven't seen being mentioned is the importance of seperating your GUI and implementation. Most people I know switch to an IDE the moment they want to do GUI stuff: simply for the GUI designer. However, when you follow the rule of seperating your implementation and interface you won't need to use one:

    For Python: work code only, no IDE. Then if needed you could extend it with GUI programming with wxGlade or something similar. Keep telling them, they should be seperating their implementation and GUI and that a wel written class or engine can be put behind any gui they want.

    For Java: work with code only and maybe some templates WITH propper comments and explenation. Then you might use a IDE like Eclipse but teaching with an IDE, mostly, turns the art of coding into the bore of clicking.

    Coding is not about finding the right button on the IDE but about knowing which lines will trasnform your data into your awnser.

  199. Getting them to understand (i just graduated) by QX-Mat · · Score: 1

    I've always been a good coder. This has made my degree (i just graduated :D :D :D) quite boring in almost every respect.

    I dont think I learned anything. Most of my friend have never programmed before - or those that did used VB or called HTML a programming language. Scriptkiddies at the least.

    Both the scripkiddies and the never-before programmers had the same thing in common - they did know how to learn. They didnt know how to use help or documentation. Javadoc was mostly inaccessible unless it was generated. Refering to the online version was something they didnt think about - they wanted all the programs, skel code and teaching material in one place. Their mentality was that if it wasnt where their teacher put it, it wasnt right, too hard, and nothing something to invest time in. People like doing the bare minimum.

    To teach java, my uni used BlueJ - http://www.bluej.org./ It's quite nice! It's an integrated "IDE" (text editor honstly) with a visual class generator/explorer/maker. It makes understanding object relationships and inheritance easy. People dont get bogged down with the other principals they're learning, such as commandlines, SQL and ER.

    SQL annoyed the hell out of me because I knew it, and I knew how to do most things, it was the whole sqlplus command line experience on an unfamiliar terminal with poor codepage (charmap) support. I couldnt use backspace. It wasnt daunting to me, but it was to others. We all shared in common the annoyance that backspace wasnt going to work.

    In the end I noticed that most of my friend didnt understand what they were being taught in BlueJ. BlueJ has a lot of documentation. It introduces concepts such as hiding and coupling strength really well - but its quite a lot to ask in terms of reading something you dont understand. I feel a commandline input at the time would have really annoyed people.

    In the end most people didnt care about their introduction to Java and it serious stunted their work with ASML, C and their software engineering exercises. They didnt see the need to understand and take in what was there. Those that can program will wiz through the BlueJ material and go "oh yeh, that!" "of course" "duh, everyone knows that?"... I learned a few things such as guiding principals and terminology.

    The second half of our introduction to Java was applet coding. Very simple applets. Applets are annoying simply because they're GUIs. Before we did linear least fit algorithms and quadratic solutions as our assements. Applets have layout managers and for people to understand other peoples screen sizes and resolutions, and why absolute positioning is bad, it take a lot of time. A simple input and process applet that exports to a javascript skel is a good idea here. You can combine the whole commandline editor progress - a bit of nano or notepad - with the uploading via commandline to a webserver.

    The idea with splitting the programming and concepts up into BlueJ and commandline-applet thing was so we didnt get shocked when we saw the code to the applet. We knew the basics and what to expect. We built on what we knew.

    Its important people understand different environments. One of the things I find hardest in any kind of programming is setting up an environment - i want to compile now!

    Have everything in one location, all the evironment options setup and the skeleton source files availible. One zip file is all it takes.

    Matt

    My editor of choice is ConTEXT. My IDE is VS :( Its good :(. Netbeans and Ecclipse are overly complicated. I dont know where to start!

  200. Sounds Familiar by Sqreater · · Score: 1

    In amateur radio the old timers still insist that Morse code should be required of beginners. In a time when you can run your worldwide packet radio communications from a laptop while you sip a latte at Starbucks or connect through an orbiting satellite, oldsters still insist on new arrivals learning dots and dashes as if it were 1930. True, they want the requirement to be reduced to 5 WPM instead of 13, but, still, it is the requirement of an ancient skill that is no longer needed. It's more like a fraternity initiation than a practical need. It is an impediment to learning about what counts in amateur radio today.

    Likewise, teachers who insist on today's programming students learning to program using the command line, like they did in the 1980s, are merely taking great enjoyment in torturing their students in order to extend the life span of their own rapidly obsolescing skill base. Wrestling with the computer is not programming. Programming is solving programming problems using a particular programming language, not spending hours figuring out which switch to use to correctly compile your pgm on this or that particular machine using who knows what compiler.

    Today there are many powerful--even free--advanced tools to help students. IDEs like Dev-C++ and MPLAB and Eclipse make the underlying complexities disappear and correctly so. Compiler development is a specialty and programmers don't really need to understand what happens at that level.

    Oldsters, stop torturing your students to extend the life of your rapidly obsolescing skill base. Keep up with and accept change. You don't need to learn how to make a flint axe before you learn how to drive.

    --
    E Proelio Veritas.
  201. I'd say go without the IDE by Luthwyhn · · Score: 1

    I'm currently a CS Senior and this semester is actually the first I've ever had to use an IDE (C# elective, due to a lack of other options over the summer). Frankly, I've yet to see a substantial advantage to using it, and some of the features actually bug the hell out of me. I'd far prefer to use emacs any day of the week. I think that in our department there are only about half a dozen undergrads who regularly work in an IDE, and I'd say that, while they're probably no less skilled than the rest of us, they're slower, and far less flexible in terms of what they can work with (as in, without their IDEs they tend to be unable to work, which leaves them helpless when the Windows machines start acting up.)

    So to be direct, I say especially if these people are CS majors, go without the IDE.

  202. IDEs... by Tinned_Tuna · · Score: 1

    Personnaly, whilst learning to program (self taught, so having a teacher maybe different on this matter) I always found that an IDE simply bogged me down. I couldn't find buttons, the syntax completion often drove me up the wall.

    I do not know, having a teacher there to say 'this button does this' may sove this problem, however, it may not.

    Personally: no IDE.

  203. For the love of God, Yes! by Toreo+asesino · · Score: 1

    When I was learning OO/Java at uni, I noticed that most of my learner comrades, and indeed myself, would get caught out by trivial errors more than anything; missing semi-colons, etc. This would go un-noticed until running a javac, at which point I'd be looking at the biggest & dirtiest error-list since I decided to install Linux for the first time; just for one semi-colon!

    Of course, being new software engineering, I'd then spend the next 10 minutes looking at this bloody console output to decipher what was going on - completely distracting me from what I was actually trying to achieve.

    Now I'm a full-time software engineer and I use a good IDE, the trivial tasks are taken care of - I just have to focus on what's important; writing good software.

    --
    throw new NoSignatureException();
    1. Re:For the love of God, Yes! by demon · · Score: 1

      So your solution to poor coding habits is to depend on an IDE to do it for you? I don't think that's a good answer. You should have a basic understanding of the syntax of your chosen language - if a statement terminator is necessary, what it is, how blocks are opened and closed, and so on. Depending on an IDE to do it for you is a copout, IMO.

      What if, as others have mentioned, you can't use your IDE of choice, but are stuck with another that doesn't give you this feature? What if it's not available/broken for a period? What then? You just can't write code without it? I take advantage of vim's syntax highlighting, but I'm not dependent on it - I can still write code without syntax highlighting, autocompletion, or any of that. If you can't, you're not learning the language, you've learned the development environment.

      --

      Sam: "That was needlessly cryptic."
      Max: "I'd be peeing my pants if I wore any!"
    2. Re:For the love of God, Yes! by Toreo+asesino · · Score: 1

      Actually, my point was basically that it's important, for beginners especially, that any silly errors that you make while writing, be reported ASAP by the IDE - for which the vast majority of IDE's do as a basic level of functionality anyway. This prevents unnecessary confusion later on.

      --
      throw new NoSignatureException();
  204. Both. by IchBinEinPenguin · · Score: 1

    IDE's are great for getting predictable things done quickly. Once you stray outside what the makers of the IDS predicted you would do they start to work against you.
    Some also create truly awful code, the sort of stuff no-one learning a language should ever read lest they pick up some very bad habbits.
    So I'd say, teach them both. Emphasise that the IDE nice way to get simple stuff done quickly, but to really LEARN the language they have to use a texteditor and a commandline.
    Ultimately I think the latter makes you a better, more productive programmer. Some people don't care about that though, all they want is a simple way to do simple things (this is not meant as an offense, we all only have 24-hours per day and only some of the things that interest us are worthy of some of that time). Fine, teach them the IDE.

  205. IDEs by Vexorian · · Score: 1

    Some people are rather confused about what the use for IDEs is.

    It is not a tool so you could program without using your memory or to make programming easier

    But college level students should avoid python it is an awfully designed language which overrides the law that programs should have a start and an end because of its crazy syntax.

    --

    Copyright infringement is "piracy" in the same way DRM is "consumer rape"
  206. DrJava, BlueJ and washing machines.. by mattpointblank · · Score: 1
    I've just taken a course in "Introduction To Programming" at my university, one of the better ones in the UK (Leeds). Here they teach with an IDE, DrJava. I found it useful to take advantage of the debugging features using stuff like breakpoints and watched variables, but we were also made aware of how to use the command line to compile, although not extensively. I agree that working out code without the advantage of hitting F5 and seeing your errors highlighted leads to better programming skills, but at the same time, you could argue that people shouldn't use Word/OO/your editor here because they have spellchecking features which discourage the learning of spellings. We should all write in Notepad and check a dictionary for uncertain words. Sounds a little deconstructive, no?

    On the other hand, someone posted on the University's newsgroup a message about another IDE, BlueJ. To quote some of the professors:
    AJB: The main thing to watch out for with BlueJ is becoming too dependant on it. A number of students have had difficulty programming without BlueJ once they have learnt to use it.
    NDE: Absolutely. Last year, a worryingly large number of our students thought that the programming language that they had learned was called BlueJ!
    This response was the reason they switched us to using DrJava, since BlueJ apparently uses a visual representation of classes and objects to aid understanding. I'm in favour of IDEs for the ease of use but I think it's important to be aware of the other methods, just like anything else. I don't clean my clothes using a mangle and washboard, but I appreciate that people did (do?) and it's a useful option for learning how to clean my clothes properly when I can't get access to a washing machine (or something..).
    I'm hoping that, this year, we don't get a similar number thinking
    they've learned a language called DrJava
    1. Re:DrJava, BlueJ and washing machines.. by mattpointblank · · Score: 1

      Uhh, not sure how that quote ended up at the bottom there, apologies everyone.

  207. Without ... then ... with by Evil+Pete · · Score: 1

    Start without an IDE to show how it actually works. Once they can write stuff without an IDE. Show them the advantages, and disadvantages of an IDE.

    If you learn without the IDE then using the IDE is easy. If you only learn via an IDE, say Brand X IDE, and the IDE changes or has a bug or your employer uses, and insists, on another then you have a problem.

    IDEs are useful but if you 'need' one then you don't really know how to program. OK that might be flamebait, but it's true.

    --
    Bitter and proud of it.
  208. Depends on what you're teaching... by msgoetter · · Score: 1

    If your teaching application design fundamentals and object oriented architecture, use the IDE- language specifics will just slow the students down.

    If you're teaching coding techniques and overall programming efficiency and style, don't use the IDE. That's where knowledge of all the little language tricks is important and you want to force students to dig more into what the langauge has to offer to solve problems and write more efficient code.

  209. Rediculous! by captainwasabi · · Score: 1

    How can anyone be "old school" with a subject that is only decades old. OF COUSE YOU SHOULD USE IDEs. The most valuable think you can teach is how to use the debugger. Writing good code is an engineering dicipline, and unlike something like civil engineering, the tools for developing software have not evolved over many millennia. You should also know that the tools that your students actually use over their careers will be sooooo much better than the tools you teach them to use. This is the observation of someone who both learned and taught comupter science 25 years ago, then went into the private sector. Because I didn't want to learn what HAD been done, but was more interested in WHERE things were going, I didn't worry too much about languages like COBOL. I knew systems like ORACLE were coming. Pascal was relatively new, and was worth learning, but there was this edgy language called C that we spent some time on in a language survey class. It seems like we used sharpened sticks to kill the elephant, but with my 2006 goggles on, I see that the elephant was a mouse. How did the elephant turn into a mouse? I GOT BETTER TOOLS!!! Better languages (C++, Ruby), better development environments, better debuggers, better utilities (Rails, STL, Php). Would you teach a civil engineer to build an interstate spagetti bowl interchange without using a transit? Computer Scientists are still building Rube Goldberg devices, is it a suprise to you that many poor programmers want the uninitiated to see programming as an art, not an engineering dicipline?

  210. IDEs? HAH! by cpux · · Score: 1

    In my experience, it really helped me in the long run to not have IDEs in introductory programming classes. The first programming class I took (C/C++), we wrote our assignments in text editors, compiled them, and prayed that they would work. It really helped to get the common kinks out early, and even today I don't make the stupid simple mistakes because I learned to spot and get rid of them early on.

  211. All of the above. by Anonymous Coward · · Score: 0

    I think that a good class includes every option which has been mentioned in the threads. When looking at Java (my favorite) I think you should start by teaching them the basics of OO programming and the way Java works. You don't need computers for this. Then you can go on teaching basics like flow control, inheritance, dependencies, etc.

    Then when its time to start looking at simple programs just get them to work these out using a plain text editor and make them compile the programs themselves. This will not only teach them the things under the hood but also teaches them the way things are layed out. For example; when you're creating a Java package which a few classes you really need to be on the commandline to get familiar with the used directory structure (say; org.slashdot.Header() and org.slashdot.Flood()):

    org/slashdot/Header.java
    org/slashdot/Flood.java

    And after you have teached them all of this its time to slowly move on. At best you let the students create a basic API using the CLI tools and at a later stage when you've introduced the IDE bring out the API they previously made and link it into the IDE as a basis for a more advanced program. That would teach them that there really is no difference between CLI based programming and IDE where the language is concerned. It will also give them a good impression as to why you'd need standards.

  212. What I've used by Ant+P. · · Score: 1

    I haven't had many good experiences using IDEs. Right now the only one I use is Quanta for web stuff, and even then I only use it for about 4 features. What I really can't stand are the ones that take half the control away from the user. One other thing - unless you've got fast PCs, avoid Java-based IDEs. Otherwise you'll be wasting most of the time waiting for the damn thing to load.

  213. Need both : CLI first, IDE second by alas_anon · · Score: 1
    You eventually need to give the student both.

    I've been teaching C++ and Java for seven years. I've found that the most effective method of introducing any language is to start back at the command line compiler and a text editor. The student should understand where the compiler components are and how to manually set paths to their working directory.

    Later on, when they start to use an IDE, I have them go look through the builder generated code and try to find the code that they put in.

    As an interesting and educational lab I've assigned them to create html builders. They really catch on to what a builder is when they write their own builder.

    Another controversial subject is whether to start out teaching objects or leave them for latter. I usually leave them for latter so the student can focus on logical statements and flow control using simple primitives. Full understanding of objects comes latter when the student has programming capabilities to see why objects can help control program and data complexity.

  214. I'd say... by Kjella · · Score: 1

    ...to let people use an IDE, but don't make the assignments focused on what the IDE can do (e.g. window/form layout), sending stuff from one window to the other with "onClick" functions, automated code wizards and so on. Create assignments that'll require them to create their own classes, their own functions, their own structure in the software. Honestly, I know about assembler and .obj files and the linker (plus uic and moc which are Qt-specific), but apart from fixing those wierdo bugs (oh, I deleted the redundant body but not the declaraction) I really don't care.

    Good software comes from focusing on structure, which in my experience isn't what you learn in emacs/vi/notepad (hey, did I just manage to insult both of them?) because you get way too busy with syntax, spelling and indenting. IMO the best learning environment would be an IDE with a disabled compiler. The important part is really that you use your brain to program, not the compiler.

    --
    Live today, because you never know what tomorrow brings
  215. Teaching IDE vs. Non-IDE by tbriggs6 · · Score: 1
    I am a CS professor (but I don't play one on TV). Our department held this argument several years ago. I believe that pedagogically, the answer depends on the course you are teaching, specifically what are its course objectives.

    For example, we teach a CS1/CS2 sequence of courses using an Objects-First curriciulum. In our CS1 course, students are exposed to a wide variety of "theory" (e.g. OO design and modelling, inheritance) and they are also exposed to language / syntax issues (e.g. loops, arrays, conditional execution).

    I wrote a lab manual for our students to use, and the very first lab gives them information on the role of the compiler, including translating this stuff called "source code" into this stuff called "byte code" which is executed by this thing called the "virtual machine." In this lab, students write a stupid program (hello world, I think), and they compile it manually and run it. Then they do the same thing with an example that they are told contains errors, and they have to find the error and fix it (the class name doesn't match the class file name - Java *hates* this). This is the only lab where I have them using the command line. It teaches them that they *can* do it if they want; and that there isn't any magic behind the compiler.

    The second lab uses the Eclipse IDE, and we redo the first lab (including trying to recreate the error). Then, the lab guides them through writing classes using Eclipse's code generation wizards (which, IMHO are *WAY* cool).

    As the semester progresses, several new tips are introduced (e.g. after encapsulation is taught, and they've written 30 or 40 getX and setY methods, I teach them the generate getters / setters wizard).

    The final plug for using an IDE isn't in the editor - its in the debugger. There are few things that appeal to the visual learners (that studies show a statistically significant portion of CS majors are) like watching code execute through the debugger. Students who are having a tough time building mental models of how this stuff works can actually see every instruction execute through the debugger - and it really helps.

    I've been a CS professor for 6 years (at a "teaching" school), and have taught a wide swath of undergraduate and graduate, lower and upper division courses, and in all cases I've found that introducing students to apropriate tools helps them keep their attention on the important subject material (in the case of intro programming courses that is learning how to use the language and solve problems). Isn't this what its all about?

    1. Re:Teaching IDE vs. Non-IDE by Sqreater · · Score: 1

      In my never-humble-opinion, yours is the way to do a modern programming course.

      --
      E Proelio Veritas.
  216. Java IDEs by jws1000 · · Score: 1

    In the case of Java I would say not to use the IDE for a class. This is because the IDEs use features of Java that students are not ready to deal with on the first day of class, such as packages. I found when I taught Java that the students who used an IDE had a much harder time than students who just used something like Textpad.

    1. Re:Java IDEs by alas_anon · · Score: 1
      Exactly.

      There is too much complexity to explain if you start with an IDE. It is too much at once. The only way around that problem is to let them think it is magic and hope you can circle back around and teach it later.

      A lot of teachers just ignore the explanation and the student finishes the course with the mistaken impression that their program is part of the builder. Student: "No, it not not Java, it's NetBeans".

  217. 50/50 by pvera · · Score: 1

    I have been programming for about 18 years, so I had my fair share of plain text editor v. IDE.

    If the IDE allows turning on and off enhanced features, then disable:

    1. Intellisense or anything similar that suggests code for you.
    2. Code generation wizards.
    3. Anything that will rewrite whatever you just wrote.
    4. Magic database tools from within the IDE that will "design" your database for you.

    I find the following features helpful in quickly teaching a new language, so these should not be disabled:

    1. Context-sensitive help
    2. Pop-up method lists that work on hovering, not as you type.
    3. Pop-up argument hint lists, to show you the arguments and data types the specific function wants.
    4. Hooks to online version of docs.

    The biggest trap in the IDE world is the tool v. language argument. Your students need to learn the language, not the damn tool. You are not an Eclipse or VS.net programmer, you are a Java, C# or whatever programmer.

    The two worst things for a n00b (that really needs or wants to learn, not for the casual geek that is just screwing around) is that the intellisense-type auto completes and the wizards will not teach them why they are doing what they are doing. Once they know how the damn thing works, then it is OK because the tool helps them write faster code with less errors.

    I spent the past four years or so sharing my time between classic ASP in a legacy app, and building its replacement app in PHP. Both through BBEdit. It was not a lot of fun. I am at a new job and we use asp.net here, a platform I had not used for the four years I worked at my previous job. It took me two days to get back up to speed.

    Why?

    Because I already knew asp.net programming, so all I had to do was to get re-familiarized with Visual Studio, which had gone up three versions since last I had used it. To make things interesting, my previous experience was with c#, and this shop uses mostly vb.net. It did not slow me down a bit.

    We need to teach new programmers the old and sacred ways we used to be able to pick up arbitrary languages with nothing more than a good reference and a decent text editor. Or Emacs. I know plenty of people of reasonable intelligence, and not even driven psycho geeks, just your average slackers, that have picked up php, perl, ruby and python without much drama. Why? Because long ago somebody bothered to teach them how to program.

    There are of course languages that are close to impossible to deal with without the proper IDE, but most these lessons still apply:

    1. Make them write their own code.
    2. Give them as much context-sensitive help as possible.
    3. Make them write their own code.

    --
    Pedro
    ----
    The Insomniac Coder
  218. At least use a syntax highlighting editor by CodeMinion · · Score: 1

    Using a traditional editor will have students gazing at incorrect language constructs while flipping back and forth between whatever they use for reference and the application text trying to spot the error. Repeat an error a few times and it becomes a habit, look at syntactically wrong code for a while and it becomes a recognized pattern. All counterproductive to actually learning the new language constructs. A syntax highlighting editor will let them see immediately when they enter something incorrectly and allow them to correct it before it forms a habit or becomes a recognized pattern. In general any tool that enhances the speed and accuracy of learning valid language constructs has to be a boon to the goals of your class. Teaching language X has little to do with developing logic skills. What it does give them in spades is adaptability to new languages. The more languages someone learns, the easier it is to learn a new one. When they get that first new job and the language is _, the more languages they learned in school, the more likely they are to already know _ or to be able to pick it up quickly. If you have secondary goals for the class, use those for determining whether an IDE would be a benefit or a detriment. Learning to code is a never ending process. Different people learn better in different ways. I would tend toward allowing options that will enhance each students ability to learn while minizing the requirements that they all learn a specific way (ie. with or without an IDE in this case). Give them a goal and expose them to tools and let them choose their own way, no one solution is ever perfect or the best.

  219. My experience by JeffTL · · Score: 1

    A couple years back, I took an introductory C++ course at a public metropolitan university in the American Midwest. While there was no way the instructor of the course could determine what we were using to edit our code, in both the course and the optional lab we were first instructed to use our choice of either pico or vim, and were later encouraged to exclusively use vim.

    By about halfway through the course, I was using Apple Xcode -- initially more or less as a text editor, but I did use it as a build environment with a proper project file and such for my honors project at the end, which spanned several files.

  220. Both by Metasquares · · Score: 1

    Teach them how to use editors like vi or emacs for small programs, then show them how to use IDEs for larger ones. Let them make informed decisions about their development environments.

  221. Re:... Yes and no by jellomizer · · Score: 1

    COBOL for a CGI problem
    I never did COBOL as a CGI program. But I did use Fortran 77 to make a game of Tic-Tac-Toe over the web. After that class the Fortran Professor took the Undergrad Internet programming class to understand what I did. Later one of the Stupid Professors (Who hires people who are Minoring Comp-Sci, to create code examples for her class, and grade her papers.) started teaching the class and unfortunately the students really lost out in that class. The never really understood what makes a Server Side Web Site. ("Content-type: text/html\n\n" as the header through standard output, if the form is type PUT then you get input in Standard input, if it is type GET then you need to check the Environmental Variable=QUERY_STRING, and print your HTML threw standard Out as well). But she was so stupid that she gave an assignment to research Server Side Web Programming languages. Where she assigned different languages some good for easy Web Development others which are not, and some that aren't a real programming language!, but a Database server. And now to bring it up the point of the topics of IDE or Not. I would say if you are able to explain the concepts of the languages and the students will be able to use these languages with an IDE and Not. Make sure they know why the language is the way it is more then how to do it their way.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  222. Re:... Yes and no by Anonymous Coward · · Score: 0

    ant is one of the best reasons for using an IDE, the other being fast GUI Design.
    Especially in a language like java that allows you to save and load XML files, without even taking a look at the concept of a parser.

    As soon as you start using anything in java.util.* or an equivalent, advise an IDE and optionally give them a quick lesson in package management.

    Last but not least: The programs should still be compiled and presented on your friendly neighborhood UNIX Server;-)

    P.S.:
    German native speaker abusing Oxford English, Grammar Trolls required.
    *duck*

  223. Re: Have you ever taught first time programmers? by RealBeanDip · · Score: 1

    You can't teach first time learners effectively with notepad and command line compiling. They won't understand why you're doing it and what it's doing for them.

    And that isn't effective teaching.

    To teach effectively, you have to know WHAT you're teaching, WHY you're teaching it and HOW you're going to determine your students learned it (and to what extent they need to have learned it).

    The WHY you're teaching something is the most important (IMO) because if you can't define (and convey) why something is important, then your students won't think it's important either. Trying to effectively teach someone WHY they need to know how a command line compiler works is going to be so incredibly difficult (remember, they have ZERO experience with programming, at best they've made an html web page) that they are going to turn off as far as learning goes and fall back to the "what do I need to survive this lesson mode" - which doesn't make for good learning.

    The best way introduce people to programming (IMO again) is to start with an IDE and get right to the meat as quick as possible. IDE's take care of the management of code and they offer suggestions on syntax errors (IDE's like Eclipse for instance). There are less over-bearing IDE's, like BlueJ (http://www.bluej.org) made for beginners (fwiw I hate bluej, but whatever, some people like it).

    After the student has seen some results and bought into to the "yes, I need to know more" mindset, then you can introduce the compilation process, make files / ant / whatever - but you need to be clear as to why you're doing it. If it's "just so you know", then guess what, students have plenty of "just so you know" information shoved at them everyday and for the most part they "just forget" it.

    --

    You know you're a geek if you've ever replied to a tagline.

  224. Use an IDE, but carefully by DavidMatuszek · · Score: 1

    I've been teaching intro Java at U. Penn. Here are my opinions:

        * Students SHOULD learn to do everything "by hand", because IDEs
            and languages will change out from under them.

        * Using an IDE does NOT mean that they won't learn all the underlying
            code; not all IDEs write code for you. I've been using BlueJ the
            first semester and switching to Eclipse (without the GUI builder
            plugin) the second semester. Next Fall I plan to start with Eclipse--
            and, since I don't believe in teaching two things at once, teaching
            Eclipse before really starting to teach Java.

        * The problem with starting with a simple IDE (BlueJ) is that some
            students resent having to switch to a "real" one later on.

        * I try to teach what is important to my students, rather than trying
            to "teach Java." In the quote real world unquote, not knowing how
            to use a good IDE is an unnecessary handicap; but left to their
            own devices, most people will stick with vi or Notepad forever.

    Just my $0.02.

  225. i do believe in a good ide by darth_linux · · Score: 0

    but hate wizards. and the GUI insertion tools (such as visual studio) can be to root of alot of bad/not-understood code. students should have a basic ide. i even resport to KDE's kate.

    --
    Power to the Penguin!
  226. keep it in perspective by Anonymous Coward · · Score: 0

    consider this: java and python are "high level" programming
    languages. "high level" programming languages are made so
    they're easy to use ad give you many "pre-made" components,
    like access to mouse, display maybe even soundcard. in high
    level languages you don't have to implement these "libraries"
    if you don't want to.
    i think for high level languages with many pre-made libraries
    it's completly and utterly necessary to use a IDE. you have the
    tools, use them. the students will have treasure throve to dig
    into for maybe something personal they want to do. (geee, writing
    a dialog box or such from hand is ... well ackward, but being
    to draw it with a mouse and have the IDE spill ou the code, that's
    neat.)obvious.
    JAVA with it's crazy "blaH.bLaH.BlAh" syntax needs a IDE with syntax checker
    anyway. (who's doing java anyway? python rulez)
    if you're doing assembler it might be useless to use a IDE.
    then again writing a GOOD IDE for assembler might be a formidable
    task indeed >:)
    so, high level programming languages = IDE YES.
    low level = IDE probably useless ...
    2 cents

  227. Re: With IDE or without? by azrider · · Score: 1

    As a programmer, I would suggest that you start without an IDE. It has been my experience that most IDE's provide a "suggested" way of doing things. If the outcome of the suggestions is not what the student intended, they will be hard pressed to determine why. Once the student has mastered the concepts of the language, then an IDE may make their life easer, but it may well make their life harder. Take, for example, an IDE that automagically allocates space for variables. If you have a memory leak (or the dreaded buffer overflow), finding a variable that *you* declared is much easier that finding the one (often incomprehensibly named) variable that your IDE defined to "make your life easier".

    --
    And ye shall know the truth, and the truth shall make you free.
    John 8:32(King James Version)
  228. Academics amuse me... by danwesnor · · Score: 1

    You're supposed to be teaching programming. The less time you spend teaching them a new editor, the more time you spend tecaching them programming.

    I remember we had an algortihms class that the instructor decided should be taught using PL-1* on an IBM 360 mainframe**. We spent the first 2 weeks learning JCL*** to get our code to compile, the next 4 weeks learning PL-1, and after the first half of the quarter had been wasted, we finally moved on to the subject he was supposed to be teaching us. Look at how useful all of that is now.


    *PL-1 = Programming Language 1. Somebody had a burst of creativity that day.
    **Mainframe = A room-filling computer that was used before there were minicomputers. They were not capable of playing Doom.
    ***JCL = Job Control Language. Like a shell script, only with an anal retentiveness for formatting that would make a Fortran compiler look like a pothead.

  229. It's all about the debuggers by CTho9305 · · Score: 1

    The only good debuggers I've used were part of IDEs. I don't care what linux geeks say - if they'd get past their "Micro$oft is teh satan!!1!" attitude, they'd discover how much they're missing out on (the Visual Studio debugger) when they use stuff like gdb/ddd. If you want your students to grow up using debuggers, give them an IDE. If you're ok with them deciding printf-debugging (i.e. printf's everywhere) is better than figuring out how to use gdb, well, have them use independent tools.

  230. using an IDE doesn't tie you... by Anonymous Coward · · Score: 0

    Using an IDE doesn't tie you to a specific technology has had been wrongly said here. Walmart.com, for example, on the server-side, is running Java. Developers have the choice to use the OS/IDE they want: Eclipse, IntelliJ IDEA or whatever they think fits.

    I've always got at least IntelliJ IDEA (using an emacs plugin) and XEmacs opened simultaneously. Switching from one to the other to work on a same file is a matter of three or four shortcuts (wether you do synchronization "by hand" or using some VCS). Last time I did it I needed to modify a codebase using lot's of System.out to use log4j: I'm not so familiar as to how to call Un*x commands from IntelliJ IDEA and easily see the result (and easily recover in case of mistakes, etc.). So a quick switch to XEmacs, opening the file, doing the mods, back to IDEA, re-synch and that's it (now there may be even faster way to do it, but in my case, it worked, and it was fast). I call fscking bullshit on the trolls saying that using an IDE tie you to the IDE.

    I see the main benefits of modern IDEs in two areas: refactoring and static code analysis. Using a good IDE (IntelliJ IDEA) and good programming practice can greatly help when programming. I'm an old-schooler: I still use vi when there's no X Window System and I still use (X)Emacs a lot. But modern IDEs are just too powerfull: what is the point debugging a program just to find that you returned the wrong value inside a function/method when an IDE would have helped you spot that mistake instantly ("warning, variable xxx is assigned but never used"). Some cowboys here may say "newb!, I *never* do such dumb errors", but I call bullshit. I've been programming since 20+ years and still do these mistakes once in a while. But now it's spotted instantly: no need to manually compile, not even unit testing needed to spot that error and... Certainly not debugging. Instant IDE warning.

    And there's better coming: check the Spec#/Specsharp demo (I'm not a MS fan boy at all, but this is impressive). Design by Contract added to C#. Then you're IDE does real-time analysis of your code and warns you if it thinks some contracts will be broken.

    I use @NotNull extensively in Java (recognized in IDEA) and having message like "warning, variable xxx may be null" is convenient.

    For the student, the question is: is there a point letting them write code with stupid mistakes that would have been detected instantly by a good IDE? Quite honestly I don't know, I'd say maybe. They have to understand how it works, how a debugger works, etc.

    But for "experienced" programmers, I say no way.

    And I call bullshit on the clueless fucktards saying it's either one or the other.

  231. it's not a decision between IDE and Vi by Anonymous Coward · · Score: 0

    Because there are things in between. Students will need to be proficient with at least one text editor, be it Vi, Emacs, the one built into $IDE or something else.

    So better tell them, they need to use a text editor, recommend the use of Vi or Emacs and offer some other editors. Those familiar with those ill-designed mouse-based editors on that other platform might chose NEdit in the end, some might even elect to slow down their progress by dragging in a heavyweight of an IDE, but it should be their choice.

    BTW, I grew up with the Turbo Pascal IDE. Today I'm using Vim and the best IDE ever invented, which is Unix.

  232. Nah... by Morosoph · · Score: 2, Funny

    Cat is the way to go. As follows:

    $> cat > hello.c
    #include <stdio.h>

    int main (void) {
            printf ("Hello World!\n");
            return 0; /* success */
    }
    ^d
    $> gcc hello.c
    $> ./a.out

  233. The Art vs The Science by hotsauce · · Score: 1

    I think our field hasn't yet properly distinguished between the practice vs the theoretical. Other fields recognise the different subfields: medicine vs research, engineering vs science; but we do not.

    Let's distinguish between programming (the art) and computation (the science). If you're teaching computationalists, starting with theory is neccessary. But if you're training programmers, I think you need to dive into computers and programs and IDEs. The latter is at least partly because of the kind of people that would like to become programmers; if I was crazy about pottery, took a course, and it was all about clays and history and there was never an opportunity to touch a potters' wheel, I think I'd drop the course, maybe even give up on the field, and buy a wheel and teach myself.

    I think both programmers and computationalists need to learn common concepts, but for the most part you are teaching people with different interests and aptitudes, and after the first couple of years, expect the neccessary courses to diverge significantly. Doctors and neuroscientists do not take even vaguely the same courses after the first few years.

  234. My Experience Teaching by dcollins · · Score: 2, Informative

    I also teach at a community college for the past 4 years. The students need a LOT of help (you'll be flabbergasted) -- enrollment is down 50% in the last few years all over the country, administrators tell me students are "scared" of programming, etc.

    Here's what I do. Get the best book you can find and work lockstep with that book. Do the same in class as they'll be seeing in the book. They don't have the capacity to learn multiple environments and compare & contrast mentally.

    For me, I fell in love with Lewis & Loftus "Java Software Solutions". It comes with a CD with all the code, SDK, and free jGRASP IDE (and very good supplemental materials). So that's what I use; students just install everything on the CD and they're good to go.

    Having my materials all strongly synchronized is more important than any particular ideology to me. If the book emphasized command-line work I'd do that. (I do have a single handout describing command-line development which more advanced students might wish to pursue.)

    --
    We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    1. Re:My Experience Teaching by NeoSkandranon · · Score: 1

      I've used two L&L books, and the jGrasp software, and rather liked it. Most of the defeciencies in the classes (two sems of Java and one of Data Structures) were due to professor incompetency rather than the course material. I *very* much liked the abundance of examples in the text.

      jGrasp wasnt covered much in class, as the engineering/IT network had the command line java compiler installed, but NOT jgrasp (licensing issue maybe?) so students were on their own as far as getting it to work, but I found it much easier than notepad (hell i did most of my work at home in UltraEdit, at least it does syntax highlighting)

      --
      If you can't see the value in jet powered ants you should turn in your nerd card. - Dunbal (464142)
  235. An observation by hotsauce · · Score: 1

    Sorry to reply myself, but I also meant to make an observation. I can still remember my college days, and I remember getting very frustrated over small problems, such as forgetting something on the classpath. I remember thinking I could read the theory myself, but I needed the professor for the problems that arose. In hindsight, perhaps the professor would have been best used for helping with elegant code. But do not leave the students to implement alone, unless you have a lab staffed with TAs on the weekend.

  236. it depends by rjhubs · · Score: 1

    If you are trying to teach your students programming concepts, then an IDE is better. But if you are more concerned with them learning the language, I'd stay away from IDE's

  237. Punch cards and toggle switches... by Caduceus1 · · Score: 1

    Let them start out with punch cards and toggle switches...make them WORK to program. They can learn binary, hex, ASCII, and how computers work all at once.

    Sigh...for the days of deugging assembly with just a pencil and paper, step by step...

    After they pass that course, then they can use whatever the hell they want.

    I've had a studnet argue with me that UNIX (circa '92) should have included graphics libraries. I argued that if he was a CS major he should have been able to program them himself.

    I've had people in an Advanced UNIX Programming class that had only ever programmed in Turbo C++.

    I knew of a CS PhD candidate who only ever used a Mac.

    They will never learn the implications of their programming if they don't learn it the hard way.

    --
    rm /dev/mem
    Sci-Fi Storm
  238. You don't have random access paper? by MarkusQ · · Score: 1

    Nope. Bad idea. A good program isn't written serially in sequence. Parts are added and deleted as requirements change and parts evolve. What's more having code in computer form makes it searchable.

    When is the last time you wrote a non-trivial piece of code in sequence? Be honest now.

    What are you working on, a roll of masking tape? Or one of those old egyptian reed scrolls?

    We've got random access paper now. It comes in sheets of various sizes and you can hop around all you want.

    --MarkusQ

  239. Vim'n'Joe for starters by Dragon_Hilord · · Score: 1

    I personally use Vim and Joe to write C++ in linux. For windows, I am more relaxed with an IDE. I'll tell you though, tha writting the basis for an operating system kernel is best written without the distraction of "special features" as you will not be able to use most of them. I recommend you just use your best judgment, and what you would use to teach yourself. For me, that would be using Vim and Joe, writing custom makefiles (a VERY usefull skill) as well as mastering utilities such as automake and autoconf, etc. It all depends on your taste in the end though

    --
    Cheers, DH.
  240. Re:... Yes and no by Rostin · · Score: 1

    You think your sig is a problem, you should try mine. :)

  241. Let them choose! by Wilwayco · · Score: 1

    Um, programs are just text files right? Many popular CS-languages have commandline compiler executables also, right? Let them choose.

  242. !(CSCI-204: Principles of Drag-n-Drop Programming) by AngryNick · · Score: 1
    Whatever you end up using as a teaching tool, PLEASE make your students write at least some code by hand. In the 15 years I've been in the business, I have seen a large degradation in the quality and performance of even the most basic projects.

    I attribute much of this sloppy work to a growing dependency on the IDE and a fear of writing anything by hand. With advent of the modern IDE, with its fancy properties tabs and auto-magical code inserts, the "Drag-n-Drop generation" is becoming disconnected from their code. I'm constantly hearing "I'm afraid I might break the page," when asking for a minor change to layout or functionality. This tells me that the coder has no idea what makes the page look the way it does and that there is probably some scary stuff going on under the hood. (Unfortunately, company policy prevents me from calling the guy a wuss.)

    To me, good code means that the programmer understands why it works and has the confidence to turn it upside down and shake it without fear of breaking it. I'm not against VI or syntax highlighting -- not even autocomplete or code snippets -- but I think 99% of the work should be taking place on the "Source" tab and that the "Design" tab is only there for the "Computers 101" class.

  243. It gets worse. by BitwizeGHC · · Score: 1

    A girl I knew in college, a sophomore or junior, thought that a compiler worked by using a magic chip located on the computer's motherboard. She was concerned about being able to put Borland on her laptop and have it still work -- laptops of course lack the "compiler chip". She was a high-GPA, CS major.

    I tell this story frequently as being illustrative of the current state of CS education.

    --
    N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    1. Re:It gets worse. by Anonymous Coward · · Score: 0

      Well, that is the case with other applications (e.g. art packages). It's called a copy-protection dongle :-)

  244. For Java, yes... by fitten · · Score: 1

    I tried to write some non-trivial Java code about three months ago after not programming in Java for a few years. I started out just using vim and my own makefile thinking that it shouldn't be so hard. It was a *mess*. I spent days just dorking with the environment variables to try to get the thing to compile. Once I got it to compile, it wouldn't run. Dorking around more got it to run, but I then couldn't compile anymore. I gave up and fired up Eclipse and let it handle all that crap for me so I could get down to business doing what I needed to do in the first place... writing the damn app itself.

    1. Re:For Java, yes... by Dragon_Hilord · · Score: 1

      No offence buddy, but that is just lack of use. Once you get back into your vibe, its easy. I never forget a variable name myself, so that kinda' helps. I avoid using features like that because I rely on my memory if I ever get caught with partial code or something. It's not fun looking things up.

      --
      Cheers, DH.
  245. Great way to build interest in your course by MarkusQ · · Score: 1

    And as for your subject line about "killing interest" in the course, you've got that backwards. It's much easier to get people involved and engaged with each other than with an IDE. For instance, divide them up into teams that have to write bits code which the other team has to check for bugs. Keep score. When they get good at this, make the challenge to be for the coders to slip security holes through. It gets interesting early and can stay interesting for a lifetime.

    --MarkusQ

  246. DrJava, a simple IDE designed for teaching by andrejbauer · · Score: 1

    I teach introductory Java programming to students who have had about one semester of basic programming already (loops, basic arrays, stdout). In the previous course they use Textpad and compile "by hand". I start with a simple IDE that was designed specifically for teaching, it is DrJava, see http://www.drjava.org/ . It's open source and was developed at Rice University. There is also its cousin DrScheme, see http://www.drscheme.org/ , for teaching scheme. The main features of DrJava are: simple editor, "compile all" button, a simple debugger, and (very useful for teaching) a java "command line". The command line is cool because it allows interactive work. I don't have to recompile every little thing just to show them how simple things work. Later on in the course we switch to Eclipse.

  247. Learning programming != Learning an environment by Anonymous Coward · · Score: 0

    In the end it is the language you want students to learn. Students should know that there are many opinions and options on how to program, i.e. with or without an IDE. As long as they learn to program, debug en test properly I don't really care about how. Maybe even let students choose.

  248. Re:... Yes and no by JimmehAH · · Score: 1

    O/T, but I really love your website.
    Loading up your resume made me think of the Alien films.

  249. Re:... Yes and no by fpu · · Score: 1

    It can get uglier than this -- third-party libraries, external utilities and other tools which are used daily for programming but which introduce non-programming-related issues in the process, such as deciding whether to use the vendor-provided packaged but sightly out of date version, or the compile-and-install yourself one, can easily add to a lot of variables that newbie programmers should not be burdened with. Issues like messing up /etc/ld.so.config so that your dynamic linker can find your just-recently-installed library, or messing with command line arguments in makefiles because they cannot install libraries and header files in the standard system locations -- this is the point where things start to look very blurry to students, and they just struggle to get their code running, most of the times making random changes to their setups which they read somewhere they found by googling on error messages.

    Yes, most of this can be solved by having a competent system administrator that installs and tests every required library and external utility in standard locations, and makes sure every student system is setup the exact same way. But if you're not doing it properly, you end up supporting not only your students' programming troubles, you will also need to be able to debug their entire programming environments, which is not really the point.

    That said, I do know that Python and Java can do a lot without external libraries, and thus the possibility of the previously described scenario develop is relatively minor. But that does not mean that your classes should be taught without any attention for these 'minor' details, because things might evolve in a different direction that what was originally intended during the course.

    --
    /usr/games/fortune: command not found
  250. Re:... Yes and no by MoneyT · · Score: 1

    Speaking from my own experience, I would say that learning assembly and very low level languages first was quite helpful and eye opening as well as to a degree entertaining that sort of deep down control gives a bit of a better understanding about what's going on as you get more abstracted. It also gives a good appreciation for a concept which so many of my fellow students found hard to grasp (why write a function when you can just code two lines in and do it on the fly).

    --
    T Money
    World Domination with a plastic spoon since 1984
  251. too late to decide by George41 · · Score: 1

    If you are not going to use an IDE the only really useful choices are punch cards and writing the program out on paper first. I mean really if you are going to avoid an IDE it can only be because you are trying to get them to slow down and really think about what they are doing. Even EMACS is going to let them fall into the edit/compile quick loop problem. But it is going to do it without the helpful things that an IDE can do. If you want to have students really learn than you want a tool that can help teach and that is what a good IDE does. Why aren't you asking this question in a forum for teachers BTW? Something like the Advanced Placement Computer Science Teachers mailing list (http://lyris.collegeboard.com/cgi-bin/lyris.pl?en ter=ap-compsci) or the teacher forums at www.mainfunction.com for example?

  252. Hmmm... by Morosoph · · Score: 3, Insightful
    You are supposed to be training them for the work place.
    Not yet. If you do that from the beginning, they'll never learn fundementals.

    Also, the lack of a need to get a product out of the door means that you can spend time on things that give a foundation. That educational requirements are different is an advantage. Which firms, for example, would spend three years teaching someone a maths degree? Yet those same firms would gladly hire a mathematician!

  253. Re:Go with what they are familiar with (beer) by nhtshot · · Score: 1

    They aren't good programmers yet.

    From the article: "Have had a semester of either VB or C++"

    That implies that they're not just green but very green. I think one of his primary points is to find out what we think would be the best way to help them become "good programmers".

    When I first learned C, I used Turbo C for dos. That is an IDE, but not much of one. I soon graduated to C++ (When it came out..) on unix using VI. That transition and the summary year programming without any kind of IDE really taught me the value of a good debugging IDE. Since that time, I've learned countless languages and used a smorgasboard of IDE's. But, learning to program without one left me with a strong appreciation for how valuable a tool they really are.

    With that in mind, I have, on occasion, whipped out changes or written new features on a customer site without an IDE and am very glad that I learned to do that early on.

    I would suggest that you start them out using a generic text editor. Since the first month or two of a programming class as usually not more complicated then Hello World programs. They'll struggle to debug them and struggle a bit with their syntax. Right about the time you can tell they're starting to get frustrated, switch to an IDE. Introduce it as a tool to help them. They'll very quickly learn it's value, but they'll still have some basic NON-ide debugging skills.

  254. Re:... Yes and no by zootm · · Score: 1

    I'm not convinced of the value of assembly for this over just general experience with coding. Your particular example ("why write a function when you can just code two lines in and do it on the fly") isn't something that you learn in particular from assembly — I think the case here was that you simply had more coding experience than your classmates.

    I think that most of the things you learn from assembly that you wouldn't learn from some high-level language concern micro-optimisation (which is usually detrimental if made too much of a coding concern) or memory management (which is not necessary in modern languages).

  255. Teach them by DarkOx · · Score: 1

    It is insane to let someone graduate that can't develop without an IDE. They are going to run into a situation where something won't link or the project file is damaged or whatever and need to know what really happens. They are going to need to work on a project that the wizards the IDE comes with don't provide a good start for at some point. Students MUST know how to program not just use an IDE.

    That said it is equally insane for students to graduate without some familiarity with modern tools or the attitude that all those tools are bad. Most modern IDEs are really great tools and they have lots of boilerplate code and builtin framework stuffs that are great too. ave neat features for tracking things across modules and the like that are extreemly painful with just a text editor. In short they can help you be extreemly productive. They can also be a cruch and very limiting if you are trying to do anything new and different when all you know is the wizards.

    Perhaps there should be a course or two in programing, where IDEs are not used and then a course or two in software development, where IDEs get used. Its a fine distinction I know but it could be useful in other aspects too. In school almost all of our assignments were completely independant. Which is fine for programing courses but in the real worls I work all the time on little pices of things where I can't change the interface with the other code and often don't even get to see the other code. I am just supposed to write a class that implents a list of methods I have been given and somebody else is gonna use it and they won't be allowed to chage it. This is the type of experience the software development course could provide.

    --
    Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
  256. IDE? by Chris+Mattern · · Score: 2, Funny

    Nope, SCSI all the way!

    Chris Mattern

  257. Intuitive by Nephroth · · Score: 1

    An IDE, though useful, is pretty intuitive to learn. Command line tools and archaic text editors usually are not. I would be an advocate of teaching them the unintuitive first, and letting them pick up the intuitive on their own.

    --
    Our greatest enemy is neither a single man, nor is it a nation, it is, as it has always been, our own greed.
  258. Teach how to decide by greg48z99 · · Score: 1

    Rather than take a strong position about IDEs or old school, help them understand and see the value of both and recognize that their ability to choose and leverage tools is what will set them apart, not the tool itself. During their career, they will have a ton of changes to make and constantly learning. Getting zealous about tools now means they're destined to struggle through change.

  259. please don't! by Lord+Ender · · Score: 2, Insightful

    By today's standards, Emacs is the UI from hell. My shool used it to teach CS, and many otherwise smart people were severly hampered by it. They spent more time messing with the editor than with their code! And you don't want a person's first experience with unix to be one as frustrating as emacs.

    The focus should be 100% on the code. The editor should be completely transparent to the student.

    --
    A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
  260. Yes by Apreche · · Score: 1

    Yes, they should be taught with an IDE. That IDE should be one of the following: Vim, emacs or NEdit.

    --
    The GeekNights podcast is going strong. Listen!
  261. Eclipse by Stalus · · Score: 2, Insightful

    I was a TA a couple of years ago for the intro java course at a Big 10 university, and I'd recommend using Eclipse - at least for the Java part. Honestly, you can show them the non-IDE approach in a day, and cover your bases. The only thing of value you're teaching them there is that javac makes byte code, and how to run the virtual machine/set up a class path. For students with a year under their belt, it shouldn't take them too long to figure this out.

    We used to use a poor IDE, but a number of the grad students convinced the university to switch to Eclipse. There are a lot of benefits, but here's two:

    First, code completion, and tool-tip documentation helps the students learn the API. Students with C++ experience will be trying to overcome the fact that everything's a reference, default virtual methods, garbage collection, and basic java syntax. Forcing them to memorize the API and its associated documentation is a waste of time when good tools exist to feed them this information as they need it. It also does some import statements for you, which is so very nice.

    Second, error detection and suggestions teach the students as they go. If they type up a bunch of code and compile it, they'll get some error on the first thing they worked on, and their head will be on something else, so it just confuses them. Eclipse highlights syntax errors as you type, so you catch and correct these errors while your thought process is still in the right context. In addition, Eclipse will suggest corrections for common errors, typos, etc. Error messages may seem intuitive to the experienced programmer, but to a novice, it's just greek. I think I spent most of my lab time trying to convey to students what the error messages really meant, and how they could use them to fix their code.

    Bottom line is, learning is a process where you learn one thing at a time, and feedback at any step of the process is good. By using a good IDE, you are able to focus on more general concepts, which are transferable to other languages. Otherwise, they just learn the API and what the error messages mean, and lose a lot of valuable time.

    Just my two cents.

  262. trick question... :) by grikdog · · Score: 2, Insightful

    This reminds me of a job interview I had in which the question was broached whether I wrote Quark XTensions from scratch, or modified existing code? It was late in the afternoon, so I scratched my head and jumped on the wrong side of the rail. (The answer by the way is, "Uhh, gosh, I CAN write from scratch, but I ACTUALLY modify existing code. It's faster.")

    In the real world, nobody in their right minds works without an IDE. So teach it that way.

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  263. IDE as a teaching tool by UESMark · · Score: 1

    I'd have to say yes. Since this is going to be an intro course there is a lot of ground to cover. Teaching good OO habits in java is complicated enough when you are dealing with students who have never seen the advantages it gives you over say C, I wouldn't want to use up at least one whole lecture, and probably a few lectures worth of Q&A/Debugging showing them how to deal with emacs or vi. Most IDEs will be very intuitive to anyone who has used a word processor, just with a few extra buttons at the top of the interface. Remember, this is only an intro course, if the students decide to become serious about programming you can point them to some online faqs about the great emacs vs. vi debate and the oreilly section of the bookstore.
    Just some thoughts from someone with too much education who has seen professors crash and burn trying to teach three things at once.

  264. Python, Editor. Java, toss-up by HiThere · · Score: 1

    There are nice IDE's. They can be very useful, especially if they know about the language's build-in libraries.

    That said, Python, the language I'm more familiar with, I would say should be taught with an editor and a web-browser. (You can have the documentation pages local on your disk, but you need to be able to have several of them open at once, while you are looking up methods, techniques, etc. It's also useful to have a screen for grepping through the docs, to tell you which web page to pull up next. Of course you start simple, but that's the system you should be working towards.

    Java...if you can find a GOOD IDE, one that doesn't add non-standard extensions to the language, then perhaps that's a good way to go. Do consider the expense. Many people swear by Eclipse, but that tends to promote SWT, which is not a standard library. Some people line IDEA, but that's expensive. Etc. I don't know of a good answer.

    Of course, it also depends on just what level of course you are teaching. At the very basic level it makes more sense to go with a bare editor and a RESTRICTED number of libraries. A large part of learning any language is learning how to use the language libraries, but that's not where the emphasis should be at the start.

    One final choice that you might consider: Dr Python. This is a Python IDE, and thus not what I'm recommending, but it's interesting anyway. I have it installed on my system even though I never use it (probably in homage to PLT, who did the Dr Scheme series). This IDE is based around wxPython, so it's also not exactly a standard library, and thus even more "not what I'm recommending". But it's available if you want an IDE for Python. It's license if GPL.

    Then there's KDevelop, but to use that you pretty much need to be running KDE, and it wants your Python to be developed with the Qt toolkit. Definitely not my choice, even though I *am* running KDE. (I tend to develop with Kate + browsers. And I also use NEdit so that I can open additional windows for code or text files that I want to be able to see while I'm working on the programs that use them.)

    I'm probably more opinionated than many, without any more reasons, but those are my opinions. I'm not claiming them as facts.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  265. Python's IDLE by Garrett+Fox · · Score: 1

    For the Python instruction, I suggest using IDLE. It's a simple IDE that comes with the language. Because of its simplicity, students won't become dependent on a particular fancy graphic system to keep track of their projects, but they'll still get the convenience of a console window and easy "compilation" of the programs.

    --
    Revive the Constitution.
  266. What's the goal? by JoeCommodore · · Score: 1
    If the goal is to have well rounded programmers (not the part about the high contents of sugar and fat, the'll learn that themselves) I would do both IDE and vanilla editors. Use the text editors and such to show them that can code on the fly without an IDE and also cover the IDE as a better way to manage your projects.

    If you have a lab with 1:1 on computers you may want to make a test of writing a simple script or without an IDE, to lety them see it can be done.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  267. Jesus Christ what a question by Chitlenz · · Score: 1, Insightful

    OF COURSE you should teach with an IDE. All you linux curmudgeons aren't being realistic about what programming is starting to look like today (and tomorrow). The CLi is dying anyway, and good riddance! The only reason for NOT using the features of an IDE (typesafety, runtime debugging, I mean jesus) are almost certainly ego (I save so much typing type, etc. BS is the common response from these crusty types).

    As it may be obvious, I feel VERY strongly about the topic because when I was at Memphis State in the early 90s I was paying to take classes teaching CLi based Borland C, and getting PAID to code real estate apps for Macintoshes, by very nature a GUI. This particular problem, and the large smelly curmudgeonly professor that created it, just about led to my leaving computers altogether in frustration. Fortunately, I swtiched to English as a degree (abandoning the opportunity to pay to learn 80s technology in the 90s /sarcasm off) and have gone on to be very sucessful with coding database architectures.

    Lemme say this plainly, I AM a coder. I spend 16-18 hours a day in front of a computer writing PACS systems for radiology and designing the way that the information that is generated by MRI modalities is going to find its way through data storage structures and then finally in front of a doctor. I also happen to have spent a large amount of time (about 6 years) coding against Solaris/Linux oracle in shells for utility apps, and I have to say that while Vi may be the king of the editors, even the primitiveness of Glade owns it.

    An when I hire ppl for what are real work coding jobs, I want them to be able to use a STANDARD IDE, not just any one either. I don't have the time to try to teach standard topics like Sourcesafe or the VS IDE, so by all means PLEASE START TEACHING IT IN SCHOOLS. /rant off

    --chitlenz

    --
    Imagination is the silver lining of Intelligence.
    1. Re:Jesus Christ what a question by freeweed · · Score: 1

      The CLi is dying anyway, and good riddance!

      No matter the story here, someone on Slashdot always reminds me of why I'll always have a job in this industry.

      Moving back on-topic, the answer is to teach using both. You'll have a fun time writing modern GUI apps with a command line - but then again, you'll have a real fun time supporting (and coding for) an AS/400 using only the GUI tools :) Each job has the appropriate tools.

      --
      Endless arguments over trivial contradictions in books written by ignorant savages to explain thunder in the dark.
    2. Re:Jesus Christ what a question by Chitlenz · · Score: 1

      I do agree that legacy apps will hang around for awhile, but is it not part of our role as developers to push the envelope with companies? I would argue that most companies content with AS/400 level technologies are the antithesis of progressive, and that Cobol is following AS/400s out the door (in lieu of SQL) and that neither tech has a future because either:

      A) that tech company is going to close when the competition stomps it through sheer effeciency

      or

      B) they run out of parts (this shit happens by the way, we downed an AS/400 recently and sold it used for more than I would have though it was worth to someone who wanted the platters).

      or

      C) Their customers get fed up with them (this also happens a lot, and the longer companies seem to wait to change over to what we will call 'vanilla' the harder it is)

      We are the creators of software, and we should have a voice at the table of IT companies that sell our products. I have watched so many big company folks get shocked when their (insert antique coding language here) job gets cut because they didn't adapt to the times. Hell, look outside of programming, engineers were the shit in the 50s =)

      Some AnonCoward below commented along the lines of MS Fanboi, but lemme tell you a story about how I started coding with C# (the language we work in now). I was an Oracle DBA, thus my primary IDE, when I used one, was TOAD for many years, and to some degree ErWin. Everything else was CLi/ Script based C on Solaris 9. So these doctors are frustrated and are looking for someone flexible who can accept the kinds of standards in programming things like hosptals have to require. These guys don't know how to turn a computer on really, but they know they need em and they decide to start a company out of frustration with what the market has yielded. So I came on as a DBA Architect (again, directly from a fulltime UNIX programming job), and once we had formed up our team we all sat down and compared skillsets to decide on a framework to work in. I actually voted for us to stay on Borland C++ Builder with Delphi utilities and an Oracle back end , but I lost out to SQL Server 2k5 with C#.

      C#, consequently, is a language that has very much become a reality, and yet very few colleges teach it, why is that? What can you learn about using something like C# from compiling 'hello world' scripts in a Unix shell, really? I mean its great and all to learn queing and loops and what a pointer is, but what I really want to see is more about maximing DirectX interfaces, and maybe more about threading various processors, and 64-bit native coding highlights. These are topics that get used EVERY DAY, and yet get ignored in favor of the Biblical history of the String variable at most schools. I find this very frustrating, and I think that lots of CS Grads will too.

      Anyway, so back the story, the programming TEAM decided on the direction of the project based on our combined knowledge of the field we were going to be playing in, not any one person. The real interesting facts here are that none of us had ever worked with C# before (we decided based on trends in the industry, correctly I can add 2 years later) and that me coming from the Unix world and them coming from Borland world, none of us shared any particular love for Redmond.

      but...

      I'll use their shit as long as it works as well as C# man, RAD is a reality and ignoring it is a mistake, especially in education.

      --chitlenz

      --
      Imagination is the silver lining of Intelligence.
    3. Re:Jesus Christ what a question by QuoteMstr · · Score: 1

      How would DirectX interfaces help the slightest bit with a medical system? Programming will has more to do with solid methodology than tinking with the latest new toy language. Colleges shouldn't teach programming languages; they should teach how to program. From that, any particular language, be in bourne shell or C#, will come naturally.

  268. The question is irrelevant by fgb · · Score: 1

    From my personal experience, most of the students who are going to succeed already have some experience with either CLI tools or an IDE before starting classes, and will be able to pick up new ones easily. The rest will probably drop out eventually, or they will graduate but be completely useless as programmers.

  269. IDE lets you focus on programming by Junks+Jerzey · · Score: 2, Insightful

    All this anti-IDE angst, so let me give the opposite view. Beginning students should be focused on *programming.* A good IDE makes some key things standard and invisible: jumping to errors, debugging, etc. Then the students can just worry about programming, and not vi configuration problems and make files and so on.

    Using an IDE in school is nothing new. Back in the late 80s most of the college programming courses I took used Pascal, and Turbo Pascal 4 and 5, with integrated editors and compilers, were godsends. The alternative was to use a command line compiler on a VAX, which was horrible in comparison.

    1. Re:IDE lets you focus on programming by dcam · · Score: 1

      All this anti-IDE angst, so let me give the opposite view. Beginning students should be focused on *programming.* A good IDE makes some key things standard and invisible: jumping to errors, debugging, etc. Then the students can just worry about programming, and not vi configuration problems and make files and so on.

      I'm not sure that is totally true. If a person has learnt to debug programs and solve problems without those tools, they are often a better programmer. They are able to handle more complex code.

      I think in some ways this is similar to teaching Latin and Ancient Greek in schools, which used to be common in English and Commonwealth schools 50 years ago. It has no real practical application (unless you need the latin words for biology, or are aiming to become a greek scholar), but in itself it was good training for the mind.

      Why teach programmers assembler? Most programmers will never use it. On the other hand it makes them better programmers.

      It looks like I am not the only one who thinks that.

      --
      meh
    2. Re:IDE lets you focus on programming by Junks+Jerzey · · Score: 1

      Why teach programmers assembler? Most programmers will never use it. On the other hand it makes them better programmers.

      I agree, but you wouldn't want to teach assembler as a first language. Ditto for not using an IDE: getting by without one at some point is a good idea, but don't make rank beginners suffer.

  270. This could be problematic but... by paulyt10 · · Score: 1

    I took a class in C++ this past semester and we used vi to do all of our programming. I found it quite difficult to up and switch from the good IDE's that do a lot of the error checking for you and also make stuff easier to read and debug. If you want to go down that path, I would have a good transitionary period where students are slowly taught to efficiently develop code in this manner.

  271. Worry about the quality and consistancy of code. by planetmcd · · Score: 1

    I've had classes that required one method and classes that just cared about the end result. None of these tools are going to teach the data structures and methodoligies behind programming in general but a good ide will point out stupid syntax errors. I think the best approach was a Java class that I took that only cared about that the class files worked correctly on the official class server(working on your own computer did not count), were formatted according to class guidelines so the TAs could read and correct them more easily, and had well formed and informative comments. TAs held some sessions outside of class on how to use tools like IDE or Emacs/Vi. TAs would make recommendation on development enviroments or editors, but TAs/Faculty were not required to support any environment/tool beyond making sure the class server was accessable and had Java installed and working.

  272. Both? by UltraAyla · · Score: 1

    At UC Davis, the programming instructors had us use vim for about a quarter and a half, then taught us how to use eclipse(around the time that we were learning more advanced C++ topics) and told us that we could use either one for the rest of the assignments. I think this is good because I think vim is an invaluable tool to know, but I also feel that people who are going into the workforce or who are going to be doing larger projects than a quarter-long programming assignment may really be helped by having knowledge of an IDE. So, I guess my suggestion to you is, maybe teach both simultaneously. If you have demonstrations in class, maybe use vim sometimes and an IDE the other times. Or, if you use a chalkboard, just teach both and see what they use. This may not be an approach you want to take, which is understandable, but it worked for me.

  273. IDE - but the right IDE by uberzip · · Score: 1

    I would avoid anything that complicates the process of learning. That means that text editors such as vi shouldn't be used and IDEs like Eclipse shouldn't be used. The learning curve can get in the way of the initial portions. Using a simple IDE or text editor really helps the student focus on the language itself. If I were teaching a Java course I would use Dr Java (I believe its provided by Rice University). Dr Java is about as simple as an IDE can get but the reason to use it is due to its interactions pane. Basically the interactions pane allows you to type a line of Java and hit enter and see what it does and all lines in a session are remembered so I could create a new String by typing: String test = "hello"; and then hit enter and the pane will tell me it was successful. Then I could type test.equals("goodbye"); and the pane would return false, so I'm learning how the String's methods work rather than having to put them in a class with System.out.println() statements. This was extremely valuable to me learning Java as you can write a new class and immediatley test it without writing a main method. You can also play in real time with things like ArraryLists or arrays and see how they function rather than spending long hours trying to figure these things out inside of your program. Also, it really requires little setup. There are a few downsides to Dr Java such as a few bugs but they are minor. However, I learned Java much more quickly than other friends who were stuck writing wrapper classes for their programs to test out simple functionality. If you're not using an IDE, I would have the students use Textpad as it supports Java and is simple. Perhaps as extra credit I would have students independently learn vi or Eclipse and demonstrate what they learned. BTW: Dr Java's interaction pane is available for Eclipse as a plugin and it really is great for Java developement.

  274. Re:... Yes and no by djjoemex · · Score: 1

    In my experience having learned Java and C++ without IDE's was a professors subject.
    My PhD teacher of advanced data structures said that we first need to know to understand how to build balanced binary trees, red-black trees, graphs and other structures without any library so we can implement the algorithms by ourselves.

    The Standard Template Library of C++ or the java.util APIs in Java give you many implementations of data structures, search and ordering algorithms, if you use an IDE you can quickly make use of other libraries from packages.
    But I think IDE's and these libraries should be used by small projects where it does not make diference if you use Mege sort or Quick sort in an array class. In large projects, all algorithms and data structures should be completely re-written, and it doesn't matter if you use an IDE or not, because you'll be using your own code.

  275. Teach the language, not the text editor by moosebreath · · Score: 1

    I taught Java online for five years. I just taught the language and let them work out their own way of editing and compiling. It came out just fine. Different editors were used--they can teach themselves that stuff.

    Now VB and C++ is you main problem. You will have to disabuse them of some misconceptions and some bad habits. But it's not quite as bad as it was back in the days of Pascal. I found the quickest learners were old COBOL programmers.

  276. I vote for choice by ccvqc · · Score: 1

    I teach a course in web design for non-majors. They have Dreamweaver and Vim available, with one page mini-tutorials on setting up and getting started with both available to them. Some of the students with good broadband broadband access to the lab from off campus use Dreamweaver, and the rest seem happy to use Vim. I provide a .vimrc that pretty much removes the overhead of switching between command and insert mode. I require them to format their source code so I can read it, which turns out to be easier for them to do consistently with Vim rather than Dreamweaver.

    When teaching Java (instead of Javascript), the integrated debugger in Eclipse makes the IDE choice a no-brainer. There is nothing that prevents you from teaching basic principles of sw development when using an IDE. The Java language obscures so much of that (automatic compilation of referenced classes, linking at run-time, etc.) that that material has to be presented separately from the act of developing and testing the code anyway.

  277. Re:... Yes and no by Anonymous Coward · · Score: 0

    I don't mean to bring the 'calculator' issue up, but American students' math skills is quite laughable in eyes of international students, and many international students, including me contributed that to the unrestricted use of calculators. We were not allowed to use calculator in many situation when American students even can't find the answer with a calculator. It may not be directly associated with many advanced math theories in college/graduate level, but it surely help to build a habit of mathematically thinking from childhood. Being able to program with 'vi' and 'gcc' is a fundamental training a student should receive in the school. They can learn an IDE in 5 minutes, and then excel in a couple of days by themselves later.

  278. Why use and IDE? by aoteoroa · · Score: 1

    The same reason most professional programmers use IDE's.

    Because some aspects of code writing are easy to understand but are repetitive and time consuming. I'd rather a new student spend time understanding java.sql than typing get and set methods for classes.

    Let's say that you have a project for writing a simple invoicing application. If a student had to type every get and set method for a Customer class, Order Class, InventoryItem, class etc the student could be typing for an hour just to build the basic data classes. Probably not time well spend for such an easy concept to understand. An IDE could do that for them in a few minutes which enables the student to spend more time on the useful programming of inserting/updating/retrieving and displaying these objects from the database.

    However I totally agree with your point that the course should focus on the code, and not IDE tools. If a student completes a java course and can only read an xml file using an IDE's data wizard tool, and does not understand the underlying concepts then the teacher, and course curriculum have wasted the students' time.

    1. Re:Why use and IDE? by illuminatedwax · · Score: 1

      I disagree. It's a manual labor thing - the ancient technique of making apprentices do menial tasks to teach them still fits with computer programming. Make them write those get and set routines. Make them implement quick sort themselves. When they realize that, "hey this sucks, can't we automate this," they will become enlightened.

      Then again, the student working on that project might be in a Software Design class, in which case, sure, show them all the different IDEs and such. But any good teacher will take into account the amount of time each student will be spending, and probably make the project harder or easier depending on if they know that the student has access to time-saving tools.

      --
      Did you ever notice that *nix doesn't even cover Linux?
  279. Do you know any engineers? by Anonymous Coward · · Score: 0

    Because engineers drill holes in the rock, fill it with explosives and blast it into wee little pebbles...hydraulics smydraulics! :) Then they subcontract to someone to haul it off...the fun^H^H^Hengineering part is over.

    I mean really, if you're dealing with rocks big enough to get in the way...you won't be moving them around as-is with puny construction equipment :P

  280. Flex their brains by hausmaus · · Score: 1

    When I was in high school, I was taught Pascal using a TRS-80 Model III. We had to design the program entirely on paper: first in a flowchart, then using pseudo-code and everyone's ideas were discussed in class. Then and only then were we unleashed to write code on the computer. Most of us preferred NOT to use the IDE (I can't even remember what Pascal compiler we used!), because it was simply faster to go in and type up our program, run the compiler, debug and rerun the compiler.

    These days, I still use Pascal, but I do so in an IDE environment because there's more tools to help me out (such as a debugger, breakpoints, et al).

    I personally suggest making your students learn programming on paper first, then having them learn the compiler. Perhaps in the final week(s) of your course, you could show the IDE to them and explain what it is.

    I'm no professional programmer by any means, but those skills I learned have helped me in other areas in my life also.

    --
    Your email has been returned due to insufficent voltage.
  281. Re:... Yes and no by Planesdragon · · Score: 2, Insightful

    They shouldn't even get a GUI. The first couple of semesters should be taught on Linux machines without X installed. I've seen nothing to indicate that a GUI does anything other than get in the way of understanding what's going on behind the scenes.

    A GUI -- with a good IDE -- does one thing that tossing the kids at a command line won't do. It makes it easy to "get into" programming. At the least, the FIRST class should be taught with an IDE. Maybe even using Visual Basic or OOo's BASIC. Once they go from drooling non-programmers, and have both a little confidence and a little knowledge, slap them into full-bore programming.

  282. Make is a language by sjames · · Score: 1

    Learning how to write a good makefile in a text editor is a good way to get some basics of programming across to students early. I don't mean the thousand line wonders cranked out by automake (those are HORRIBLE), I mean a simple eligant Makefile that manages to express accuratly all of the dependancies.

    Rule based programming with goal seeking. Not a bad concept.

    1. Re:Make is a language by GWBasic · · Score: 1
      You can say the same about writing a program by hand-coding hex into a binary file. In college, we kept such activites out of the intro classes for good reasons.

      What many of the replies in this thread fail to realize is that intro CS classes often have non-CS students, who are there for various reasons. The EE might some day need to write embedded code. The MIS might someday (heaven forbid!) be managing a software project, and thus needs a general exposure to programming.

      My company routinely has non-CS people write programs that execute in a self-contained shell. Such programming requires no use of any compiler.

      Make really is only used in the Unix world, where it's not the only way to build a project. Teaching it in an intro class with a wide audience is just going to waste time.

  283. Re:... Yes and no by slowbad · · Score: 1
    I taught college level math (trig through intro to calculus) back in the '80s and the same debate raged with regard to using calculators.

    Good answers for the entire posting. It's not your fault, but "trig through intro to calculus"
    was still considered high school math 30 years ago.

    Solid college science and engineering programs considered it remedial and non-credit.

    For ten years there had already been entire 8th grade classes routinely learning Algebra,
    and the next year -- still Junior High back then in many areas -- was Geometry.

    So a senior who skipped math still had 2 years of "high school" Trig and intro to calculus.
    Most importantly, what REAL college math have we missed by substituting baby math?

    Physics isn't the only wasted course when the underlying language is not comprehended!

  284. Teach without an IDE by squidguy · · Score: 1

    ...at least initially. Let them learn the fundamentals of programming and the various compiler tricks and traps without an IDE. Once they mature enough, and have proven the understand the language(s) then you can introduce an IDE.
    One of the better CS courses I ever had, involved "learning" a new language every 1-2 weeks. No IDEs, just vi and edlin. Of course, TurboPascal was the closest thing to an IDE back then.
    IDEs frequently change over time. Fundamentals of programming tends to remain relatively stable.

  285. Re:I say no IDE (Ant) by donaldGuy · · Score: 1

    I agree... thats why I also tried to learn Ant later in the year.

    Its important to note, however, that you can't write a decent build.xml if you don't understand how the components of your JRE work (well, their interfaces anyaway).

    Unfourtounatly my school system has a massive prohibition against downloading or installing anything, so I couldn't use Ant at school.

  286. Bridge the Gap by SparksMcGee · · Score: 1
    Having taken an intro java course stressing IDE use (it focused entirely on Eclipse from start to run, and the entire course was taught using a reference graphics library provided), I definitely agree that stressing an IDE and only an IDE is not the way to get people to understand compiling and linking--I never even knew about javac until my second intro java course (these were at different schools, and the latter was a prereq. Plus it had been a year and there were a couple things we hadn't covered in the first course). However, although the second course stressed using JEdit, I spent the entire course writing my code in Eclipse for convenience. The difference? everything was compiled, linked, and run from the CLI. Frankly, I think it was a pretty effective paradigm--Eclipse is an amazing tool, but when you use it only for the editing, it just becomes an amazingly convenient text editor. Essentially, one isn't required to use all of the tremendously advanced features of an IDE in order to reap the benefits of knowing when you've made trivial (that is, the only kind that can be caught by an IDE) errors like misspelling as opposed to fundamental logic errors--the latter are meaningful, the former are inconveniences that slow down everything else.

    This isn't to say that I necessarily have anything against using a more basic text editor--using xemacs (or, rather, JEdit, because xemacs is painfully slow over SSH) for C coding has definitely helped me write tighter and above all more compiletime (and runtime) error-free code, and there's that angle to it, but for an intro course, where you're presumably trying to teach the fundamentals of logic over the nitty-gritty of syntax, having an IDE can, I think, be made into a convenience without having it become a crutch, so long as you're able to make clear that the actual coding is only part of a process of programming. Make it clear that the IDE is not the language itself, that a few basic steps will compile code whether it was written in vi, emacs, Notepad, or an IDE. Perhaps try mandating that "Hello, World!" be done in a basic text editor and then make some recommendations for other editing programs afterwards....


    anyway, my $.02

  287. IDE choice by cyberbian · · Score: 1

    One of the things that I found frustrating was that the University I attended had a preferred IDE for Java, which frankly is a bit shortsighted. Given that each individual has a unique learning style, it must be stressed that different programming methodologies espoused through IDEs appeal to individuals differently. I agree with you in that there should no longer be such a disconnect between the hardware and the programmer, and learning to use the basics is an important proving ground for any programmer worth their salt. I found it frustrating that I would need to submit a project file created in the IDE preferred by instructors (which wasn't free, nor open source) when programming in java is available in many different IDEs and flexibility and actually functioning code should have been more the focus (i.e. the write once run anywhere thing.) Students typically don't have the dollars needed to purchase the latest and greatest commercial IDEs and I hope that you're not intending to foist such a product on already strapped students.

    --
    if I claimed I was emperor just because some watery tart lobbed a scimitar at me they'd put me away!
  288. Eclipse by chefren · · Score: 1

    Theres a big difference between a full-featured ide and a handy code editor with on-the-fly compilation, syntax colouring, bracket matching, automatic indention, refactoring tools and such. I would say go with Eclipse, in its basic form it does not attempt to write your code for you but it still makes you more productive.

  289. Text editor by pjt33 · · Score: 1
    I spend quite a bit of time on Sun's Java fora, and I know I speak for the majority of the regulars there when I say that beginners shouldn't use IDEs. We see a lot of people who've only used IDEs and don't have a clue about basic issues like the CLASSPATH. When it comes to GUI-building, it's even more emphatic: if you use an IDE's GUI builder you will end up with brittle code which you don't understand.

    Having said that, I wouldn't recommend Notepad either. Let them use a syntax highlighting editor (and don't force them to use a console-based editor like vi or emacs).

  290. The break and learn aproach. by Anonymous Coward · · Score: 0

    I learned a long time ago on a Apple 2+ Turtle BASIC. The then 'new' programing language of C from Greene Eta all. You Sir have two different things you are teaching, one is a 'scripting language'. For python a IDE is a judgement call- I suspect in the long run for a intro class the old war song of "making it fun and engaging" works well here-look at GPL'd projects-Portage from Gentoo for instance walk them through how it works or doesn't work for a intro class is a great way to make them want to learn best on their own. Java-in this case a mixture of the two. Why? It's such a unwieldy language that that sometimes the only way to 'see' the flow of your' program is using a simple 'ide'. I use itelij or bluej, then just textedit (jedit/BBEdit etc) to write the code. And again for a smester long project have the whole class work on how to impliment something 'cool'Mabie have them working on a game. It doesn't need to work in the end, and indeed that could be a fallback is if it doesn't work dedicate sometime about what went wrong.

  291. IDE's vs Text Editors by justinchudgar · · Score: 1

    When I took Java at my local University a few years ago, the professor provided us with a programmers' text editor, like Crimson Editor. I ended up doing my work in NetBeans because I was a lot more productive than with a "dumb" editor; so, the prof's strategy did not play out, at least in my case.

    Since, I use a variety of IDE's, Visual Studio, Eclipse, PHP Designer for significant projects; and, I always have Crimson Editor close at hand for things that can be solved quicker than Visual Studio takes to load.

    My recommendation to you is to give your students the option, letting them know that you are not going to spend class time answering questions about how to configure their IDE of choice.

    --
    WARNING: Smoking this sig may cause lowered IQ, insanity or short term memory loss. It is also really bad for your monit
  292. Re:... Yes and no by StormReaver · · Score: 1

    "However, the student should be taught the 'manual' way first."

    That was almost exactly what DaveAtFraud was saying. The introductory courses should not use an IDE. Those courses should expose the students to the underlying principles of the language (including the command line tools). Advanced courses should use an IDE since it will take care of all the little things that are not germane to (and will simply overshadow) what is being taught in the advanced course.

    I agree entirely.

  293. Emacs is an IDE by iabervon · · Score: 1

    In an intro course, a large portion of the mistakes people make will be syntax errors (failing to match braces, forgetting semicolons, misspelling keywords, forgetting method return types, and so forth). Any editor with Java-specific syntax highlighting and automatic indentation will make these mistakes clear to the programmer. Generally, for new programmers doing suitable assignments in a high-level language, the student's intended program will be completely correct, and the frustrating debugging time will be spent trying to get the compiler and the programmer to agree on what the program actually is. It's only further along that students have programs that are what they intended, but are still buggy, where an IDE with semantic and runtime features will help them.

  294. Not everybody taking this course will be a program by Anonymous Coward · · Score: 0

    For an intro to course use the IDE. If the students want to become programmers then future courses can do without the IDE. For now let them use the most effective tools they can, especially as many taking the course will not be moving on to become programmers and will never use vi or emacs again.

  295. No ide until able to manually compile by micromegas · · Score: 1

    I teach FreeBASIC, C++ and next year Java to highschool kids....lifting the hood(command line) and manually throttling (compiling from command line) is authentic and kids really resonate with it. Once they see how the car works, let them drive it from the cockpit. BTW, kids really like kate over kdevelop for some reason

  296. Re: Have you ever taught first time programmers? by Stamen · · Score: 1

    I was going to write something very much like this, so I'll just agree.

    Programming is very difficult beyond the very basics, and most people who do it for a living are able to do it, because they love it. Any less and eventually they will quit.

    I think the job of someone teaching entry level programming is to get the students excited about what they can do with programming, and to introduce them to the basics with as little distractions as possible. Writing without an IDE, compiling, etc. are very important topics, but I think they should taught a little later when the students decide that they like programming enough to take a higher level class.

    That being said, once you get into those higher level classes, students should be able to write code in Notepad/pico/vi/TextWrangler, and compile it using the command line,and debug it without a debugger; knowing the basics is very important, even if you mostly use an IDE in the future.

  297. The Problem by __aalomb7276 · · Score: 1

    The problem is that you would teach or even think about writing software in python. Yuck!

    1. Re:The Problem by rk · · Score: 1

      If I bore umbrage at the language any tool that burned me was written in, I would hate every last one of them.

      People write broken programs in any language. It's not (necessarily) the language's fault.

  298. text editor of their choice + explain compiler by AlgorithMan · · Score: 1

    let them use a text editor of their choice and explain the commandline compiler to them - if they use it like that or use an IDE is not of your concern then... you could point them to sites of free IDEs and tell them they might want to use an IDE, but you won't tell them how - they have to find out for their own, this is not part of this course

    thats the way we do it at the RWTH-Aachen

    --
    The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
  299. Linux won't make it at the desktop by Anonymous Coward · · Score: 0

    I'm not surprised this topic actually is at question in the *nix world.

    This is exactly the reason why Linux wont make it at the desktop.

    Command line interface is OLD SKOOL and unproductive.

    Right now I program in VS2005 with the program *running* when I write code. Nothing beats it.

    1. Re:Linux won't make it at the desktop by Anonymous Coward · · Score: 0

      Because, you know, KDevelop doesn't exist.

    2. Re:Linux won't make it at the desktop by Anonymous Coward · · Score: 0

      KDevelop can't cross compile to arm from x86. In VS it's as easy to select target platform in a droplist.

  300. With IDE ofc by angel'o'sphere · · Score: 1

    You say your studends did C++/VB, so they used Visual Studio, so they know what an IDE is.

    To force them to use VI/EMACS and then to compile on the command line will simply piss them off. The turn around cycles (or the needed knowledge to work with multiple term windows) is simply to much to make this work fast, and thus its unenjoyable.

    The point is: an IDE you can "use" without reading a manual, even if you then only use 1% of its options. In VI or EMACS you can't even save your open file without reading the manual.

    Using a command line compiler means you have to "remember" the line numbers and the errors, result: they will fix one error, save again, leave VI again, compile again, and get new erros ... just to add the missing '}' and the missing ';' they need minutes, while in an IDE you baasically can't even make such mistakes. (without getting a notice, before even trying to compile)

    Get them to use Eclipse and introcude some Refactoring as well, makes much more sense.

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  301. Student Perspective by DarkF!re · · Score: 1

    I am a comp sci student in a State University and through my experiences different people obviously prefer different environments. However the most important part really occurs before the student touches a keyboard. A computer language like any other has to be understood both syntactically and semantically, but even before that the logical concepts of language must be understood. Once the concepts are ingested by the students the next step is the implementation of the language in question whether it be C++, Java, ML , etc. This last semester I dove into java for the first time and I did it through a text editor and the javac compiler, and Everything I wrote I understand, where as a friend of mine in the class used NetBeans, a java IDE, and though he was able to produce code faster through its integrated API helper, I have retained more about the language without referring to the API for aid. I believe if the class is about learning JAVA a text editor may be better, but if it's a generic programming class, then an IDE may not be bad.

  302. Pico! by JD-1027 · · Score: 1

    Found that while I was in college and never looked back (they started us on vi). And boy was I happy to see that in my terminal in OS X!
    I do realize that it is too simple a program for anyone here.

  303. yes to both by ayounge · · Score: 2, Interesting
    I work for a fairly predominate northeastern college that has a good Computer Science Department. Over the past year, we did a bit of research on this subject using our CS1-CS3 classes which were taught in Java.

    Nobody in the department liked the idea of teaching kids Java straight from the beginning from an IDE. so instead, we decided CS1 would be kept the same (emacs, vi, basic no-frills editors) for all classes. Then, we decided we would teach two seperate classes CS2 and CS3 using the Eclipse IDE.

    The results were stunning. Not only did the students using the IDE write better, cleaner code, but they also enjoyed coding much more. After realizing the painfullness of writing it all out in a terminal-based program, Eclipse recieved a warm welcome from both the students and the faculty. We will be doing the test over again next year with a larger experimental section (maybe 50/50).

    So as for your answer to whether or not to use an IDE? I would say the answer is yes to both. I think its important for students to learn how to use a unix terminal, compile code "the long way" and get down and dirty with a no-frills editor. But using an IDE just makes life simpler sometimes (especially in our case), so why not use it. I think that the solution is to do both, and students will be more productive and have a broader range of knowledge.

    p.s. sorry for any spelling, im too lazy to use OO.o :-P

  304. I have one simple question by Myopic · · Score: 1

    what ass-backward school is offering programming classes using Visual Basic?

  305. It's not your problem by jgrahn · · Score: 1
    Or at least it wasn't when I was a student.

    There were a handful of editors installed, and people used whatever they found useful. Personally, I made a bad choice and stuck with xedit (X11's equivalent of Windows' Nodepad).

    The professors/assistants couldn't care less -- as long as I had a Makefile so they could build and run my code.

    That said, you might want to make sure Idle or Eclipse or whatever is installed, and mention it in the intro to the exercises.

  306. Re:... Yes and no by Greyfox · · Score: 1

    The problem is that most of them never seem to make that leap. The GUI seems to be an addictive crutch that prevents you from ever fully understanding what's going on behind it. Most people just think that the GUI is the computer, never realizing that it can function perfecly well and usefully without one. Microsoft doesn't help matters any by tying the GUI so closely to the OS, either. I've got about 16 windows build machines that I have to administer remotely and we have to perform some nasty business for remote administration (And logging into a remote GUI isn't what I consider "administration.") and making sure our builds complete successfully seeing as how just about every windows tool on the planet feels like it needs to pop up helpful dialogs asking you to click "OK". That's another story entirely, though...

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  307. Go with neither by Muad · · Score: 1

    Hello There,
      from my personal experience, an intro course requires a lot of time helping the students and hand-holding them through the difficulties of basic programming and the details of the language, tutoring on "what menu does what" is a waste of time and a detraction from where their attention should be focusing.

      That said, the IDE is a convenience, and more advanced studentsw should not be prevented from getting ahead or learning more on the side. My approach is that you should give compiling instructions, preferibly in-terminal, that are IDE independent, as well as editor independent, and let the students free to use what they prefer, while using a reasonable variety of alternatives in-lecture - thus showing them the IDE, terminal+vi, etc options lead to the same result.

    --
    --- "I didn't think anyone would understand it" -Prof. Bob Muller
  308. Metaphors by moria · · Score: 1

    When there are restaurants out there, why do we cook? Because it can be fun, and because you can use your own recipe. The same applies to programming. Having some experience with raw programming and scripting, you can build your own automation tool, like nightly build. You have to admit the CLI-based programming has much much more flexibility.

    When there are calculators, why do we learn to calculate by pencils and papers? Because there are times when no calculators are around, and because it makes no sense to find a calculator when you want to do some really simple task like dividing rent with your roommate. The same applies to programming. When a new language comes out without existing IDEs available, a previous experience of raw programming definitely has prepared you with fundamentals of compiling, linking, CLASSPATH/LD_LIBRARY_PATH/-I/-L, etc. When technology is changing, these things seem to remain relatively the same except for the names. Besides, it makes no sense to buy a Visual Studio license or download a hundred-MB eclipse just to write a C program of a few lines to calculate TAX.

    I believe that IDEs can be a boost of productivity. But let's leave it for the trainers of industry, and focus on the raw, hard, but consistent part to the educators in colleges.

  309. Re:... Yes and no by jwiegley · · Score: 1

    The problem with your argument is that CS2 is not a "high level" course. It's supposed to be second semester stuff. (I'd also argue that calculus isn't high level math.)

    High level classes are items like Software Validation and Testing, Software Engineering and Software Integration classes. These go way beyond coding and problem solving with data structures.

    Students should NOT use an IDE in the classic CS1-3 courses, especially 1 and 2. I teach programming and I get these students who have been brought up in the visual studio IDE and they are incapable of switching to anything different even in their senior year(s). They also don't know a damn thing about how compiling or linking occurs or even why they're needed. They can't look at a simple compiler error such as "unresolved symbol" and even begin to tell you what that means.

    I'm thoroughly against using an IDE in the classes that teach basic programming. When the students get to classes that require project management skills, team coordination and code organization to be able to generate 5000+ line programs THEN they're ready for an IDE to help them. (I'm also against using Windows machines for the same reason that it attempts to hide the internals from the students.)

    Learn the basic underlying tools first. Then allow them to wrap them in fancy packages.

    --
    I will never live for sake of another man, nor ask another man to live for mine.
  310. JCreator. IdLE for Python. No Debuggers. by TromboonDotPy · · Score: 1

    Wow, this question was really throwing raw meat to Slashdotters. Goodness. This response is a little late but what the hey.

    I would like to advocate for a minimal IDE. This keeps the widget sets from obscuring more conceptual issues, but isn't so nasty as the whole "ontogeny recapitulating phylogeny" 1970's command line approach.

    The other question is what kind of I/O to use. I like using a little tiny non-oo library for simple UIs and another for rough 2-D graphics.

    The point of this approach is to use something slick enough that it's fun, and yet is a good clear vehicle for conversations about concepts.

  311. The ... man by jefu · · Score: 1
    The athletic man climbs over the rock.

    The strong man pushes the rock aside (where it starts a landslide and kills all the whos in whoville).

    The wise man looks at the rock and realizes it may be there to teach him. So he learns and then goes his way.

  312. STANDARD IDE by Anonymous Coward · · Score: 0
    I'll bet the parent owns a lot of stock in microsoft since he seems to be saying that the only IDE to use is VS and he wants schools to do microsoft's advertising for them - gluing students forcefully to the One Right Way (the microsoft way) so they can sell lots of copies of VS and Sourcesafe.

    Though I suppose I shouldn't complain - it does mean that the good students will have job openings in lots of other places where they won't have to work for this ass.

    1. Re:STANDARD IDE by Chitlenz · · Score: 1

      Nice.

      Alright lets start with SIX YEARS OF UNIX in the post. I, therefore, reserve the right to talk about the interfaces that ALL OF US have to use, its not like there's that many fundamental options anymore. It's GUI or CLi, and the fact that there are only two possible options is part of the fundamental problem with 'sacred cows' in technology altogether. I make a very good living slaying sacred cows to help companies take advantage of technology that is .... you know, innovative? Yeah man, you can choose to use a 10 year old AS/400 and do just fine if that's cool for you, but we make decisions that affect the way patients get processed through emergency rooms and other critical care facilities, and those facilities are dependant on technology that changes almost hourly. What I'm saying here is that we have to code to VERY advanced interfaces, and any framework that helps us limit the number of bugs per code line is going to subsequently help ppl that use our products. I'm also saying that while everyone is messing around deciding how to use archaic coding language stuctures (BOTH CLi and GUI are guilty of this), nooone is presenting a better alternative to Sourcesafe and VS and indeed programming languages in general. Lets just talk about graphics coding for a minute, the OpenGL consortium is so backwards atm that anyone NOT doing 3d development in DirectX is paying for it in the open market. Lot of medical imaging companies were trying to push proprietary OpenGL boards this last year, and they were getting clocked by Nvidia's off the shelf lines. This is fundamentally the same issue, there is a crowd of vendors shouting 'OpenGL is better!, see it runs Unix!', without realizing that the driving personalities behind modern business are fundamentally ALWAYS going to go for the best bang for the buck (if they're smart).

      So ask yourself, if you can code a CLi interface to a proprietary Unix system board provided (and maintained under contract by) Philips at 100k$ per year or code a Visual Studio native interface to DirectX for 600$ a card with twice the framerates and resolution, you would take the CLi based solution on principle?

      Oh and consquently, I am NO huge MS fan, I'm simply trying to make smart decisions in helping to steer a competitive biotech company, and we have a GREAT time doing it (except on release weeks, but what can you do?).

      -- chitlenz

      --
      Imagination is the silver lining of Intelligence.
  313. A good programmer is a lazy programmer by solidcomputing · · Score: 2, Insightful

    One lesson on CLI based compiling is all that's needed. Developers made IDE's for developers to speed up development. Using CLI should only be used to make minor changes over ssh; suggesting otherwise would be like saying "why don't you teach how to use punch-cards". Press the forward button, teach Netbeans and code-completion, not CLI, vi, or notepad. Spend the saved time teaching UML and project-management skills and how to find existing projects on sourceforge, or even how to start one. Anything to reduce coding time. The average human lifespan is only about 80 years, and by the time you get up to 70 years old you probably won't remember enough syntax to code anything. Coding is something you do only when necessary. A good programmer is a lazy programmer with good business sense. btw, I've never used punch-cards, have you? Educational institutions are always slow to catch up. It's the same reason why students still learn how to build compilers and assemblers. They graduate thinking that they have to write a new programming language. Remember, human lifespan is only 80 years, try to fit in some leisure time in there.

    1. Re:A good programmer is a lazy programmer by EvilSporkMan · · Score: 1

      Knowing how to write a compiler is actually pretty practical because it entails a firm grasp of how to write and use a parser; I was hired in a "Linux support and software development on the side" context and found myself needing to write a compiler (or most of one, anyway) last week so we could support a competitor's internal scripting language. Obviously, I'm still working on it; I've done a parser in bison before but I don't have my CS degree yet and haven't taken a class on compilers.

      --
      -insert a witty something-
  314. mandatory ide knowledge by sgt+scrub · · Score: 1

    When I took PASCAL and FORTRAN my teacher made us use pen and paper. All test were code from our heads onto paper and our grade was related to the number of syntax errors. I regard this teacher as the best I've ever had but...

    After a few years, knowing how to use borland's turbo pascal ide actually became more important. As far as managers were concerned, the more familiar you were with it the more experience you had. Now days it is "the unspeakable tool" and Eclipse.

    I think you should do both. Teach them with Eclipse but make them take tests with pen and paper.

    --
    Having to work for a living is the root of all evil.
  315. Should Students Be Taught With or Without an IDE? by Anonymous Coward · · Score: 0

    By all means YES.

  316. Full IDE not required by DivineOmega · · Score: 1

    Having just completed my first year of university studying Computer Science, I have used nothing more than Notepad and Textpad for Java, whilst using LCC, vi and pico for C.

    In all honesty, I've found these perfectly adequete. Using a full IDE would really be over the top for what was needed.

  317. use an IDE designed for teaching by m874t232 · · Score: 1

    In an introductory class, it's probably best neither to use the command line, nor to use a professional IDE, but instead to use an IDE designed for teaching. Such IDEs tend to have support for things like language levels, interactive experimentation, and additional style warnings.

    Many of them also do not contain support for GUI builders (or let you turn it off), which I consider an advantage in an introductory class.

    For Java, there is DrJava and BlueJ, and for Python, you can get DrPython. The best of the bunch is, in my opinion, DrScheme.

  318. I agree by William-Ely · · Score: 1

    As a CS student I would say definately give a list of approved IDE's. I know a lot of people who used Visual Studio to write C and C++ programs that were supposed to compile on the department's non-x86 Linux server. If your app wouldn't compile without errors you got a 0 for 25% of your semester grade. Needless to say gcc barfed out hundreds of errors despite the fact that VS compiled and ran the program fine. On a side note, the binaries VS generated were also about 10 to 20 times larger than those generated by gcc, not a big deal since the assignments required less than 1000 lines of code but interesting none the less.

    --
    Mod me down with all of your hatred, and your journey towards the dark side will be complete!
  319. I think the answer is somewhere in between. by petermgreen · · Score: 2, Interesting

    A syntax highlighting newbie useable (e.g. notepad like interface) editor with buttons to invoke the compiler (avoiding the need to screw with the command line directly) seems like a bloody good idea.

    Full IDEs with powerfull debuggers and pinpoint resoloution error reporting are imo something that should be saved for later.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  320. Definitely yes by Julian+Morrison · · Score: 1

    An IDE will be infinitely better than vi at showing them the internal interconnections of a program, and helping them (through syntax coloring) conceptualize the different parts of the language.

    Teach low level tools like javac and ant seperately and second after they already grok the language.

  321. Had to read that post over again by Anonymous Coward · · Score: 0

    Oh man, when I read the first line of your post I thought it said "They should have some great debuggers - they're in the business of writing tens of thousands of bugs per day." But then I noticed no one modded you as Flamebait or Troll. My eyes must be tired.

  322. Who are your students? by Anonymous Coward · · Score: 0

    It's almost impossible to provide a meaningful answer for this without knowing who your students are, and where the class fits into the curriculum? (And where your community college is located.)

    Almost every reply here has assumed that this is a computer-science class that's part of a regular computer-science curriculum. At most community colleges here in California, (where I teach), there's a big difference between the transfer-type CS classes (CS1, CS2, and CS3), and the community-development classes.

    I teach an intro to Java course (CS1) where all the students hope to transfer to the UC or CSU system. For that class, I start them out in a text-editor, move them to BlueJ, and end the course using Eclipse. I also teach an intro to C# class where the students are an entirely different population. Once semester, I made the mistake of using the same basic (traditional) curriculum for the C# course, as I used for the Java course (as I think most of the posters here are suggesting.) By the midterm, I was down to five students.

    When I switched to the IDE-focused, fill-in-the-blank, cookbook approach, I was able to keep most of the 40 students through the semester. Of course, I wasn't training them to be great programmers, (or really, programmers at all); but that's not what they were going to school for. If they were, then they'd probably be in the Computer-Science program to start with.

    So, the real question is, who are your students, and what are you being asked to teach them?

  323. Students should first be taught without an IDE. by Anonymous Coward · · Score: 0

    This is something that I feel very strongly about. Having graduated recently within a class of 20 Computer Science students, I have discovered that very few actually know how to work with a compiler, text editor, make, or any other common development system (aside from an IDE). Since it was not mandatory to use anything but an IDE at the university from which we graduated, very few students gathered the experience needed to develop outside of a cozy IDE interface. I now work with several students who graduated with me. It has become a requirement that the software we have developed/are developing be built upon a Linux or Unix based system; the only standard development tools on these systems are make, gcc, and vi (sometimes Joe). Each one of these people are completely lost, and I am the one who gets to teach them how to use these tools. There are IDEs out there for *NIX systems, but none of these are standard; that is, some systems may exist without an IDE installed, and it becomes the responsibilty of the user to know how to use whatever the system has to offer. Basically, I am saying that there are situations where IDEs are not available, and a lot of people get stuck. IDEs are nice in that they offer easier-to-learn and convenient interfaces that help with development. They are not necessarily more powerful than the standard *NIX ways of developing software -- but it can be argued that they are easier to use. The trouble about IDEs is that they don't teach you about what is happening behind the scenes. They abstract away the interfaces to the compiler, and assume certain configurations that are not necessarily the most efficient or useful. A programmer should know how to use their compiler. They should know how it works, and what it is really doing. That is why I feel it is necessary to first teach them how to work without an IDE -- then, once they know what's going on there, let them use an IDE (as a lot of companies do use IDEs too). There. That's my rant.

  324. IDEs make a good crutch by petermgreen · · Score: 1

    its a lot easier to throw together something that sort of works and therefore manages to scrape a minimal passing mark with the help of a powerfull IDE than without.

    Its a bit like graphic calculators in maths. The student can find out a graphs shape by getting thier calculator to brute force it rather than by actually thinking about its properties.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    1. Re:IDEs make a good crutch by ClosedSource · · Score: 1

      Are you assuming that the IDE is going to write the code for you? That's the only scenario that would invalidate my claim that the code the student writes is sufficient to determine his grade.

    2. Re:IDEs make a good crutch by petermgreen · · Score: 1

      assuming we are talking about proffessional ides here (rather than syntax highlighting editors with compile buttons) then yes they do a huge ammount for you.

      taking eclipse as an example:

      all your import statements are done for you if you use ctrl+space (no need to actually build up a feel for what classes will be in what packages)

      no need to learn the full names of anything or the casing conventions of the language.

      pinpoint error reporting (red line under the bad code!) so you don't have to do any thinking about where your errors are.

      powerfull debugging features so people don't have to think about where a bug is likely to be.

      all theese are things that help people who don't know what they are doing cobble together code.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    3. Re:IDEs make a good crutch by ClosedSource · · Score: 1

      So essentially your argument is that all of these automated functions make the process of coding more efficient and we don't want students to use them because if they do they might actually take them to the workplace and work more efficiently there as well.

      These sort of arguments could be made for every tool at one time or another:

      Microprocessors prevent students from learning how to use random logic.

      The use of assemblers prevent students from learning the hex values of machine code.

      Compilers prevent students from learning assembly language.

      Optimizing compilers prevent students from learning how to write efficient programs.

      etc.

      The fact is that in the real world the winners take every advantage they can and the losers are left pondering how manly they are by doing things the hard way.

  325. IDE or Not? by CFBMoo1 · · Score: 1

    I'd say only use an editor with syntax highlighting to help them learn better. Make sure it's pretty basic so they learn more and the IDE just helps them along. Type-o's can be a hard thing to spot for even experienced coders. That missing bracket or extra quote will stand out a lot nicer depending on the highlighting and help them see their simple mistakes quicker.

    VI highlights a lot different languages, something like that to start off with wouldn't hurt I think. Easy to open, edit, and save a file. As they get better they can explore other options. Another good one is a basic version of jEdit with your languages highlight plugin installed. If your running them on Linux machines with KDE, Kate has some syntax highlighting too I believe.

    --
    ~~ Behold the flying cow with a rail gun! ~~
  326. Code ASM if you want it to be hard by Anonymous Coward · · Score: 0

    The reason for selecting a higher level language is because it should be easier to code. Not harder. The linux community don't get it. GUI rox, console sux.

  327. Forget the IDE -- concentrate on programming by Chuck+Messenger · · Score: 1

    I would definitely not suggest the use of an IDE, in your situation. As I understand it, what you're trying to do is to teach software design. Everything which isn't about software design should be avoided. There's plenty to cover -- you just confuse the issue by bringing in this whole complicated IDE thing.

    Besides, at a beginning programming level, a student might labor for hours over 100 lines of code. Only when you are fluent, might an IDE become a significant productivity enhancement (where you might blast out hundreds of lines of code a day).

    Furthermore, I myself haven't found IDE's to be very useful. They really just get in the way. Better is to have total control of your development environment -- editing makefiles yourself. A syntax-knowledgeable editor is nice, as is a good shell, combined with a fast way to access API info. IDE's only let you work in a certain way -- conforming to a certain model. An IDE channels you into a very constrained way of thinking. That doesn't sound like a good idea for a CS student. You want them to explore the territory on foot. Later, they might get a car, so they can get from point A to point B faster (once they know where they're trying to go).

  328. I'd go with an IDE by Anonymous Coward · · Score: 0

    It comes down to a question of what the class is for. There often isn't much sense in teaching about a specific compiler/run time. Those kinds of things are usually dependent on what's already used at a workplace. So no matter what you teach, it will be wrong for someone. If you are teaching Java and Python, don't teach vi or emacs. Don't teach an IDE either. I would recommend using an IDE that is as simple as possible. Start with a generic understanding of what a compiler/run time does and how to use them, then get right to the code and teach that correctly. The code is what the class is about right?

    BTW - If you really must use vi... go with vim instead to get the syntax highlighting.

  329. More than a command-Line, Less than an IDE by Anonymous Coward · · Score: 0

    You have to decide whether your real goal is to teach a complex editor such as emacs, project development using an IDE, or teach Java and Python. What your focus is will affect your choice of development tool. I taught an intro to programming course to high schoolers using Java a couple of years ago. Jedit is a nice editor with syntax highlighting for many languages, the menus are helpful because it takes time for students to learn the key combinations, and it allows for plug-ins which make it _almost_ an IDE for simple projects. You can pick a couple that actually make it easier for the students, not add to the complexity of learning a whole new environment. It was easier to learn than either vi/emacs or an IDE, and allowed me to focus more on the language. There are a couple of other text editors that you can do this with too.

    In addition, most students used Jedit on Windows, a couple used it on Linux, one on OS X. Jedit was remarkably consistent between all three environments. Again, this reduced the time focused on editors/IDE's gave more time to the language.

  330. Edit-Compile-Link-Run-Debug much easier to teach by OrangeTide · · Score: 1

    It is much easier to teach these actions when you have a command-line where you must enter exactly one command for each step. GUI IDEs can be a little distracting and they tend to have a LOT of buttons on them which a new programmer might not need or understand. After students type cc -Wall -c myprog.c ; cc -o myprog myprog.o -lm ; ./myprog ; gdb ./myprog for a few projects you can then just give them a simple 1 line makefile or hand them a one page tutorial on how to use eclipse or whatever and let them figure that stuff out on their own. (I suppose you coulud show them in class, because adding files to projects, changing settings for libraries, etc can be kind of confusing in many IDEs).

    I wouldn't have them use vi. Unless they already know vi (unlikely). You can do this from BBedit, xemacs, jedit, whatever.

    --
    “Common sense is not so common.” — Voltaire
  331. Not IDE vs. Editor, interactive interpreter + help by NNland · · Score: 1

    In my experience of learning programming languages, as well as programming in general, in Scheme, C/C++, SML, Python, etc., the most useful feature of learning a programming language wasn't the IDE vs. editor question, it was whether or not there was an interactive interpreter for the language.

    With Scheme, SML, Python, Mathematica, Prolog, etc., after learning a bit of syntax, you can sit at a computer and try the syntax out, work through your assumptions about the syntax, etc., giving the student a better idea of what is going on.

    The other rub about writing actual software in these languages is documentation. I personally prefer to have documentation in any format similar to the Windows help file format; but that's generally because the documentation I tend to look at (Python and wxPython) have documentation that have convenient indices for modules/classes. I also prefer to have help exterior to the application in which I'm programming, but I understand the desireability of being able to have a tab for documentation viewable while programming.

    So, to answer the bigger question: if the language has an interactive interpreter available, give students access to it (Python obviously does, as Java does if you look around). Be careful of offering editors with built-in interpreters, you don't want your students crashing their editor (test to see if the interpreter can recover from 'while 1: pass' or 'while (1);'). For writing software/assignments using standard libraries, make sure that documentation is easily accessable; external or internal to the application.

    Once you've got an interpreter, documentation, and an editor that at least isn't braindead, you've got all of the essential tools for teaching a language to students.

  332. Teach the languages not the editor/environment by skeptictank · · Score: 1
    I don't see why you should be concerned with the text editor/IDE the students use to write and test the assignments. Spell out clearly to them what interpreter/virtual machine you will use to test their assignments and make it clear to them that what they turn in is expected to work on those.

    Since this is a community college course, many of them may expect to do their assignments on their own personal computers. It's unlikely that they will have unix workstations or linux as an installed operating system on their private machines, unless this is a requirement of the program or the course.

    Are they required to do their assignments on computers provided by the college? If not, then the most capable of them will want to do the assignments on their own machines.

    It's entirely possible that you will get one or two students that have twice as much experience programming computers as you do and are there to burn corporate training credits and pick up some languages they are not familiar with. They will write the code for the assignments using their tools of choice, no matter how you tell them to do it.

  333. How about a hybrid approach? by Anonymous Coward · · Score: 0

    IMHO, programming and building are two separate, but (obviously) very dependent subjects.

    My personal feeling is that for the first introductory programming class or two the use of an IDE is perfectly reasonable. That said at some point (especially for CS, Comp E, IS, etc. majors) build technology needs to be stressed.

    One option would be to teach the course in a hybrid fashion. Start off with an IDE and teach new programming concepts via the IDE. Introduce them to the products and by-product of compilation along the way minus the complexities of the underlying build system.

    Once the students get a basic feel for the products by-product, file system, modularity, compilation, etc. then have them do a few assignments using MAKE and/or batch files. Ask a few questions about the build process on homework, quizzes and tests.

  334. Start without but introduce it later by Anonymous Coward · · Score: 0

    For most students it is neccessary to understand the build-process of a particular language. So it is a good idea to start with a really simple program without an IDE.

    If they understand simple Java-classes and (a little) Ant-build-scripts you can introduce for instance Netbeans or Eclipse.

    The nice thing about Eclipse is, that you can use it for Java and Python. But it lacks a GUI-builder (in the default package).

    Also all depends on how many hours/lessons you have. At our university we implemented courses with 4 hours lecture time and 6 hours "homework". We start with some basic insights into Java and the basic concept of that language. Then the students try to implement a filemanager or something similar. At the end of the course they have a complete application.

    In parallel to the program development, they have to document and discuss their work. To do so they have to work in groups (2-3 students).

    As this is ther first language they learn at university, we are easy on them. :-)

  335. Either option by Anonymous Coward · · Score: 0

    You should let them have either option. Although 90% of my jobs programming have had no command line access and I had to use a text editor (I use textpad still) to check things in and out of version control.

    VERSION CONTROL! Make sure they understand the concept and get them to work on group projects with cvs or visual sourcesafe...

    If you really want to help them you should give them open ended projects where they have to think and come up with their own designs and solutions.

  336. Consider using ipython by DrMorris · · Score: 1

    Some other poster gave the advice to teach w/o computers and instead let the students write programs on paper. That way you can avoid that they fall into the trial and error loop with todays highly interactive systems (as opposed to programming with punch cards) and instead force them to think before they actually do something. Good advice!

    BUT: If you choose to go another route and actually use computers for the course, consider using ipython. Python itself gives you an interactive environment which is similiar to how Lisp was intended to use. ipython goes even further (check out the website for the features), is easy to use and comes in color! :-) It's a one time chance to introduce these people a different approach to programming (as opposed to write -> compile -> test).

  337. Java - Without by aflat362 · · Score: 1
    I am a java programmer - I'd say learning java without an IDE is important to understand the details of the platform.

    I would say let the students use whatever text editor they want - I would recommend something that does syntax highlighting such as EditPlus. Using an IDE like eclipse is great for pros but it undercuts a learning student because it makes it too easy to code and you can't learn the libraries as well. When you type an object name and hit the period key, a context menu of available methods and properties come up. Makes it too easy! it also makes it too easy to package up jar files. When all you have to do is right click and select export you have no idea what is going on.

    So - have them use a text editor to compose their java files and require them to use the Sun java command line compiler javac to compile their applications. You could even make them prove that they used command line by printing off their command line session and handing it in with their homework if you wanted.

    And I'd recommend getting them familiar with the other java command line tools such as jar.

    Towards the end of the semester you might want to introduce an IDE and have them use it in like one assignment to make a simple application. If you teach a more advanced course then I'd say let them use an IDE.

    --

    Conserve Oil, Recycle, Boycott Walmart

  338. Have them use what they want. by Anonymous Coward · · Score: 0

    It's very simple Have them Use What they WANT.

    Each person is a individual. They need to be taught how to use IDE's because that's what people are forced to use or choose to use based on their employer. Some people just simply much prefer IDE's while others are more productive and produce better code without the 'interference' from a IDE.

    So teach them how to use all sorts of different tools. As a professor/teacher you should be fairly knowledgable in all of them. If you have some students that can't decide, just force them to use what you prefer so that you can help them out the most.

    Some interesting items to take a look at:
    Microsoft Vistual Studio (obviously)
    Vim and Vim vs Vi (obviously) Lots of interesting stuff like ctags and whatnot.
    Emacs (obviously)
    SPE Python IDE.
    http://stani.be/python/spe/blog/ (probably the most mature remaining Free Software IDE for python)
    Kdevelop
    Gnome Desktop and development environment. Maybe monodevelop
    Eclispe Java-based IDE for a veriaty of languages.

    Then version control systems. Popular and common open source items like cvs and svn as well as commercial items.

    Just let them know what is going on. For small stuff use a text editor. For finals and big projects have them use what they want.

    Grade them on completeness and code quality and then use that information to further refine your recommendations for the next crop of students.

  339. both, dammit! by Anonymous Coward · · Score: 0

    Ok, I'm going to admit something embarrassing: After multiple courses in ANSI C, C++, Java from intro thru advance topics and networking, I still can't write my own complex or useful code. I don't really need to, because neither my job nor my hobbies directly rely upon it, but competent coding skills are sort of assumed in my role.

    Why? Because no one ever showed me how to write my own libraries or deal with code that spans multiple files on a file system. I'm sort of a victim of the post-graduate every-class-is-a-one-week-powerdump-from-Sun-educa tion approach. Everything was academic example, with no real world usage of IDEs, and certainly no explanation of what an IDE was doing under the covers. So I'm two steps removed from firing up a modern IDE to do something interesting. About every six months I decide I should finally figure out how it's done, but find no mention of it in the standards-based text I can find in print or online. When I look at advanced texts that discuss IDEs, it's assumed and not mentioned there either.

    So, yeah, I think both ought to be taught because the transition is key to doing *anything* useful. Sure, learn the theory first, but if you jump from theory to application without discussing approach, people like me get left wondering how we arrived.

  340. Depends... by Anonymous Coward · · Score: 0

    If you want your students to learn an IDE, use one. If they should be learning just a languge, they shouldn't use one. But I wouldn't disallow use of IDEs either. Depends on how well they already know the IDE...

    Just my personal experience but when students are trying to learn a language and use an IDE at the same time (assuming they aren't already well versed with using the IDE), they tend to spend most of their time learning the IDE rather than the language itself.

    I am old school as well as I started programming in mid-teens more than 20 years ago. So I tend to view programmers that can not or refuse to program WITHOUT an IDE as...well...they still have a lot more to learn. :P

  341. Introduction Level Courses by LittleBigScript · · Score: 1

    Definantly should be done by the command line. It will probably be something most of them have not experienced anyway, so it will be a nice way to round off the course.

  342. Neither IDE nor Emacs nor VI by justine_avalanche · · Score: 1

    There are tons of editors on all platforms. Emacs and vi are the most popular on unix flavors, but hardly the only ones. Pico is the perfect example of an editor requiring no learning curve, so is notepad. Hardly the best tool for programming, but the students should grow out of them naturally (to either emacs, vi, jedit, ultraedit, eclipse, netbeans, or whatever they like).
    Let them use what they want, they should figure out what env work the best for them.

  343. Maintain silence by Anonymous Coward · · Score: 0

    Now, I admit that I'm a crank (I don't use an IDE to this day, but I'm also a theoretical physicist turned molecular biologist and no one's on my case about such things), but when I was teaching myself to program my C book had a little box in which it described how to compile a C program under unix. It took about a page. (The book was 'C: A Software Engineering Approach' which I appropriated from my father's bookshelf.)

    I think this is a rational approach for an introductory course. Make sure the kids know that Word isn't a text editor, but besides that, just tell them the minimal about compiling a program. And then say no more about it. Personally, I was always furious when someone tried to force a set of tools on me.

    Though if you want to avoid thirty undergraduates ergodically searching the phase space of programs, why not just take a set of initial conditions, and as part of the assignment demand a write up of all the steps leading from them to the output as well as a program implementing the technique. That's how I work out what I'm doing in practice before I ever write a line of code.

  344. Go to the accounting department... by clambake · · Score: 2, Insightful

    As the accouting professor if he teaches people accounting first on paper or using Excel. Whatever he answers is what you should do as well.

  345. Teaching with IDE or Raw Coding by lznancy · · Score: 2, Interesting

    If you are teaching an IDE then use an IDE and treat the language as an afterthought. If you are teaching a programming language then teach them the language and then introduce an IDE as a productivity tool if you so desire. Note: IDEs come and go in and out of vogue and if they are vendor specific as may be true in programming shops where the students will work that particular ventor's package, and of cource IDE, may be gone in 6 months. That is not an assumption on my part but an observed fact of life. IDE's do not reflect the raw behavior of the language and more to the point often can and do make underlying assumptions or operational decisions. Being second guessed by a programmer 2 years ago who thougt that feature of the IDE was cool can be an annoying experience at the best and a fatal one at the worst. It is difficult enough to get a clean behavior of a particular language relative to its specification in a bare bones environment much less as an embedded component in a complex IDE. IDE debuggers don't always reflect the true behavior of the program under general hardware/OS conditions. There are also debugging issues, especially in production environments where the IDE cannot be used in many cases. One of the side effects is often the failure of putting in reasonable program logging and debugging statements because the IDE debugger makes them unnecessary. That can leave you holding the bag at 2:00 am. trying to solve a critical production problem without any usable information. IDE's can become crutches in that a basic understanding of the programming process is assumed to be the process behavior of the IDE, especially by a novice. Sometimes IDE environments can be buggy (after all they are just an added layer of programming complexity from an operational standpoint). You don't have to create expert System Programmers with all the nuances of hardware/assembler/compilier specifices, just give them a basic development environment that can edit/compile/build the basic language for the available hardware/os. After you've gotten them working with the basic language give them the option of using an IDE but have some work that is independent of the IDE always included in the exercises for the rest of the course. If you don't want to be pedantic then after the initial introduction make the non IDE related exercises extra credit. There is nothing wrong with an IDE as a tool, but that is all that it is a tool to managing the programming environment. What counts is what actually ends up running on the hardware and the student's basic understanding of it. Consider that a student properly exposed in this manner can then move from one IDE to another and even work when necessary without one. Basic programming practices (Structured logic, Object Related Design), and a real understanding of the basic language behavior relative to the state machine coupled with some workable knowledge of the standard associated libraries goes a long way to building a competent programmer.

  346. IDE Optional by tilrman · · Score: 1

    If the students want to use an IDE, let them. If they don't, let them. If they want to touch-type, if they want to hunt-and-peck, if they want to bring in a Dvorak keyboard, let them.

    Show them how to invoke the compilers from the OS. Tell them what editors and IDEs you will give them help with in class, and give them a list of some other common and/or newbie environments that they might like but that you won't support.

    (If you provide them starter code, be generous and give them a makefile too.)

    Grade the final product -- the source files -- not the process.

  347. Program raw by ccc31807 · · Score: 1

    I've taught a number of introductory programming courses at the junior college level. For my money, teach Java on Windows using DOS edit (or notepad) and use javac and java. Python comes with it's own native IDE, which you should use. The probmes lwith IDEs is that the student learns the interface, not the language. I've dealt with a lot of students after the fact, and they were whizes on the interface, but know very little about logic, pseudo code, variable scopes, and little things like that. If you want to teach them to program, don't use something that hinders learning to program. Serve it up raw. CC

  348. Good grief! by IceFoot · · Score: 1

    Good grief, man! These are JUNIOR COLLEGE students! You need to seriously dial-down your expectations. You are clearly savvy and bright, but you cannot expect all (or even a majority) your students to be the same.

  349. Hell yes! by ajv · · Score: 1

    I do code reviews for a living. It requires finding the "abscence" of something, and looking for the data flows.

    I want coders to stick to coding standards, and work on what's important: the code as a representation of the architecture. I don't want them thinking about the last 25 lines of code. I'm sure many are proficient at using vi and emacs (I am proficient at vi, for example), but it's about 25 years behind the times when it comes to efficiency, particularly when dealing with very large projects.

    Builders are trained from apprecentices to masters, during which time they are taught to be familiar with all forms of tools, not just the power (ie "IDE") tools du jour. It's important for a builder to be familiar with a hand saw, you want them to be proficient and safe with a power saw.

    --
    Andrew van der Stock
  350. *duh* by n3v · · Score: 1

    Without then with.

    IDE's make things easier when you already know what you are doing.

    What part of the C or C++ language teaches you on how to click on add object?

  351. Do both by gbobeck · · Score: 1

    Personally, I think it is good to teach any programming class using an IDE and command line for code compiles.

    From my experiences... When I learned Java, we used BlueJ. We never did command line compiles, and as a result, we suffered when our IDE died due to a server issue. When I learned OOP, we were encouraged to use Visual Studio for our c++ code, however, we all found it easier to use gcc for some of our projects.

    Now for my Python coding, I use Eclipse (IMHO, the best IDE for Java and Python using PyDev) for coding and command line for extended testing and deployment.

    One of my professors covered both IDE and command line compilation in one lab... he simply made us do it. After that, it was never an issue.

    --
    Navicula hydraulica plena anguilarum est. Omnes castelli tuus nostri sunt. Ed elli avea del cul fatto trombetta.
  352. It really depends on the level by Bongo+Bill · · Score: 1

    First: are you teaching broad concepts or specific skills? And, if you are teaching broad concepts, are they concepts that are related to writing the program, or to compiling it? I say, use an IDE to teach them general programming techniques, so that they can get results fast and learn decisions and loops, and then take it away so that they can learn what they were actually doing.

    --
    ...but is it art?
  353. BlueJ by fragmeat · · Score: 1

    I was taught java using bluej, this had its ups and downs. Its a great way of teaching object oriented principals as its visual display of classes, inheritance and interdependancy can help to hammer in a lot of abstract principals to those not used to dealing with them. The downside is its not a very good ide, while it was good to learn with its not somthing id choose to write code with. It dosnt force people to use main methods when programing so frequently you'll see people writing code which compiles and runs under bluej but is useless within the real world.

    I'd still recommend learning it the way i did, get the principals of programing down show them all the pretty things it does and warn them about its naughty features. Then when theyre comfortable with bluej get the writing code without it, command line tools and whatever text editor you like. Once they can write code in bluej, they can transfer their skills to notepad and javac. Once your used to writing code in both then you can work with anything handed to you, vi, emacs, jbuilder, eclipse all of it.

    Just make sure they stop using bluej when you tell em to. At the end of my first year its frightening how many people havnt made the step away from it.

    anyway have a look at bluej here
    bluej
  354. IDE for beginners by ls+-la · · Score: 1

    In my experience, one of the easiest ways to learn a language is to learn some syntax, and then play around on an IDE with good code completion.

  355. What I say at the start of the first class meeting by Anonymous Coward · · Score: 0

    "You're welcome to use whatever editor or IDE to write the assigned programs - I don't care. I want to see your code, just your code, and nothing but your code.

    I will say this - you can complete all my assignments using notepad or ed. It's an introductory course - if you can't manage all the files using a blisteringly simple text editor, then you're probably doing something terribly wrong.

    If you want to take the time to learn a fancy IDE because it'll save you time in the future, more power to you. But I won't spend class time teaching you an IDE."

  356. While you're at it. by Anonymous Coward · · Score: 0

    Heck... they should use a line editor. Those fancy full-screen editors are just too much dang coddling of those youngsters. If I had my way, they'd be punching cards, submitting them for batch processing, and waiting for their output the following day.

    Make sure they don't use any cheats commonly available with these fancy SDK's like J2SDK, what with all those String constructs, and System class methods like .out and what have you.

    Code to the iron = assembly code. Heck, even that's cheating -- those assemblers. Ya never know if it's putting out the machine code exactly as you want it.

    Emacs and Vi are both IDE's.

  357. MOD PARENT UP by WindBourne · · Score: 1

    I have taught all over the country at a number of companies (perl/perl internals, C, C++, data structures, linux api, linux internals, etc). I have on occaision had to teach vc++. What I have observed is that those who use VC++ spend their time learning the tool and not the concepts or the language. If you keep it simple, then the student will be forced to learn what they need to learn.

    --
    I prefer the "u" in honour as it seems to be missing these days.
  358. Why IDEs fail - Why they succeed. by PopBus · · Score: 1

    Check out www-csfy.cs.ualberta.ca to see one of the best-designed intro to Java courses in the world (University of Alberta - one of the world's most respected CS departments).. They teach from end-to-end using the Eclipse IDE (www.eclipse.org)..

    The catch is that you need to teach the IDE in the OOP context.. IDE's (not glorified text-editors like VI and Emacs) are designed to help keep track of assets as well as the programming style.. If you teach the methods and algorythms using the IDE as a means rather than an ends to proper programming, you will spend less time on the details and more time on real skills like proper data design and efficient programming (unfortunately, something many of the self-taught philosophers you see in these forums lack)

  359. Do Both, Sort-of by taradfong · · Score: 1

    Everyone who wants a real job needs to understand makefiles.

    Or how to work on a command-line *nix system.

    Everyone should know gdb command line basics too - how to get a stack trace, how to set conditional breakpoints, etc.

    And using crap like the old[Microsoft 'AppWizard' that defines classes and methods for you is a disservice to students.

    BUT to me there still is a huge productivity advantage to using a MSVC-style debugger. You will debug things that you might normally give up on or write printf()s for, and that ain't the right way...

    Then again kids don't learn to debug anyway. Which is fine by me because it means it's easy for me to keep earning good coin.

    --
    Does it hurt to hear them lying? Was this the only world you had?
  360. Same problem, different field by peacefinder · · Score: 2, Interesting

    My father was a community college professor in a technical subject. In his case, diesel engine service. The particular course in which this incident took place required students to tear down and rebuild a variety of fuel injectors, then hook them up to a test stand to prove they operated correctly and held under pressure, then adjust them on the stand to the proper flow rates.

    One particular kid just could not tune his injector right. He could tear it down, rebuild it, and hook it up to the stand, but when it came to adjustment he just couldn't get his first injector to come into line. Adjustment was a simpe matter of turning a screw: one way for more fuel, another way for less. Eventually, my dad just stood there and watched the kid work. Eventually dad had his eureka moment that revealed the problem. Being an old-school industrial instructor, he just grabbed the guy by the wrist, pulled him away from the test stand, and pointed him at the wall clock.

    "What time is it?" my dad asked.

    The student tried to look at the digital watch on his wrist, but dad's wrench-hardened hand had his wrist clamped tight and covered the watch. The kid looked at the analog wall clock again, and couldn't say what time it was.

    He couldn't read an analog clock. He didn't have know what was meant by "clockwise for less" and "counterclockwise for more" and had been too embarassed to ask.

    Sometimes the basics really matter.

    --
    With reasonable men I will reason; with humane men I will plead; but to tyrants I will give no quarter. -- William Lloyd
  361. Both by deque_alpha · · Score: 1

    Start the semester without one. Make them use a text editor and do everything "the hard way". Then about half or 3/4 of the way through, introduce IDE's that have nice features for what you will be making them do.

  362. FOR THE LOVE OF ALL THAT IS GOOD IN THE WORLD... by fzammett · · Score: 2, Insightful

    ...TEACH THEM WITHOUT AN IDE!!!

    I cannot tell you how many people I deal with all the time that simply cannot function without an IDE. An IDE is a tool, not a crutch, and I see too many people using it a a crutch. Until you are 100% sure they know the underlying concepts, DO NOT let them use a tool that might save them a few seconds of actual thought. I can't stress is enough. I've seen the results of people that can't perform without the computer thinking for them.

    The business world will eventually learn that hacks throwing together craplets costs them far more time and money then a few talented developers doing it right the first time. Or they will continue to throw money at the problem, expecting that just getting 30 warm bodies that know how to press the right buttons in the right IDE will be a good strategic plan. Chances are the truth won't be realized until they go out of business.

    Also, I should point out that I hear so many stories on a nearly daily basis on how the IDE didn't do what it was supposed to and someone spent four hours figuring out why it was munging a classpath, or not generating the XML config files for framework X properly, or some such mess. They spend more time fighting the tool than they do getting work done. It's a joke! How exactly is that IDE making them more efficient?!?

    I don't mind if people want to use an IDE. I personally don't, and I frankly work more efficiently than a great deal of people I know who swear by IDEs (I'm a bit of an extreme case though... after 20+ years of programming, my technique is pretty refined). But if your going to use an IDE, you damned well better know what's going on underneath. If you don't then you have no business developing in the first place.

    Related to this is my lamentations about people not knowing low-level programming any more... hell, even I haven't written real code in Assembly in a few years, but I *did* for a while, and I understand all the basic concepts... just being able to "think like a computer", which you'll never learn using tools that hide the details from you, is a lost skill IMO, and is the reason so many crap developers are floating around these days. It's all about thought process, not about what real skills you have. Anyone can memorize this algorithm or that domain model, but the people that can derive them themselves (or something roughly equivalent anyway) are the ones that are worth something. If you aren't "in sync" with the computer, at both a low and high level, your not an especially good developer IMO. IDEs make it easier for those that don't understand to *appear* to be in sync, but they really aren't.

    Eh, whatever. The "best" development environment is an age old debate. If you have the basic skills, its a moot point: use whatever your most comfortable with and can be most efficient with. For some it's Eclipse with all sorts of plugins, for some it's vi and a command prompt. If your learning though, and if your teaching, do yourself and your students a favor and don't allow them to become crap developers who can only push buttons to get the desired output like trained monkeys. Force them to think, force them to become as intimate as possible with the machine (which is already difficult in Java, but still), and only *after* you are sure they are, *then* introduce them to the tools that will theoretically make them more efficient.

    It's just my opinion, but it happens to be right ;)

    --
    If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
  363. Re:FOR THE LOVE OF ALL THAT IS GOOD IN THE WORLD.. by PopBus · · Score: 1
    The business world will eventually learn that hacks throwing together craplets costs them far more time and money then a few talented developers doing it right the first time. Or they will continue to throw money at the problem, expecting that just getting 30 warm bodies that know how to press the right buttons in the right IDE will be a good strategic plan. Chances are the truth won't be realized until they go out of business.

    Actually, I am a project manager in the "real business world".. I can tell you where the "craplets" come from, and it's not the programmers using the IDEs, it's those "pureists" that refuse to use the tools given to them.. Sure, their syntax is perfect and they know the language.. Hell, they might even know how to allocate memory to a program under MS-DOS without causing fragmentation with a nifty little assembly APP, but none of that makes a multi-million dollar project succeed - it is the programmers that can collaborate properly and follow a project plan as given to them from me.. (no, CVS and makefiles don't do this - logical project mangement does this - something better handled by an IDE than by a bunch of files thrown into a bunch of folders)..

    The IDE assists in dealing with a project's assets properly as well as code-completion and debugging.. This way programmers can spend more time on learning algorythm efficiency, proper encapsulation techniques and modularization and, above all, efficient programming techniques.. There's no reason an IDE has to get in the way unless it is seen as a simple tool like a screwdriver, not a complex tool like a nuclear reactor.

  364. Very insightful. by PsiPsiStar · · Score: 1

    Good catch. I'm going into e-learning(career). One more thing to watch for.

    --

    ___
    It's the end of my comment as I know it and I feel fine.
  365. Are you asking the right question? by slashdot_commentator · · Score: 1

    The question that needs to be answered first is: Are you a professor at a real university with a real computer science program, or are you teaching at a VoTech school.

    If it is the latter, absolutely teach with the IDE, because showing proficiency with tools is a selling point with employers. After all, isn't it why they are accepting the institution's diploma as validation of competence?

    If its the former, its irrelevant. You're supposed to be teaching concepts of computer science which impacts on the specifics of the course. Yes, a credible computer science program should put out people capable of developing code in an effective manner. But as I understand it, you're supposed to be educating students to be able to properly determine the best approach towards solving a computer resolvable problem, using the state of the art techniques. Not teaching students how to be the best code monkeys they can be for their employer. The tools used should be utterly irrelevant. You're teaching applied concepts and theory.

    As an aside, a good academic program should have exposure to both IDE environments, and "non-automated" environments. But how that is structured should really be considered by the Dean. More important, I believe, is to teach an assembler class, or at least cover assembler in a systems class. Yes, its "painful", and almost all career programmers will never use it. But I think its a vehicle to insights as to how the computer really "thinks", and gives a better appreciate of what is possible and not possible with hardware. To remove THAT from the curriculum is a lot more damaging to an educated conception of the machine, than being spoiled by an IDE.

    --
    There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  366. focus on what you are trying to teach by Anonymous Coward · · Score: 0

    First, focus on what you are trying to teach, and let that guide your thoughts. Think about the context(s) the students will need to have.

    Second, focus on what the students will need to know to get a good grade. In particular, if you are testing the build, deployment, and and execution of the code as part of the grade, describe to them the build, deployment, and testing environments.

    Third, if you are going to allow the students to ask you questions about editors or IDE's, explain to them which ones you can support.

    Having said all that, my best intructor taught us to "be one with the system". I learned a ton from him that I may not have picked up elsewhere. He encouraged us to use Emacs, and admitted that he had been a huge vi fan in the past, but he did not spend class time teaching these tools. These days, I use vi, emacs, and various IDE's depending on what I'm trying to accomplish.

  367. Both by Etriaph · · Score: 2, Insightful

    First of all, you should teach formal logic on a blackboard. I wouldn't let someone touch a computer unless they knew the difference between a scalar and a list.

    Secondly, they should learn how to implement this knowledge in the most simple language possible. BASIC, Pascal, etc. Don't confuse them with an advanced tool when it's the code that matters at this point.

    After that, keep raising the bar and exposing them to more and more of the language, then introduce the IDE. How code translates to the machine, to the project, to the enterprise is irrelevant if they would-be software developer doesn't understand a control statement. Keep the focus on the code before you introduce a way to make it easier. The learning curve is steep enough for some.

    That's my two cents.

    --
    "It's here, but no one wants it." - The Sugar Speaker
  368. The 'Right' IDE by zekt · · Score: 1

    Back when I was misguided enough to believe that staying at Uni, doing a PhD and teaching and researching is the right thing to do, I was part of a team that was doing research into just this topic over a period of about 5 years. This was back in the days where ides were just getting graphical, and at that time they provided a really good insight on the difference between cogntive overload and usefulness.

    Here's what we found in point form.
    1) There is a point where a student gets overloaded with too many features.
    2) The ide should reinforce the concepts you want to teach
    3) There should be visual access to tools
    4) You should use the ide in your lectures and tutes all the time
    5) Don't overload them with too much stuff.

    So, my thought is, sure get an ide. But, try and find an ide that you can
    switch some things off in. Find plugins that help you assist to teach the things you need to teach and pre-configure them (ie: code checkers, javadoc generators). Set up projects for things that are pre-configured and teach them about projects later. Disable things like debuggers etc to begin with.

    One thing that people forget to do is to make mistakes in front of the audience. Then show the audience how to solve them. To that end, it is almost a good idea to go into your classes under-prepared and get everyone involved in the process of writing code. Then you have the reason to show people debuggers, find and replace, refactoring etc etc.

    The ide is the tool - you need to make it work the way you want it to. A hammer does not do everything for a good reason - it becomes too unweildy.

    --
    In my next incarnation, I hope to come back as a code monkey.
  369. What are the Schools requirements? by toren8 · · Score: 1

    Based on the title of the class (intro to Python and intro to Java) the class should use an IDE. This leads to the class sounding like an introduction to a language, not an introduction to programming. These are issues that should be discussed with the institution you will be teaching at. If it is an introduction to programming, then pass on the IDE and stick with a simple text editor for the first two or three weeks so the students understand the process that happens when they hit the run button in an IDE. After the first project, go back to using an IDE.

    An IDE is not going to write the code for the student. They still have to figure out how to write the code properly. Since the class is an introductory class, an IDE would be very beneficial to a student new to a language trying to learn the syntax.

    Overall, the question of using an IDE does not need to be asked. No projects in an introductory class should be large enough to have an IDE make a substantial difference. Generally, the student should be given smaller projects that build confidence in the language and their ability to write code. An IDE is only going to make it easier to look up functions and syntax to learn the language not write the code for them.

  370. Old school FTW by daybot · · Score: 1
    I'm reaching the end of my computing science degree and thought I'd chip in.

    In the past five years I've had rubbish IDEs shoved down my throat and I've resented it. I go through the first lab sheet for each module, which introduces the IDE, and that's it. I've only ever used TextPad (www.textpad.com - notepad replacement including markup colouring) and Emacs for actual work in Java and C at uni, but they really did force us to use Visual Studio for C++.

    Reasons I don't like IDEs:

    - Take too long to load / use too much RAM

    - Typically require so much faffing around that it takes *longer* to write a small program in an IDE than in a text editor.

    - Text editors and compilers are more reliable i.e. crash less than IDEs.

    - IDE = too much clicking... Mouse != fast.

    - Different University staff have different preferences and experiences of IDEs, so you end up learning 5 different programs for the same task...

    - Our University taught us to use a non-free IDE and locks the labs shut at 17.30. The IDE in question was something like $350 - talk about encouraging piracy.

    My "boycott" attitude to IDEs at uni has saved me hassle, money, RAM, disk space and I am better able to reel off code from the top of my head (useful in exams and the workplace) than my peers.

  371. Re:FOR THE LOVE OF ALL THAT IS GOOD IN THE WORLD.. by fzammett · · Score: 1

    "...it is the programmers that can collaborate properly and follow a project plan as given to them from me"

    I agree with this. I am in much the same boat as you by the way, so I know where your coming from here.

    "The IDE assists in dealing with a project's assets properly..."

    This I have to disagree with. I know what your saying, and in theory I would like to agree, but I've seen cases where I was asked to essentially save a project that had become such a mess specifically because the IDE was allowed to go off and deal with the assets, while the original programmers didn't have a handle on what was going on. They couldn't even be sure each production build was going to work because they did not know the steps the IDE was doing (there were a number of instances of builds simply failing for no apparent reason that wound up being IDE config problems... not the IDE's fault per se, but had the programmers not been relying on the tool without understanding what it was doing, these problem wouldn't have happened).

    One other problem I've found with most IDEs... well, more specifically, Java IDEs, since most of my work is in Java these days... they all seem to be painfully slow. Some are better than others of course (IDEA is *almost* usable to me)... but I've seen developer efficiency decrease because builds take minutes, simple things like right-clicking takes 2-3 seconds, menus take forever to load, etc. We are talking quite reasonable developer workstations here, so it isn't a hardware issue. Yes, you gain some efficiency with code completion and refactoring and all that good stuff, but I've found it gets balanced out, or close to it at least, by all the little delays, and certainly by all the problems I've seen.

    But again, I'm not trying to convince you or anyone else that IDEs are evil or anything like that. I'm just pointing out some of the negative I've seen. I know there are tons of positives too, and plenty of people feel they are far more efficient with this IDE or that IDE, and I'm cool with that. I know what works best for me, and I don't mind sharing that. If something else works better for you, no problem. I tell all my developers that they can use whatever tools they want, so long as it all boils down to an Ant script that can be run on a "virgin" PC (i.e., just the JDK installed). As long as that is always true, I have no problem with them using ten different IDEs (we probably have 3-4 at the moment). I also require that the "core" project source not have anything IDE-specific in it. So, yes, they check out the core project and *then* check out whatever IDE-specific files they have to from a separate module, but it's a minor price to pay for everyone being able to collaborate together at maximum efficiency, where that efficiency is determined individual by individual, not by some corporate edict. This, in my opinion (and experience more importantly) leads to the best results.

    --
    If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
  372. It depends on the goals of your program by typidemon · · Score: 1

    Some languages, like Java, students spend more time dealing with syntax instead of focusing on learning problem solving.

    If the goals of the program is to teach fundamentalist, hardcore, empirical programmers then the ability to program with a text editor is great because they learn the basics of everything. If the goals of the program is to teach problem solving within programming languages, then dealing with the heavyweight, primitive tools distracts from the lessons.

    In both cases, when students have learned their initial lessons, they should be the ones who make decisions on what works for them and what doesn't.

    Lastly, arn't vi and emacs are IDEs.

  373. On learning languages... by RandalLeeHicks · · Score: 1

    Learning forges new neural synapses, but it doesn't _have to hurt.

    Human languages shape our consciousness; describe our reality. If you learn a new language, you learn a new way of thinking that permanently alters you. I'm a firm believer in immersion, since you are forced to read && listen; write && respond. Think about the difference between communication in person and communicating with someone you've never met via email/internet relay chat/newsgroups. Things we take for granted like tone, facial expressions and body language do not apply and so one is forced to think carefully on the words chosen and the way the paragraph is constructed (well, maybe not so much in IRC ;-) ). Anyway, we now use emotives and abbreviations (ie:IMHO) without even thinking about how our language is evolving. You see, that is what languages do -- they evolve.

    In the real worlde, languages are actually dying out in favour of ones more prevalent... like English. Meanwhile, flesh tries to convey ideas to silicon. Machine code translates our cognitive processes into bits that evolving silicon chips will understand... chips built with the aid of computers now in existence!

    In this worlde, we have witnessed the birth and developement of several languages thus far -- and this is not the end. Within our lifetime it is highly probable that an entirely new language will come into being. What we need to learn is _how we learn. What needs to be taught is the concept that learning is never-ending.

    Now to your question: IDE || {insert favourite txt editeur here}
    IDEs are analogous to speaking in person -- they allow you to be sloppy, but they get the job done... however, they will not teach you how to think and veil the mechanics of how the language is being rendered into something inherently useful. If you are teaching CS students then you would do them a favour to teach what the IDE is doing. Don't waste your time and theirs teaching them to use a specific IDE, rather, let them choose their own. Focus ON the language... it's syntaxt... Compare its differences and similarities with other languages.

    Start with an IDE then take it away. Give it back when they are able to meet a set of predefined criteria AS A CLASS (%90 of them anyway 'cause some people will _never get it and some just won't care). Instilling a sense of teamwork is vital since software is becoming too complex for a single person to write (well). Spend some time brainstorming (within groups) on rapid fire solutions to a simple problem using pseudocode. Homework for that session would be a handwritten (and on-your-honor untested) solution turned in individually. Show them solutions that work && solutions with flaws but let them peer review it, and let them explain _why it's wrong. Do not identify the authors. The person who got it wrong will have learned something without shame/ridicule. Since homework is a small percentage, everyone should try something bold at least once! Classic algorithms have their place but reward original thought. Instructors follow lesson plans but Teachers respond to the dynamics of the group. Good luck!

    A bit of personal history here: At one time I thought that I couldn't do math. My Mom said "That's OK, some people just aren't wired for that." And so, until I read 'Tao of Physics' I never really questioned it. This was in my mid-twenties. When I returned to school ( a community college, which is why this question caught my attention) I learned algebra in as many different ways as possible. There was classroom instruction and video tapes in the library. Of course there was the book, but I also had to learn how to use MathCAD and an HP48GX calculator and somehow, I accidentally learned rudimentary FORTRAN. Now make no doubt about it: Math _is a language and it's syntaxt is paramount. During several courses with my teacher, I learned the following:

    The calculator is just a tool -- do not believe it blindly as it is no substitute for thinking; Always perform a sanity check -- is this reasonable?

    Translation follows::
    The IDE is just a tool -- it is no substitute for thinking; Always perform a sanity check -- is it reasonable code for _all situations/ for _all input?

  374. No idea... by morie · · Score: 1

    No idea...

    --
    Sig (appended to the end of comments I post, 54 chars)
  375. Old School by Sven+Tuerpe · · Score: 2, Interesting

    You might want to read this short article: Musings of an "Old-School" Programmer by Stephen B. Jenkins. I just found it in the May issue of Communications of the ACM. He describes how he works without an IDE and whay he thinks it is the best way of working for him.

    --
    http://erichsieht.wordpress.com/category/english/
  376. well yes by Danzigism · · Score: 1

    I definitely think they should all have an IDE.. I mean, they give you the ability to use your harddrives, your cdroms, and other specialty drives.. its a necessity for computing.. although, I'd recommend switching to SATA for your HD at some point in time..

    --
    *plays the Apogee theme song music*
  377. What would you like to accomplish? by TechSmurf · · Score: 1

    One thing that seems to miss in this discussion, is the fact that programming languages are just a means to create software that actually does something. Assuming that you would like your students to find some practical value from you lessons, I would suggest trying to come up with a curriculum that supports just that. In my opinion, that would mean setting up a number of relevant excercises that create a challenging environment four your students to find out why and when Java and Python are good solutions for software development. These exercises could be used as a means to have your students discuss their various approaches to solving the given problems, so that they become aware of the pros and cons of their own solutions and those of others. In my opinion, learning a programming language means learning the concepts behind them - not just the syntax. For that, we have IDEs. The computer is your friend when it comes to following APIs, creating loop constructions and all that. However, how we choose to use the language to solve our software development challenges is up to us software developers. I suggest you focus your curriculum on supporting just that, and use every tool you can to help your students focusing on the actual concepts of software development and take the trivial, boring stuff out of their hands. If they choose to be professional software developers after they graduate, they will use IDEs anyway (or get fired ;) so they might as well do so from the start. I wouldn't really worry if your students get to understand all about compilers, Java byte code, etc. I don't even know myself if the Java Virtual Machine I am currently using is an interpreter or a Just-In-Time compiler - and I have 10 years of Java software development experience. If my code is too slow I make it faster, that's all there is to it.

  378. Teach both! by j.leidner · · Score: 1
    Why not teach both?

    I'd first introduce them into using the command line tools so that they get a feel what an editor, compiler/interpreter is (and, oh yeah, how to set the CLASSPATH). This lets students relate more clearly how the development cycle works.

    Afterwards I'd teach them that there has been some progress in software development, and that now we have powerful IDEs that integrate all these tools.

  379. IDE or no IDE by Veretax · · Score: 0

    I don't think you can just rule out IDE or rule them in either. It depends on the class objectives, and the level of the students within it. For example My first programming class (well second anyways the first was supposed to be C++ in a borland IDE taught bya Civil Engineer who clearly didn't know much about the curriculum it was an easy A for me) was Ada. This was an excellent class because not only did it teach good fundamentals in a strongly typed language but it forced us to do some programming in a supervised laboratory environment. Now we did have access to emacs, but honestly I don't think we even took half advantage of the thing. The labs used Sparc workstations. The second class was a data structures class (Queues, lists, etc.) and that two was similarly structured. I felt I got a good idea of how these things worked. What irked me off though was after that first year the CS Department merched with the EE department and most of the EE machines in the computer lab were not that same environment. They had Visual Studio (whatever incarnation was out then) and I was never able to learn or take advantage of it back then. Thus most of us ended up writing in note pad ftping code to our accounts compiling through telnet and it was a pain. I think at some point you need to design courses to train people for work not for environments they will never touch. So I don't think every class should have access to an IDE but a lot of upper level ones should at least provide a means to take advantage of them or sufficient computers to do the work.

  380. How about both? by Phreakiture · · Score: 1

    How about both ways?

    Let me tell you about my college experience on this front. For reference, this would have been between fall 1989 and spring 1994, and I fully realise that a lot (GUI quality, for instance) has changed since then.

    Different classes that I took in college used or didn't use IDEs based mostly on the professor's choice of platform. The fundamentals courses (which I aced becasue I'd been programming for almost a decade before I got to college) were all taught within an IDE. This was true for most of the courses where the platform of choice was DOS.

    However, when taking courses where VMS, PR1MOS or *NIX was the platform of choice, there were no IDEs. We were shown how to use the different editors (vi, emacs, TPU), and how to use the debuggers, compilers and linkers and left to figure out what to do from there on our own. Tool choice, from that point on, was up to the student.

    One interesting exception was the x86 assembly language programming course I took, where we did not use an IDE, despite working on a DOS platform. QEdit was the editor provided by the college IT guys, and we would then just feed the text files into tasm to get our object files, etc, just like working with a compiler on VMS/PR1MOS/*NIX.

    Today, I mostly code without an IDE, but I have them available to me, and know how to use them if I need to see my code from a different angle. Generally, both emacs and vi do a good enough job of syntax highlighting and linting that problems are apparent before you try to compile.... at least in my experience.

    --
    www.wavefront-av.com
  381. No IDEs by Anonymous Coward · · Score: 0

    Well, you say the kids who will be in the class will have already completed a class in either VB or C++, right?

    Those who took the VB class will have been taught to depend on an IDE.

    Depending on whose C++ they were taught with, those kids will either already depend on an IDE, or not know what one is.

    So, you'll need to be ready to convert kids whichever direction you go.

    I have to agree with the early posters, though. The closer to the compiler the kids work, the more about the langauge (and computer languages as a group) the kids will learn.

    I know taking the young men and women who have learned to work inside Microsoft's VB IDE and then teaching them to work with ForTran on a UNIX box has been frustrating me for several years at this point, because they expect the IDE to handle things for them, or they think that basic logic structures don't exist in ForTran because it isn't VB . . ..

    The fewer service layers between the students and the OS, the more they HAVE to learn in order to make things work.

    The big issue here, of course, will be providing partial credit for the projects that don't get finished.

    Good luck!

  382. Do both by slapout · · Score: 1

    if you have the time. If not, do it without. Then they'll now more about what is really going on. And when they get to the workplace, they can learn the IDE that's used at their place of business.

    --
    Coder's Stone: The programming language quick ref for iPad
  383. Don't bother with an IDE by garyamort · · Score: 1

    Like editors, an IDE can be a very personal experience. Some people really like IDE's, some people don't. Some people like one IDE and not another. By teaching using an IDE, your going to hamper those who dislike/don't understand the IDE from learning the language. Just teach the language. Those students who want an IDE can learn it on their own. Those who want an editor with lots of macros will download them. Those who just want a text editor will use that. By teaching at the lowest common denominator, all students can learn as all of them will be able to go to that level.

  384. To IDE or not to IDE... by BytePusher · · Score: 2, Insightful

    I suggest not using an IDE, because in the end you will be freeing your students from being dependent on a particular piece of software. Another benefit is that they will natually begin to understand what actually occurs during linking. Granted, you don't really link with python, but maybe python wouldn't be the best first language. I recall not really knowing at first that Microsoft Visual Studio wasn't compiling my software. I was amazed to find out I could do it by hand from the command prompt. I feel that was the opposite of how it should have been.
              That said, for large projects, I use an IDE every day. Every now and then I'll transfer a project over to a different IDE just to see if I like it better. Sometimes I need to dig in and fix a makefile.am, but since I know the nuts and bolts I'm free to do so.
              I'd recommend you teach them to use the best tool for the job. At first, for single file projects, an IDE is a bulldozer in a flower garden. Forcing someone to compile every file by hand and then link by hand would be like like bringing a spade into a construction yard. Neither fit quite right, but might eventually get the job done. So if it were me... I'd give them tools as they need them. Make them compile and link a three file project and say, "hey look here's something that will make it a little easier." Then students could use the tools as seemed best to them.

  385. I would not say IDEs by disasm · · Score: 1

    Debugging through prints? I haven't done much with java, but you do that with c++ sooner or later in your programming you'll come across a segfault, and it won't print some print lines that have been already executed. A debugger is important for tracking programming errors that cause a program to crash, all print statements will do is catch logic errors.

    So with that out of the way, teach with something like vim 7, has tabs, split screens, folding, autocompletion (that will autocomplete from header files), visual block mode, substitutions, really quick copy paste between files, etc... So while deal with a complicated IDE when you have something more powerful in a much less resource intensive editor? Now if only vi could be embedded into firefox with an extension for writing comments on slashdot...

    1. Re:I would not say IDEs by acroyear · · Score: 1

      oh, debugging with prints will hurt if you do it wrong, but you should learn to do it right.

      if you get a segfault in your C++ debugging, GOOD, 'cause it means you screwed up the memory allocation and you need, absolutely NEED, to learn to do it right. similarly, by seeing the oddities in debugging through prints, you also learn how the compiler's optimizer has rearrainged your code. most coders out there have no idea it can and will do that.

      but (as i wrote elsewhere) - the important thing about debugging through prints is learning to write logfile lines. you won't have your super-duper fancy debugger out there at your customer's installation. all you'll have is the log file, some stack traces (if in java), and/or the core dump.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    2. Re:I would not say IDEs by disasm · · Score: 1

      I understand the compiler rearranges code for optimization, but that's not something your going to be able to explain to a point where an intro to programming type class can grasp. That's the reason we have compilers, to do that stuff for us, And if your debugging with prints, you throw in a bunch of prints to find out where in it crashed, and then it doesn't show the right print at where you crashed, unless your an advanced programmer, without a debugger your looking for a needle in a haystack. Where, if you have a debugger, say gdb, attach to the core dump, do a backtrace, then you can track down what made it crash, which will hint as to where in the program it crashed, throw in a break somewhere in that block, step through till you find where it is, then, find out why it happened, fix your code and test. With practice and experience, less stupid mistakes will happen when programming, but you can't expect a beginner to put out perfect code, and if their debugging with prints doesn't show a print because of an optimization change, their options are randomly change things in the program, look at the compilers source code and try to understand it with minimal/no programming experience (if it's even available to look at), or in my opinion the better option, teach them how to use a debugger to track down their mistakes.

    3. Re:I would not say IDEs by acroyear · · Score: 1

      depends on the target audience.

      CS students striving for a CS major should be able to incorporate such "lessons" without any problems at all. If they can't, they're in the wrong major.

      and at the beginning levels, the teacher can provide them instructions on turning the optimizer off if its a problem.

      there are ways around these things.

      like i said, if they don't learn to debug with prints, they don't learn to write good logging messages in software development/engineering environments, and they have more hell to pay later on when they hit real world programming.

      and, of course, there are environments where no such debugging is available at all, like the client-side of Ajax (Venkman is still too much trouble for its own good right now - trace prints and alerts are the ONLY way to do that).

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
  386. Forget the IDE by Capt_Troy · · Score: 1

    Teach them how to write software, let them write it with or without an IDE. Don't waste your time (and their's) teaching them IDE features. The code is what is importiant, not what they use to write it.

  387. To IDE or not to IDE, is not the question. by stonewolf · · Score: 1


    I teach C++ and a class called "Game programming and graphics" at my local community college. I've been doing software development for more than 30 years and have used every type of development environment there is. I have read debug info using a magnifier to inspect the color of individual pixels that were set by firmware as it booted up. Programmers will learn the tools required by the job at hand or they will be replaced. OTOH, when learning to program you want to reduce the distractions as much as possible. You want the students to spend their time programming, not worrying about the details of their development environment. For that reason I prefer to have students use an IDE. Hey, I use emacs and that is a pretty powerful IDE all by itself.

    In my classes I have taken a very liberal approach to this question. I let the students decide for themselves whether to use an IDE or not and which IDE to use. I want them to use tools they are comfortable with so they spend their time programming. As a result of my policy I have had people in my classes using DeV-C++, the free versions of Visual C++ as well as the expensive versions all the way up to the pro version with an MSDN subscription, Emacs and make, and one fellow who used a nice looking IDE on the Mac. (So far about 85% of students are on Windows, 14% on Linux, and 1% on the Mac.)

    The problem I run into is that every student expects me to help them with problems they run into with the IDE they have chosen to use. I get no end of complaints because I refuse to help students with problems with their IDEs. No teacher can be familiar with all the IDEs that are out there. It is a pain to try to keep up with just one or two. How are you going to help them with problems with Visual Studio Pro if you don't own a copy? How are you going to help with Emacs if you don't know it?

    My suggestion to you is to pick a single cross platform development environment that you are used to and knowledgeable about and require that the students use that platform. It has to be cross platform because you are at a CC. The reality of community colleges is that a lot of your students are lucky to have a computer at all and they may not be able to get a different kind of computer or even a different version of an OS just for your class.

    I'll make a couple of other suggestions, be prepared for nasty calls from parents who have already laid out $1500 dollars for VC++ Pro and to see students drop the class because of the tools you require them to use.

    BTW, when you find that cross platform IDE? Let me know about it. I've been looking for a while now.

    Stonewolf

  388. Perhaps Teaching the Fundamentals? by LifesABeach · · Score: 1

    Given that your class is one quarter, or one semester; You can either teach the best use of an IDE, or the fundamental syntax of the language. Of course, one could review what one was hired to do? Another argument is that IDE's come an go with the tide. Fundatmentals of software engineering are fairly persistant. Constructively speaking, maybe one should teach how to apply software engineering fundamentals using a given language syntax.

  389. Yes, please enhance my job security... by nixkuroi · · Score: 2, Funny

    I say teach them with the IDE, so when they get in the real world and need to hack a way around a design limitation or integrate with a data provider that they can't bind a control to, they have to call someone like me who does. :) document.getElementById("indeed").parentNode.remov eChild(document.getElementById("indeed"));

  390. The IDE Divide by fbg111 · · Score: 1
    --
    Flying is easy, just throw yourself at the ground and miss. -Douglas Adams
  391. Try NetBeans instead of Eclipse by vinodis · · Score: 1

    Try teaching them Java with NetBeans IDE. Works well on Ubuntu/Windows and is Free. I find no gain in NOT using an IDE. The more interested students can debug, refactor and analyze code better with such an IDE while others can get enjoy the syntax highlighting, code-inspect etc. Please don't put them on to Eclipse which is not an Integrated Java IDE by default.

  392. students need greater depth of understanding by wireloose · · Score: 2, Interesting

    As a CIO and IT manager for nearly 2 decades, I have to comment that I am appalled that many young programmers in recent years are clueless about text editors in general. I have found with employees in the last 10 years, the "Windows" generation if you will, they use notepad on occasion, which has limited functionality, and when developing on Unix/Linux systems, they are completely useless. A number of systems that we maintain are slimmed-down systems. The development of apps for these happen on larger systems, and after testing, the apps are moved to the slim systems. I've had to dedicate a lot of money to training resources for these newer hires so they can edit even a simple text config file... We now prefer knowledge of vi as an entry level skill. And if someone claims they have it, we test them.

  393. Re:... Yes and no by DaveAtFraud · · Score: 1

    Speaking of quote, why did you shorten yours? The actual quote from Atlas Shrugged is, "I will never live my life for sake the of another man, nor ask another man to live his life for mine." Seems like it should fit.

    Cheers,
    Dave

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
  394. I can see your point by stever1975 · · Score: 0

    with features like code completion.

    But debugging and color coding, I'm not so sure...
    This argument reeks a little of a similar argument of the assembly programmer saying that higher level language programmers should learn what's under the hood. And this argument at one time was valid, but now seems a little insane. And I think the IDE argument is next to follow. Because I think languages are becoming inseperatable from their IDE, where one could go as far to say that the IDE is becoming part of the language.

  395. First Language, Then IDE by Devil · · Score: 1

    Languages should be taught first, because it means that students will be able to do more. Then, later, teach them to use an IDE, because it will help them organize their projects and develop faster.

  396. Don't teach them to use an IDE by NetRAVEN5000 · · Score: 1
    If you teach them without an IDE then they won't be dependent on one particular IDE.

    I learned Java with only Notepad, and I think it helped a lot - it forced me to really make sure I know what I'm doing, and to try and understand why the compiler was giving me certain errors. It also forced me to kind of learn to debug things on my own, either by working through routines on paper or by iterating through them in my head.

    It's also good not having to learn to use an IDE - all you learn is pure coding. Which makes things a little more straight-forward.

    Actually, I still don't use an IDE. Maybe if I'd try one I'd learn to like it. But I'm content with just using a text editor like KWrite that highlights certain keywords and understands certain Java commands, and can do things like collapsing subroutines to make things easier to read.

  397. Bare bones is best by Rukie · · Score: 1

    If you use an ide you tend to not learn some of the knowledge capable from learning from base code. My school offers several computer classes, but all with an IDE. I've petitioned and I'm now taking independent classes WITHOUT an IDE because I want to know the whole language. The more you know the easier it is. I would rather learn the basics from notepad or vim, and then learn to use easier methods. Its similar to driving a stick shift vs an automatic. If you drive a stick you understand how the car works and you need to pay attention, and if you drive an automatic you crash because you have to pay less attention, especially while your shaving on your way to work :)

    --
    Support the source, Open Source! An entire site developed with OSS