Hacker News new | past | comments | ask | show | jobs | submit | dkfjs's comments login

Not proving solutions to textbooks seems to be a common theme in mathematics and theoretical computer science. It makes it difficult for those outside of the traditional classroom to learn the material. Instead textbook writers seem to have this adversarial approach against readers, thinking they’ll “cheat themselves” if they look up solutions or attempt to verify their work. Experts make mistakes, beginners would presumably make even more mistakes. Without a feedback mechanism beginners can’t truly know whether their logic is impeccable or if they have a subtle error that they themselves cannot detect. They could easily fool themselves that they have correct understanding.

Due to that I will not recommend this current book to any colleagues.

If you want an example of a fellow hacker news member that did things right, check out http://joshua.smcvt.edu/linearalgebra/

He provides solutions and lecture videos... this is truly a democratization approach to learning and a model that other academics should follow.


> Instead textbook writers seem to have this adversarial approach against readers, thinking they’ll “cheat themselves” if they look up solutions or attempt to verify their work.

I agree that worked problems make a text much more valuable and useful; even students in a class may spend a lot of time doing self-study. And for self-study, without worked problems the book is only useful as a reference while working problems from elsewhere. The author essentially agrees with this.

However, it's not "thinking" students will cheat themselves, it's knowing for a fact that many will. If you give homework that takes multiple hours each week, then for students who have gotten behind or don't know the background they should, it will take multiples of that time. Many, if not most, simply won't do it if there's a shortcut handy. Challenging people to do more than they would on their own is necessarily adversarial.


Is it really cheating. If the goal is to learn the material using someone else's solution is incredibly helpful and can expedite the learning process. If there is a process to master a skill in 20 hours and another way to master it in 5, only the fool would chose the 20 hour process.

When I took electrodynamics the first semester I worked through all the problems myself. I started on Sunday would ask questions Monday and Tuesday where I was stuck and the process took me 20ish hours each week. When I took the second semester, a couple of the other students had the solution manual. I would attempt the problem, then when I got stuck, I would consult the solutions manual, understand what the solution manual was doing, then go back to my work and understand the problem. It would help me track down errors I made in algebra. I ended up spending about 10 hours a week on the problem sets, understood the material better (as well as the material from other classes) and got better grades (on both tests without solutions and homework).

I used to tutor kids in physics and one of my students went from a C at midterm to an A because there was real time feedback for the homework he is trying to do so he was able to grok the material. Worked out solutions to the homework problems is the next best thing.

When I was teaching myself machine learning, it was the same deal, I started working through other peoples worked out problems, it helped me grow my programming skills and learn machine learning more effectively. I would take their code break it down, add comments to lines I didn't understand on first reading and ran the programs.

Learning from solutions is one of the best ways to learn. And it is stupid to have to do twice as much work for the homework problems because some kids might cheat themselves. The alternative for students who have gotten behind or don't know the background is that they don't learn the material because you don't have . The solutions manual gives them an opportunity to catch up.


> Learning from solutions is one of the best ways to learn.

Sometimes I feel like that's the only way to learn. There's no worse feeling than staring at a problem and having no idea where to start with no one to guide you.

The corollary is that I feel sometimes it becomes _memorizing_ instead of _problem solving_.

In a certain aspect, problem solving is recalling previous solutions you've done and applying various parts of them. But in another sense, just memorizing solutions doesn't necessarily help you apply them.


Reading your comment made me realize that this practice is common within programming itself where frameworks/languages often strive to provide “fully contained examples”. When I’m learning a new framework, I will often first look at how others have written to learn things faster.


If your only goal is memorizing the material, then sure. But usually it is a goal in of itself, to apply knowledge to novel problems and develop a solution. There are no solution manuals to unsolved problems. If you went your whole graduate education not working on the ability to approach problems you haven't seen, you will not do very well in research, and many aspects of professional life.

But sure, if you do a first pass without a book, spend sufficient time trying to figure it out, then a solution manual is helpful if you are not getting the feedback loop of a professor.


Well the feedback loop is much faster with a solution manual than a professor. I agree there is a line between leveraging the solution manual to teach yourself more quickly and just copying the solution. My quantum mechanics professor would give us the solutions to the homework before we were expected to turn it in so that we could learn from his explanations.

