That said, I have to agree that bench testing is an invaluable skill. I was able to impress a lot of my classmates by simply glancing at a program listing and pointing out the bug.
I am not against using paper to do things like doing a diagram so you can understand your algorithm better and its shortcomings, and you're right, knowing how to debug on paper is important, but how do you know you have a bug if you can't test the code in a computer?
Our practice classes don't have computers on the classroom. This is not to say you can't do that at home, of course)
Exactly. The idea with paper is that you need to get to the point where you go knowing what you're doing. If, like you said in the OP this is just for quizzes/tests, paper is a good way for a professor to see what you know when you sat down for a test, not what you were able to massage into compiling during the exam period. In 4 years of college, I the vast majority (all?) of my tests, exams, quizzes were on paper unless it was a project to do at home. For the most part, on-paper tests are about showing you understand the concept at hand, not that you dot every I and cross every T. If one of the concepts a test is going to test you on is that you have semicolons at the end of lines, you're going to get docked for it on that one, but every test after that it will be at worst a tiny deduction. They know what writing code on paper is like, just show them what they're looking for, and you'll be good.
>Our practice classes don't have computers on the classroom
This is what concerns me. Are you saying you don't have computers during you lecture, or is this a lab-type period where you're still working on paper?
At least I assume we are since we didn't had this week's class, but I went to the classroom and it was an ordinary one.
PSP (Personal Software Process) encourages the same thing: do your design on paper and debug it, then write the code, do a visual run through of the code, then run it. For short routines, it actually works very well. The problem is that if you've been programming for years, it feels very unnatural and requires a lot of discipline.
Pros:
- Using the trial&error approach to solve a problem is not efficient without a compiler, this forces you to think more carefully about the algorithm (and corner cases) instead of just typing out stuff until your algorithm "appears" to work.
- You'll learn to debug/test on paper, a skill that everyone must have.
Cons:
- Harder to learn the proper syntax without something that automatically shows errors? I'm not sure that this is a real issue...