Salta ai contenuti. | Salta alla navigazione

Strumenti personali

PROGRAMMING LANGUAGES AND LABORATORY

Academic year and teacher
If you can't find the course description that you're looking for in the above list, please see the following instructions >>
Versione italiana
Academic year
2020/2021
Teacher
FABRIZIO RIGUZZI
Credits
9
Didactic period
Primo Semestre
SSD
INF/01

Training objectives

The main goal of the course consists in enabling the students to write programs in object-oriented languages. Moreover, the course will illustrate the basic principles of logic programming and of the implementation of programming languages.
The main acquired knowledge will be:
- basic principles of object-oriented programming
- object-oriented programming techniques
- the Java programming language
- basics of Java's graphics
- basics of logic programming
- the Python programming language
- implementation of a programming languages
The basic acquired abilities (that are the capacity of applying the acquired knowledge) will be:
- analysis and solution of problems of increasing complexity with object-oriented code in Java and Pyhton
- implementation of simple algorithms in logic programming

Prerequisites

The exam can be taken only after having passed the exam for the course "Programming and Programming Laboratory".
The following concepts and knowledge provided by the course "Programming and Programming Laboratory" are mandatory:
- structured programming principles
- C language
- basic data structures
- basic algorithms

Course programme

The course is composed of 72 hours of frontal lectures plus tutoring.
Introduction to object oriented programming (OOP) (10 hours): classical OOP, Java OOP, composed objects, packages, strings, arrays, wrappers, Eclipse IDE.
Java OOP (16 hours): inheritance, subtyping, polymorphism, the Object class, abstract classes and interfaces, exceptions, input/output.
Java Collection Framework (JCF) (4 hours): JCF, generics, JCF with generics.
Graphics in Java (8 hours): JavaFX, event model.
Logic programming (10 hours).
Python OOP (18 ore): syntax, types, functions, dictionaries, modules, classes, inheritance, exceptions
Implementation of languages (6 hours)

Didactic methods

The course is composed of 72 lecture hours.
The lectures will cover all the course topics and will include also simple tests on the computer by the students of the examples shown by the teacher.

Learning assessment procedures

The aim of the exam is to verify at which level the learning objectives previously described have been achieved.
The exam is composed of two tests. The first consists of writing two programs, one in Java and one in Python, that read data from text files and elaborate it. The programs must be written on a computer. Moreover, the test includes an exercise on logic programming.
The second test consists of a question on programming languages implementation. The first test lasts three hours and a half. It is worth 29 points. The second test lasts 10 minutes and is worth 3 points. It is allowed to use teaching material except for the question on programming languages implementation. The code must compile without errors otherwise the first test will not be considered for marking.
The exam can also be taken by means of two partial tests, the first, on Java, during the mid-term break, the second on Python, logic programming and implementation at the end of the course.

Reference texts

The reference texts are
- teacher handouts
- Walter Savitch, Programmazione di base e avanzata con JAVA 2/Ed, Pearson, 2018
- M. Gabbrielli, S. Martini, Linguaggi di programmazione. Principi e paradigmi 2a edizione McGraw-Hill, 2011
- Allen B. Downey, Think Python 2nd Edition, O’Reilly, 2015, https://greenteapress.com/wp/think-python-2e/
Further texts are:
Bruce Eckel, Thinking in Java 4th edition, Prentice Hall, 2006, https://archive.org/details/TIJ4CcR1/page/n3
Cay S. di Horstmann, Concetti di informatica e fondamenti di Java - 6a ed., Apogeo, 2016
H. M. Deitel, P. J. Deitel. Java Fondamenti di Programmazione, 3a ed., Apogeo, Milano.
J. Lewis, W. Loftus, Java - Fondamenti di progettazione software, Addison Wesley, Italia.