Course Outcomes:
After completion of the course, students will be able to
1. Discuss the design principles of a given language or paradigm;
2. Describe distinguishing characteristics of declarative and imperative programming
language paradigms
3. Demonstrate different forms of declaration, typing, binding, visibility, scoping, and
lifetime management for various programming language constructs
4. Choose a language or paradigm suitable for solving a particular problem
5. Compare different programming languages from the point of view of their
underlying design principles