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

Hi, I'm the author.

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.

(From experience) providing solutions interferes with the learning process of my own students at Illinois. I have to change up homeworks and exam questions every semester, because otherwise students will look up and copy/memorize the answers instead of trying to figuring them out, which means they do worse on the exams where they HAVE to figure things out.

Also, a significant majority of the requests I get for solutions are from university students who want to cheat.

I do provide solutions to the homework and exam and lab problems I assign in any particular class, after the fact. (And I release those solutions publicly, despite the protests of colleagues at other universities, until the semester ends.) And I have started proving model solutions in the homeworks, so that the students know what kind of answers I'm looking for. (See the course materials page, under CS 374.)

In practice, my stance is becoming increasingly moot, as more of my official solutions get uploaded to places like CourseHero and Koofers and their many foreign-language equivalents.

I am very likely to include solutions for a subset of problems (maybe three or four per chapter) in a future edition. But that will take a significant amount of time, and I wanted to get something out the door.



Thanks for this explanation. This is one of the things that popped out at me when I looked at the book page. The statement about not providing answers seemed quite dogmatic, and my initial reaction was, why? Turns out it's not so dogmatic, and there's a thoughtful and nuanced explanation. Perhaps you could include some of this on the book page, or provide a link to the explanation elsewhere.


Completely agree - being outside academia has apparently made me ignorant to a lot of the pitfalls to actually posting said solutions.

Makes perfect sense when put this way.

I also really appreciate the response from the author. I forget the gurus behind books like this often have a presence here on HN.


Not always the case though Prof. Erickson seems to be the exception


Good idea.


>In practice, my stance is becoming increasingly moot, as more of my official solutions get uploaded to places like CourseHero and Koofers and their many foreign-language equivalents.

I've found that whether or not a professor releases solutions to assignments (or even tests), some segment of the student population will have access to the solutions. Releasing them publicly ensures the access is universal, instead of limited to those with the right connections/access.


I found out my last year of uni that frat and sororities had a huge, well run archive of homework, tests and solutions for every class ever taken by members. This was the first time that I had been so close to structural class benefits. This is absolutely how these kids skated through, many of which should not have graduated.


I know that my copy of CLR went into the recycling bin because the 'left as an exercise to the reader' aspect of the book made it completely useless as a reference book. Even when the Internet was wrong (as it often was) it was better than nothing (which is what CLR offers). Also the damned thing has so much clay on the paper that it weighs more than a brick.

I wonder if a better solution is to provide a set of questions and answers for the book but not use the book questions as the graded homework/exam material.

The one has to be dynamic for the reasons you listed. The other doesn't, and any professor that tries to use your book without creating their own questions will quickly find themselves in the same boat you were, regarding memorization vs internalization.


As a cs student I am quite conflicted about this as well. Sometimes we do need answers, either to help break into understanding a problem or to confirm that we have not come to a terrible conclusion.

On the otherhand many classes are graded competitively, so there is enormous pressure to do well on homeworks while you know others have no scruples about being dishonest.


I'm a self learner and I find that having a strong sense about my solution is usually good enough. If I feel my answer is brittle then I should simply review the problem statement or anterior definitions and theorem.

I usually look at the solutions when I've come to the conclusion that the problem is just too difficult and typically discover I hadn't thought of something that made the problem accessible. I would argue that if there are sufficient examples within the chapters, not providing solutions to the exercises shouldn't be a problem.

That is unless you have multi-month/research level problems à la Knuth.


> (From experience) providing solutions interferes with the learning process of my own students at Illinois. I have to change up homeworks and exam questions every semester, because otherwise students will look up and copy/memorize the answers instead of trying to figuring them out, which means they do worse on the exams where they HAVE to figure things out.

While I understand the desire of a professor to help out their own students, at what point does this become a matter of individual responsibility? Shouldn’t it be the student who refrains from memorizing answers?

When I took my algorithms course, we had a reference textbook with questions at the end of the chapter, but no solutions. Some people at the beginning of the semester tried to crowdsource the answers using a Google doc but that effort failed. It didn’t really matter though, since our homework and exam questions were always renewed each semester through the work of course staff and the instructing professor. In hindsight, I may have taken this for granted as it seems other schools don’t have a “training” and a “testing” set of problems - I would say having both is better than only having one.


Of course the student is ultimately responsible for their own learning, but as the instructor, it's my responsibility to help them learn.

Dangling a juicy piece of bacon in front of their noses will not help them eat their vegetables.


