About
Hi, my name is Jona, I am a Computer Science Student at Johannes Kepler University in Linz, Austria. This Website is the Project for my Bachelors Thesis "Building a webapplication to compare algorithms for coordinating processes", and aims to provide a deeper understanding of the Dining Philosophers Problem and concurrent algorithms in general. I present and evaluate several algorithms, with which you can interact and learn about on the Simulation and Animation pages.
Books and Academic Literature used:
- Matthew J. Sottile, Timothy G. Mattson, Craig E. Rasmussen - Introduction to Concurrency in Programming Languages (2009) - Link
- Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea - Java Concurrency in Practice (2006)
- Andrew S. Tanenbaum, Herbert Bos - Modern Operating Systems (4th ed., 2015)
- Andrew S. Tanenbaum, Maarten Van Steen - Distributed Systems: Principles and Paradigms (2nd ed., 2007)
- Abraham Silberschatz, Peter B. Galvin, Greg Gagne - Operating System Concepts (10th ed., 2018)
- Nancy A. Lynch - Distributed Algorithms (1996)
- Allen B. Downey - The Little Book of Semaphores (2nd ed., 2011) - Link
- William Stallings - Operating Systems: Internals and Design Principles (9th ed., 2018)
- Arnold Buss, Ahmed Al Rowaei - A Comparison of the Accuracy of Discrete Event and Discrete Time (2010) - Link
- C. A. R. Hoare - Communicating Sequential Processes (1978) - Link
- E. W. Dijkstra - EWD 1000 (1987) - Link
- E. W. Dijkstra - Hierarchical Ordering of Sequential Processes (1971) - Link
- Coffman, Edward G. Jr., Elphick, Michael J., Shoshani, Arie - System Deadlocks (1971) - Link
- Davidrajuh, R. - Verifying Solutions to the Dining Philosophers Problem with Activity-Oriented Petri Nets (2014) - Link
- Krishnaprasad, S. - Concurrent/Distributed Programming Illustrated Using the Dining Philosophers Problem (2003) - Link
- Chandy, K. M., Misra, J. - The Drinking Philosophers Problem (1984) - Link
- Armando R. Gingras - Dining Philosophers Revisited (1990) - Link
Web Resources Used:
- Wikipedia contributors - Dining Philosophers Problem - Link
- Oracle - Java Language Specification, Java SE 8 Edition: Section 17.2.2 (2014) - Link
- Oracle - ReentrantLock - Link
- Oracle - Semaphore - Link
- Oracle - Synchronization Methods - Link
- Alexander Mayorov - The Dining Philosophers Problem and Different Ways of Solving It (2021) - Link
- Impact Media Lab - Visual Design for SciComm - Link
- Anonymous - Dining Philosophers Code Example - Link
- Richard Allen Bartle - Solutions to the Dining Philosophers Problem - Link
Technologies/ Libraries used:
- Language: Java 22 - Link
- Web Server implementation: Java JSP (Jakarta Server Pages) Link
- Pseudocode Highlighting: Prism.js - Link
- Web Server Framework Jakarta EE 10 Link
- Web Server - Backend: Jakarta Servlet 6.1 - Link
- Web Server Deployment: Apache Tomcat - Link
- IDE used: IntelliJ - Link
- Project Build: Maven - Link
Related Work:
- Justin DeBenedetto et al. - Placating Plato with Plates of Pasta: An Interactive Tool for Teaching the Dining Philosophers Problem (2017) - Link
- University of Notre Dame - Interactive Explanation of the Dining Philosophers Problem - Link
- Dmitry Zinoviev - Discrete Event Simulation: It's Easy with SimPy! (2018) - Link
- Wilensky, U. - NetLogo Dining Philosophers Model (2003) - Link
- Nguyen, T. M., Nguyen, C. D., Nguyen, T. H., Ngo, T. T. H. - OS Dining Philosopher - University Project (2022) - Link