Kathmandu University Virtual Class


An Online Course Module For Teachers and Students

http://vclass.ku.edu.np , Moodle Virtual Class for Teachers and Students

Admissions


Intakes on : August
Availability of Forms : Mid. July

Download forms for UNG | ME.IT

 



COMP 301
Principles of Programming Languages (POPL)

Subject: POPL
Course Code: COMP 472
Type: Core
FM: 100(60 int+40 final)

Course Introduction:

A programming language is a programmer's principal interface with the computer. More than just knowing how to program in a single language, programmers need to understand the different styles of programming promoted by different languages. In their professional life, they will be working with many different languages and styles at once, and will encounter many different languages over the course of their careers. Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. Understanding the pragmatic aspects of programming languages also requires a basic knowledge of programming language translation and runtime features such as storage allocation.

Contents:

Chapter 1. Overview of programming languages
1.1 History of programming languages
1.2 Brief survey of programming paradigms
1.3 The effects of scale on programming methodology

Chapter 2. Virtual machines
2.1 The concept of a virtual machine
2.2 Hierarchy of virtual machines & Intermediate languages
2.3 Security issues arising from running code on an alien machine

Chapter 3. Introduction to language translation
3.1 Comparison of interpreters and compilers
3.2 Language translation phases
3.3 Independent aspects of translation

Chapter 4. Declarations and types
4.1 Concept of types as a set of values with together with a set of operations Declaration models
4.2 Overview of type-checking Garbage collection

Chapter 5. Abstraction mechanisms
5.1 Procedures, functions, and iterators as abstraction mechanisms
5.2 Parameterization mechanisms
5.3 Activation records and storage management
5.4 Type parameters and parameterized types
5.5 Modules in programming languages

Chapter 6. Object-oriented programming
6.1 Object-oriented design
6.2 Encapsulation and information-hiding
6.3 Separation of behavior and implementation Classes and subclasses
6.4 Inheritance (overriding, dynamic dispatch) Polymorphism (subtype polymorphism vs. inheritance) Class hierarchies
6.5 Collection classes and iteration protocols
6.6 Internal representations of objects and method tables

Chapter 7. Functional programming
7.1 Overview and motivation of functional languages
7.2 Recursion over lists, natural numbers, trees
7.3 Pragmatics
7.4 Amortized efficiency for functional data structures

Chapter 8. Language translation systems
8.1 Application of regular expressions in lexical scanners
8.2 Parsing (concrete and abstract syntax, abstract syntax trees)
8.3 Application of context-free grammars in table-driven and recursive-descent parsing
8.4 Symbol table management
8.5 The problem of overfitting Unsupervised learning
8.6 Code generation by tree walking Architecture-specific operations
8.7 Building syntax-directed tools

Chapter 9. Type systems
9.1 Data type as set of values with set of operations Data types
9.2 Semantic models of user-defined types
9.3 Type abbreviations Abstract, data types Type equality
9.4 Parametric polymorphism Subtype polymorphism
9.5 Type-checking algorithms

Chapter 10. Programming language semantics
10.1 Informal semantics
10.2 Overview of formal semantics Denotational semantics Axiomatic
10.3 semantics Operational semantics verview
   Phone: 977-11661399
   Address : Kathmandu University
                   Dhulikhel, Kavre, Nepal
   Email: cse@ku.edu.np
Programs offered in the department list of courses Faculty members Research Activities