You are on page 1of 4

PANPACIFIC UNIVERSITY NORTH PHILIPPINES

College of Computer Studies


Urdaneta City, Pangasinan

COURSE SYLLABUS
First Semester A.Y. 2015 - 2016

Course Code: PL101


Course Title: Programming Languages
Course Credit: 3 Units Lecture
Pre-requisites: CC105
Course Description: This course provides students the fundamental features and concepts to different programming languages. Topics include overview of
programming languages, Introduction to language translation, type systems, data and execution control, declaration and modularity,
and syntax and semantics.
Course Objectives: By the end of the course, you should be able to:
1. Reason about memory leaks, dangling-pointer dereference, and the benefits and limitations of garbage collection through
an understanding of programming language implementation and how memory is organized
2. Evaluate the appropriateness of the use of a programming language for implementing a particular application based on
language features
3. Implement a simple interpreter or a portion of the language translation process such as a lexical analyzer, parser, code
generator or optimizer
Course Plan
Learning Outcomes Topics Methodology Assessment Resources
1. Explain how programs that process  Program Representation Lecture-Discussion Oral Participation Chalk and blackboard
other programs treat the other o Programs that take (other) Board activities Performance-Based Books
programs as their input data. programs as input such as Problem solving Written Output Online sources
[Familiarity] interpreters, compilers, type- Presentation slides Quiz LCD projector
2. Describe an abstract syntax tree for checkers, documentation Simulation Assignment Lecture handouts/files
a small language. [Usage] generators Scoring Rubrics
3. Describe the benefits of having o Abstract syntax trees; contrast
program representations other than with concrete syntax
strings of source code. [Familiarity] o Data structures to represent
4. Write a program to process some code for execution, translation,
representation of code for some or transmission
purpose, such as an interpreter, an
expression optimizer, or a
documentation generator. [Usage]
1. Distinguish a language definition  Language Translation and Lecture-Discussion Oral Participation Chalk and blackboard
(what constructs mean) from a Execution Board activities Performance-Based Books
particular language implementation o Interpretation vs. compilation Problem solving Written Output Online sources
(compiler vs. interpreter, run-time to native code vs. compilation Presentation slides Quiz LCD projector
representation of data objects, to portable intermediate Simulation Assignment Lecture handouts/files
etc.). [Familiarity] representation Scoring Rubrics
2. Distinguish syntax and parsing from o Language translation pipeline:
semantics and evaluation. parsing, optional type-
[Familiarity] checking, translation, linking,
3. Sketch a low-level run-time execution
representation of core language  Execution as native code or
constructs, such as objects or within a virtual machine
closures. [Familiarity]  Alternatives like dynamic
4. Explain how programming loading and dynamic (or
language implementations typically “just-in-time”) code
organize memory into global data, generation
text, heap, and stack sections and o Run-time representation of
how features such as recursion and core language constructs such
memory management map to this as objects (method tables) and
memory model. [Familiarity] first-class functions (closures)
5. Identify and fix memory leaks and o Run-time layout of memory:
dangling-pointer dereferences. call-stack, heap, static data
[Usage]  Implementing loops,
6. Discuss the benefits and limitations recursion, and tail calls
of garbage collection, including the o Memory management
notion of reachability. [Familiarity]  Manual memory
management: allocating,
de-allocating, and reusing
heap memory
 Automated memory
management: garbage
collection as an automated
technique using the notion
of reachability
1. Use formal grammars to specify the  Syntax Analysis Lecture-Discussion Oral Participation Chalk and blackboard
syntax of languages. [Usage] o Scanning (lexical analysis) Board activities Performance-Based Books
2. Use declarative tools to generate using regular expressions Problem solving Written Output Online sources
parsers and scanners. [Usage] o Parsing strategies including Presentation slides Quiz LCD projector
3. Identify key issues in syntax top-down (e.g., recursive Simulation Assignment Lecture handouts/files
definitions: ambiguity, associativity, descent, Earley parsing, or Scoring Rubrics
precedence. [Familiarity] LL) and bottom-up (e.g.,
backtracking or LR)
techniques; role of context-
free grammars
o Generating scanners and
parsers from declarative
specifications
o
1. Implement context-sensitive,  Compiler Semantic Analysis Lecture-Discussion Oral Participation Chalk and blackboard
source-level static analyses such as Board activities Performance-Based Books
type-checkers or resolving Problem solving Written Output Online sources
identifiers to identify their binding o High-level program Presentation slides Quiz LCD projector
occurrences. [Usage] representations such as Simulation Assignment Lecture handouts/files
2. Describe semantic analyses using abstract syntax trees Scoring Rubrics
an attribute grammar. [Usage] o Scope and binding resolution
o Type checking
o Declarative specifications
such as attribute grammars
1. Identify all essential steps for  Code Generation Lecture-Discussion Oral Participation Chalk and blackboard
automatically converting source o Procedure calls and method Board activities Performance-Based Books
code into assembly or other low- dispatching Problem solving Written Output Online sources
level languages. [Familiarity] o Separate compilation; linking Presentation slides Quiz LCD projector
2. Generate the low-level code for o Instruction selection Simulation Assignment Lecture handouts/files
calling functions/methods in o Instruction scheduling Scoring Rubrics
modern languages. [Usage] o Register allocation
3. Discuss why separate compilation o Peephole optimization
requires uniform calling
conventions. [Familiarity]
4. Discuss why separate compilation
limits optimization because of
unknown effects of calls.
[Familiarity]
5. Discuss opportunities for
optimization introduced by naive
translation and approaches for
achieving optimization, such as
instruction selection, instruction
scheduling, register allocation, and
peephole optimization. [Familiarity]
Resources
1. Chalk and blackboard
2. Books
3. Online sources
4. LCD projector
5. Lecture handouts/files

Grading System
CLASS STANDING -----------------------------------------60%
QUIZZES
RECITATION
ASSIGNMENTS/HOMEWORKS
ATTENDANCE/BEHAVIOR
*3 CONSECUTIVE AND NON-CONSECUTIVE ABSENCES MEANS WARNING
- BEFORE RE-ADMISSION NOTIFY PARENT/S
- RE-ADMISSION
- WITH/WITHOUT VALID REASON
*7 CONSECUTIVE AND NON-CONSECUTIVE ABSENCES CONSIDERED DROPPED
EXAMINATION--------------------------------------------40%
References
1. ACM Computer Science Curricula 2013
2. Mogensen, T., 2010, Basics of Compiler Design Anniversary Edition
3. Harper, R. 2012, Practical Foundations for Programming Languages
4. Scott, M, 2009, Programming Language Pragmatics Third Edition
5. Krishnamurthi, S., 2012, Programming Languages: Application and Interpretation
6. Mogensen, T., 2007, Basics of Compiler Design
7. Aho, A., Lam, M., Sethi, R., Ullman, J., 2007, Compilers Principles, Techniques, and Tools
8. Cooper, Torczon, Engineering a Compiler

Prepared by:
(Name)
Instructor

Reviewed:
Name
Date:
Revision Status/Date: 0/April 16, 2015

You might also like