Hacker Newsnew | past | comments | ask | show | jobs | submit | _underflow_'s commentslogin

As a non-seasoned complete outsider, I thought this part of the article was somehow being dryly facetious or sarcastic or something. Kinda good to have somebody to provide context, actually.


> Please do not ask me for solutions to the exercises. Even if you are [an] instructor, I will say no.

That's kind of a bummer. I like to be able to check my answers when teaching myself things.

Am I somehow alone in that?


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.


I have seen many people voice that complain. Personally I rarely had issues verifying a solution once I have worked through a problem.

What happens much more frequently, is that I get stuck somewhere, and get tempted to look at a solution if one is provided, which in turn nullifies the achievement. In this sense, not having solutions, makes it easier for me to plough through.


If you prefer not to have solutions, pretend you don't have solutions. Having solutions is strictly better (for the reader. I'm ignoring the cost of producing them to begin with)


"pretend you don't have solutions" is not a realistic approach. The strength of people's conviction to this will probably fall on a bell curve and few can resist the temptation when the problems get really tough. Accounting for how humans are, I do not see how one can easily say "Having solutions is strictly better". I can easily think of cases where it is indeed better to have solutions but to say "strictly" requires a bit more diligence.


Don’t rob the self-learner that doesn’t have access to TAs, fellow students, and professors the ability to check their work, just because someone else doesn’t have the discipline to not abuse it.

Textbook solutions are good for those that aren’t in school, aren’t in formal programs and have no other way of receiving feedback.

The “you should know if you’re right” mentality doesn’t necessarily fit a person that’s been working for 10-years and has been out of the academic mindset. One that is a beginner and could easily fool themselves into thinking they have a correct answer.

It doesn’t allow for correction of false thinking. Anyone can think their proof is correct. But fewer beginners can properly recognize when they are wrong.

This sort of mentality is a bit elitist and gate keeping.


I had a girlfriend who was doing her PhD in Physics. I remember one night she and her classmates spent all night working on a problem, that was essentially unsolvable. The next day they go to class and all of them made their best attempt, but no one could complete it. The problem? The professor accidentally used the wrong metric on one of the numbers meaning that they couldn't do the steps to what should have been an easy solution. Now they noticed this, they are a smart group of people, but that's not what the problem was, so they spent hours and hours trying to solve what he gave them without any hope of actually doing it.

In the end, he was like "Oh my bad," and corrected his mistake. The point of the story is that they were able to essentially ask him for the solution and they were able to check what they'd done, and in the end he made the mistake. In situations like this, he should provide the answer if nothing else to show that he didn't make a mistake in the problem set. People are fallible, no matter how brilliant you are.


I had a similar thing happen in high school physics. We were were suppose to figure out where and when a projectile was going to land. The only problem was that it was never going to land—-the initial velocity was too high.

In retrospect I think it was a great lesson for my future career as a data engineer. Doesn’t matter what the source is, any datum can be just plain wrong.


> The only problem was that it was never going to land—-the initial velocity was too high.

As in, it escaped the gravitational field?


Yep.


That professor probably had produced the answer already, using the metric he had initially intended. Having a set of answers doesn't mean you didn't make a mistake in the questions.


But it does clue you into whether the professor used a different set of assumptions than you did.


Presumably you wouldn't see the answers until after you spent all night on the assignment.


There's a story of a prof injecting one error into every test.

I had a industrial engineering teacher that did something similar. Every team had a (fake money) budget for each project and bought materials from him (sole source). He'd randomly cut corners, to keep everyone on their toes. Good lesson for the real world.


On the other hand, struggling all night to solve an un-solvable problem is a valuable learning experience, too. In the real world we struggle all the time with problems that don't have solutions.


I took a quick look through the first set of exercises and a lot of the problems are open-ended and don't have specific answers. Seeing a different answer than yours doesn't tell you much about whether your answer is correct.

