I received a question on Twitter from a computer science professor, asking how to help his students, who all understand theory, how to apply that to logic. I wanted to share my answer here as well:
As you probably know, all the theory goes out the window as soon as one is working on actual code. There are two things you can do to help your students with this:
1) One of the best things you can do for your students is to "drop them in the deep end of the pool," so to speak. Instead of assigning only small, well-defined projects, have them work on larger, more real-world-style projects, especially in pairs. (Grade them individually, not as a pair, to help ensure they BOTH do the work.) Allow them to hit the difficulties of writing real software. Through the struggle, they'll start to learn through trial-and-error how to apply theory to logic.
2) Study ACTUAL code in your classes. Take examples from production code. Have the students read sections of code from major open source projects, wherein the theory you've discussed is applied.
Teaching programming is not unlike teaching English or any other spoken language — you must read and write the language to learn how it really works.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.