3 ms·
I've seen these systems and I think they can be good for teaching programming. Basically, they force the student to think about the whole problem at once, desi
by lincolnq 17y ago
I've seen these systems and I think they can be good for teaching programming.
Basically, they force the student to think about the whole problem at once, design a complete solution, and implement it without making mistakes. If you screw up, you'll have a very tough time finding the mistakes, since the system doesn't tell you where the mistake might be. It prevents you from repeatedly patching your system rather than redesigning it, which is a big problem I see in a lot of programmers.
It's not good for the absolute beginners, but for people who know a little bit how to think about algorithms and data structures, and are trying to improve their code quality, it seems like a good exercise. I know I've had some rewarding experiences debugging code by thinking about it; using a debugger, while easier, seems generally less satisfying.
- zokier 17y agoI don't see how these systems limit your ability to debug your code. You need just write your own testcases, which is good exercise in itself, and debug against those. If it passes your own testcases and still fails in the grading system, it indicates that either your testcases are not good enough, or that there is a bug in the system.
- omouse 17y agoIt prevents you from repeatedly patching your system rather than redesigning it, which is a big problem I see in a lot of programmers. Uh, this is the norm in the industry. There is rarely ever a chance to do a complete redesign. From the micro to the macro, there's always some hacky solution hanging around.
- tamas 17y agoI had a course that employed the same system. The course wasn't about debuging or real world applications, it was about algorithms. The task was to implement an algorithm correctly. If you did not implement the algorithm correctly, the test cases would fail. If you did not use the correct data structure, the test would time out. That's what it's all about. No specific clues were given so you can't do workarounds taylored to the test cases, or god forbid, hardcode the expected results. You could do as much testing on your machine as you'd like, with your debugger of choice. And when you are sure you understood the algorithm and implemented it correctly, you can submit.