Hacker News new | ask | show | jobs
by jbarham 5749 days ago
I studied CS at the University of Toronto in the early 90's and in hindsight I'm amazed that we never formally taught how to program. (The one exception I can recall is a "theory of languages" course that gave us a brief exposure to half a dozen languages, but it was an optional course and wasn't part of the core curriculum.) We were basically given assignments by the profs and it was assumed that we would pick up programming in the tutorials with a little help from the TAs!

Personally I had the benefit of having done a fair bit of programming in high school and on my own (Amiga AMOS FTW!) so I survived but I know it was very difficult for students who hadn't had any programming experience prior to university, and the drop-out rate from the CS program was very high (> 50% IIRC).

1 comments

That's very interesting! With that hindsight, can you identify any quick wins that could have lowered the drop-out rate, or helped your personal understanding of programming?
I think the key is to lower the barriers to creating minimal, working, useful, hopefully interesting programs as much as possible.

E.g., start with a minimal implementation of the Unix 'wc' command in Python, walk through it explaining how it works, and then assign as homework adding the '-l' line counting option. As a professional it's trivial, but if you know nothing about a programming it can be very difficult to get started doing anything. It's too easy for us professionals to forget how much we know now.

Focus more on the performance characteristics and design trade-offs of core algorithms and data structures (e.g., binary search, quicksort, dictionaries, vectors, lists) and less on the nitty gritty of implementing them.

Starting with interactive languages like Python that handle garbage collection and have high-level containers built in is also useful. Noisy stack traces when something goes wrong are also much more accessible than a C or C++ core dump.

Another thing that irked me was the expectation that we were already emacs or vi experts! For beginning programmers, Notepad or Gedit is perfectly adequate.