Hacker News new | ask | show | jobs
by userbinator 2515 days ago
I've been a TA and taught introductory CS courses, and IMHO trying to "add extra tech" tends to get in the way of learning more than anything else, as well as perpetuating bad habits when programming. I don't think giving beginners an "IDE addiction" is a good way to start them off, and believe that intro CS should begin away from a computer: designing with pencil and paper (or a whiteboard) and "thinking before doing" gives students a chance to exercise their brains instead of relying on a stupid "mechanical brain" to hand-hold them.

Then again, the "old school" (literally) way is not as "fashionable" as "look at all the cool tech we're using in education".

6 comments

> I've been a TA and taught introductory CS courses, and IMHO trying to "add extra tech" tends to get in the way of learning more than anything else, as well as perpetuating bad habits when programming.

I don't have a good suggestion for intro classes. Basically, everything has downsides. Some people don't want to interact with a computer; some people want to do mega-cool things on the computer; some people don't understand what is going on and will be confused by any extraneous steps. Anything you do is going to consume time and displease somebody.

I can tell you that for sophomore and up CS classes in college, use real stuff. It's a pain to set up and maintain (although it might be easier nowadays), but the students will thank you for it afterward. I made my students use Eclipse and Subversion at the time (I would probably use VSCode and Mercurial nowadays) and had a continuous integration server running every time I gave an assignment. Students could use an IDE or editor other than Eclipse, but I warned them that I might not be able to help them about IDE specific things. Subversion was they way that they could "submit the code" so the continuous integration server would test it.

Even students who gave negative feedback about aspects of the class gave positive feedback about using the "real" tools and not stupid submission systems like Blackboard or its ilk. All of the students noted that they did much better interviewing for jobs than students who didn't have experience with the real tools.

Although, it was funny getting shocked responses from students who interviewed with employers that didn't use source control. Brainwash them early for best results. :)

Students could use an IDE or editor other than Eclipse, but I warned them that I might not be able to help them about IDE specific things.

I had a similar policy, although perhaps directly opposed: I supported only vi(m) or Notepad use, but as long as the source was plaintext (either CRLF or LF line endings, but not a mix...), any editor was allowed. Also, they could use MSVC or other C compilers, but the assignments must work on the course servers with GCC (which students could SSH into and work from, as well as where they handed in.) IMHO starting with a "heavy" IDE like Eclipse or VS just furthers the notion that useful software must necessarily be big and complex, or that such software is obligatory to development; not really a good thing to instill in beginners if we want them to be mindful of efficiency in the future.

> IMHO starting with a "heavy" IDE like Eclipse or VS just furthers the notion that useful software must necessarily be big and complex, or that such software is obligatory to development

The problem with starting with Notepad is that students then don't get the idea that the 1) editor can help you and 2) the editor is programmable.

And, sorry, vi(m) (or emacs) is simply a non-starter. We live in a GUI world and fighting against that is a disservice to students. I'm not teaching a class to promulgate a religion; I'm teaching to benefit the students and the VAST majority of them will land in Visual Studio, for better or worse. The remaining minority will land in Android Studio/IntelliJ or Xcode.

> not really a good thing to instill in beginners if we want them to be mindful of efficiency in the future.

Sorry, efficiency just isn't on my teaching agenda, like, ever. Even if students wind up using algorithms that use terrible O(n^2) (or worse) behavior, I'm just happy to have correct code.

And, please, Javascript is the lingua franca of the web. Talking about efficiency at that point is like trying to close the barn door after the horses have escaped and died of old age, and the barn has burned down 10 years ago.

> Then again, the "old school" (literally) way is not as "fashionable" as "look at all the cool tech we're using in education"

In fact, rich schools are trending away from computers and digital media towards analog ones.

https://www.nytimes.com/2018/10/26/style/digital-divide-scre...

https://news.ycombinator.com/item?id=18309327

I started out writing code with an IDE (Eclipse at the time I believe) and I don’t think it’s a replacement for thinking about your code at all.

The only thing it helps you with is not having to think about mindless documentation seaching, like what functions can I call on ‘String’.

I don't think a whiteboard contradicts with an IDE. The students can always design the programs on paper (I do this) step by step, including the notes, and then write the programs in one run without bug.
this is an interesting one. i've definitely heard and entertained serious arguments that a CS education shouldn't even involve touching computers period for the first n years. it's certainly not something i dismiss out of hand.

personally I was turned off by programming as a kid, due in part to what I perceived to be a suffusion of hoops to jump through due to brittle, ugly, and unexplorable interfaces. in adulthood i was re-exposed to an improved tooling situation, and now i'm a professional programmer, actively working on (debatably yet better) tooling which at least a few other people seem to appreciate.

my current position is that different people want different things out of programming and computing in general, and that both of those are sufficiently abstract to accommodate different approaches. there is for sure a continuing need for people who are willing and able to run software in their head/whiteboard, but I also feel there are many others who could be making meaningful contributions but are turned off by the textural and tactile quality of 'computing as applied mathematics' which no longer encompasses the breath of the discipline.

I agree. I did cs50 and also rails tutorial when I learnt to code. At the time rails tutorial used a normal text editor but it seems learning to set up a proper dev env was too much for many and now it uses some cloud ide. This is a step backwards. Setting up your system correctly is a critical pro skill. It's the first thing I learn when diving into a new language.