Select Academic Year:     2017/2018 2018/2019 2019/2020 2020/2021 2021/2022 2022/2023
Professor
GIULIANO ARMANO (Tit.)
Period
Second Semester 
Teaching style
Convenzionale 
Lingua Insegnamento
ITALIANO 



Informazioni aggiuntive

Course Curriculum CFU Length(h)
[70/89]  ELECTRICAL, ELECTRONIC AND COMPUTER ENGINEERING [89/30 - Ord. 2016]  INFORMATICA 5 50
[70/89]  ELECTRICAL, ELECTRONIC AND COMPUTER ENGINEERING [89/60 - Ord. 2016]  INFORMATICA ON LINE 5 50

Objectives

Indicator of knowledge and understanding
The teacher regularly involves students in the summary of the arguments. The ability to solve the problems during exercises is another useful activity.

Indicator of the ability to apply knowledge and understanding
The teacher asks the students on a regular basis about simple problems, devised to check understanding of the arguments. Also the exercises carried out during the course are useful to get feedback on the student understanding.

Indicator of independent judgment
The setting of exercises is aimed at allowing students to have a practical confirmation of the theory and at the same time to verify their independence of judgment.

Indicator of communication skills
During exercises, the student is often in the condition of having to communicate with colleagues and / or the tutor of the course, allowing the tutor to assess the effectiveness and appropriateness of interactions.

Indicator ability to learn independently
None.

Prerequisites

Although not mandatory, it is desirable to have an examination on the fundamentals of computer science.

Contents

The course is divided into four parts: 1. general information on object-oriented programming, 2. Java language, 3. Python language, and 4. advanced object-oriented programming concepts. The first part introduces and illustrates the characterizing elements of the object-oriented vision, while the parts on Java and Python are aimed at verifying how the main object-orientation mechanisms are implemented in the two languages, properly highlighting the choices adopted by the language designers. The last part reviews the concepts introduced at the beginning of the course according to a semi-formal perspective.

General information on object-oriented programming
This part focuses on i) abstract data types, ii) inheritance, iii) polymorphism, iv) binding and dispatching, v) main modes for class derivation, as well as vi) on the object-oriented approach to problem solving.

Java language
After briefly illustrating the main characteristics of the language (data structures, control structures and functions), particular attention is given to the way Java implements inheritance and polymorphism. The solutions used for implementing binding and dispatching are also depicted with sufficient detail. As Java distinguishes between method overriding and method overloading, the differences between these two strategies for method activation are also clarified. All aspects seen in the theory find a correspondence in the exercises made in class or in the laboratory. Exercises are set and resolved according to the object-oriented vision.

Python language
After briefly illustrating the main characteristics of the language (data structures, control structures and functions), particular attention is given to the way Python implements inheritance and polymorphism. The solutions used for implementing binding and dispatching are also depicted with sufficient detail. All aspects seen in the theory find a correspondence in the exercises made in class or in the laboratory. Exercises are set and resolved according to the object-oriented vision.

Advanced object-oriented programming concepts
This part focuses on i) model-based interpretation of type-subtype relationships, ii) Liskov substitutability principle, iii) subtyping vs. subclassing, as well as iv) on the semantics of the main modes for class derivation.

Main topics covered

First part - General information on object-oriented programming

- Review on abstract data types: syntactic, semantic and pragmatic specification
- Basic concepts of object-oriented technology: inheritance and polymorphism
- Characteristic aspects of object oriented languages: types / classes, operations / methods, objects, dispatching, binding

Second part - Java language

- Overview of the language
- Classes, objects and packages
- Exception handling
- Inheritance, polymorphism, binding and dispatching in Java
- Input / Output
- Concurrent programming and event-based programming in Java (overview)

Third part - Python language

- Overview of the language
- Classes, objects and packages
- Exception handling
- Inheritance, polymorphism, binding and dispatching in Java
- Input / Output
- Functional programming, reflection and scientific calculation in Python (outline)

Fourth part - Advanced object-orientation concepts

- Insights on legacy and polymorphism
- Informal definition of subtyping and subclassing
- Liskov Substitutability Principle (LSP) and subtyping
- Semantic characterization of the main variants in the class-subclass relationship
- Comparison between some object oriented languages (outline)

Teaching Methods

15 hours of lectures, esercises and laboratory on databases.
17 hours of lectures, esercises and laboratory on the Python language.
18 hours of lectures, esercises and laboratory on bioinformatics.

Verification of learning

The assessment of learning is done through written test, which covers the topics of the course. The texts of exams are made public via web and, upon request, discussed with the students. During the academic year, the solutions of some tasks are made available to students on the web. The final grade, ranging from 18 and 30, depends on the quality of the written exam produced by the student. To enable the possibility of getting full mark with distinction, actually the overall score is 32. Achieving a score equal to or greater than 31.5 typically involves the achievement of distinction.

Texts

^^^ Reference textbooks on OOT ^^^

- T. Budd, An Introduction to Object-Oriented Programming, Pearson Addison-Wesley.
- I. D. Craig, Object-Oriented Programming Languages: Interpretation, Springer

^^^ Reference textbooks on the Java language ^^^

- H. Schildt, Java: The Complete Reference, Oracle Press
- K. Arnold, J. Gosling – The Java Programming Language, Addison-Wesley.

^^^ Reference textbooks on the Python language ^^^

- O'Reilly, Alex Martelli, Python in a Nutshell, 2003.
- Mark Pilgrim, Dive into Python [online]
- Allen B. Downey, Jeffrey Elkner e Chris Meyers, How to Think Like a Computer Scientist: Learning With Python [online]

More Information

The pdf slides of the lessons are available to students on the web pages of the teacher at people.unica.it.

Questionnaire and social

Share on:
Impostazioni cookie