"Babes-Bolyai" University of Cluj-Napoca
Faculty of Mathematics and Computer Science

Fundamentals of programming languages
Hours: C+S+L
Teaching Staff in Charge
Lect. VANCEA Alexandru Ioan, Ph.D., vancea@cs.ubbcluj.ro
Asist. KOVACS Lehel, klehel@cs.ubbcluj.ro
Knowledge acquiring about the general and fundamental features regarding programming languages design and development, as opposed to thorough learning one or two languages without understanding what constitute their background;
Critical analysis of the elements designed until present with emphasis on their advantages and disadvantages; Development of the students decisional and analitical capabilities, features which will contrast him from a simple programmer;
As an immediate goal we expect that the student will be able to fastly learn any language, learning which will take place by means of the general languages features presented during the semester;
1. The evolution of programming languages.

2. The design process of the programming languages.
2.1. The steps taken for completing a software product.
2.2. Criteria to be followed for designing a programming language.
2.3. Quality criteria for a software product.

3. Lexic, syntax and semantics.
3.1. Specifying the programming languages syntax: BNF, syntax diagrams, grammars.
3.2. Programs translation. Translation programs classification. The main structure of a
translation program. Lexical anlysis, syntactic analysis, semantic analysis.
Code generation.

4. Variables, expressions, statements.
4.1. The definition of the variable concept. Imperative and declarative languages.
The role of the assignment statement.
4.2. Expressions. Components, types, evaluation.
4.3. Control structures. Conditional, repetitive and transfer statements.

5. Data types and data structures.
5.1. Definitions and components.
5.2. Data types classifications.
5.3. Standard and predefined data types. Numerical, boolean and character types.
5.4. User defined types. Sets, arrays, records and pointers.
5.5. Data types equivalence and compatibility.
5.6. Inconsistency issues of data types usage.

6. Scope and extent.
6.1. The scope of an identifier. Static and dynamic scoping.
6.2. The extent of a variable.
6.3. Memory allocation mechanisms. Static and dynamic allocation.

7. Procedures and parameter passing techniques.
7.1. Subroutines. Definitions and classifications.
7.2. Parameters passing techniques.
7.3. Procedures and operator overloading.
7.4. Recursivity.
7.5. Side effects.
7.6. Coroutines.
7.7. Subroutines implementation in non-block-structured languages comparatively with
block-structured languages.

8. Exception handling.

9. Visual programming paradigm. Event-driven programming languages.
1. Frentiu, M., Parv, B.: Elaborarea programelor: metode si tehnici moderne, ProMedia, Cluj-Napoca, 1994.
2. Ghezzi, C., Jazayeri, M.: Programming Language Concepts, John Wiley, 1972.
3. Horowitz, E.: Fundamentals of Programming Languages, Springer, 1973.
4. MacLennan, B.J.: Principles of Programming Languages: Design, Evaluation and Implementation, Holt, Rinehart and Winston, 1973.
5. Parv, B., Vancea, A.: Fundamentele limbajelor de programare, Fascicolele 1-2, Lito Univ. "Babes-Bolyai", 1992.
6. Pratt, T.W.: Programming Languages: Design and Implementation, Prentice Hall, 1975
7. Shammas, N.: Object Oriented Programming with Turbo Pascal, Prentice-Hall, 1990
7. Voss, G.: Object-Oriented Programming: An Introduction, Osborne McGraw-Hill, 1991.
9. Parv, B., Vancea, A.: Fundamentele limbajelor de programare, Ed.Microinformatica, 1996.
10. * * * - Reteaua Internet.
Laboratory work must be accompanied by analysis upon the used languages features and their implementation, followed by comparisions between related basic features; we put the accent not only on the good functioning of some algorithms, but on the thorough understanding of their semantics, the meaning of the implied functionalities and the effects supposed by the presence of one or another language feature; the ability of presenting in writing a coherent and complete analysis of a program product is also evaluated as an important student's potential.