Docente: Alberto
Pettorossi. Il docente riceve dopo le lezioni e per appuntamento.
Professore a contratto: Dr. Fabio Lecca.
Lectures:
from 13.12.04 to 18.02.05 (No lectures from 23.12.04 to 08.01.05)
Monday 16:00-17:45 Room 4
PP2
Tuesday 11:30-13:15 Room T6
Thursday 14:00-15:45 Room 4
PP2
Exams: 22.02.05
15:00 (Room 3 n.e.)
Seminario
didattico-scientifico in preparazione all'esame
24.02.05 09:30 (Room 2 n.e.) Primo appello
01.03.05 09:30 (Room 3 n.e.) Secondo appello
05.09.05
16:00 (Room 11 n.e.)
Seminario
didattico-scientifico in preparazione all'esame
13.09.05
10:00 (Room 04 n.e.) Primo appello: Scritto
(*)
20.09.05 14:00 (Room 12 n.e.) Primo appello: Orale
27.09.05 10:00 (Room 04 n.e.) Secondo
appello: Scritto (*)
29.09.05 14:00 (Room 12 n.e.) Secondo appello: Orale
Obiettivo del corso.
Il corso intende presentare, facendo uso del linguaggio Java, alcuni
concetti fondamentali della programmazione ad oggetti e,
in particolare: objects, classes, abstraction, encapsulation,
inheritance,
polymorphism, message passing, threads.
Il corso intende presentare anche i concetti di base della
programmazione
nondeterministica e di quella concorrente,
a memoria condivisa e a scambio di messaggi. Tali concetti
permettono
di formalizzare e risolvere vari problemi concernenti:
(i) la mutua esclusione, (ii) le strategie di allocazione di risorse,
(iii) la serializzazione di transazioni in basi di dati e
(iv) la correttezza di protocolli di comunicazione tra processi.
Programma del corso:
Programmazione a oggetti in Java. Objects, classes, abstraction,
encapsulation, inheritance, polymorphism, overloading,
overriding, message passing, threads. Elementi di graphical user
interfaces.
Programmazione concorrente. Programmazione nondeterministica.
Vectorization.
Programmazione con shared memory: semaphores, critical regions,
monitors,
mutual exclusion, distributed termination.
Programmazione con message passing: CCS, Peterson's algorithm.
Serializabilità di transazioni in basi di dati.
Programmazione in Java.
Download here: Java code of
individual programs (.tar.gz). They are published in the book:
Pettorossi A.: Sequential and
Concurrent Programming in Java. Aracne, 2005.
- First Sequential Programs: Printing a Message, Printing a Message
Using an Object, Manipulating Strings.
- Inputting Values, Use of StringTokenizer, ArrayList, and Wrapper
Classes: Palindrome Tester.
- Passing Parameters. Constructing and Changing Objects. Using
Implementations and Interfaces: BankAccount.
- Elementary Graphics: Time Convertor.
- Iteration and Recursion: Iterative Factorial, Iterative Fibonacci.
- Interfaces and Inner Classes: Bubble Sort.
- The interface Comparable. Iterators and Comparators: Sorting.
- Recursive Programs: Multiplication, Factorial, Fibonacci Numbers.
- Backtracking Program: Dispositions, Permutations, Combinations. N
Queens: Dijkstra's version and
Budd's version (with/without graphics).
- Parsing Strings and Visiting Trees: Depth First Visit. Binary, Unary,
and Leaf Nodes. Stack of Trees. Console Reader.
Manipulation of a Stack. Exceptions. Version With a Graphical
User Interface.
- First Concurrent Programs: Printing Using Threads. Concurrent
Counters with/without local fields.
A concurrent, exponential program for Fibonacci Numbers. A
concurrent, linear program for Fibonacci Numbers.
Matrix Sum.
- Concurrent MergeSort, Concurrent QuickSort.
- Communications using Bounded Buffers: Bounded Buffer Controlled by
Semaphores.
Binary Semaphores, Counting Semaphores. Bounded Buffer
Controlled by a Monitor.
Concurrent Manipulation of a Stack. Concurrent Manipulation of a
Queue.
- Mutual Exclusion: Peterson's Protocol for N (>=2) processes.
- Dijkstra's Dining Philosophers.
- Interfaces: BankAccount.java,
BankAccountSpecification.java.
- A Bank Account System
(Dr. Fabio Lecca). (Download transparencies here)
---------
- For other programs you may also visit: Programmazione
a Oggetti e Concorrente 2003-04
Prove in itinere: 1: Viaggio in treno 2:
Gestione
biblioteca. Criteri di
valutazione delle prove.
Modalità di esame:
Presentazione delle prove in itenere. Prova scritta e orale.
Prerequisiti: Fondamenti di
Informatica
1. Fondamenti di Informatica 2. Algoritmi e Strutture di Dati.
Domande
d'esame.
Risorse: |
Java 2 SDK | from http://www.blackdown.org/java-linux/mirrors.html or http://java.sun.com |
BlueJ |
from http://www.bluej.org/download/download.html | |
Eclipse | from http://www.eclipse.org (textual editor and debugger for Java) |
Testi consigliati:
[S] D. Schmidt: Programming
Principles in Java: Architectures and Interfaces (free download)
[P1] A. Pettorossi: Elements of Concurrent Programming. Second
Edition. Second Reprint. Aracne
2005.
[P2] A. Pettorossi: Sequential and
Concurrent Programming in Java. Aracne, 2005.
[PP] Parameter
Passing.
[E] | B. Eckel: Thinking in Java, 3/e, Prentice Hall. Free version: http://www.mindview.net/Books/TIJ |
[T] | Java Tutorial: http://java.sun.com/docs/books/tutorial/ |
[BK] | D. J. Barnes & M. Kolling: Programmare in JAVA con BLUEJ, Addison-Wesley, 2003. (anche in inglese) |
[Se] | Sestoft, P.: Java Precisely MIT Press 2002. |
Concise description of Java (Java 2 JDK 1.3 and 1.4) in 107 pages. Downloal all examples here. | |
Printable text PDF (245 KB) and Postscript (386 KB). Browsable text with hyperlinks: PDF (410 KB) | |
[B] | Budd, A.T.: Introduction to Object Oriented Programming with Java, Wiley, 2001. |
[DD] | Deitel & Deitel: Java - How to Program, Deitel & Deitel; ISBN 0131016210 (anche in italiano) |
-------------------------------------------------------------