Live data from Hacker News

Don't Make Students Use Eclipse

nora.codes

101–110 of 255 posts

Re: Don't Make Students Use Eclipse

#101
post #92

Earlier quoted context omitted.

IDEs are convenience layers, compilers are essential abstractions - if you don't know how it works underneath the GUI layer you will get stuck really fast and won't be able to troubleshoot when you eventually run in to inevitable problems with IDE, build, compiler.

What makes the CLI interface to the compiler more essential of an abstraction than a GUI interface to the compiler? Just that it is simpler, or that it's been around for longer? A GUI isn't necessarily just calling CLI apps in the background, it could be using programmatic interfaces too.

The CLI is more explicit than a GUI. In a GUI, compiling / running / testing your code is an afterthought that happens at the click of a button.

In the CLI, you have to be explicit about what actions are taking place. You have to physically type in what command you want to run and the different arguments to it.

The convenience of a GUI is fantastic, but the abstraction makes it a very bad learning tool. Being able to open up a terminal and fix the inevitable git / build / configuration errors is a very valuable skill that developers should have.

Re: Don't Make Students Use Eclipse

#102
post #53
post #5

> ... it insulates the student from the javac command line program, and the command line environment itself Such a misguided article. The Java language has (quite literally) nothing to do with `javac`. In fact, there's a lot of other compilers out there. Taking a Java class should not focus on the intricacies and weirdness of Java compiler command line interfaces. It seems pretty amateurish to argue in favor of it. C…

I strongly disagree. A lot of my peers in college were very bright and could write great code, but they were absolutely useless as developers because they didn't know any tooling. They couldn't compile, run, test, or source control their code if the professor didn't set it up for them. Yes, tools change, but the knowledge from one tool is almost always transferable. Once you're comfortable on the CLI and understand t…

I haven’t taken an introductory CS course since the mid 90s, so I don’t have enough knowledge to know whether I agree or disagree with you. What was the base level of knowledge like when you were in introductory courses? Back in the day, you couldn’t guarantee that everyone could even turn a computer on, so for loops were a second midterm thing.

Edit - I should mention that my last sentence was the perspective of 18 year old me. I was 18, but in my defence I was 18. :)

Re: Don't Make Students Use Eclipse

#103
I think that this is mixing up two different skills.

The first skill is learning to program, and in particular learning to program data structures, or algorithms, or whatever. For this you don't care at all how your code builds, you care about correctness and easy to use testing infrastructure, and an IDE like IntelliJ or Eclipse is going to be almost frictionless for that. Teaching command line necessities together with this provides nothing of value for this skill. If I'm trying to get an algorithm right, I don't care at all about how my code builds, I care that it is easy to hit the "recompile and run tests" button. I also think that Java is a decent choice of language for this.

The second skill is learning how to build, version control, package and distribute software, and for this you really need to learn the common tools used in the industry. Which in addition to the IDE, is use of the Unix/Windows command line, git, compilers, Makefiles and build systems, and so on. Here you really need to care about the details - for example, such a project could be to take a previous project and package it so that it runs on a computer without Java/Python/etc installed.

I think the problem is that many universities never have a course on this second skillset, and so while for teaching the first skillset they choose appropriate tools (in my opinion), they leave this second skillset behind completely. But I think the debate is more nuanced than IDE = Good or IDE = Bad, I think we should carefully figure out what skills should be taught, and what the best way to teach those skills are, keeping in mind that for a lot of first-year university students this may be their first introduction to using anything other than a web browser, office programs, and video games on a computer.

Re: Don't Make Students Use Eclipse

#104
post #5

> ... it insulates the student from the javac command line program, and the command line environment itself Such a misguided article. The Java language has (quite literally) nothing to do with `javac`. In fact, there's a lot of other compilers out there. Taking a Java class should not focus on the intricacies and weirdness of Java compiler command line interfaces. It seems pretty amateurish to argue in favor of it. C…

The point of the article is the very concept that the compiler and the Java runtime environment are not the same thing (which an IDE obfuscates to some extent) is what he wants students to learn early on. (And details like that). This leads into a lot of important concepts around how programming languages are seen by the computer.

> what he wants students to learn early on

The author, Leonora Tindall, is a woman.

Re: Don't Make Students Use Eclipse

#105
I liked the approach Cambridge took for computer science (at least while I was there). Practical assessments:

* Year 1, term 1: ML, on a Windows machine, using Cambridge ML (for the practicals; the actual course, Foundations of Computer Science, used any Standard ML and recommended Moscow ML)

* Year 1, term 2: Java, on a Linux machine[1], using javac; Eclipse was introduced in another course

* Year 2, term 1: Further Java, on a Linux machine, using Eclipse, Verilog on a Windows machine with a DE2 Board, MIPS assembler using a soft processor (same board) plus one or both of:

* * C/C++, non-compiler specific, no recommended IDE/editor, must run against gcc -std=c99 -Wall --pedantic sourcefile.c or g++ -std=c++98 -Wall --pedantic sourcefile.cc (your choice) with no warnings

* * Prolog, on a Linux machine, using SWI-Prolog

* Year 2, term 2: Group project - group's choice (we used C on an Arm mBed board in whatever IDE that came with and Java in Eclipse)

Everything else (the bulk of the course) was either abstract/theoretical or used you/your supervisors' choice of tools - courses used a varying mix of pseudocode/ML/Java/C where useful, but you didn't necessarily have to use them outside of the lectures and there were no practical exams on these (someone I knew used Haskell for his group project and dissertation, and for testing concepts in supervisions).

