Wow.... but I'm with you. I learn better when there's real problem to solve. Actually once you know one language, they are all similar except for syntax and specialties of the language.
The assembly languages behave alike, the high level procedural languages, and then those that are objected oriented... those are my three main classifications. If you know one language quite well, a good book and a problem should get you through.
Otherwise, I recommend a class. I don't see html and css as being a programming background. That's a jump.
Wow... when I first studied CS, I had classes assembly... I supppose most of my classmates are dead.