Programming Languages
Design and use of mainstream programming languages: naming, scoping, type models, control structures, procedural abstractions, modularization. Implementation issues and runtime organization. Languages studied include C, C++, Java, Scheme, and ML. Extensive programming exercises in various languages.