We introduce the data type, which is the theoretical counterpart of a software module, and consists of values with their operations. We introduce data structures and algorithms to implement a data type (the implementation is not unique). We teach how to evaluate the space and time complexity of an implementation. We introduce object oriented (OO) programming and the Java language. We use Java to implement some classical data types (stack, queue, dictionary) and algorithms for the sorting problem.
Introduction to: data types; algorithms, data structures and complexity evaluation; object oriented programming with the java language as an example; implementation of data types in java.
Ability to implement a data type by choosing suitable data structures and algorithms, based a complexity analysis of the various possible implementations. Knowledge of classical data types (stack, queue, dictionary) and their implementations. Knowledge of classical sorting algorithms and their properties. Knowledge of object-oriented programming and of the Java language.
Coordinated lessons in classroom and in laboratory (with exercises). Each week has three lessons of two hour each. In the typical week, one lesson is in classroom, one lesson in laboratory, and one is either in classroom or in laboratory depending on the flow of teaching material.
Abstract data type. From operations to algorithms; from types to data structures. Space and time complexity. Data types: stack, queue, dictionary, and various implementations for them. Sorting algorithms. Object-oriented programming paradigm and Java language. Classes and objects, equality and copy of objects, constructors, clientship, inheritance, overriding, exceptions. Implementation of data types in Java.
Course notes. On-line manual and tutorials for Java. Book: M.T.Goodrich, R.Tamassia, Data structures and algorithms in Java, John Wiley & Sons.
Ricevimento: On request. In addition, on aulaweb there will be a discussion forum for questions and answer of general interest for all students.
PAOLA MAGILLO (President)
ELENA ZUCCA (President)
DAVIDE ANCONA
The class will start according to the academic calendar.
PROGRAMMING 2
The exam consists of a pratical part in laboratory and of an oral part. As a rule, the two parts are in the morning and afternoon of the same day and they are considered as a whole. For details, see "Assessment methods".
The laboratory part of the exam will ask to write, or to modify, Java code to implement variants of algorithms and data structures presented during the year. The oral exam will ask questions about the teaching program, and may involve writing examples in code or pseudocode. It may involve a discussion of the laboratory part. At the end of the lessons, we will provide a sample exam with solutions.
Required notions: Programmazione 1