parallel and distributed programming done in java
lab1 - non cooperative multithreading on shared data
lab2 - producer-consumer problem
lab3 - dividing a simple task with no cooperation, using base thread implementation and thread pools
lab4 - http protocol parser implemented synchronous only with socket callbacks and asynchronous, still using the callbacks but with c# task mechanism and async/await mechanism
lab5 - parallelizing techniques, compute the multiplication of two polynomials of arbitrary degree with the normal schoolbook method and with karatsuba method, both sequential and parallel version and compare them
lab6 - find a hamiltonean cycle in a directed graph using threads, document the performance
lab7 - use mpi programming to compute the multiplication of two polynomials both with O(n^2) alg and the karatsuba and compare with the regular implementations from lab5
lab8 - implement a simple distributed shared memory mechanism, also used mpi
project - a semester project in which we solved the n graph coloring problem both with simple parallelization and with distributed mechanism(MPI). Notice: thread ;) carefully the mpi part is not 100% correct