Course Code: CSCI 2109
Academic Term: First Semester, 2025–2026
Institution: The Islamic University of Gaza
Faculty: Faculty of Information Technology
Department: Computer Science
Instructor: Maryam Refaa Skaik
This repository contains the final consolidated archive for the Data Structures and Algorithms — Laboratory course delivered at The Islamic University of Gaza.
It provides a comprehensive academic summary and index, showcasing the full scope of laboratory instruction, practical implementations, and algorithmic concepts covered throughout the semester. The repository is designed for professional sharing, curriculum reference, and as a key part of my academic portfolio.
This work serves as a reflection of real-world, hands-on experience in teaching fundamental data structures and algorithms, with a focus on translating theoretical concepts into practical, maintainable, and efficient Java code.
The Data Structures and Algorithms — Laboratory course offered structured, hands-on laboratory training in the implementation and analysis of core data structures and algorithms using Java. The course emphasized:
- Practical implementation of data structures and algorithms
- Performance analysis through time and space complexities
- Recursive problem-solving and algorithm design
- Writing clean, maintainable, object-oriented Java code
This course archive includes all materials covered in the semester, reflecting completed instructional content.
The laboratory sequence explored the following key topics:
- Java Review and object-oriented programming principles
- Arrays and fundamental data organization techniques
- Linked Data Structures (Singly Linked Lists, Doubly Linked Lists, Circular Linked Lists)
- Recursion and recursive problem-solving techniques
- Stacks and Queues implementations
- Tree-based Data Structures
- Binary Search Trees (BST)
- Sorting and Selection Algorithms
- Algorithmic Complexity Analysis
Each topic was developed and maintained in a dedicated repository during the semester. Below are the links to the repositories containing all relevant instructional and practical materials:
-
Java & OOP Review
→java-ds-lab-refresher -
Arrays
→java-ds-lab-arrays -
Linked Lists (SLL, DLL, CLL)
→java-ds-lab-linkedlists -
Recursion
→java-ds-lab-recursion
-
Stacks and Queues
→java-ds-lab-stack-queue -
Binary Trees
→java-ds-lab-binary-trees -
Binary Search Trees (BST)
→java-ds-lab-bst
- Sorting and Selection Algorithms
→java-ds-lab-sorting
Upon completing this course, students were able to:
- Implement fundamental data structures from first principles in Java
- Apply recursion effectively to solve algorithmic challenges
- Evaluate and compare data structures based on performance
- Analyze time and space complexity of operations
- Implement sorting and selection algorithms for real-world problems
- Produce maintainable, object-oriented Java code
These skills provide a strong foundation for future work in software development, data science, and system optimization.
- The course followed a progressive laboratory model, where each topic built upon the previous one, ensuring a deep and comprehensive understanding of data structures and algorithms.
- Emphasis was placed on hands-on implementation, with a focus on coding practices and performance analysis.
- Assignments and solutions are stored within the individual topic repositories to maintain focus on the implementation process and provide structured learning paths.
This repository is intended for:
- Computer Science instructors and teaching assistants
- Students reviewing core data structures and algorithms
- Academic reviewers and curriculum designers
- Software engineers and professionals seeking to showcase or improve their knowledge in foundational algorithms
This material is provided for educational and reference purposes only.
Any reuse or adaptation of this material should maintain academic attribution and integrity in line with institutional guidelines.
This course repository demonstrates my ability to design and deliver high-impact, hands-on education in core computer science topics, ensuring students gain both practical coding experience and a deep understanding of algorithmic thinking. It’s an excellent example of professional course design that blends theory with practice.
I encourage academic peers, students, and industry professionals to explore this repository, and I’m always open to discussions about curriculum improvement, teaching techniques, and innovative problem-solving approaches.
This repository is intended to serve as a reference for both academic and professional audiences.
For inquiries, collaboration, or curriculum-related discussions, please feel free to reach out.
Connect with me on LinkedIn: in/maryam-skaik