Learning objectives
The course aims to provide the student with the basic knowledge for the design and implementation of "object-oriented" programs, as well as in-depth knowledge about the programming tools provided by C++ and Java for "object-oriented" programming.
The course also aims to provide students with the ability to apply the acquired problem analysis techniques and knowledge about programming tools to carry out concrete executable C++ and Java programs.
Prerequisites
The concepts and basic techniques of imperative programming as provided by Foundamentals of Programming A.
Course unit content
The course introduces the fundamentals of the "object-oriented" and modular programming paradigms, using as the main reference the C++ language, but also taking into account the Java language in the final part of the course.
The course also presents some advanced constructs and mechanisms of C++ and Java, such as function and operator overloading and exception handling, as well as some notions and tools that are not strictly related to the "object-oriented" programming paradigm, but which are nevertheless of great importance, such as the notions of abstract data type and the software development cycle.
Full programme
Class and object declaration. Accessing member functions and data of a class. Class constructors. Abstract data types (ADT).
Function and operator overloading.
The 'string' class.
Dynamic memory allocation. A sample class: 'int_vett'. The assignment operator. The copy constructor. Class destructors. Object life-time.
Exception handling: motivations. Constructs for exception handling in C++.
Parametric classes ('template'): declaration, instantiation. A sample class: 'vett<T>' - Parametric functions.
Inheritance. 'public' vs 'private' derivation. Multiple inheritance (hints).
Introduction to Java. Features and components. Interpretation vs compilation. The Java Virtual Machine. Structure of a Java program.
Simple primitive types. Basic I/O. Control structures.
Structured types: arrays. References and objects. Garbage collection. Strings. Static methods. Parameter passing.
The 'class' construct. Declaration and instantiation. Example: class 'Rational'.
Inheritance. References 'this' and 'super'. Polymorphism. Substitution principle and "down-casting". Classe hierarchy (class java.lang.Object). "Wrapper" types. Interfaces and implementations. Abstract classes. Generics. Interfaces and inheritance.
Bibliography
- L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.
- C.S. Horstmann , Concetti di informatica e fondamenti di Java, Apogeo, 2010.
- M.Cadoli, M.Lenzerini, P.Naggar, A.Schaerf. Fondamenti della progettazione di programmi. Principi, tecniche e loro applicazioni in C++, CittaStudiEdizioni di UTET Libreria, 1997.
- C++ and Java programs shown in class and in the laboratory, available on Elly
Teaching methods
Teaching takes place mainly through lectures and computer-based exercises, either assisted or carried out independently by the students.
The lectures provide, among other, the presentation of a number of practical examples, along with the related solutions written in C++ and Java, which will be made available on the Elly page of the course
Assessment methods and criteria
The final examination of the Fundamentals of Programming B course consists of a written theory test and a written programming test.
The theory test consists in answering on paper ten closed questions on the most basic and general topics treated throughout the course. This test serves as a barrier for the second programming test. To pass the theory test and access the programming test, 70% of the questions are required to be answered correctly. If the student does not correctly answer at least 70% of the questions, the exam is considered not passed and will not be able to access the programming test.
The programming test consists in the solution on paper of some programming exercises.
Fundamentals of Programming A+B: For students of the Degree in Computer Science, this course exam is integrated with that of the course "Fundamentals of Programming A". A mark out of thirty is assigned to each of the exams (part A and part B). The exam of Fundamentals of Programming A + B is considered passed if the arithmetic average between the grade obtained in Fundamentals of Programming A and that obtained in Fundamentals of Programming B is greater than or equal to 18 and each of the two grades is greater than or equal to 16.
Other information
The course includes its own Web page, managed directly by the teacher, based on the e-learning platform of the University of Parma Elly
2030 agenda goals for sustainable development
- - -