Babes-Bolyai University of Cluj-Napoca
Faculty of Mathematics and Computer Science
Study Cycle: Graduate
SUBJECT

Code	Subject	
MID0011	Fundamentals of Programming Languages	

Section	Semester	Hours: C+S+L	Category	Type	
Computer Science - in Romanian	4	2+0+2	speciality	optional	

Teaching Staff in Charge	Lect. VANCEA Alexandru Ioan, Ph.D., vancea@cs.ubbcluj.ro
Lect. IONESCU Clara, Ph.D., clara@cs.ubbcluj.ro	
Aims	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;
	
Content	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.
	
Bibliography	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.
	
Assessment	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.