Please create an account to participate in the Slashdot moderation system


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 Internet speed test! ×

Comment My Two Cents (Score 1) 214

My opinions may be a little unorthodox, but here goes.

The catch is that it is a class for all students to take, not just those interested in programming, and therefore will focus heavily on teaching problem solving.

I think this is the most important part of what you are asking. I'd guess that when you ask most people this question, they'll think of the best way to teach computer science, or the best way to teach computer architecture, which will undoubtedly lead to thoughts of "No! Not that language!" and the like.

To teach problem solving using computers, you need to go from a top-down level, which rules out C or assembly. You also need to teach an interpreted language, not a compiled one -- if you want a quick-and-dirty solution to a problem you face, how many times do you pull out Java (or C++ -- I'm not anti-either)? I agree with your choice of Python for this reason. You need something closer to shell scripting, but not to the point of bash; it's not high-level enough and your students will be bogged down with syntax instead of learning programming constructs and problem-solving techniques.

It sounds like you are not trying to teach computer programming, at least not in the way either computer scientists or computer engineers think of it. Computer scientists need algorithmic analysis; computer engineers need architecture and low-level interaction. I understand that this is a cliched oversimplification, and to be really good at either, you need to understand both sides. But if you're not training these kids to be either one of those professionals, your goal is "Problem Solving Using Computers", which happens to require a knowledge of "Computer Programming". They need to know loops, decisions, and variable manipulation; the deeper you delve into computer science and architecture, the better for them, but don't lose sight of what you want them to be able to do on their own after the end of the term. If they walk out of your class thinking "I'll never use this", either they aren't the students who should be in the class, or you aren't teaching towards that goal.

Comment Meaningless Math (Score 3, Insightful) 684

Well... sort of. In fact, you make the same mistake that the authors appear to in your logic.

If Jimbo tells you that there's a 1% chance that your tire will go flat if you don't fix it, that's not 1% if Jimbo is wrong 50% of the time. At best, it's 50.5%.

But you assume that Jimbo's being wrong means that the probability of failure is 100%! It's not necessarily. In fact, Jimbo might be wrong in that the probability of a flat tire is actually 0% -- in which case, his being wrong has helped you. If this is the case, then the total probability is 0.5%, much better than 1%. This is the best case; 50.5% is the worst case, and neither is "more likely", because we don't know what the conditional probabilities are. It's this fallacious reasoning -- that if the theory is wrong, the probability of the event must be greater -- that make this article technically true, but useless. We cannot handpick these probabilities. From the TFA (not the abstract):

The other unknown term in equation (1), P(X|not A) [read: the probability of the catastrophe given we're wrong], is generally even more difficult to evaluate, but lets suppose that in the current example, we think it highly unlikely that the event will occur even if the argument is not sound, and that we also treat this probability as one in a thousand.

(emphasis and comment mine). I disagree. This probability is impossible to evaluate, and so this paper means nothing.

Slashdot Top Deals

"If you can, help others. If you can't, at least don't hurt others." -- the Dalai Lama