4 ms·
I agree with everything in the article. I'd add one more thing: encourage students to use an IDE. Whenever you write code, you should be able to compile, run an
by hnruss 14y ago
I agree with everything in the article. I'd add one more thing: encourage students to use an IDE. Whenever you write code, you should be able to compile, run and set break points with a single click or keystroke.
The first thing I do when I help new CS students is to show them how to use an IDE. One guy that I taught XCode to went from an F one semester to an A in the next.
Side note: don't force new students to use VIM. It just adds one more layer of complexity to an already complicated subject. If they want to become keyboard ninjas, let them do that on their own time.
- anonymoushn 14y agoThis is a great idea and I wish I could upvote it more. My initial instinct was something like "Naw man, everyone should use vim or emacs and a CLI debugger," but I recall being almost magically more productive upon learning to use the debugger in MSVC and having a really difficult time learning to use vim and gdb.
- sukuriant 14y agoI actually stand on the opposite side of this debate. Not using an IDE forces you to remember and think about your language and development environment. You learn the methods and APIs that you call much better when you have to research them rather than when you scroll down an auto-completing list of method names. "Oh, this name looks close enough, lets try it!" versus going and looking up in the javadocs or python docs or [your language of choice] docs. When you have docs that are a good read (like javadocs and python docs, and maybe boost C++'s docs too), you can read the description, the examples, and sometimes even some recommendations on how to use that code. That said, going to a-whole-nother environment just to complile can be a bit of a chore. There are some text editors that come with hotkeys for compiling and running. When I was in highschool, we used TextPad. Ctrl + 1 to compile java and Ctrl + 2 or 3 for running programs (depending on if they were applets or applications). In college, I used nano/pico and eventually emacs. I'm still slower in some modern IDEs when trying to manipulate text as fast as I did in emacs -- though autocomplete and jump-to-definition makes my coding faster, in general. At the end of the day, though, we're two people with anecdotal evidence that strongly supports our side of the argument, in our minds. Addendum: regarding debugging. I generally find, for the kinds of problems that new programmers run in to, println debugging is generally sufficient, so for debugging, I would just recommend that.
- hnruss 14y agoGood counterpoints. Perhaps it just depends on what you're trying to teach. If you're trying to teach students language-specific APIs, then you wouldn't want them to have auto-complete. If you're trying to teach students how to program in a language-agnostic way, then the APIs themselves don't matter as much as the theory behind them does. I agree with you on reading and understanding the docs. The problem with memorizing APIs, however, is that they change. Even the C++ standard library is at version 11 now. What is the value of memorizing something that will be deprecated in 2 years (or less)? Understanding it has much greater long-term value. At my college, I've talked to a lot of students who are reluctant to try new languages because they've become reliant upon the syntax and APIs of one particular language. If I challenge them to read some code in language X, they just respond with, "But I don't know language X"-- as if that were a valid excuse. Rather than being taught HOW something is done in a particular language, they should be taught WHY.
- dysoco 14y agoThat would be teaching the students a tool, not a workflow. Well, using an IDE also has a workflow... whatever.