Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Programming without a build system, a version control system, or a reasonably intelligent editor is unnecessarily difficult and gets in the way of the concepts being taught.

Programming with a build system, with a vcs and/or an editor with intellisense features will unnecessarily burden the student with learning these extra things. vanilla java, taught using a pure text editor (like pico, or notepad++, that has a simplistic syntax highlighting), and make sure the students type out their own imports, etc, is going to teach them more basics.

Until the day you need to build actual working software to ship to people, there's no need for a build system, and until they need to work in groups, there's no need for VCS. And until they start writing something _very_ complex, like a full game using many libraries, they don't need intellisense.

Most CS exercises fit in one class. And when it comes time to design something reasonably complex, the student would've learnt all the fundamentals (like 6 months in), and can move to using an IDE with little issue. And then when group projects come, the students can learn VCS as it makes group work simpler. But till then, showering the first year student with these tooling is just noise.



Compile errors due to misspelling and "what was that function called again?" expeditions are distractions. My department did us a great disservice by never even hinting to students (at any level) that tooling can make them go away. It was almost painful, working on group projects, to see my classmates struggling so hard just to move around the code. Being unable to seamlessly work your editor and navigate your codebase is just as crippling as hunt-and-peck typing. Is it worth a lecture? No. But a mention? Absolutely.

VCS is essential in a solo project of any real complexity because you will reach intermediate milestones, go off on tangents that don't pan out, and then desperately wish you had a way to get back to the working state you had hours previously. A true VCS with branching and merging is technically overpowered, since you could just make copies of the source for each "commit," but you may as well just use Git.

Build system is not about shipping to people, it's about running what you just wrote on your own machine when it's bigger than one unit of compilation (C file, Java class, whatever). You don't need anything fancy, can just be Make or a shell script, but building and running the whole project should take no more than a few keystrokes. Kids should be fumbling with GCC flags for maybe one assignment, not 4 years.

On the very first day of programming, all you need is a REPL. But once students are doing programming projects of nontrivial size, they should be invited to try incorporating the tools that make them manageable.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: