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
2018/2019
Teacher
FABRIZIO RIGUZZI
Credits
9
Didactic period
Secondo 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 the theory of formal languages, of computability theory and of logic programming.
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
- basic principles of the theory of formal languages and abstract machines
- techniques for the design and analysis of a programming language
- implementation of a programming language
- basics of logic programming
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,
- automatic generation of compilers with automatic tools (lex and yacc)
- 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 24 hours of guided exercises in the laboratory.
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.
Formal languages (24 hours): abstract machines, interpreters, compilers, describing a programming language, lexical analysis, syntactic analysis, automatic tools to generate lexical and syntactic analyzers (lex and yacc), implementation of languages.
Logic programming (10 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 examination is composed of a practical test and a test on theory.
The practical test takes place in the computer laboratory and consists of an exercise on Java: the students have to write a program that reads data from text files and elaborates it. The program must be written using the computers of the laboratory. The test lasts two hours. It is worth 17 points. It is forbidden to use personal computers or smart phones. It is allowed to use teaching material. The program code must compile without errors otherwise the test will not be considered for marking.
The test on theory consists of three open-ended questions on the theoretical part of the course. The test lasts 30 minutes. It is worth 15 points. It is forbidden to use personal computers, smart phones or teaching material.
The final mark is given by the sum of the marks in the two tests. The exam is passed if the mark in each test is at least 9. The two tests can be taken in different exam dates.

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
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.