*Objectives:
•learn the fundamental principles of modern computer programming languages
•learn the commonalities and differences among the different languages
•learn about a variety of different programming languages and about their relative strengths and weaknesses
•gain experience designing and writing programs in a selected set of languages: Java, Haskell, Prolog, Erlang
*Prerequisites:Official:
•Good understanding of the basic concepts, for example:
•Mapping of language features to assembly/machine code
•Parameter passing
•Activation records
•Can deal with moderately-sized programs
•Familiar with data structure concepts and applications
•Competence with recursion