News for hackers. Stuff that matters.
Re:Khan Academy: Computer Science by manish_gill on Tuesday November 01, 2011 @03:44PM (#3183831)
>I have always wondered how effective video is as a teaching tool for programming? I guess when I think about it, it's the same delivery tool as an in-person lecture, but in some ways, more effective since you can pause, rewind, etc.

It's a lot better than some of in-person lectures I've taken, but maybe that's just me. I've been encouraging my peers to use online videos as a source to learn stuff they have a hard time grasping in class for quite a while. They don't listen, but that's another matter...

Anyways, I'm glad Khan Academy is coming out with this. I was freaking out when I couldn't solve some project Eular questions, and pretty much lost all of confidence in my programming abilities for a while. Online tutorials helped me a lot, and I think I've become a better programmer because of that.

One small nitpick: I haven't seen the videos yet, but it looks like they'll be in python. I'd rather it be C or C++. From what little I know of the language, it's pretty easy to pick up, and doesn't put pressure on the programmer to take care of details like memory management etc. I know for a fact that many algorithms that I've implementer in C++ that take over 100 LOC, I've found solutions online that have the same algorithm in 20-30 LOC. Used to irritate me a lot. :P

Re:Khan Academy: Computer Science by loup-vaillant on Tuesday November 01, 2011 @03:57PM (#3183881)
C or C++ are definitely not a good idea. The beginners' brains will be too occupied with curly brackets and semi-colon. There's also the brain-dead notation for types (see function pointers). The poor souls already have a hard time differentiating assignment and comparison, just because of counter-intuitive notation (compared to high school).

As experts, syntax doesn't annoy us. We see past the curly brackets (or the parentheses), because we can quickly see the internal AST that derive from them. Beginners can't.

Now, it would be wonderful to teach them a systems language that forces them to manage their own memory. I think a good candidate would be to keep most of the semantics of C, but simplifying its syntax (and find a solution to simplify includes).

Re:Khan Academy: Computer Science by manish_gill on Tuesday November 01, 2011 @04:10PM (#3183929)
Yeah, but I still advocate the use of C++ over Python. Just because of the fact that I can now appreciate what goes on under the hood instead of groaning that why should I learn it when the "language takes care of it". Many classmates of mine really enjoy Java because of they had learned C++ first. It's a harder learning curve, but I think it's worth it.
Re:Khan Academy: Computer Science by loup-vaillant on Tuesday November 01, 2011 @04:25PM (#3183978)
If you have to, pick C. Never ever touch C++, especially its standard IO library. Classes are of very little interest anyway (C easily emulates modules), they can learn it later.

There is a crucial point that should not be ignored. The first two languages someone learns should be easy. Monstrosities like C++ give the poor beginner the impression that learning any language is hard to learn, and that would discourage such learning in the future.

Re:Khan Academy: Computer Science by 2arrs2ells on Tuesday November 01, 2011 @06:23PM (#3184419)
I agree with you 100%, if you're learning to program on your own.

I disagree 100%, if you're talking about a college curriculum. The intro class at my university [1] used C, and I'm incredibly grateful. If I hadn't been forced to grok pointers and malloc, I'm not sure I ever would have (I haven't done any C programming since then). But even though I'm not writing C directly, knowing how things work at a lower level has helped me understand all sorts of concepts in higher-level languages.

[1] http://cs50.tv

Re:Khan Academy: Computer Science by loup-vaillant on Wednesday November 02, 2011 @04:31AM (#3185849)
Err, I agree with much of your "I disagree" paragraph. Maybe you should re-read my previous comments.

I don't loathe C nearly as much as C++. I understand that learning about low level is useful. Pointers are indeed a very important concept (though not so difficult once you understand that variables themselves are already a form of indirection). So is Manual memory management.

But if you are tempted to put C++ in the same basket, don't. C++ is a very very different language from C. Sure, it looks like it just has some additional features here and there, but those features make C++ practices very different from C ones.

Re:Khan Academy: Computer Science by ceol on Tuesday November 01, 2011 @09:34PM (#3184979)
I disagree. I don't have any data to base this on, but I think it would be easier for a new programmer to learn logic first and then worry about what goes on under the hood. There are plenty of reasons to learn C aside from just to know what goes on at a lower level.
Re:Khan Academy: Computer Science by teach on Wednesday November 02, 2011 @03:49PM (#3188640)
> "I was freaking out when I couldn't solve some Project > Euler questions, and pretty much lost all of confidence in > my programming abilities for a while.

I've read way too many people online suggest Project Euler as a way to "teach yourself programming". This is almost a sadistic suggestion. Project Euler is way too hard to teach yourself programming.

Evidence: nearly 180,000 people have solved problem #1. Only 76,000 have solved problem #10. Losing 60% of your audience by problem #10 is pretty bad question design for learning.

Anecdote: I've been programming for over 25 years. I was near the top of my class in a top-10 computer science university program. And I've solved 30 Project Euler problems in the last 3-1/2 years. But I still can't solve problem # 18. I've worked on it off and on since December 2007. Only recently, quite by accident I learned that it is probably a "dynamic programming" question, which is something I've never done before.

Never lose confidence in your coding ability because Project Euler stumps you now and again.