First priority: Data Structures. This will be useful no matter what language you're programming in, and for any application. There are lots of introductory books on Data Structures. Second priority: Object-oriented programming. More specifically classes, inheritance, virtual functions, and polymorphism (it sounds harder than it is.) A background in object-oriented programming is essential to understand Design Patterns. Other priorities: Graphics. Most modern programs involve graphics and if you study web programming, experience with graphics will be valuable. .NET languages all have good graphics capabilities. If you're interested in web design, start with HTML. It's a display-only language, so is relatively easy. The next step is JavaScript to make your HTML pages interactive. Next, Java or PHP. Working on an open-source project will look good on your resume, and will be experience that will help you develop your programming skills.