Exam Prep

BCS1430

Dr. Ashish Sai

📅 Week 7 Lecture 1

💻 BCS1430.ashish.nl

📍 EPD150 MSM Conference Hall

Important Topics (Relevant for Exam)

Week 1

Lecture 1 Introduction

This is the least like a traditional lecture so I will highlight some important concepts you need to know from this lecture (unlike the Intro to CS, I will not highlight specific slides as everything we have covered is fair game for the exam).

Lecture 1 Introduction

  • Software Complexity (discussion within the heading The Paradox of Simple Rules and Complex Outcomes)

  • Software Development Life cycle

    • Waterfall model
  • Understand the overview of the topics

    • OOA/OOD Definatation
    • UML
    • Design Pattern
    • Code Smells and Refactoring

Note: You do not need to remember anything from the Course Overview section :)

Lecture 2 OOP Recap (Spriha’s Lecture)

  • Objects and Classes (everything that Spriha covered)

  • Abstraction

  • Inheritance

  • Polymorphism

  • Encapsulation

Week 2

Lecture 1 & 2 OO Design Principles

  • Object-Oriented Analysis and Design
  • Quality Attributes
    • Functionality
    • Reliability
    • Usability
    • Efficiency
    • Maintainability
  • Gathering Requirements
    • Functional and Non-Functional Requirements

Lecture 1 & 2 OO Design Principles

  • Use cases (the textual format)
    • MoSCoW Prioritization
  • Analysis
    • Identifying Objects and Classes
    • Identify Relationships and Interactions
    • Different types of relationships
    • Object interaction analysis
      • CRC Card

Lecture 1 & 2 OO Design Principles

  • Design
    • DRY (Don’t Repeat Yourself)
    • KISS (Keep It Simple, Stupid)
    • YAGNI (You Aren’t Gonna Need It)
    • Separation of Concerns
    • Principle of Least Astonishment
    • Law of Demeter
    • GRASP Principles
    • SOLID Principles

Week 3

Lecture 1 Refactoring and Code Smell

  • Refactoring
    • When to refactor
    • Principles of Refactoring

Lecture 1 Refactoring and Code Smell

  • Code Smells
    • Types of Code Smells (you need to know what the code smell is and the associated refactoring technique)
    • Bloaters
      • Long Method
      • Large Class
      • Long Parameter List
      • Primitive Obsession
      • Data Clumps

Lecture 1 Refactoring and Code Smell

  • OO Absuers
    • Switch Statements
    • Alternative Classes with Different Interfaces
  • Change Preventers
    • Divergent Change
  • Dispensables
    • Duplicated Code
    • Comments
  • Couplers
    • Feature Envy
    • Message Chain

Lecture 2 UML

The most important part of UML chapter is being able to convert a piece of code or problem statement into appropirate UML diagrams.

Lecture 2 UML

  • Basics of UML (background and use in OOD/M)

  • Different Types of UML Diagrams

Lecture 2 UML

  • Use Case Diagram (this is different from the use cases you looked at during W2L1)

  • Class Diagrams (you should know everything within Class diagrams from our slides)

  • Sequence Diagram

  • Package Diagram

  • State Diagram

  • Activity Diagram

  • Deployment Diagram

Week 4

Lecture 1 UML

See the topics in Week 3 Lecture 2 UML

Lecture 2 Design Pattern

Everything within Design Pattern is fair game for your final exam. The important thing is that you can understand where to apply which pattern. You should also be able to write small code snippets (similar to the level in lecture slides) in your answers demonstrating that you can implement the choosen design pattern. Additionally, you should also be able to draw appropriate UML diagrams to represent the design choices for each design pattern.

Lecture 2 Design Pattern

  • Factory Method Pattern

  • Abstract Factory Pattern

  • Simple Factory Pattern

  • Singleton Pattern

Week 5

Lecture 1 Design Pattern

  • Decorator Pattern

  • Adapter Design Pattern

  • Facade Pattern

  • Proxy Pattern

Lecture 2 Design Pattern

  • Observer Pattern

  • Strategy Pattern

Questions?