Even if you do have a similar proof to the one in the answer key, that doesn't mean your proof is correct. Correctness can often hinge on very subtle distinctions. You really need a TA or instructor to read your proof if you want meaningful feedback.


As I've said elsewhere, I'm looking out for my own students first.

One of my colleagues suggested setting up a "club" on PerusAll (https://app.perusall.com/welcome) or something similar that would allow people to discuss to book and/or work through problems collectively. (They have a club for CLRS, for example.) Right now all their "clubs" are restricted to books with Reputable Publishers (ptui), so they might need some persuasion.


Presumably nothing's stopping you from putting a book of solutions and posting them online. It seems like a much easier task than writing this book, with all its problem sets, and then posting it online for free for the world to read.


It might be an elitist and gate keeping mentality but I have to say that calling providing a free resource to someone, but not tailoring it to fit their exact situation, "robbing" is a very entitled one.


It is absolutely a realistic approach, what are you talking about? Is it also not a realistic approach to eat your vegetables or perform routine exercise like walking around the block?

Without solutions at the back of the book, self-directed learners can't verify their own work. Don't cut out the less privileged learners from bettering themselves just because you have no concept of discipline.


Well. It has worked really well for me and obviously a bunch of other engineers as a number of our books had solutions at the end of each chapter.

As long as cheats are only available for ungraded homework/self assessement tests cheaters are only going to cheat themselves.


I completely agree.


yes, exactly.


Solutions are to questions as tests are to software. For me they offer peace of mind no matter how sure I am.


Solutions were stepping stones to my success. I am mature enough to not be tempted without trying out the problem. I sleep over it and then at last looking at the solution, if I ever find myself at my wit's end. That is because I have a firm understanding that there is no shortcuts to success. Having come from a third world country where cheating on oneself is delaying even the basic resources to get a job, I was raised with peers finding the 'peeping at solutions' an abhorrent act. Its a big shameful thing to do in my culture.

Solutions are the way I learn the thought process of author if he arrived at the final answer in a better way. Solutions expose errors in questions. Errors and typos in Indian texts were way more a common place in questions than in solutions. There was simply not a chance for a solution to have typo or logical errors.

If there are no solutions, I'd simply put it for later until I am proficient in the subject and want to try out the problems with confidence. There is always this insecurity when it comes to dealing with logic. Little things can slip in abstract thinking pretty easily. Silly mistakes take a toll. People like myself prefer to solve problems individually at our own pace. Solutions are a must for me. Of course, that 'later' almost always never comes.


No, you are not. The extensive problem sets at the end of each chapter is main contribution of this work (imho). However this is not a shortcoming these days.

I spend upto ~1 hour on each problem. And then I google keywords from the questions. Someone somewhere has one possible solution. Usually , this is enough to set me on the right track.


> I like to be able to check my answers when teaching myself things.

I agree, although looking at the exercises in this book, they seem to be of the form where the only way to give you the answer is you give you the full solution, and they appear to be phrased in a way that makes it easy enough to verify the answer yourself once you’ve figured out the problem. I always feel like the ideal (for me at least) are problems with numerical answers listed in the back of the book – then I can check my answer with the book’s answer; if I got 42 but they got 5, I know I made a mistake somewhere but it’s still up to me to go back through and figure out where the mistake was. It seems like most of these problems don’t lend themselves to short numerical answers like that.


as is the case with all uni oriented textbooks, they can't be used alone if you don't instantly grok the content. i'm sure just searching github for a sample implementation followed by a discussion of the finer points on stackoverflow/programming reddit of choice will do you

a 5 minute search gave me this - https://github.com/floyernick/Data-Structures-and-Algorithms for algos implemented in Go. github is littered with these kindsa samples(some of them highly vetted) https://github.com/topics/algorithms-and-data-structures


The author probably agrees with you. He indicates that he provides solutions for most of the problems he assigns to his class.


The book sources are available through GitHub, you or someone else could easily fork the project and add all the content that in your opinion is missing (including answers to exercises).


The princeton algorithm site has solutions for some of their exercises. Also they have online lectures as well along with animations, visualizations, etc. It's an excellent resource for those who want to learn algorithms.

https://algs4.cs.princeton.edu/home/


could be a monetization idea/incentive to purchase, purchase the book get unique key, use key to check in to site to see results.


Nope. Anything I publish will be available free.


This is done occasionally in algo books to encourage their adoption in cirricula (e.g. Dasgupta, etc.).

As a sibling comment mentions, it's relatively easy to verify your answer for correctness in some cases. The downside of this is that it becomes difficult to assess whether students are actually learning. One way to mitigate this is to withhold answers and assist with other teaching resources like TAs. This also helps teach the aforementioned 'verification' step.


For a moment I was briefly surprised, but then I remembered the company in question. No way that was accidental.


"Scholarly consensus" != authorship. Everyone had a scribe actually do the writing in that day anyway is my understanding.

Is there a symbol for the squiggly equals sign?


≈ U+2248

≠ U+2260


Anyone know of any commercial solutions for this that don't involve e.g. having to disassemble the book and feed in a stack of pages? Ideally something on Amazon but "prosumer" lever stuff is good too.

I would love to have digital backups of my library and personal notebooks.


I worked for a company that did this. We chopped off the spines to turn them into looseleaf, which could be rapidly scanned in an automated fashion. Then disposed of the original materials and mailed our clients CD-ROMs of high-res scans, optionally OCRed. Obviously there are downsides to this approach, but for situations where fits, it makes a ton of sense.

Please don't take this sentence out of context, but I kept a lot of severed spines as souvenirs when I left that job.


Semi-related: Law students often [used to in the early 90s / may still] get the spines sliced off heavy casebooks and the innards punched for 3-ring binders. Carry around only the pages you’ll need.

It was extravagant and fussy, but super handy for a bike commute. Scanning the loose pages would have been OK if that tech had been more friendly. 1000 pages, thin, flimsy paper and tiny print might still be a challenge. No tablets in those days.


> I kept a lot of severed spines as souvenirs when I left that job

Brutal.


Would be a fantastic way to outfit a bar or lounge. Severed spines with an e-interface for content access. Maybe some kinda laser pointer based lookup.


Suddenly those fake bookshelves that people buy to look as if they're well read make perfect sense. Have to re-calibrate.


Speaking of spines and copyright issues:

In K W Jeter's excellent dark cyberpunk novel "Noir", intellectual property theft is viewed as literally killing people by removing their livelihood, so copyright violators were punished by having their still-living spinal cords stripped out and made into high quality speaker cords in which their consciousness is preserved, usually presented to the copyright owner as a trophy.

"In the cables lacing up Alex Turbiner's stereo system, there was actual human cerebral tissue, the essential parts of the larcenous brains of those who'd thought it would be either fun or profitable to rip off an old, forgotten scribbler like him."

https://marzaat.wordpress.com/2018/01/27/noir/

>There’s a lot to like in the novel.

>My favorite section is the middle section where the origin of the asp-heads is detailed via McNihil’s pursuit of a small time book pirate and the preparation of the resulting trophy. The information economy did, in this future, largely come to place. As a result, intellectual property theft is viewed as literally killing people by removing their livelihood. Therefore, death is a fitting punishment. McNihil, in his point by point review of the origin of asp-heads, notes that even in the 20th Century there was the phrase: “There’s a hardware solution to intellectual property theft. It’s called a .357 magnum.”

>Actually it’s decided that death is too good and too quick for pirates.

>Their consciousness is preserved by having their neural network incorporated in various devices. (Turbiner likes to use stripped down spinal cords for speaker wire.)

>This sounds like a cyberpunk notion but, in other parts of the novel, Jeter takes a swipe at such hacker/information economy/internet cliches as information wanting to be free (McNihil destroys a nest of such net hippies) or the future economy being based on information. Villain Harrisch sneers at the notion stating that information can be distorted but atoms – and the wealth they represent – endure.

>Still, his novel is chock full of the high-tech, low-life that characterizes cyberpunk.

(I'd quote some more, but as a high-tech, low-life net hippie, I'm afraid of having my nest destroyed and getting my spine ripped out!)


I suspect the writer to be showing a bit of his bias here. Wonder what his stance was on librarians, death by being buried under books perhaps?


K W Jetter was a good friend of Philip K Dick, and the character Alex Turbiner had some similarities and might have been based on him! From the review I linked to:

>A sort of Dick-like (in the sense of a largely ignored and prolific author of paperbacks and lover of music) author and idol of McNihil shows up in Turbiner. (Jeter wryly notes that authors were particularly “mean bastards” in regard to copyrights.)

It's ironic and fitting that PKD has been reincarnated as a robot and new versions of his mind and his work have been reconstructed by infringing on his intellectual property rights with machine learning.

https://www.theguardian.com/technology/2006/sep/14/copyright...

https://www.vox.com/2016/6/1/11787262/blade-runner-neural-ne...

K W Jeter also wrote some authorized sequels to Blade Runner (the movie, not the book Do Androids Dream of Electric Sheep).

https://en.wikipedia.org/wiki/K._W._Jeter


Check https://www.indiegogo.com/projects/aura-speeds-simplifies-al... There's a discount going on currently.

I wish I could afford one. Digitized versions of books in Indian languages are almost non-existent.


We had a Treventus ScanRobot at my previous job. Not exactly "prosumer" but more "pro". It vacuums two pages and does linear scanning.


Just search for "book scanner" on aliexpress there shouldn't be any problem.


There appear to be a lot of (overpriced) cameras-on-a-stand, but nothing fully automatic.

The hard part is not capturing an image of each page, but turning them automatically.


Given that planetary scanners are used for rare/fragile/valuable books (for common ones, it's best to just disassemble them and scan the individual leaves), turning the pages automatically at ludicrous speed is exactly what you don't want to do.


Even if books are common they might not be yours and a destructive way of scanning is unacceptable in that case.



Couldn't find any mention of a 3rd party security assessment? Open source doesn't necessarily guarantee security though I'm really glad to see this is open source.

Given macOS's security track record - especially with High Sierra - and how particularly verbose Mach-O binaries tend to be, I'd be kinda worried about something relying so heavily on proprietary APIs (and potentially the system keystore?) Though I'm sure using Keepass with Mono (that the Macpass site lightly implies is the only Keepass macOS alternative) isn't exactly an impenetrable fortress either haha

Got that Hopper license around here somewhere...


I daily use the exact same setup for all three, but with the Android equivalent.

...so it's not like this app is unheard of, per this thread's parent comment. Super odd that they didn't include it haha


Didn't Portlandia do this a few seasons ago?


I (used to?) own a student license for Parallels Desktop circa 2012, though it may have expired by now.

In my experience, I could see no major differences between their solution and, say, Virtualbox. There were some Mac-specific features like working well with Exposé when in Seamless mode and a few other UI niceties, but Parallels seems primarily geared towards supporting Windows. Linux Guest OS support of features like Seamless mode refused to work unless you had specific kernel versions and was always several versions behind in my experience. I'm sure the feature parity gap between Virtualbox and Parallels Desktop is even smaller today than it used to be.

The pricetag is usually less for Parallels products compared to the leading commercial competitor, FWIW.


> In my experience, I could see no major differences between their solution and, say, Virtualbox.

What software were you running inside the VM? Parallels performance is good enough I can actually play a lot of games, which was amazing to me after years with Virtualbox.

TBH, even for simple stuff like Internet Explorer, I'm surprised you didn't notice a performance difference.


Beat me to the comment.


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

Search: