Learning programming is like learning anything else. You have to start at the basics. Much like you won't be able to ride a bike without first being able to identify what a bike is and how you make it go, you'll need to know some of the essentials before whipping up your first "hello world."
Amro had a little programming experience under his belt, but not enough knowledge to test out of an early C++ course. Still, he was in good shape compared to the rest of the class, knowing the difference between public, private, protected, classes, structs, pointers, etc.
Amro found himself nodding off in the class since he already knew most of the material. He'd perk up if he heard mention of a concept unfamiliar to him or one that he would like to bone up on, but spent most of his time doodling in his notebook.
When the teacher began talking about object-oriented programming, he decided to pay attention. She began describing objects and their properties and methods, instancing, and protection. Amro found that he'd had the wrong idea of the difference between public and private for months.
"When you declare your functions and variables public, anyone can open your program in an IDE and see the source code. But if you use private variables and functions they won't be able to see anything because it will be protected."
Amro did something that could only be described as a wide-eyed gaspcoughchoke and left the class, never to return again. I can only speculate that he missed a lecture about too many static methods causing damage to the computer's internal circuitry.