There appears to be some evidence to suggest that traditional (grade-school style) "graded homework" at the advanced undergrad and higher level may just not be particularly good pedagogy though [1]. If possible, it may be better to assign ungraded homework with complete guided solutions provided, plus regular in-class quizzes (the latter to motivate students to actually spend time on that assigned homework every week) [2].

[1] https://scholarlycommons.pacific.edu/soecs-facpres/16/ [2] https://www.tandfonline.com/doi/full/10.1080/00091383.2011.5...


I find this approach bizarre and honestly kind of backwards. My favorite math professor assigned homework but essentially (sometimes literally) didn't grade it at all. It was strictly for our own learning. I did it on scratch paper and threw it away, but enjoyed it more because I didn't have to worry about formatting it for clarity. The exams constituted almost all of our grade, and were plenty to convince at least me to take the exercises seriously. I've often wished every mathish course was taught this way. You don't have any choice but to change the exams every time (or people will cheat), and exercises are entirely designed to help us learn, so why not lean into it?


Thank you very much for making your textbook available.

Maybe having a separate set of problems for the online version, with solutions, would be appropriate?

I have been wondering this for all freely available textbooks: have you ever thought about turning your book into an open source project? I see you already manage issues on GitHub, but how about managing the actual content there as well?

Producing a printed book might need tighter editing than shipping software, but I feel like there are a lot of books with partially overlapping content, and I feel like self-learners would be better served by larger books that are not meant to be read end-to-end, but that are "integrated" into a larger whole.


Yes, I have thought about making it into an open-source project, like Pat Morin did with his Open Data Structures textbook, or Boaz Barak with his Modern Complexity Theory textbook. (Both highly recommended, BTW.)

But I'm hesitant to release the LaTeX source files in their current (rather grungy) form. Too much of a control freak, I guess. Maybe for the next edition.

Also, the figures are all in a closed file format (OmniGraffle). In principle, I could convert everything to an open-source format like svg, but (0) converting everything would be hell, (1) LaTeX doesn't understand svg files directly, (2) in principle, I can connect latex to inkscape to convert svg to pdf, but the translation is always imprfect, (3) using Inkscape makes me want to tear my hair out, and (4) I'm a control freak.

And don't even talk to me about tikz.


Thanks for the answer, and the pointer to those books! I hadn't really thought about the layout challenges.

Though I think the benefit would be less about just releasing the source, though the Open Data Structures book makes a compelling case for that, but fostering collaboration on the content. The books you mention have overlapping content and my heart really wants to join them in some glorious whole :)

Maybe that's crazy, the books clearly have different styles, but I feel like writing more advanced texts as extensions to an evolving intro book would be better for self-learners than just having the books stand alone.

FYI, the link to your course materials on http://opendatastructures.org/ seems to be broken now.


For what it’s worth, I find that the answers to the problems in tAoCP are almost always a good balance between explaining the steps to get to the solution and leaving enough out that the reader still has to work to understand how the proof works. But that’s not applicable to all types of exercices.

Your proposed solution (include solutions for a few problems) is definitely a good approach: enough to help the self-learners along while forcing the students to work—I assume you’ll be assigning the unsolved problems in class :)


thank you for the reference material! i'm a student at central michigan right now and will be heading into my intro. to algorithms class this upcoming semester. i'll be sure to use it to supplement (and not pester you for free answers)

from what i see elsewhere in this thread, you've got quite a good reputation around illinois. i recently lost a favorite professor of my own mid-semester last year, and it made me realize just how much a good instructor means to people. so thank you for being that for students!


Maybe for some problems it is possible to include just the final answers? e.g set of possible inputs and expected outputs - so one can test the solution.


Thanks for making this available under a Creative Commons license, which I also use for several of my books.


Thank you for the wonderful material you've made available!


Idea from common job interviewing process:

Make the unit tests public. Or useable interactively online.

I know it'd be a lot more work. If you had a repo for unit tests, I'd contribute.


WHAT unit tests? This is not a book about programming. The solutions are not code. None of the homework in my algorithms classes CAN be auto-graded.


Oh. Serves me right for not peeking at your book first. My bad.


You could consider providing answers and feedback in a premium priced forum or email subscription.


Ew. Ew ew ew. No.

Wait, did I say that aloud? Sorry, I meant "I'm already busy enough, thanks."


Or, you know, he could just keep being a professor in a top-ranked university CS program. :)


How is that a solution? It would provide well-off students with an opportunity to skate by and exacerbate the problem of having solutions circulating in the wild.


It would increase the odds that anyone getting the solutions is using them to enhance their learning experience rather than as a crutch.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: