Docente: Alberto Pettorossi. Il docente riceve dopo le lezioni e per appuntamento.
Lectures:
from
09.12.03 to 14.02.04 Corso
Bis: from 09.12.03 to 14.02.04
Monday 14:00-15:15 Room 1
PP2
Monday 9:30-11:15 Room 4 PP2
Tuesday 11:30-13:15 Room 1
PP2
Tuesday 11:30-13:15 Room T6
Thursday 11:30-13:15 Room 1
PP2
Thursday 14:00-15:45 Room 4 PP2
Exams:
17.02.04 15:00 (Room 3 n.e.) Primo appello
25.02.04 9:30 (Room 2 n.e.) Secondo appello
04.05.04
15:00 (Room 16 Ingegneria
Industriale)
Seminario
didattico-scientifico
06.05.04 15:00 (Aula di disegno n.e.) Appello
Straordinario
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, alternating bit protocol.
Serializabilità di transazioni in basi di dati.
Programmazione in Java.
Java
code of
individual programs (.tar.gz). These programs are published in the
book:
Pettorossi A.: Sequential and
Concurrent Programming in Java. Aracne, 2005.
Preliminaries: Hello.java,
Strings.java.
Graphical Interface: TimeConvertor.java.
Recursion: Factorial.java.
Backtracking: Dispositions.java,
Permutations.java,
n-Queens: (1) Queens.java.
(2) QueensSimpleSolver.java
(with queen objects),
(3) QueensSolver.java
(with queen objects and graphic output).
Threads: MerryChristmas.java,
CounterThread1.java,
CounterThread2.java.
Thread.zip.
Fibonacci: (1) Sequential:
SeqFibonacci.java.
(2) Exponential , parallel:
FibonacciExpThread.java
.
(3) Linear, parallel
Fibonacci: - ParLinearFibonacci.java,
-
FibThread.java,
-
ArrayClass.java.
Parallel MergeSort:- Maximum.java,
-
ParMergeSort,
-
MergeSortThread.
Parallel QuickSort:- Maximum.java,
-
ParQuickSort,
-
QuickSortThread.
Parallel Sum of Matrix:- FinalSum.java,
-
MatrixSumMain.java,
-
RowSumThread.java,
-
SumQueue.java.
Peterson's Algorithm for Mutual Exclusion: - Lock.java,
- Peterson.java,
- MutexTester.java.
Monitor for a queue: - QueueMonitor.java,
- QueueTester.java.
Monitor for a bounded buffer: - BoundedBufferMonitor.java,
- ProducerConsumerMain.java.
Semaphores for a bounded buffer: - BinarySemaphore.java,
- CountingSemaphore.java,
- BoundedBuffer.java,
- ProducerConsumerMain.java.
Monitor for the Dining Philosophers: - Resource.java,
- Philosopher.java,
- ForkMonitor.java.
Depth First Visit of Trees: - DepthFirstVisitofTrees.zip.
Database Example: DatabaseRAF.zip.
Abstract data types: Adt.zip.
Elements of UML: UML.zip.
Swing e sockets: Tcpchat.zip.
Prove in itinere: 1:Cammino
minimo di un grafo. 2: Bank
Accounts.
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] Schmidt, D.: Programming
Principles in Java: Architectures and Interfaces (free download)
[P] Pettorossi, A. Elements of Concurrent Programming. Aracne
2004.
[PP] Parameter
Passing.
Testi alternativi per consultazione:
[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) |
-------------------------------------------------------------
This page should be stored in:
/home/adp/www/ProgramCorsoPOC03-04.html