The idea was to make you comfortable with the fundamentals and moving between technologies, and not be reliant on any particular set of tools. IMO, the contrasting concepts (Windows vs. Linux; functional vs. object-oriented; high-level vs. low-level; hardware vs. software) did this rather successfully. It didn't necessarily get you completely fluent in any particular language (you were largely expected to do this in your own time if it was a direction you wanted to pursue), but it did prepare you for jumping into pretty much any language/environment and getting up to speed quickly.

(There were also digital electronics and physics practicals in the first year, but they're a bit of a different thing)

[1] It gave you enough bash to run javac and manipulate files. There was a follow-up course the next year that went into a bit more depth on shell, and introduced make/Perl/LaTeX/MATLAB.

Re: Don't Make Students Use Eclipse

#106
post #53
post #5

> ... it insulates the student from the javac command line program, and the command line environment itself Such a misguided article. The Java language has (quite literally) nothing to do with `javac`. In fact, there's a lot of other compilers out there. Taking a Java class should not focus on the intricacies and weirdness of Java compiler command line interfaces. It seems pretty amateurish to argue in favor of it. C…

I strongly disagree. A lot of my peers in college were very bright and could write great code, but they were absolutely useless as developers because they didn't know any tooling. They couldn't compile, run, test, or source control their code if the professor didn't set it up for them. Yes, tools change, but the knowledge from one tool is almost always transferable. Once you're comfortable on the CLI and understand t…

Isn't eclipse a piece of tooling? I mean I think the best argument against teaching eclipse is IntelliJ is much better, imo, and is more widespread than eclipse at this point. Student should have a module/class whatever about command line tools as well. I this comparison is comparing two things that aren't comparable, an IDE vs learning the CLI. I also think you contradict yourself in your last sentence. Teaching an IDE in class should help people be comfortable with their tools but at some point they might need to know what the tool is doing under the hood.

Re: Don't Make Students Use Eclipse

#107
post #41
post #16

I'm not sure I agree much with this. When I first started learning Java I had six or seven years of programming experience and I still found dealing with matters of classpath and javac remarkably complicated. I had things down well enough with the tools I used before, but it all seemed so foreign in the Java world. And to this day I find junior devs struggle with the same things unless they have a maven/gradle projec…

> And to this day I find junior devs struggle with the same things unless they have a maven/gradle project all set up for them. Personally I’m still shocked that learning the common build tools for whatever language is used for a CS course is not the standard. If you’re teaching Java you should be teaching Maven, if you’re teaching C++ you should be teaching CMake. Not to the “I can write my own plugins/macros level”…

> If you’re teaching Java you should be teaching Maven

no you shouldn't, because the premise is invalid. A university student shouldn't be "learning java". They should be learning programming, and theory of computing (and algorithms etc), and perhaps use java as the language. None of this requires maven, build tools or any tool chains beyond some unit testing framework (and GUI framework if displays are necessary).

Don't teach "industry standard tools" to a uni student learning CS.

I would not expect a new graduate to know maven, or know the intricacies of the spring framework. That's something to be learnt on the job. I expect them to be capable enough to learn this on the job - given that they're well versed in the theoretical aspect of computer science. It's easy to explain maven's core by telling them that it's a directed graph of dependencies.

A student that just learns the "industry standard tooling" should need a bootcamp, not uni degree.

Re: Don't Make Students Use Eclipse

#108
post #44

Earlier quoted context omitted.

Gotta admit - that appeals to me :-P U.S. drivers licenses are too easy to get as it is... I don't think my sister even had to parallel park on hers.

Since I got my driver's license over a decade ago, I've had to parallel-park less than ten times. I've probably changed a flat tire more often. I think you would find that the vast majority of drivers in the US don't parallel park even once per year. Furthermore, an increasing fraction of new cars can park automatically. The chief value of having a road test, in my mind, is to force most teens to learn to drive in a…

> I think you would find that the vast majority of drivers in the US don't parallel park even once per year.

In the UK, I had the exact opposite experience. Immediately after passing my test, I was parallel parking daily, and I've frequently been in situations where parallel parking is the only way to find a parking space. IMO it _would_ have been dangerous had I not learnt how to do it and was confident doing it. I'd have likely have been too distracted thinking about what I'm trying to do rather than paying sufficient attention to my surroundings. I know I was when I was first learning, and I failed my first driving test because I didn't adequately check my surroundings before starting to reverse.

Re: Don't Make Students Use Eclipse

#109
> Ultimately, my core belief is this: Students need to know how to use computers before they can program them in a serious way.

Nonsense.

If we went this way, young people would get completely turned off from programming in the first hours.

Show them Python, Javascript, Scratch. Get them to display something on the screen, anything.

Get that spark.

And once they're hooked, now you can start showing them more details about the wonderful world they have just uncovered.

The author of this article needs to spend a solid five more years thinking about computer science and education because right now, her writing is just dangerously naive.

Re: Don't Make Students Use Eclipse

#110
post #5

> ... it insulates the student from the javac command line program, and the command line environment itself Such a misguided article. The Java language has (quite literally) nothing to do with `javac`. In fact, there's a lot of other compilers out there. Taking a Java class should not focus on the intricacies and weirdness of Java compiler command line interfaces. It seems pretty amateurish to argue in favor of it. C…

I think there's a bit of personal preference. As a student I hated IDEs, because I couldn't tell what was actually happening. To this day, I avoid using and IDE or other tool for git/version control, because I can't tell what it is doing.

There's more typing with a text editor and javac, but it's much simpler to understand IMHO.

All of this must be understood in the context of first year programming. For my class, there were no libraries that one needed, and at most 10 or so java files to compile. The classpath would never need to be more than the working directory.

Post reply on HN