I agree that you have to a some point learn how to approach problems which you haven't seen before, but almost every field I have seen, the right way is to start by copying solutions of others until you understand it and then riffing from there. My father was a professor/researcher and he said you shouldn't start a problem unless you knew what your solution was and what you expected it to provide.

In fact much of the research work I have done is see if technique from field x will apply to field y after I have become an expert in field y. Or push to edge of field y and take the next logical step. But pushing to the edge of field y almost always requires working through the solutions of the people who have been there before rather than reinventing the wheel.


> I started on Sunday would ask questions Monday and Tuesday where I was stuck and the process took me 20ish hours each week. When I took the second semester, a couple of the other students had the solution manual. I would attempt the problem, then when I got stuck, I would consult the solutions manual, understand what the solution manual was doing, then go back to my work and understand the problem.

At the university I attended, this would be an honor code violation. But I agree with the value of worked problems.


So provide worked answers for half of the problems, making sure that the problems with available solutions give the experience necessary to solve the ones that don't. Then ideally assign homework that includes both problems, with the expectation that students will look up the solutions if they get stuck.

I've had several classes that worked like that, and it worked great.


Can't you (as a teacher) just, not assign homework that's static problems from a textbook and instead make your own problems?

The problems in the text book aren't meant for homework, they are meant for practice. This is just the teacher not wanting to make their own problem set and instead use the ones they got for free in the textbook imo.


Would you rather your teacher spent time writing problems or spent time coaching students through problems in person?


I'd like my teacher to spend some time trying to understand and address the problems that students have with exercises. In practice, that seems to mean spending time writing problems.


> If you give homework that takes multiple hours each week

I think I found the problem. Educators have such an obsession with homework and stealing more class time from their students they can't imagine different models where having the answers in front of you doesn't detract from learning.

Have you never used flash cards? My answers are on the back and yet...


Nobody learns learn how to design algorithms from flash cards.

Mastering any skill requires sustained practice: driving writing, basketball, auto repair, carpentry, banjo, gardening, combat juggling, web development, teaching, and yes, even algorithm design. The multiple hours of homework each weak is that sustained practice.

If anything is a waste of time, it's the lectures.


I don't know what you mean by stealing. In college you are generally supposed to devote twice as many hours outside of class as in class. It's probably stated in your student handbook. That is why 12 to 16 credit hours is called "full time". In a problem-solving discipline the best way to spend that study time is solving problems. As a bonus you can get personalized feedback when it is graded.


I'm going to call that stockholm syndrome. Many people throw around the idea of spend twice as much time in class as out. That's a fine idea for some, but many don't need it. Forcing a student to fill out problems to satisfy the instructor's concept of enough time spent is completely tangential to purpose of an education.

There isn't a requirement for the amount of time a MMA fighter spends in the gym. They set their own schedules and reap the results.


The idea is not "thrown around". It is called the Carnegie Unit: A course should be designed so that for each unit there should be 1 contact hour and 2 hours of outside-class work. This is the standard way courses are implemented in North American universities.


In my college (back in the day) they said an A student would spend 4 hours for every 1 hour. For a 15 credit student, that meant 60 hr work weeks every week and for a 20 credit student, 80 hours a week every week. It was brutal and exploitative imo. The one semester I took 12 credits, my quality of life, ability to retain material, and grades went up.


Let's face it, the average student won't do anything on their own till the night before the exam, which is a recipe for failure in any class that can't be memorized in an evening or two. If school was tailored towards the most elite self-motivated students, your analogy would apply. But something like half of gym members don't even go.

Why do you think professors give homework? It would be so much easier to just point students at study materials and leave the responsibility to them. But it's frustrating for everyone when students fail.


How is that a stockholm syndrome? Classroom hours are set low enough specifically because of the expectation of out-of-classroom work/study. The courses could meet for longer and expect all work to be done in class, but that is incredibly restrictive for planning schedules.


In college, cheating on the homeworks was quite literally the only way to get all the work for 4 engineering classes done on time.

We still learned it all for exams, and received our exam grades accordingly, which are generally >60% of the full grade for the class.

But we were putting in 80+ hours a week on engineering classes and it simply wasn't enough for the obscene amount of work professors assigned. Students crying, having breakdowns, and pulling their hair out in the library and in the classroom was pretty common.


