About

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:

  1. Matthew J. Sottile, Timothy G. Mattson, Craig E. Rasmussen - Introduction to Concurrency in Programming Languages (2009) - Link
  2. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea - Java Concurrency in Practice (2006)
  3. Andrew S. Tanenbaum, Herbert Bos - Modern Operating Systems (4th ed., 2015)
  4. Andrew S. Tanenbaum, Maarten Van Steen - Distributed Systems: Principles and Paradigms (2nd ed., 2007)
  5. Abraham Silberschatz, Peter B. Galvin, Greg Gagne - Operating System Concepts (10th ed., 2018)
  6. Nancy A. Lynch - Distributed Algorithms (1996)
  7. Allen B. Downey - The Little Book of Semaphores (2nd ed., 2011) - Link
  8. William Stallings - Operating Systems: Internals and Design Principles (9th ed., 2018)
  9. Arnold Buss, Ahmed Al Rowaei - A Comparison of the Accuracy of Discrete Event and Discrete Time (2010) - Link
  10. C. A. R. Hoare - Communicating Sequential Processes (1978) - Link
  11. E. W. Dijkstra - EWD 1000 (1987) - Link
  12. E. W. Dijkstra - Hierarchical Ordering of Sequential Processes (1971) - Link
  13. Coffman, Edward G. Jr., Elphick, Michael J., Shoshani, Arie - System Deadlocks (1971) - Link
  14. Davidrajuh, R. - Verifying Solutions to the Dining Philosophers Problem with Activity-Oriented Petri Nets (2014) - Link
  15. Krishnaprasad, S. - Concurrent/Distributed Programming Illustrated Using the Dining Philosophers Problem (2003) - Link
  16. Chandy, K. M., Misra, J. - The Drinking Philosophers Problem (1984) - Link
  17. Armando R. Gingras - Dining Philosophers Revisited (1990) - Link

Web Resources Used:

  1. Wikipedia contributors - Dining Philosophers Problem - Link
  2. Oracle - Java Language Specification, Java SE 8 Edition: Section 17.2.2 (2014) - Link
  3. Oracle - ReentrantLock - Link
  4. Oracle - Semaphore - Link
  5. Oracle - Synchronization Methods - Link
  6. Alexander Mayorov - The Dining Philosophers Problem and Different Ways of Solving It (2021) - Link
  7. Impact Media Lab - Visual Design for SciComm - Link
  8. Anonymous - Dining Philosophers Code Example - Link
  9. Richard Allen Bartle - Solutions to the Dining Philosophers Problem - Link

Technologies/ Libraries used:

  1. Language: Java 22 - Link
  2. Web Server implementation: Java JSP (Jakarta Server Pages) Link
  3. Pseudocode Highlighting: Prism.js - Link
  4. Web Server Framework Jakarta EE 10 Link
  5. Web Server - Backend: Jakarta Servlet 6.1 - Link
  6. Web Server Deployment: Apache Tomcat - Link
  7. IDE used: IntelliJ - Link
  8. Project Build: Maven - Link

Related Work:

  1. Justin DeBenedetto et al. - Placating Plato with Plates of Pasta: An Interactive Tool for Teaching the Dining Philosophers Problem (2017) - Link
  2. University of Notre Dame - Interactive Explanation of the Dining Philosophers Problem - Link
  3. Dmitry Zinoviev - Discrete Event Simulation: It's Easy with SimPy! (2018) - Link
  4. Wilensky, U. - NetLogo Dining Philosophers Model (2003) - Link
  5. Nguyen, T. M., Nguyen, C. D., Nguyen, T. H., Ngo, T. T. H. - OS Dining Philosopher - University Project (2022) - Link