I'm a physics undergrad who's had some experience with Java and Fortran and a little bit with C++. I've only taken one computer science course which taught me the basics of Java, so I've been somewhat shielded from other programmers and from programming as it's done in the "real world". I have two questions. First, what are the applications of programming in general, and what skills would be useful for these applications? How would you divide the bulk of programming today into general applications? It seems to me like there's numerical programming, and there's GUI/event-driven programming, and there's some other stuff I don't know about. My second question might clarify what I mean: Second, how do you think the demand for different areas of programming will change in the future? I'm guessing that the ability to solve differential equations will always be important, but knowing how to design an application from the ground up will become less important, though basic principles like information hiding will remain important. Any thoughts?