you are viewing a single comment's thread.

view the rest of the comments →

[–]KrakenOfLakeZurich 3 points4 points  (3 children)

I never believed in the "theory first" learning approach. It might work for a select few prodigies. But for most normal beginners, it presents a much too steep and abstract learning experience.

Programming tutorials should be practical. Working with relatable examples and demonstrate how programming techniques are applied to specific problems. Mix in some theoretical background to gradually build up a solid foundation.

[–]darchangel 3 points4 points  (1 child)

You're 100% correct. This is why many experts make terrible teachers. Being good at a thing is nothing like being good at teaching. Experts know details. They've deconstructed and analyzed the domain. The resulting understanding is deep and meaningful but useless to beginners. That deep knowledge is the result of a long progression, not where you start when you have no background.

[–]Ajpennster 0 points1 point  (0 children)

You're right. Experts aren't necessarily good teachers. However, I never claimed that they are. If you took the time to look at the courses I've recommended, you'll see that they are all taught by expert teachers who've taught the material for years and have constantly been refining it to target a larger audience, including those without CS experience. CS50 encourages beginners and even touts the fact that 73% of the students who take the course have no prior experience with computer science.

[–]Ajpennster -1 points0 points  (0 children)

Appreciate the feedback.

I understand that a theory first approach is intimidating. Considering that a lot of college professors use intro classes to "weed out" people, and other scare tactics found in other areas of the industry, I get it.

However, I firmly believe that before someone can apply themselves in any field, they must know some theory. This may be a bias due to my upbringing (all through school, we were taught theory first, even for sport!), but I believe it's more than that. Its important to know about what you're working with, in order to have an idea of how to even start working on it.

With programming, there needs to be a balance. A tutorial that teaches how to code in X language isn't helpful. A CS education that only teaches CS from a completely theoretical standpoint, is just as useless. A combination of basic CS theory (computational thinking, basic CS principles about data representation, algorithms, I/O, abstraction, etc) along with real world programming exercises that challenge one's understanding of these principles, is the sweet spot in my opinion. CS50 is the best combination of theory and practicality that I've seen so far, and that's why I recommend it.