Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Calculatoare şi tehnologia informaţiei
Programul de studii: Ingineria informatiei - in limba engleza
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID0002	Object-Oriented Programming	

Semester	Hours: C+S+L	Category	Status	
2	2+0+2+0		compulsory	

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
GURAN Adriana-Mihaela	PhD	Lect.	Programming  Languages and Methods	*			

Associated faculty members
Name and	Scientific	Institution	Type of	Type of activity	
surname	title		position	C	S	L	

III. Course objectives
On completion of the class, a student should be able:
* to prepare an object-oriented design of small/medium scale problems
* to demonstrate the differences between traditional imperative design and object-oriented design
* to explain class structures as fundamental, modular building blocks
* to understand the role of inheritance, polymorphism, dynamic binding and generic structures in building reusable code
* to explain and to use defensive programming strategies, employing formal assertions and exception handling
* to write small/medium scale C++ programs
* to use classes written by other programmers when constructing their systems
* to understand and to use fundamental data structures: collections, sets, dictionaries, lists, stacks, queues, trees, graphs.	

IV. Course contents
1.	Basic elements of  C++ language. 
-	Lexical elements. Operators. Conversions.
-	Data types. Variables. Constants. 
-	Visibility scope and lifetime of the variables.
-	Namespaces.
2.	Statements and functions in C++.
-	C++ Statements.
-	Function declaration and definition.
-	Function overloading.
-	Inline function.
3.	Derived data types and user data types, dynamic allocation in C++. 
-	Data types: array and struct.
-	Data types: pointer and reference. 
-	Memory allocation and deallocation.
-	Pointers to functions and pointers void.
4.	Modular programming in C++.
-	Header files. Libraries.
-	Modular implementations of ADTS.
-	Using the void  pointer to achieve genericity.
5.	Object oriented in C++. 
-	Classes and objects.
-	Members of a class. Access modifiers.
-	Constructors / destructors
-	UML diagrams for classes (members, accessibility).
-	Association and aggregation relations  between  
                 classes -UML representation;
6.	Operators' overloading. Static members. Friends. 
-	Class Linked_List. Iterator on list. 
7.	Inheritance  
-	Simple inheritance. Derived classes.
-	Substitution principle.
-	Method overriding.
-	Multiple inheritance. 
-	Specialization/generalization relation - UML representation.
8.	Polymorphism.  
-	Virtual methods.
-	Dynamic binding. 
-	Virtual inheritance.
-	Code reusing (inheritance/composition).
-	Conversions (upcast/downcast).
9.	Object oriented design and interface based design. 
-	Abstract classes, interfaces.
-	UML representation for interfaces.
-	Object oriented design of a library of the basic data structures 
10.	Input/output operation.  (C10+S10)
-	I/O streams. I/O Hierarchies of classes.
-	Format. Manipulators.
-	Files.
11.	Templates. 
-	Template functions. Template classes. 
-	Source-code reusing.
12.	STL  library
-	Container classes and iterators.
-	 STL algorithms.
13.	Exception handling. 
-	Notion of exception in programming.
-	Exception handling. in C++.
14.	Visual C++ environment.  
-	User Interface Components. 

V. Bibliography
1. A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addisson-Wessley Publ., Massachusetts, 1983.
2. R. Andonie, I. Garbacea, Algoritmi fundamentali. O perspectiva C++, Editura Libris, 
3. Alexandrescu, Programarea modernă in C++. Programare generică si modele de proiectare aplicate, Editura Teora, 2002
4. M. Frentiu, B. Parv, Elaborarea programelor. Metode si tehnici moderne, Ed. Promedia, Cluj-Napoca, 1994.
5. E. Horowitz, S. Sahni, D. Mehta, Fundamentals of Data Structures in C++, Computer Science Press, Oxford, 1995.
6. K.A. Lambert, D.W. Nance, T.L. Naps, Introduction to Computer Science with C++, West Publishing Co., New-York, 1996.
7. L. Negrescu, Limbajul C++, Ed. Albastra,Cluj-Napoca 1996.
Cluj_Napoca, 1995.
8. Dan Roman, Ingineria programarii obiectuale, Editura Albastra, Cluj_Napoca, 1996.
9. B. Stroustup, The C++ Programming Language, Addison Wesley, 1998.