I remember two breakdowns while going through Computer Science and Engineering at UTA ( far from a top-tier school, we liked to call it "UT Almost" ) in the late 90s

1. a student in physics broke down sobbing during the final, like uncontrolled wailing. The TA helped her get up and walk out

2. in the discreet structures course a student got up, walked to the front of the room in tears, tore up their final in front of the class and prof, and then walked out.

3. not sure if it counts but in that same physics class from #1 another student threw up all over themselves but sat there in it and finished the final. maybe just sick idk

a lot of students are hotshit in HS and then get to college and find out they're not as smart as they thought. heh i came from rural TX armed with Algebra II and didn't even own a computer. Fortunately for me, i somehow ended up with a handful of upper classmen friends who seemed to make it a mission that i get through it. I owe them so much.

EDIT: Professionally, i've been on plenty of conference calls where peers break down in tears. There's only so much pressure a person can bear before nerves just give way.


I once met an engineering statistics professor under social circumstances. Said professor proceeded to brag about never having a student get an A on his final, along with other similar comments. Later, I took a class from a history instructor who started the first class by going around the room mocking the students individually. (I dropped that sucker so damn fast...)

Some teachers specifically not to teach, but to take power trips over students. They are simply bad. Others are there because it's a paycheck; they're not very good. Some others are confused and loopy. They're not great.

But most of the university and college teachers I've met were interested in teaching students---they're typically teaching something related to the field they've spent their lives on, right? Most were middling good, some were spectacular.


This reminds of my DS class at a normal state uni. We started with about 30 students, 7 showed up for the final exam. 2 walked out during the exam.


Unless you were planning to graduate in 3 years or less, I've personally never seen anyone experience this.

Advisors should have worked with you to make sure your semester workload floats at around 40-50 hours a week, 60 hours at most during a bad semester. Some people actually care about retaining the material they're learning - taking 4 engineering classes a semester is a waste of time and likely detrimental to learning. It's usually 2-3 engineering classes plus a few easy blow off classes a semester to get all done in 4 years.


It was absolutely detrimental to learning and retention.

We were on a quarter system (really trimesters, since one quarter is the summer quarter), with 48 classes required to graduate from engineering, which is 4 classes per quarter for 4 years assuming you don't have any AP credits. Only a handful of the 48 are allowed to be non-engineering, econ, or math.

Most classes that would be a 14 weeks in a semester system were not broken up differently - they were crammed into 10 weeks to fit into the quarter system.


This situation probably did not happen overnight. It was probably a long process driven by feedback loops. Some students started cheating, so profs made classes harder or assigned more work to ensure that students learn enough to get jobs/scholarships/grad school admissions.

More students started cheating. Profs responded the same way because of organizational pressure. Ten years later, courses involve obscene amounts of work.


Thanks for the reference. Another algorithms text -- though Haskell centric -- that provides solutions is Algorithm Design With Haskell [1]. The exhaustive Combinatorial Mathematics by Douglas West [2] provides hints at least. These are advanced texts though. Another source of solved problems are "problems in" books. Dover offers affordable titles like Fifty Challenging Problems in Probability [3]. There are other classics like Combinatorial Problems and Exercises [4] or Proofs from the Book [5], all with solved exercises.

[1] https://www.cambridge.org/core/books/algorithm-design-with-h...

[2] https://faculty.math.illinois.edu/~west/

[3] https://store.doverpublications.com/0486653552.html

[4] https://www.ams.org/books/chel/361/

[5] https://www.springer.com/gp/book/9783642008566


I took this course a while back. Before every exam, students would create a massive crowdsourced google doc and attempt many problems in the book / fodder. Granted, we had TAs to review our results - but even they don't access to a solutions manual. But the docs were filled with comments, many different approaches and alternative viewpoints. The class discussion board was very active. I've never seen that sort of large scale student-led collaborative atmosphere in any other class.

In that sense, I agree that this book isn't designed for self study. Every homework was done in groups of 3 and probably took a combined 30-60 manhours a week to complete. It would be pretty hard I'd imagine.

