Programming Languages (PL) (10%) For Computer Science Students
PL1. Overview of programming languages [core]
PL2. Virtual machines [core]
PL3. Introduction to language translation [core]
PL4. Declarations and types [core]
PL5. Abstraction mechanisms [core]
    
PL1. Overview of programming languages [2%] [core] 
Minimum core coverage time: 2 hours
Topics:
Topics:
Topics:
Topics:
Topics:
  Learning objectives:
PL1. Overview of programming languages [core]
PL2. Virtual machines [core]
PL3. Introduction to language translation [core]
PL4. Declarations and types [core]
PL5. Abstraction mechanisms [core]
Recommended Books: 
1.    Programming Languages by Pratt 
2.    Principles of Object Oriented Analysis & Design by James Martin 
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. 
Minimum core coverage time: 2 hours
Topics:
- History      of programming languages 
 - Brief      survey of programming paradigms 
 - Procedural languages 
 - Object-oriented languages 
 - Functional languages 
 - Declarative, non-algorithmic       languages 
 - Scripting languages
 - The      effects of scale on programming methodology 
 
- Summarize the evolution of programming      languages illustrating how this history has led to the paradigms available      today. 
 - Identify at least one distinguishing      characteristic for each of the programming paradigms covered in this unit.      
 - Evaluate the tradeoffs between the      different paradigms, considering such issues as space efficiency, time      efficiency (of both the computer and the programmer), safety, and power of      expression. 
 - Distinguish between programming-in-the-small      and programming-in-the-large. 
 
PL2. Virtual machines [1%] [core] 
Minimum core coverage time: 1 hour Topics:
- The concept of a virtual machine 
 - Hierarchy of virtual machines 
 - Intermediate languages 
 - Security issues arising from running      code on an alien machine 
 
- Describe the      importance and power of abstraction in the context of virtual machines. 
 - Explain the      benefits of intermediate languages in the compilation process. 
 - Evaluate the      tradeoffs in performance vs. portability. 
 - Explain how      executable programs can breach computer system security by accessing disk      files and memory. 
 
Topics:
- Comparison of interpreters and      compilers 
 - Language translation phases (lexical      analysis, parsing, code generation, optimization) 
 - Machine-dependent and      machine-independent aspects of translation 
 
- Compare and      contrast compiled and interpreted execution models, outlining the relative      merits of each.. 
 - Describe the      phases of program translation from source code to executable code and the      files produced by these phases. 
 - Explain the      differences between machine-dependent and machine-independent translation      and where these differences are evident in the translation process. 
 
Topics:
- The conception of types as a set of      values with together with a set of operations 
 - Declaration models (binding,      visibility, scope, and lifetime) 
 - Overview of type-checking 
 - Garbage collection 
 
- Explain the      value of declaration models, especially with respect to      programming-in-the-large. 
 - Identify and      describe the properties of a variable such as its associated address,      value, scope, persistence, and size. 
 - Discuss type      incompatibility. 
 - Demonstrate      different forms of binding, visibility, scoping, and lifetime management. 
 - Defend the      importance of types and type-checking in providing abstraction and safety.      
 - Evaluate      tradeoffs in lifetime management (reference counting vs. garbage      collection). 
 
Topics:
- Procedures, functions, and iterators      as abstraction mechanisms 
 - Parameterization mechanisms (reference      vs. value) 
 - Activation records and storage      management 
 - Type parameters and parameterized      types 
 - Modules in programming languages 
 
- Explain how      abstraction mechanisms support the creation of reusable software components.      
 - Demonstrate      the difference between call-by-value and call-by-reference parameter      passing. 
 - Defend the      importance of abstractions, especially with respect to      programming-in-the-large. 
 - Describe how      the computer system uses activation records to manage program modules and      their data. 
 
No comments:
Post a Comment