VI. Thematic of didactic activities per weeks
Course activities:
1.	Basic elements of  C++ language. 
-	Lexical elements. Operators. Conversions.
-	Data types. Variables. Constants. 
-	Visibility scope and lifetime of the variables.
-	Namespaces.
2.	Statements and functions in C++.
-	C++ Statements.
-	Function declaration and definition.
-	Function overloading.
-	Inline function.
3.	Derived data types and user data types, dynamic allocation in C++. 
-	Data types: array and struct.
-	Data types: pointer and reference. 
-	Memory allocation and deallocation.
-	Pointers to functions and pointers void.
4.	Modular programming in C++.
-	Header files. Libraries.
-	Modular implementations of ADTS.
-	Using the void  pointer to achieve genericity.
5.	Object oriented in C++. 
-	Classes and objects.
-	Members of a class. Access modifiers.
-	Constructors / destructors
-	UML diagrams for classes (members, accessibility).
-	Association and aggregation relations  between  
                 classes -UML representation;
6.	Operators' overloading. Static members. Friends. 
-	Class Linked_List. Iterator on list. 
7.	Inheritance  
-	Simple inheritance. Derived classes.
-	Substitution principle.
-	Method overriding.
-	Multiple inheritance. 
-	Specialization/generalization relation - UML representation.
8.	Polymorphism.  
-	Virtual methods.
-	Dynamic binding. 
-	Virtual inheritance.
-	Code reusing (inheritance/composition).
-	Conversions (upcast/downcast).
9.	Object oriented design and interface based design. 
-	Abstract classes, interfaces.
-	UML representation for interfaces.
-	Object oriented design of a library of the basic data structures 
10.	Input/output operation.  (C10+S10)
-	I/O streams. I/O Hierarchies of classes.
-	Format. Manipulators.
-	Files.
11.	Templates. 
-	Template functions. Template classes. 
-	Source-code reusing.
12.	STL  library
-	Container classes and iterators.
-	 STL algorithms.
13.	Exception handling. 
-	Notion of exception in programming.
-	Exception handling. in C++.
14.	Visual C++ environment.  
-	User Interface Components. 
-	Events.
Seminar activities:
Week 1: Simple problems 
Week 2: Modular programming
Week 3: Dynamic memory allocation
Week 4: Encapsulation. Pointers to void.
Week 5: Classes
Week 6: Operators' overloading. Static members. Friends.
Week 7: Graded paper (include correct development of algorithms from specifications and writing simple subalgorithms)
Week 8: Inheritance 
Week 9: Polymorphism
Week 10: Object oriented design and interface based design.
Week 11: Object oriented design and interface based design.
Week 12: Input/output streams 
Week 13: Templates
Week 14: Exception handling

Laboratory activities: there will be 12 laboratory subjects, as follows. The week number indicates when the lab theme has been given; the lab documents and the lab programs  are due one week later.

1.	Simple problems
2.	Modular Programming
3.	Abstract Data Types
4.	Encapsulation (information hiding)
5.	Building generic abstract data types using void*
6.	Classes – fundamentals
7.	Operators overloading
8.	Inheritance
9.	Polymorphism
10.	Templates
11.	Exceptions
12.	Input/output streams
13.	Lab delivery time
14.	Practical test

VII. Didactic methods used
Expositions: description, explanation, class lectures, dialog-based lectures, lectures with demonstrations, introductive lectures, current lectures, synthesis lectures. 
Conversations: debate, dialog, introductive conversations, conversations for knowledge consolidation, conversations to systematize and synthesize knowledge 
Use of problems: use of problem questions, problems and problem situations. 
Discovery: directed and independent rediscovery, creative discovery, inductive discovery, deductive discovery, discovery by documenting, experimental discovery. 
Other methods: case study; cooperation, simulation, brainstorming, individual study, exercise, homework study.	

VIII. Assessment
Final grade is obtained based on: 
A.	Laboratory activity N1: 30% 
B.	Written exam N3: 50%
C.	Practical exam N4: 20%
The written exam takes place during the exams session. The practical exam will be organized on the last week of the semester, during the laboratory classes.
Further information about requirements can be found at the following address: \\Win\labor\Engleza\An1\OOP_2008-2009\

IX. Additional references

Dean,
PhD. Prof. Leon Ţâmbulea

Date,
15 martie 2009	Chair Head,
PhD. Prof. Bazil Parv

Course responsible,
PhD. Lect. Adriana Guran	

	,