The reality is - if you're a developer and someone asks you to develop a program that does x, you rarely have the privilege of having a complete source code waiting in the end to compare against. But you build it iteratively. You do a bit of research. Sometimes you ask for feedback through a pull request. You think about every corner case and edge case. These are all basic practical skills you don't get to exercise if your mindset is to just grind through math problems.

These days, the internet is full of knowledge, social and connected as it can possibly be. StackOverflow and research papers are one google search away. (I say this because every problem in the book are usually based on very interesting theoretical CS papers) Discord servers have become huge chat rooms for people to organize like-minded individuals. Assembling a group of motivated individuals online and working on problems together is a very effective way to learn than trying to dive into material by yourself. Whether it be this book or any other textbook. I don't think this book should be faulted for trying to incentivize that philosophy.


While I agree that this book isn't very useful for self learning, I have to defend the model you describe as adversarial. I took CS473 at UIUC (it's CS374 now) so I can tell you firsthand the course is brutal -- easily the hardest course in the CS program. You're given a LOT of resources through office hours and everyone uses them. The TAs are good at leading you down the right path instead of just showing you the answer and making you feel like you connected the dots (you probably didn't). Most of the answers are on Chegg if you want that, although I think Chegg is the worst thing ever for actual learning.

Unfortunately I don't have a good solution for the self learner here... There is no way in hell I would have gotten through that class without the TAs and workgroups. Just being able to peek at the answers would have been terrible.


In the former situation you described, the actual textbook doesn't matter, it's all about the resources you described to help you along.

In a lot of cases, those resources just don't exist, even at universities. That's why worked examples and problems with solutions are so invaluable. In fact, they're so valuable, I've spent half a decade compiling these kind of resources for mathematics and physics, back when I was a master's student. I literally crawled through professor course pages manually downloading pdfs.


In a previous post, the author responded to this concern: https://news.ycombinator.com/item?id=18808010

It seems like he will include a subset of solutions in a later edition, whenever he has time to publish it.


It's kind of insulting to assume that students are unable to decide what's good for them. If someone wants to cheat, he/she will do it anyway. Not providing solutions harms people that really want to learn the material.


The author of this particular book made his choice based on his experience teaching the course. While, of course no one can stop you from criticising his choice, on any day, I'd respect his opinion more than that of an angry internet commenter as he (the author of the book) has more invested in it _and_ has given free resource to the community after putting a lot of work into it.


I mostly agree with your sentiment. But I don't necessarily see it as a question of respecting one opinion more than the other. The author of the book didn't make a statement like "books without solutions are universally" better or anything.

But he did make it clear that he optimized for one particular audience (his students at Illinois) over another possible audience (self-learners). And on that, he totally has the right to make that choice. It's unfortunate that some commentators ignored that point, or choose to be critical anyway.

OTOH, just because something is free doesn't mean that people can't criticize, IMO. The question just kinda becomes "what's the point of the criticism?" If one doesn't find this book useful, they're under no obligation to use it. And the author isn't likely to change his position based on a few grouchy Internet commentators.

Personally I appreciate what the author has done and am glad his book is out there. Do I prefer books with solutions in general? Yes. Does that matter in this particular context? No.


> If one doesn't find this book useful, they're under no obligation to use it. And the author isn't likely to change his position based on a few grouchy Internet commentators.

Yes this is what I don't understand. Why are there so many critical posts about this particular decision? Why didn't those users just close their browser tab and move on with life? They are bring offered a free resource, it doesn't meet their needs/desires, they choose to complain. It seems very rude to me. The few who have suggested alternatives are contributing.


> OTOH, just because something is free doesn't mean that people can't criticize, IMO.

I couldn't agree more!


>It's kind of insulting to assume that students are unable to decide what's good for them.

It's also kind of insulting to assume that teachers with decades of experience don't know how students behave.

Student cheating or working is not binary; it's a continuum. There are plenty of students in the middle of that continuum that will copy answers and not learn if answer are easily available, but that would do the work if answers are not available, and those students are better off having to put in effort when they don't have easy answers.


This x1000, I was/am a particularly dense student and the only way I learned was by working loads of problems repeatedly until the “tricks” became second nature. The worst are solutions manuals with hand wavey solutions.


I think the ideal would be something like an autograder, rather than a solution. There used to be a Coursera class from Princeton that relied on Sedgewick and Wayne algorithms book, and the class was very, very good.

