The serial programming disciplines could not compete with the continuously evolving requirements on modern software. Hence, a future software developer should be familiar with certain aspects of parallel programming.
For that reason, I studied the concept of concurrent programming. I learnt about the physical characteristics of various computer architectures and how they can be categorized or put to parallel execution. I examined several ways to break up a serial problem into parallelized chunks. I looked into the different ways on how a programmer or an automatic mechanism can detect parallelizable code snippets in serial software.
Afterwards I studied how Java language supports concurrent programming with basic support in the language and the Java class libraries.
Finally, I solved a concurrency related programming issue based on serial software. The task was to efficiently upgrade several devices on a network. I measured the different implementations’ performance considering CPU, memory, runtime and evaluated them based on their results.