http://www.cs.dartmouth.edu/courseguide/grad/cs_118.html
This course covers fundamental and advanced topics in design and implementation within five basic language paradigms: imperative, functional, declarative, logic, and object-oriented. Topics covered include control structures, language support for data structures, type systems, memory management, functional abstractions, and input/output.