I have worked as a programmer for over ten years, with a pretty good grasp of PHP, classic ASP, and VB. But I am self-taught, first using books and magazines, and now the Internet to improve my skills.
[Edit: I studied engineering in school, so I quickly learned enough programming to get my lab work done (Fortran, Pascal, and Assembly in the mid 80's). During my career I worked with market research databases and sales force automation, and created some early web sites for my employer. Success there let me move into IT where it was obvious (to me) that I lacked many core CS concepts and the associated vocabulary.]
But I feel that by not being formally trained in CS, I am missing large and important parts of the foundation and theory of CS. I know how to solve particular problems in a given language (usually by hacking my way through them), but I sense that I lack the fundamentals that would allow me to come up with the best solution for a problem.
What resources should I use to obtain this step change in knowledge and understanding? Do I need to return to college to really learn this?