firstly, the watson project really sounds good. besides i have to agree that winxp has been much more stable than any windows version before. especially the ctrl+alt+del actually ends any task. i have tried it on games etc, just for fun and it is amazingly stable.
on windows, i agree that bugs can get through and that it is not possible to remove all bugs, open source or otherwise. mohn had posted a link - Bugs - on testing earlier which showed the amount of work done. the main fault with windows however is the lack of focus on security. previously they have chosen user-friendly policies/features over more secure ones. take for example the fact that you can login to an account without a password administrator or otherwise. something like this has to be removed. the security of the total system goes down. but lets see what changes take place under the trustworthy computing initiative. open source is also pretty buggy (see red hat updates), but they have placed a greater focus on security.
what i feel on uni courses..
i agree that courses can have more stuff on practical useful topics. but on the whole i feel that theoretical stuff is also very necessary. uni's have to have a fine balance between theoretical and practical. it should be majorly theoretical as in the end you should have a general idea of computers and prog in general so that you can choose/diversify your field later. but like mohn said testing, design are imp. actually design is what seperates the prog from the gurus. i guess we have reached a stage where we need to go to the next level, design. should it be taught in uni? i do not know. maybe its better learnt at a later stage after you have actually worked on some real projects and then improve your understanding of actual practical implementations and then learn some design principles.
besides i thought you had a course on testing, junit??
i think there are many books on designs. never read any, but i know they are available. have you tried any. they are higher level books requiring that you already have a good working knowledge of the language. but i think they are more on the theoretical side.
also why do you (mohn) feel that try/catch blocks are not efficient? all your code might end up being "tried and caught" but it is a very efficient system. i personally feel that error flow can be handled very effectively. if you have a specific problem/example post it so that all of us can think over it.
i am actually more of a java 1.2/1.3 prog. never really did much in the current 1.4 api. one feature i stumbled upon yesterday were assertions. there must have similar features in .net. have you guys ever used assertions? this is a block from the java 1.4 api ..
"An assertion is a statement in the JavaTM programming language that enables you to test your assumptions about your program. For example, if you write a method that calculates the speed of a particle, you might assert that the calculated speed is less than the speed of light.
Each assertion contains a boolean expression that you believe will be true when the assertion executes. If it is not true, the system will throw an error. By verifying that the boolean expression is indeed true, the assertion confirms your assumptions about the behavior of your program, increasing your confidence that the program is free of errors.
Experience has shown that writing assertions while programming is one of the quickest and most effective ways to detect and correct bugs. As an added benefit, assertions serve to document the inner workings of your program, enhancing maintainability."
what do you think of assertions? not error flow, but good prog practice?