Live data from Hacker News

Why Don't Schools Teach Debugging?

danluu.com

81–90 of 132 posts

Re: Why Don't Schools Teach Debugging?

#81
post #6

I really enjoyed this post having attended the same school and taken some of the same classes. I'm actually currently in my final months of a mechanical engineering B.S. at Madison, and I think the problem goes beyond a "hazing" of freshmen. For me, my ECE 352 was Introduction to Dynamic Systems. For anyone here without a physics background, it's basically an introduction to "more real" mathematical modeling of physi…

6.002 midterm at MIT in 91 had a problem trivial to solve with a Laplace transform ... Actually it had a couple. Of course Laplace transforms would be taught in the second half. The few students who already knew the transform or somehow knew to read, ahead did well. I spent 20 minutes on one problem solving the differential equations from scratch without the damn transform. I felt sorry for those who weren't taking it as a freshman (it was pass/fail for all classes your first year at MIT).

That guy was a useless jerk. (As a teacher.) I did have professors that were useful jerks ... Difficult homework every single class with spot on directed feedback by the very next class. Unfortunately teaching well at a research university is just a mark of being eccentric. It seems to be negatively correlated with getting tenure. The 'useful jerk' already had tenure. He was mean, but an awesome teacher.

Re: Why Don't Schools Teach Debugging?

#82
post #6

I really enjoyed this post having attended the same school and taken some of the same classes. I'm actually currently in my final months of a mechanical engineering B.S. at Madison, and I think the problem goes beyond a "hazing" of freshmen. For me, my ECE 352 was Introduction to Dynamic Systems. For anyone here without a physics background, it's basically an introduction to "more real" mathematical modeling of physi…

> I've found myself falling into almost the exact same trap when teaching people object oriented programming for example.

At least in my experience, a huge issue in teaching OOP is that the introductory examples are not compelling examples of class design (DiagonalMatrix and IdentityMatrix are both Matrices! Dogs and Cats are both Animals!). Students don't really understand the pros and cons of OOP from those sorts of examples.

Perhaps due to this, I would attempt to do OOP by creating taxonomies that modeled the ones in the real world. It wouldn't be until into my professional career that I would realize that this is an anti-pattern in most cases.

Though OOP best practices have matured since I was in school (interfaces base classes are encouraged, deep hierarchies and reuse through inheritance are discouraged, the integration of functional programming), so perhaps things are better now than they used to be.

Re: Why Don't Schools Teach Debugging?

#83
Troubleshooting, as important as it is to engineering and computer science, is a general skill that should be taught to kids starting in pre-school.

I'd argue that you can generalize all non-creative disciplines (science, business, plumbing, etc) down to a specific area of troubleshooting. And for the creative and athletic disciplines, troubleshooting will be needed to get the best output from your tools, be they chisels, oboes, your voice, your muscles, paints, or anything.

Re: Why Don't Schools Teach Debugging?

#84
post #77

I never knew this was a problem in EE, but I know for a fact it's a huge issue in CS. They don't want to teach any "tools" b/c CS professors find teaching people how to be good developers as beneath them. They honest to god think CS is an actually hard science on par with math and physics. You can sum up their attitude with: "It's not an associates degree goddamnit!" (even though it should be) Another source of reluc…

Print statements for debugging is not necessarily a bad thing: http://www.scott-a-s.com/traces-vs-snapshots/

Agreed! In the same vein, I recently wrote about both debugging vs logging [1] and about session-based logging [2].

[1] http://henrikwarne.com/2014/01/01/finding-bugs-debugger-vers...

[2] http://henrikwarne.com/2014/01/21/session-based-logging/

Re: Why Don't Schools Teach Debugging?

#85
>> I’ve even seen people talented enough to breeze through the entire degree without ever running into a problem too big to intuitively understand; those people have a very bad time when they run into a 10 million line codebase in the real world.

Reminds me of the classic Eric S. Raymond email to Linus Torvalds, where he says essentially this. http://www.vanadac.com/~dajhorn/novelties/ESR%20-%20Curse%20...

Re: Why Don't Schools Teach Debugging?

#86
post #61

I never knew this was a problem in EE, but I know for a fact it's a huge issue in CS. They don't want to teach any "tools" b/c CS professors find teaching people how to be good developers as beneath them. They honest to god think CS is an actually hard science on par with math and physics. You can sum up their attitude with: "It's not an associates degree goddamnit!" (even though it should be) Another source of reluc…

CS prof. here. We don't want to teach "tools" (e.g. IDE) because they are always changing. There is no point is knowing how to set up an IDE when the IDE will have a different GUI before the student graduates. We teach"unix tools" a bit more because they did not change much during the last decades. My goal is to teach "concepts" (which is hard) and use tools as examples of these concepts. Dealing with the specifics o…

