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

When a thing has been created to solve a problem, it helps to first learn what the problem is before trying to understand the solution - and one of the best ways to understand the problem is to run into it and spend some time trying to work around it, with examples that are simple enough to understand but realistic enough that the student can see the issue matters.

If there are no examples that are simple enough for this, the student has not yet advanced to the point where they will understand the issue.



" simple enough to understand but realistic enough that the student can see the issue matters."

Exactly this.

My least favorite method of teaching is when they dive into a tutorial or example which has nothing to do with the actual problem.

E.g. when I was independently trying to learn how to code in high school (before my CS program in college), I was using some C++ book that started with a 'Hello World' program. I had no idea what the context for 'Hello World' was and why computer programs need to 'print' stuff. It was just a world of confusion. I remember working through it and not being satisfied at all. Why did I care that my terminal was telling me 'Hello World'?

On the other hand I had amazing CS professors in college who would introduce their course with the real-world problem its solving and the ideal end-state of mastering that area of coursework such as writing a programming language or creating optimal algorithms.


Nothing has been more educational to me than running into a problem, trying to solve it and then finding out there is an entire branch of mathematics devoted to coming up with ways around solving it.


One of the best examples of this I can recall came from an operating systems class at uni, 15 years ago. The professor introduced a problem where two threads are trying to modify the same state at the same time.

Then, instead of saying “there are these atomic locking primitives that we can use,” he asked the class for suggestions about how to make sure the two threads don’t stomp on each other’s updates. For about a half hour, someone would suggest a new way to place an if statement, and he would show how the “lock” would be defeated if contexts switched in such-and-such way.

Finally, when the whole class was thoroughly convinced that it wasn’t possible, he introduced atomic locking primitives.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

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

Search: