Hacker News new | ask | show | jobs
by rahimnathwani 455 days ago
Maybe 'Design of computer programs'? https://www.udacity.com/course/design-of-computer-programs--...

Or study some of Peter Norvig's code for solving poker hands, sudoku etc.?

It's not obvious how to build abstractions at the right level, or to change those abstractions as requirements change.