We aren't asking for vocational training, but for teachers that teach how to think, how to design, how to run experiments, and so on. So many schools (even the 'top' ones) turn out people that cannot do this, and I find it appalling. These things are foundational, they are not vocational. Unfortunately that does in fact meaning having to learn some tools which will become obsolete. So what? I did EE labs, and while resistors are the same none of the digital components really are. I learned how to design NPN junctions, which are now largely replaced with CMOS, but so what? It was the experience that mattered. You can't hand wave that away ('you' is global, not you mandor), teach the math of junction biases, and expect that anyone will be able to do anything with it once they graduate. But so many CS programs try to do exactly that. I walked out of undergrad knowing how to do recurrence relations, prove the complexity of graph algorithms, and so on, but with almost no clue about how to actually design an algorithm, how to structure and design software, and so on. It took grad school and some good teaching professors, to change that.

I've rewritten this three times or so - it is hard to address without sounding like I'm attacking you, which I am not. But I am truly dismayed about the skill sets of people graduating from CS programs. I'm not asking for Java vocational training, but for a recognition that 99% of the graduates will be asked to function as "engineers", not "scientists". The people that come out and that function well seem to do so despite the schooling, not because of it.

Incidentally, the best EE teacher, or any teacher, that I ever had, had worked in industry for many years, decided he wanted to teach, and went into teaching. His classes were practical and pragmatic. Oh, you were failing if you didn't master the math and theory behind the material, but he taught you how to design, how to think, how to manipulate all of this book learned stuff to make real things that worked. We had to cost out our projects, write design reports, and so on. Extremely hard courses, but absolutely fantastic, because of, not despite, the focus on what might be called 'pointless' things (who cares what the cost of a transistor was in 1986, after all?!)

Unfortunately, you cannot gain experience, and develop the process, without using tools. It needs to be part of the education. Just look at the post by the poor person you are responding to. Think of how much better his entire education would have been if in some freshman level lab he had been taught some of these basics. I shudder to think how much he probably spent for that education vs what he got.

Re: Why Don't Schools Teach Debugging?

#87
post #48

Earlier quoted context omitted.

If Q&A is QA then it should be considered development, in a specialized domain.

except you just click things on a GUI there.

I'm fond of developer-QA folks that automate most of their pointing and clicking. There is, absolutely, a skill in finding bugs by exploratory testing, but someone who can combine that with automating previous tests (thus building up a regression suite) in a way that's maintainable is a real keeper.

Re: Why Don't Schools Teach Debugging?

#88
post #79
post #19

Earlier quoted context omitted.

The author is talking about engineering not cs classes. That being said, I would completely agree with you, having been through a cs degree myself. Version control and working in a group with it would have been very beneficial in school. Although, when I was in school that would have meant svn not git which I have grown to love, but felt the pain of having to learn the hard way.

Who the heck went through a CS degree without using version control? We used it from day 1 until graduation and you didn't get credit if you didn't use version control, even on your projects you did yourself. How does one do group projects in school without version control? Git didn't exist when I was in school either.

That is great! I wish that was more common.

Re: Why Don't Schools Teach Debugging?

#89

The author mentions the answer in the first paragraph: ECE 352 was the weedout class that would be responsible for much of the damage. Weed out courses are common in undergraduate education. In some disciplines the logic is plausible because the resources available for upper division undergraduates are limited and vast numbers of Freshmen choose the track. The first year biology sequence is a good example. The proble…

> The problem is that weed out classes substitute the easier task of deciding who is prepared for the harder task of preparing students.

I don't think this is the intent, at least in some disciplines. For example, I minored in math and went through the weedout class. It wasn't intentionally difficult (for some it wasn't even difficult). It weeded people out because it was the first class where you actually learn what math is - proofs, mostly. The people who thought it was going to just be algebra/calculus backed out.

I think maybe an important point is that almost no one fails the course - it was structured and taught such that anyone who cared could get through it. People backed out because it wasn't what they thought it was, not because it was too hard.

Re: Why Don't Schools Teach Debugging?

#90
post #79
post #19

Earlier quoted context omitted.

The author is talking about engineering not cs classes. That being said, I would completely agree with you, having been through a cs degree myself. Version control and working in a group with it would have been very beneficial in school. Although, when I was in school that would have meant svn not git which I have grown to love, but felt the pain of having to learn the hard way.

Who the heck went through a CS degree without using version control? We used it from day 1 until graduation and you didn't get credit if you didn't use version control, even on your projects you did yourself. How does one do group projects in school without version control? Git didn't exist when I was in school either.

If by 'version control' you mean 'delete and resubmit zip files into Moodle' then sure... my courses use version control...

>How does one do group projects in school without version control?

Dropbox. If you're lucky. Otherwise, attaching files through gmail.

FWIW I wish Git were part of my curriculum. I also wish the Java curriculum included Android. You gotta take what they give I guess.

Post reply on HN