Object-oriented approaches with various programming languages,
such as Python and SQL.
Lessons learnt and key outcomes
By the units mentioned below, I learnt to understand the fundamentals of information systems and critically assess their features and learn from case studies involving systems failures to design purpose-built, successful object-oriented systems via UML diagrams. Such charts include sequence, activity, entity relationship, and class diagrams. Thereafter, I learnt to appreciate the object-oriented programming (OOP)-related principles and leveraged them to develop information systems in both Python and SQL, including a doctor’s surgery-related application. Throughout these endeavours, I learnt how to design and develop object-oriented systems to streamline and inform business decisions.
Unit 1: Introduction to Information Systems
During this first unit, I had the chance to appreciate the fundamentals of information systems and contribute to a collaborative discussion on information system failures. In that instance, I wrote and shared a post with my colleagues with focus on a failure of an AI-based system that was meant to guide investment decisions, and shared ideas on how such a failure could have been avoided by design.
Unit 2: Information Systems and their Importance
In this unit, I had the chance to appreciate the importance of information systems in guiding business decisions and streamlining operations; furthermore, I had the chance to review two of my peers' posts on case studies related to information systems' failures and provide them with my constructive feedback.
Unit 3: Fundamentals of Object-Oriented Design
Throughout this unit, I had the opportunity to reflect on the previous two units and lessons learnt, thus providing a summary post on information systems' failures. Furthermore, I learnt the fundamental principles of object-oriented software design and applied them to create a supermarket-related UML class diagram, which can be accessed by clicking 'LEARN MORE' below. I also enjoyed carrying out coding exercises and completing lab challenges on functions, classes, and methods in Python, which enabled me to implement the best practices of object-oriented design I learnt in this unit.
Unit 4: Object-Oriented Development and Python
During this unit, I had the chance to apply OOP-related principles in Python further by carrying out coding exercises on encapsulation, polymorphism, including operator overloading for changing the behaviour of built-in Python functions to suit specific custom purposes, and using private (class) attributes and methods. Building on my Java-related knowledge about getters and setters, I had the opportunity to create them in Python in two ways, i.e., using property decorators and via the ‘property’ built-in function. The codes I developed throughout these exercises can be accessed by clicking 'LEARN MORE' below.
Unit 5: Understanding UML
In this unit, I had the chance to ponder on the lessons learnt from the theory and practice in the two previous units and learnt to appreciate UML and its principles at a deeper level. Thus, I was able to slightly update and improve the supermarket-related UML class diagram, which I had created in unit 3. You can see this updated, latest version by clicking ‘LEARN MORE’ below.
Unit 6: Hands-on with UML
Throughout this unit, I practised further on UML by creating class, sequence, and activity diagrams for a doctor’s surgery, which can be accessed by clicking ‘LEARN MORE’ below. Whilst the class diagram represents all classes in the proposed software system, the sequence diagram illustrates the main steps involved in the process a patient must follow to be able to book an appointment with a doctor. Instead, the activity diagram shows the required checks and operations that a receptionist may perform to book an appointment for a patient.
Unit 7: Database Design
In this unit, I had the opportunity to create a UML 3NF-compliant entity relationship diagram (ERD) on property lettings, which represents the main relevant entities (tables) and their relationships. I also completed an assignment on a software system design to help in managing self-service checkouts at a supermarket, which involves a related UML class diagram, including its classes and their relationships. Click on 'LEARN MORE' below to view this assignment. In this instance, I learnt how to wear the user’s (customer’s) hat and empathise with their pain points to drive the design of the information system based on their needs and operations involved when scanning items at a self-service checkout. This way of thinking enabled me to design the system such that the customer’s experience is as seamless as possible, from the start to the end of this process. Furthermore, I appreciated the lecturer’s feedback and leveraged it as an external reviewer to improve the clarity of the relationships represented on the class diagram, as demonstrated in subsequent units’ artefacts, such as in unit 8.
Unit 8: Hands-on with Database Design
During this unit, I had the chance to research the differences between SQL and NoSQL DBs, and appreciate the advantages of the latter type of DBs when handling unstructured data and Big Data. Thus, I shared this post on my findings with my colleagues as a part of a collaborative discussion, following which I created a 3NF-compliant entity relationship diagram (ERD) representing a (NoSQL) Graph DB data model for a common related use case, i.e., card fraud detection, and the underlying entities ('tables') and their relationships. Click on 'LEARN MORE' below to visualise it.
Unit 9: Implementing Database with SQL
In this unit, I had the chance to appreciate the importance of learning and leveraging best practices to implement databases via SQL. Moreover, I had the chance to review two of my peers' posts on alternatives to SQL and their use cases, and I provided them with my constructive feedback; click 'LEARN MORE' below to read it.
Unit 10: Working with SQL
Throughout this unit, I had the opportunity to reflect on the previous two units and lessons learnt, thus providing a summary post on alternatives to SQL (e.g., Graph DBs) and relevant use cases. Furthermore, I practised developing and executing introductory and advanced SQL queries; you can view the advanced SQL queries I developed by clicking 'LEARN MORE' below. I also enjoyed developing Python codes leveraging advanced OOP-related principles during exercises and coding challenges, which made me appreciate the long-term benefit of adhering to object-oriented design.
Unit 11: Web Development in Python
Throughout this unit, I had the opportunity to learn web development using Flask in Python as per these related exercises. Furthermore, as an assignment, given a UML class diagram, I implemented a Python-based software system focused on leveraging OOP-related design to help in managing a doctor’s surgery’s appointment scheduling’s and prescriptions’ workflows, which can be accessed by clicking 'LEARN MORE' below. In this instance, I practised further on how to understand the patient’s (user’s) journey through the process of booking an appointment and requesting a prescription at a doctor’s surgery. By leveraging the UML class diagram with the expected classes and their relationships, I could appreciate the various interactions and constraints involved in such workflows, and how they can be represented via an object-oriented design and implementation. Thus, I designed the application to leverage OOP-related best practices to streamline the user’s experience and ensure all business and technical requirements were strictly adhered to.
Unit 12: The Future of Information Systems
In this unit, I had the chance to review up-to-date research, debates, and theories on the future of information systems based on peer-reviewed literature and thought leaders in industry. During this review, I found the topic of Artificial Intelligence (AI) and Ethics being of particular importance for ensuring current and future purposeful adoption of AI technologies to benefit society. Thus, I created a blog post on this theme, which you can access by clicking ‘LEARN MORE’ below.
Reflections on OOP, the OOIS module, and own self-development
In this reflective piece, I summarised what I learnt on OOP in the OOIS module, the work I carried out throughout it, and their impact on my personal and professional development. Click ‘LEARN MORE’ below to read it.