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

> I've yet to see ANYONE (myself included) do an excellent job teaching the kind of programming employers want. I saw another comment here about how "programming" is simple, but teaching architecture and putting things together is hard.

Dartmouth College once had a course called CS23 (Software Engineering) that was infamous for introducing students to "real world" development. The first half of the course was dedicated to C++, with weekly assignments like "implement this data structure class, given the .h file."

The latter half of the course was a 5-person group project with teams chosen by the instructor. The project ran 5 or 6 weeks. And with one week to go, right as the students entered finals, the professors would make a change to the spec. Every time. It was definitely deliberate.

Grades were partly team-based (which sucked if you had a bad team) and partly individual (especially if you had a bad team).

The students who went through this were smart, highly motivated, and had at least 2 or 3 other successful CS classes first. Non-majors almost never took the course.

Time after time, I saw this course turn CS majors into people who could work on real team projects. Not all of them; even in a solid Ivy League CS program some people were a menace to their group. But I'd watch my younger friends go through the experience, starting out naive and coming out with actual instincts on how to ship something.

In a lot of ways, I don't think CS 23 was always well taught. Our professor was a Lisp programmer teaching C++ and his .h files often contained serious errors. But the genius of the course design was that slightly dodgy teaching only added to the overall experience. The course was intended to be a high stakes team project under realistic conditions. Bad team assignments, bugs in the spec, a changing spec, the whole nine yards. And the students were as prepared and qualified as any students could be, going in.

But I think there's a kernel of a good idea here. Once students can program, the best way turn them into developers is to make them build and ship something as a team.

(Dartmouth also had solid theory classes in the major, but that's a story for another day. You couldn't graduate without having done a real project and having written a lot of mathematical proofs.)



> Once students can program, the best way turn them into developers is to make them build and ship something as a team.

I had a semester project like that, in a team of 7, though we didn't had the changing spec... But it was a really good learning experience




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

Search: