Confused semi-newbie programmer needs some advice.
patio11: You're sort of finding the pleasure and pain of a CS degree: Data Structures doesn't teach you how to program, except in a superficial way in a single language.  It teaches you how to manipulate certain building blocks of our field.  You'll be thinking in terms of lists, sets, and hashmaps until the day you die, no matter what programming language you eventually end up using.Now, in C, working with lists requires knowing a bit about how pointers work.  If you worked in a different language and used the language's libraries, you might literally never think about how the list is internally represented ever again, and concentrate solely on the API for it.The biggest suggestion I have for supplementing (not replacing) your expensive CS education is building stuff concurrently with learning stuff, and I don't mean the little toy 100 line projects they assign you for school.  Unfortunately, with where you are in the world right now, building stuff is hard.  However, if you teach yourself HTML and get ONE dynamic language half-way under your belt, you'll be able to do web programming, which greatly simplifies displaying output to the user.  Then all you have to do is do string processing, and blam, you have something FUN to show to the user.You'd be amazed how far you can get on just combining those simple building blocks.  As you grow in expertise, you can go a LOT farther, but for now, learning how to take input from the user, do some crunching, and show them a web page gives you many, many options for doing fun things.