Then we must hope people don't publish solutions on github!


> I think the ideal would be something like an autograder, rather than a solution

Me too! But I don't know how to write a useful auto-grader for free-form English text and pseudocode, and neither does anyone else.

Even a pedagogically useful auto-grader for actual _code_ — one that doesn't just check a bunch of test cases, but diagnoses the code to identify design errors and offers specific feedback for improvement — would be utterly revolutionary.


IIRC the Coursera class autograder used actual code, and offered _some_ design improvement suggestions - about code correctness, edge cases, speed. Of course, it couldn't point out other design flaws.

I think that the Java used in that class was a good approach. By limiting the packages you could use, they prevented leveraging builtin facilities (e.g. Java collections) and forced people to write their own data structures.


or chegg barf


I agree with this 100%.

It’s really hard for everyone when there are no solutions provided. Even if you arrive at the correct answer it’s nice to know how the author is thinking about the problem


Is that Computer Concrete Roman?!

I guess I'll have to go through this one.


Nope. It's Bitstream Charter.


Hi, I'm the author.

You're of course welcome not to recommend my book to anyone for any reason. But in my own defense, my reluctance to release solutions is not a moral stance, or a belief that I know what's best for all learners. I completely agree that a textbook with solutions would be a better resource for independent learners than a textbook alone.

But my first allegiance is to my students at Illinois. My textbook grew out of course materials for the algorithms classes I've been teaching at UIUC for more than two decades, and it's still the primary reference for those classes.

I religiously release solutions to my homework, exam, and discussion problems every semester, but only after the homeworks are due, exams are taken, or discussion sections are over. (Experience strongly suggests that having homework solutions _after the fact_ significantly improves later exam performance on similar questions.) I also include at least one solved problem in every homework assignment, to help students calibrate the level of rigor and detail that we expect, and to give a worked example of the type of problem that the assignment is covering. (This pisses off several of my colleagues, who really wish I wouldn't publish solutions at all.)

But whenever I've assigned homework or lab problems whose solutions are readily available _in advance_—either from me or elsewhere on the web—students have performed worse on average on similar exam problems later in the same semester. I take that as strong evidence that they didn't learn the material as well. This isn't a philosophical or moral stance about what students _should_ do; it's an empirical observation.

tl;dr: In practice, releasing solutions in advance hurts my primary audience. That's why I don't do it.

"Why not just make up new problems every semester?", I hear you ask. I do make up new homework and exam problems every time I teach, which is why the textbook has so many problems, but not enough to fill an entire course. Developing problems that are substantively new (not merely old problems in new clothes), focused on the target skills, and neither too easy nor too difficult to be pedagogically useful, is *HARD*. (Most competitive-programming and interview-practice questions are terrible, because they're not designed for the same purpose.) I do it, because I have to, but it's one of the hardest parts of teaching this material, and I don't always succeed. Other parts of my job life also require time and attention, and I'd really like to sleep, so yes, I do rely on good problems that I've used before,after they've been fallow for a few years. (The same goes for the other algorithms faculty at Illinois and elsewhere.)

Similarly, collecting all (or even a significant fraction of) the problem solutions and polishing them into a common publishable form, even just for instructors, would require a serious amount of work, especially without a professional editor (because I'd want to self-publish, so that I could give it away free). Finishing the textbook required a full-year sabbatical, free from my usual teaching and committee work. Again, I'd like to sleep.

I completely understand and sympathize with your frustration, but I still believe I made the right choice. I'd like to think that my textbook and other course materials are useful even without solutions; otherwise, I wouldn't have published it. But it can't be all things to all people.


The book contents are FREE! Look away if you're offended.


They weren’t attacking the author. It’s a valid argument regardless of the cost of the book. Free doesn’t mean you can’t criticize anything.


There was an accusatory, hostile tone that I personally found off-putting and not worthy of an HN discussion.

asicsp’s comment[1] was much more useful and neutral.

1: https://news.ycombinator.com/item?id=26074429


He stated his experiences with mathematics and computer sciences books and provides arguments for why he thinks this is not a good approach. I really can't see where he is being hostile or accusatory?


Tone policing on a textual medium isn't helpful either.


Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: