- Identify characteristics of procedural, object-oriented, functional, declarative and scripting languages.
- Describe the phases of program translation.
- Explain different forms of binding, visibility, scoping and lifetime management.
- Demonstrate the differences between call-by-value and call-by-reference parameter passing.
- Explain the concepts of encapsulation, abstraction, inheritance and polymorphism.
- Write small programs in languages based on several different programming paradigms.
- Evaluate a language on the basis of the various features which it supports.
- Concepts of Programming Languages by Richard Sebesta, Addison Wesley publishing, 9th Edition, 2009. (Required)
- Programming Language Pragmatics by Michael L. Scott, Morgan Kaufmann, 3rd edition, 2009. (Recommended)
- Python Programming: An Introduction to Computer Science by John Zelle, 2nd edition, 2010. (Recommended)
- C# in Depth by Jon Skeet, 2010 (Optional)