Course Handout
Course Title: Programming Languages
Course Code: COS804
Credit Units: 3
Level: Postgraduate / MSc (Computer Science)
Course Description
This course presents a comparative study of the organization, design principles, and
implementation strategies of various programming languages. It explores how languages
evolved historically, the paradigms they embody, and the theoretical principles that guide
their semantics and verification. The study spans procedural, functional, logic-based, and
object-oriented programming languages, with emphasis on design philosophy, language
features, and applications. Students are also introduced to advanced research issues such as
polymorphism, formal semantics, and program verification.
Course Objectives
Understand the history and evolution of programming languages.
Identify and compare different programming paradigms and their design principles.
Critically analyze language organization and implementation features.
Apply formal methods to describe and verify program semantics.
Discuss advanced research issues such as polymorphism, language design trade-offs,
and verification techniques.
Gain practical exposure to selected procedural, functional, logic-based, and object-
oriented languages.
Weekly Breakdown
Week 1: Course Introduction & Foundations
See detailed lecture notes and activities provided during class.
Week 2: History and Evolution of Programming Languages
See detailed lecture notes and activities provided during class.
Week 3: Principles of Programming Language Design
See detailed lecture notes and activities provided during class.
Week 4: Procedural Programming Paradigm
See detailed lecture notes and activities provided during class.
Week 5: Functional Programming Paradigm
See detailed lecture notes and activities provided during class.
Week 6: Logic-Based Programming Paradigm
See detailed lecture notes and activities provided during class.
Week 7: Object-Oriented Programming Paradigm
See detailed lecture notes and activities provided during class.
Week 8: Comparative Study of Paradigms (Review & Mid-Semester Exam)
See detailed lecture notes and activities provided during class.
Week 9: Advanced Language Features (Polymorphism & Abstraction)
See detailed lecture notes and activities provided during class.
Week 10: Formal Semantics of Programming Languages
See detailed lecture notes and activities provided during class.
Week 11: Program Verification & Correctness
See detailed lecture notes and activities provided during class.
Week 12: Type Systems and Language Implementation Issues
See detailed lecture notes and activities provided during class.
Week 13: Modern Trends in Programming Languages
See detailed lecture notes and activities provided during class.
Week 14: Emerging Research Issues
See detailed lecture notes and activities provided during class.
Week 15: Course Review & Final Examination
See detailed lecture notes and activities provided during class.
Assessment Methods
Assignments: 20%
Seminar Presentation: 10%
Mid-Semester Test: 20%
Final Examination: 50%
Recommended Textbooks & References
Sebesta, R. W. (2016). Concepts of Programming Languages (11th ed.). Pearson.
Scott, M. L. (2015). Programming Language Pragmatics (4th ed.). Morgan Kaufmann.
Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques,
and Tools (2nd ed.). Pearson.
Mitchell, J. C. (2002). Foundations for Programming Languages. MIT Press.
Pierce, B. C. (2002). Types and Programming Languages. MIT Press.