3 ms·
The short answer is because they're supposed to figure it out themselves. I've been on the teaching staff of CIS 120 and CIS 121 at Penn for five semesters now
by MaxScheiber 13y ago
The short answer is because they're supposed to figure it out themselves.
I've been on the teaching staff of CIS 120 and CIS 121 at Penn for five semesters now (the second and third classes in the intro computer science series). Both have units on debugging, both in Eclipse and independently of an IDE. We teach students proper testing fundamentals, how to use the debugger, and how bottom-up design can make debugging much simpler.
However, it's up to the students to actually use these tools and techniques to figure out why they're so much more effective than print statements. (After all, could you imagine taking French while never having to speak or listen? Piano while never touching an instrument? Same principle here.) Some students will learn to use these tools quickly, but others can still logic through these courses.
However, everyone eventually learns. Take CIS 380, our operating systems class. The final project involves building a simulation OS with kernel, scheduler, file system, shell, etc. Pretty much all system calls aside from read, write, malloc, and free are written from scratch. Even for the hotshots that didn't need to learn how to debug, they eventually learn to use gdb, because you simply can't logic your way through several thousand lines of C, even if you did write them all yourself.
Any computer science or engineering curriculum that doesn't teach debugging fundamentals does students a disservice. However, we can't directly force students to practice these skills. It's up to them to try applying these techniques.
- lstamour 13y agoI agree. Though writing my assignments for a C course was made so much easier thanks to Xcode and the ability to quickly view what's in memory at a breakpoint. Sadly, the course never mentioned debuggers -- likely as a way to weed out students. I suspect this has changed since, but it's up to the prof, so who knows. Part of it is that few profs understand the practical reasons to favour some tools over others -- if you don't write the code day in and day out, you won't know which tools to recommend when. I think maybe there's room for a "practice of programming" course on methodology, tools and open source licensing.