Hacker News new | ask | show | jobs
by asicsp 1965 days ago
From https://jeffe.cs.illinois.edu/teaching/algorithms/hwex.html#...

>Please do not ask me for solutions. With very rare exceptions, I will say no, even if you are an instructor. I recognize that my stance limits the utility of these materials, especially for self-learners, but I'm trying to optimize the learning experience of my own students at Illinois. The point of homework is not to solve that particular homework problem, but to practice solving a type of problem and get honest feedback on your progress. I've found that when solutions are available, my own students are much more likely to rely on them, rather than trying to figure out the problems themselves, which means they get both less practice and less honest feedback, which means they do worse on exams and in the course overall.

Interesting. I was asked multiple times for solutions to my self-pub ebooks that I relented. I didn't add them initially as I wanted readers to solve by themselves or ask for help if needed (and I did get a few mails, saw one of them asked on stackoverflow as well).

See also https://github.com/tayllan/awesome-algorithms for more learning resources, practice problems, visualizations, etc.

8 comments

While I get this stance (the books are often written with students in mind), it's sometimes a bit hard when reading this kind of material while not enrolled. I don't have any TAs, professors, peers etc to ask or grade my stuff when working my way through a text book in my spare time. How can I be sure I understood stuff correctly?

For me it's ok, I guess. I have graduated years ago and it's strictly for fun. But I wonder if it also creates a kind of artificial divide for those not able to attend a university but could have gotten good use of this kind of material by self study.

Edit, found this quote from him on an earlier discussion which summarizes it nicely:

> I'm honestly seriously torn about this. There is a serious tension between pedagogical needs of students in formal classrooms and the pedagogical needs of self-learners. I've chosen to aim for the former. Yes, I know it's a bummer.

That's what was good about the early stages of sites like Coursera, Udacity and Edx - they had quizzes, exercises and exams that are auto-graded that provided that kind of valuable feedback for all tiers.

I think they've all evolved now to where that is only available for paid tiers.

One innovation I really enjoyed was marking and commenting another student's answers, once you'd submitted your own. There are flaws but it's a valuable variation on graded feedback.

> I don't have any TAs, professors, peers etc to ask or grade my stuff when working my way through a text book in my spare time. How can I be sure I understood stuff correctly?

I definitely agree with you on this. However, there are three things self-learners (or even students) can do.

1. Find a textbook with worked solutions or a different presentation of material.

2. Look for course material that has problem sets with solutions, worked tutorials, or worked examples.

3. Learn numerical or other methods to evaluate your solutions. I know this isn’t possible for proofs, but if it’s an algorithm’s run time, I don’t see how implementing the algorithm and plotting run times over different input sizes wouldn’t be a good way to see if you have the correct run time.

My preferred approach is when solutions to odd numbered problems are available. This is especially helpful years hence when help may not be immediately available.
Yep, I think this is a good middle ground. By all means encourage students to churn when solving a problem, but you can get stuck. Actually reading and following a solution to a similar problem can provide some insight.
I hate this attitude. It punishes students (and self-learners) who want to be as good as possible and who’d use solutions to get fast feedback.

The right thing to do is to publish detailed solutions to textbook problems and create new problems for HWs.

It doesn't punish anyone. If you want solutions, then the book is not for you, that's all. The author is not obligated to accommodate every audience, or even a majority audience.
"The right thing to do..."

No. He's the author, this is his choice. People who don't take his course don't have to use the book.

Poor logic. I don't have add tests to my code, after all they're free not to merge, but I should.

Exercises with no solutions are very hard for people learning away from traditional academia - I haven't read this book so I don't know what they're like, but in a physics books it's often common to add questions that take fairly deep conceptual understanding which if you don't click with the book means you're totally out of action until you find somewhere else to learn from.

Again, you don't have to use this book. There are hundreds of books on algorithms, many of which have solutions for people who need them. Getting all pissy with the author because he doesn't provide them is sad and not neccessary.
I don't know, I think he made a very fair critique. Sure, there are hundreds of algorithms textbooks. But there are hundreds of anything. Anyone can make anything they want to, and they are subject to criticism for that.
"right thing to do" is not a fair critique.
> Getting all pissy with the author because he doesn't provide them is sad and not neccessary.

The only person who seems to be getting “pissy” is you.

What is the point of making a comment like “if you don’t like it, leave?”. People who say this seem to think they’re some pithy genius but it’s not a comment that advances the conversation at all.

“Hey I have some feedback ...”

“I don’t accept feedback. Take it or leave it”

“Ok”

That’s not really what HN is meant for.

> People who say this seem to think they’re some pithy genius but it’s not a comment that advances the conversation at all.

Does the conversation really need to be advanced? The author has chosen to not include answers and gave an extremely valid reason for choosing not to and HN'ers are, indeed, getting pissy saying the author should do the "right thing" and provide the answers.

No. Just no. The "right thing" is to accept that the author is choosing not to and move on if you need answers. The author doesn't owe anyone answers.

Unless this is a book the author wrote solely to enjoy themselves, let's not pretend that feedback from potential buyers is something that shouldn't be allowed.
The author has responded to this feedback on the website in great detail. At this point, this is less of feedback and more of entitled people demanding that the author write another book.
The content is posted for free. If you buy it, you are paying for a physical copy of free material.

PDF of the book: http://jeffe.cs.illinois.edu/teaching/algorithms/book/Algori...

Professors frequently write their own textbooks. Sometimes these are only used in their own classrooms. That's pretty close to their own enjoyment. It allows them to have a book that exactly matches the way they want to teach. As far as buyers, this book is free.
> I was asked multiple times for solutions to my self-pub ebooks that I relented.

You could always publish the solutions in a separate paid ebook. If people want to be able to check their own answers, or they want to use the exercises to set homework and make it easier to grade, they might be willing to pay you for them.

>You could always publish the solutions in a separate paid ebook

Yeah that's an option too, especially with gumroad/leanpub providing version/packages for such cases.

In my case, I provide my ebook for free online (inspired by FOSS and authors such as Al Sweigart and Allen Downey) and charge for pdf/epub formats. Good enough to pay my living costs (and a bit more in recent months). So, I don't mind providing solutions as well.

Caricatural mercantile thinking at play here. It’s sad to read.
I like the awesome-algorithms link, but some of the code linked is definitely not perfect. A few questionable things from one of the header files [0] in https://github.com/TheAlgorithms/C:

- Defines a macro with no parentheses

- Uses unsigned for length and capacity (should be size_t)

- Uses () instead of (void) for an empty parameter list

- Useless use of "extern" for function declarations

- I think that leading double underscores and structures ending with _t are reserved identifiers, but I don't really have a good source for this

[0]: https://github.com/TheAlgorithms/C/blob/master/data_structur...

I mean, he's aiming for his main demographic. For anybody who isn't a student of his, there is no honest feedback, because there's no feedback at all. What good is solving a problem if you never find out whether you made a mistake?
> See also https://github.com/tayllan/awesome-algorithms for more learning resources, practice problems, visualizations, etc.

Oooo, nice. Thanks for the link!

This would be like learning piano without a teacher listening to our mistakes.