Prepared By: Abdullah Al-Hamidi (24523229)
Course: Fundamentals of Application Development – FAD
During the lab assistance sessions for the FAD course, which focuses on Java programming for desktop applications, the learning activities were designed to introduce students to object-oriented concepts, strengthen their understanding of programming fundamentals, and guide them toward practical implementation.
Meeting 6:
This session focused on Object-Oriented Analysis and Design (OOA-OOD), which plays an important role in the Software Development Life Cycle (SDLC). Students were introduced to the difference between software development processes and programming paradigms. The session emphasized the object-oriented paradigm, which includes stages such as analysis, design, programming, testing, and maintenance.
Students learned how to identify conceptual objects from real-world scenarios, including both tangible and intangible objects. They also studied how to define object attributes, behaviors, and relationships. For example, objects such as students, lecturers, and systems were analyzed in terms of their roles and interactions. This session helped students understand how to break down complex systems into manageable components, which is a critical skill in software development.
The session then progressed to object-oriented design, where students transformed conceptual objects into classes. They learned how to define class attributes and methods, as well as how to model relationships between classes. This stage bridges the gap between abstract analysis and actual program implementation, preparing students for coding in object-oriented programming languages such as Java.
Meeting 8:
In this session the focus shifted toward programming fundamentals, specifically variables and modifiers in Java. Students were introduced to the concept of variables as named storage locations that hold data and can be manipulated during program execution. The session covered three main types of variables: instance variables, class (static) variables, and local variables.
Students learned the differences between these variable types in terms of scope, lifetime, and usage. Instance variables are associated with objects, class variables are shared across all objects of a class, and local variables exist only within specific methods or blocks. Understanding these distinctions is essential for writing efficient and well-structured programs.
Additionally, the session introduced access modifiers, which control the visibility and accessibility of variables and methods. Students explored different access levels such as private, default, and public, and learned how these modifiers affect interaction between classes. This concept is important for implementing encapsulation, a key principle in object-oriented programming.
Meeting 10:
This session was a hands-on practical session in which students applied previously learned concepts through the development of a Library Book Borrowing System. The instructions required them to analyze a real-world problem and design a system with multiple interacting components.
Students identified key actors such as members and librarians, along with their respective roles, including borrowing books, returning books, and managing records. They were required to create use case diagrams to represent system interactions and class diagrams to define the structure of the application.
The assignment also required students to implement the system using Java, organizing their code into multiple classes such as Book, Member, Librarian, and BorrowRecord. They applied object-oriented principles such as encapsulation, use of private attributes, and interaction between objects. This activity allowed students to connect theoretical knowledge with practical programming experience.
During the lab session that I attended (Meeting 10), I assisted students in understanding the assignment requirements, clarifying object-oriented concepts, and guiding them in structuring their code correctly. I also helped students troubleshoot errors and improve their understanding of how different classes interact within the system. My role was to ensure that students were able to apply the concepts from previous sessions effectively in their implementation.
Overall, these sessions provided a structured learning progression, starting from conceptual understanding of object-oriented analysis and design, moving toward programming fundamentals, and finally applying these concepts in a real-world project. This combination of theory and practice helped students develop both their analytical thinking and technical programming skills.