Welcome to the WIA1002 (Data Structure) Github repository, which contains a range of study materials for the course.
WIA1002 is offered by the Faculty of Computer Science and Information Technology (FCSIT) at the Universiti Malaya (UM) in Malaysia. In this repository, you will find notes, questions, source code, and explanations for the Tutorials and Labs (UM-WIX1002) that accompany the course.
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.
In this course, we will be exploring data structures and algorithms using the Java
programming language.
Throughout the course, we will learn about fundamental data structures such as LinkedList
, Stack
, Queue
, BinarySearchTree
, and Graph
, as well as popular algorithms like Bubble Sort
, Insertion Sort
, Selection Sort
, and Merge sort
. To enhance your understanding of these topics, you will also be required to implement basic versions of these data structures and algorithms.
This course is ideal for freshmen who are taking the WIA1002 course or WIA1002 learners who are looking to improve their programming skills. By the end of this course, you will have a solid understanding of data structures and algorithms, which will help you excel in your future programming endeavors.
This repository contains study materials for the WIA1002 course, including notes, questions, source code, and explanations for Tutorials/Labs (UM-WIX1002). It is worth noting that this repository contains two versions of the Lab: Version1 and Version2.
Version1 is the main Lab used throughout the course. It requires students to implement data structures and test them to ensure they function correctly. Version2 is an older version of the Lab, but it is more challenging and provides a deeper understanding of intriguing and typical algorithmic puzzles such as N Queen Problem, Maze Problem, and well-known algorithms including Quick Sort
, Merge Sort
, and Heap Sort
. In addition, we will explore the shortest path algorithm in Graph, such as Bellman-Ford Algorithm
, Dijkstra's Algorithm
, and A* algorithm
.
In a nutshell, Version1 is ideal for building a solid foundation of data structures, while Version2 is suitable for those who want to learn more about data structures and algorithms. Version2 is also a great choice for those who are interested in competitive programming.
Some directories in this repository may contain external JAR (Java Archive) files to provide full functionality of the code. You may download them and add them to the class path of your Integrated Development Environment (IDE). Please refer to the following documentation for more information:
- How to Add External JAR File to an IntelliJ IDEA Project?
- How to put a jar in classpath in Eclipse?
- How to add jar to Netbeans
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: