SCS2102 Programming Languages

Course Unit Title

SCS2102 Programming Languages

Side Navigation

Course Unit Description

This is a course on the theory of programming languages whose principles are fundamental to the design, implementation, and application of programming languages. The course examines the concepts and structures governing the design and implementation of programming languages. It presents an introduction to the concepts behind compilers and runtime representations of programming languages; features of programming languages supporting abstraction and polymorphism; and the procedural, functional, object-oriented, and concurrent programming paradigms. Programs are required in languages illustrating each of these paradigms.

Course Objectives
The students will be able to understand:

  • How to design and analyze programming languages and how to use them effectively. 
  • Functional programming languages, object-oriented languages; 
  • Type systems, abstraction mechanisms, operational semantics, safety and security guarantees. 
  • Implementation techniques such as object representations and garbage collection will also be covered. 

Learning Outcomes
Successful course participants will:

  • Internalize an accurate understanding of what functional and object-oriented programs mean
  • Develop the skills necessary to learn new programming languages quickly
  • Master specific language concepts such that they can recognize them in strange guises
  • Learn to evaluate the power and elegance of programming languages and their constructs
  • Attain reasonable proficiency in languages they already know