>you can't learn how to do it just by reading their reference materials or listening to the lectures
Anon, imagine instead of learning to write software, you were learning to paint. Would it make sense for your teacher to show you every stroke of the paintbrush that you need to make in order to create the Mona Lisa? If they did that, suppose they then asked you to paint something else. Would you be able to take all of those techniques from painting the Mona Lisa to painting something made by Bob Ross? Probably not. But suppose instead of teaching you how to make a specific painting, they showed you a set of common techniques that you could use as a toolkit, with broad applications to a wide variety of painting targets. But they then require you to figure out on your own how to turn those into a painting of your own with your own style.
Programming, like painting, has an infinite amount of potential projects that you can use it to. You don't teach someone how to do a specific project. You teach them basic language constructs (i.e. functions, data types, loops/conditionals, etc...) and you teach them some design/architectural patterns and data structures. Maybe some common algorithms. But you, the programmer, have to figure out how to take all of this, along with any documentation on library functions you'll need, and turn it into the project on your own. You have to plan out from the project requirements what the program needs to input, what it needs to output, when various actions need to occur, and so on... and you need to put that into code yourself using the tools you have been provided. No one can or should show you how to do that. You must use your innate creative potential as a human. Get to it, and start painting.