Welcome to the WIA2004 (Operating System) Github repository.
WIA2004 is offered by the Faculty of Computer Science and Information Technology (FCSIT) at the Universiti Malaya (UM) in Malaysia. This repository provides lab solutions implemented in multiple programming languages. Currently, Java and Python versions are complete. Future updates will include implementations in Go, Rust, JavaScript, TypeScript, C#, C, and C++.
To get started, feel free to browse through the materials and use them to supplement your learning. Hopefully that you find this repository to be helpful and informative. If you have any questions or suggestions, please do not hesitate to reach out to me.
As part of the The-Missing-UMCS initiative, this repository serves as a valuable reference for students taking this course.
Additionally, it aims to address a common problem:
"Which programming language should I use for the lab?"
Seniors had different answers—some used Python, others Java, and some preferred C—making it difficult to choose the right one.
The solution? Implement solutions in all popular programming languages.
This approach not only eliminates uncertainty but also provides a unique learning opportunity. By exploring multiple languages and paradigms beyond Java and OOP, I can broaden my skills and become a more versatile developer.
If you're taking UMWIA2004, here are five compelling reasons to star this repository and use it as a study aid:
-
Multi-Language Implementations
This repository provides lab solutions in multiple programming languages, eliminating the dilemma of choosing the right one. -
Easy to Run
All code is written using JetBrains products like IntelliJ for Java and PyCharm for Python. Once dependencies are set up, the code runs smoothly. -
Well-Documented and Readable
Every piece of code is properly documented and commented, making it easy to understand and follow. -
High-Quality Code
The Java implementations strictly follow SOLID principles and apply industry-standard design patterns like the Strategy Pattern. -
Realistic OS Simulation
The code extensively incorporates domain-specific terminologies such as Virtual Memory Manager, Main Memory, and Virtual Page Number (VPN) to simulate real OS operations as accurately as possible. Studying these implementations will enhance your understanding of how operating systems function.
Some of the directories in this repository contain README.md
files, which provide detailed explanations of the questions and approaches, as well as comparisons between different approaches. These files can be used to gain a comprehensive understanding of the code and its functionality.
To make it easier to access the repository even without an internet connection, you can fork
the entire repository. By forking, you can contribute to the repository by adding more functionality, simplifying the code, adding test units, and more. You can refer to the article Fork a Repo for more details on how to fork a repository.
Don't forget to star
this repository to receive the latest updates. The repository may be updated from time to time to make the code simpler, add comments, add README.md
files, or even add self-written notes to help others understand the code better.
Should you wish to contribute to this repository, feel free to create a pull request. To know more about pull request and how to do it, please refer to the following GitHub Documentations: