Sei sulla pagina 1di 4

University of Santo Tomas

Information and Computer Studies Department

SYLLABUS FOR CS 106

I. COURSE TITLE: CS 106 (CONCEPTS OF PROGRAMMING LANGUAGES)

II. COURSE DESCRIPTION:

This is a 3-unit lecture class on the underlying concepts of programming languages.


Topics include language processing, data types and variables, expressions and assignment
statement, control structures, subprograms and its implementation, data abstraction and
storage management.

III. PREREQUISITE: CS 101 (Data Structures and Algorithm LEC and LAB)

IV. CREDIT UNITS: 3 UNITS

V. TEXT BOOK: Robert W. Sebesta, Concepts of Programming Languages.

VI. METHODOLOGY: Lecture

VII. COURSE REQUIREMENTS:


a. 40% Quizzes, Seatwork, Assignment, Board work
b. 20% Project
c. 40% Departmental Examination
100% TOTAL

I. GENERAL OBJECTIVES
At the end of the semester, the students are expected to:

1. Fully understand the underlying concepts of programming


languages.
2. Be able to compare and contrast designs and implementations of
programming languages.
3. Be able to expose themselves to other programming languages as
well as develop programs using those languages.
II. COURSE OUTLINE

1. Preliminaries.

a. Reasons for Studying Concepts of Programming Languages.


b. Programming Domains.
c. Language Evaluation Criteria.
d. Influences on Language Design.
e. Language Categories.
f. Language Design Trade-offs.
g. Implementation Methods.
h. Programming Environments.

2. Evolution of the Major Programming Languages

3. Describing Syntax and Semantics.

a. Introduction.
b. The General Problem of Describing Syntax.
c. Formal Methods of Describing Syntax.
d. Recursive Descent Parsing.
e. Attribute Grammars.
f. Describing the Meaning of Programs: Dynamic Semantics.

4. Names, Bindings, Type Checking, and Scopes.

a. Introduction.
b. Names.
c. Variables.
d. The Concept of Binding.
e. Type Checking.
f. Strong Typing.
g. Type Compatibility.
h. Scope.
i. Scope and Lifetime.
j. Referencing Environments.
k. Named Constants.
l. Variable Initialization.

5. Data Types.

a. Introduction.
b. Primitive Data Types.
c. Character String Types.
d. User-Defined Ordinal Types.
e. Array Types.
f. Associative Array.
g. Record Types.
h. Union Types.
i. Set Types.
j. Pointer Types.
6. Expressions and the Assignment Statement.
a. Introduction.
b. Arithmetic Expressions.
c. Overloaded Operators.
d. Type Conversions.
e. Relational and Boolean Expressions.
f. Short-Circuit Evaluation.
g. Assignment Statements.
h. Mixed-Mode Assignment.

PRELIMINARY EXAMINATION
7. Statement-Level Control Structures.
a. Introduction.
b. Compound Statements.
c. Selection Statements.
d. Iterative Statements.
e. Unconditional Branching.
f. Guarded Commands.
g. Conclusions.
8. Subprograms.
a. Introduction.
b. Fundamentals of Subprograms.
c. Design Issues for Subprograms.
d. Local Referencing Environment.
e. Parameter-Passing Methods.
f. Parameters That Are Subprogram Names.
g. Overloaded Subprograms.
h. Generic Subprograms.
i. Separate and Independent Compilation.
j. Design Issues for Functions.
k. Accessing Nonlocal Environments.
l. User-Defined Overloaded Operators.
m. Coroutines.
9. Implementing Subprograms.
a. The General Semantics of Calls and Returns.
b. Implementing FORTRAN 77 Subprograms.
c. Implementing Subprograms in ALGOL-like Languages.
d. Blocks.
e. Implementing Dynamic Scoping.
f. Implementing Parameters That Are Subprogram Names.
10. Abstract Data Types.
a. The Concept of Abstraction.
b. Encapsulation.
c. Introduction to Data Abstraction.
d. Design Issues.
e. Language Example.
f. Parameterized Abstract Data Types.
11. Support for Object- Oriented Programming.
a. Introduction.
b. Object-Oriented Programming.
c. Design Issues for Object-Oriented Languages.
d. Overview of Smalltalk.
e. Introduction to Smalltalk.
f. Smalltalk Example Programs.
g. Large-Scale Features of Smalltalk.
h. Evaluation of Smalltalk.
i. Support for Object-Oriented Programming in C++.
j. Support for Object-Oriented Programming in Java.
k. Support for Object-Oriented Programming in Ada 95.
l. Support for Object-Oriented Programming in Eiffel.
12. Concurrency.
a. Introduction.
b. Subprogram-Level Concurrency.
c. Statement-Level Concurrency.
13. Exception Handling.
a. Introduction to Exception Handling.
b. Exception Handling in PL/I.
c. Exception Handling in Ada.
d. Exception Handling in C++.
e. Exception Handling in Java.
14. Functional Programming Languages.
a. Introduction.
b. Mathematical Functions.
c. Fundamentals of Functional Programming Languages.
d. The First Functional Programming Language: LISP.
e. An Introduction to Scheme.
f. COMMON LISP.
g. ML.
h. Miranda.
i. Applications of Functional Languages.
j. A Comparison of Functional and Imperative Languages.

15. Logic Programming Languages.


a. Introduction.
b. A Brief Introduction to Predicate Calculus.
c. Predicate Calculus and Proving Theorems.
d. An Overview of Logic Programming.
e. The Origins of Prolog.
f. The Basic Elements of Prolog.
g. Deficiencies of Prolog.
h. Applications of Logic Programming.

FINAL EXAMINATION

Prepared by:
Charmaine G. Salvador

Potrebbero piacerti anche