If you really know how to program / software design / make it work, you can simply read "The New Turing Omnibus" (66 Excursions in Computer Science) from A.K. Dewdney and learn complexity/algorithms with "Introduction to Algorithms" from Cormen, Leiserson, Rivest and Stein. More important than _reading_ this last book is _doing_ the/some exercises, follow open course ware (for instance: http://ocw.mit.edu/courses/electrical-engineering-and-comput... ) if you prefer but do some exercises found in that book (or on Top Coder or Google Code Jam or whatever suits you).
Also, if you have time and passion, write a compiler.
Also, if you have time and passion, write a compiler.