Degree course: 
Corso di First cycle degree in MATHEMATICS
Academic year when starting the degree: 
Academic year in which the course will be held: 
Standard lectures hours: 


Final Examination: 

Final exam is composed of an oral and a practice test.

Voto Finale

The main aim of the course consists in giving the basis of data structures theory and algorithms.
The intended scope of the course is also to introduce to the main subjects related to the theory of complexity.
Besides an outline of java programming is given.

Module A
Introduction to java programming:

• Variables, constants and type of elementary data.
• Assignment and composite statement.
• Basics of Input/output.
• Expressions and operators.
• Control Structures: selection and cycles.
• Class and methods.
• Array.
• Introduction to recursion.

Module B

An introduction for a preliminary approach to complexity theory.

Recursive algorithms: a way of implementation and somo considerations about reentrant.

Sorting Algorithms:
• Setting the problem. Lower bound in time complexity.
• Insertion sort – worst case and average case.
• Merge sort - worst case and average case.
• Heap sort - worst case and average case.
• Quick sort - worst case and average case.
• Random Quick sort.

Programmming by objectives (java)
• Inheritance
• Polymorphism theory and applications
• Encapsulation and a brief intorduction to interfaces (brief notes)

Elementary data structures: Stacks, queues and trees.

Implementing operations with large numbers (Pgreco, prime numbers ecc.):
• Use of big decimals and big integer java libraries
• Python prototipation

Text books:
• Introduction To Algorithms. Thomas H Cormen, Charles E Leiserson, Ronald L Rivest, Clifford Stein. MIT Press.
• C. Thomas Wu: "Java. Fondamenti di Programmazione.". McGraw-Hill.

Tutorial: available on the official web-site.

Usual classes.

Office hours
Arrange an appointment by e-mail.