AddressBook Level 3 (AB3)

website·Indexed 29 days ago

https://nus-cs2103-ay2122s1.github.io/website/schedule/

A desktop address book application used for teaching Software Engineering. The documentation includes a User Guide for managing contacts via a command line, a Developer Guide covering UI, Logic, Model, and Storage components, and tutorials on implementing new commands, debugging, and refactoring.

Tokens
171.3K
Snippets
403
Records
1.3K
Agent score
71%

What's inside AddressBook Level 3

  1. Introduction to Object-Oriented Programming (OOP) paradigm

    Object-Oriented Programming (OOP) is a programming paradigm that guides how programmers analyze problems and structure solutions. Unlike procedural programming, which separates data (static/immutable) from operations (functions), OOP restructures this by grouping operations and data into modular units called objects. In OOP, objects and their interactions serve as the basic elements of design, allowing them to be combined into structured networks to form a complete program.
  2. Overview of CS2103/T Software Engineering Course

    CS2103/T is an introductory Software Engineering module that balances theoretical knowledge and practical skills. The course employs an iterative approach, revisiting core SE aspects (requirements, design, testing, and project management) multiple times with increasing depth, rather than following a sequential order. It covers both 'green-field' projects (starting from scratch) and 'brown-field' projects (working within an existing codebase).
  3. Introduction to Software Engineering and its Challenges

    Software Engineering is defined by the IEEE Standard Glossary of Software Engineering Terminology as the application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software.

    Practitioners face a balance of creative rewards and inherent challenges:

    • Rewards: The joy of creating original designs, building useful tools for others, solving complex puzzle-like problems, continuous learning, and working in a flexible, tractable medium.
    • Challenges: The requirement for absolute precision (perfection in syntax/logic), lack of control over objectives and resources, dependency on poorly documented or maldesigned third-party code, the tedious nature of bug-hunting, the diminishing returns of debugging (linear convergence), and the risk of product obsolescence during development.
  4. Overview of CS2103/T Software Engineering Module

    CS2103/T is an introductory Software Engineering module that balances theoretical knowledge and practical skills. The course employs an iterative approach, revisiting core SE topics (requirements, design, testing, and project management) multiple times with increasing depth, rather than following a sequential order. The curriculum includes both 'green-field' projects (starting from scratch) and 'brown-field' projects (working within an existing codebase).
  5. Introduction to Use Cases for Requirements Specification

    A Use Case is a description of a set of sequences of actions, including variants, that a system performs to yield an observable result of value to an actor. Use cases are used to capture the functional requirements of a system by describing the interaction between a user (actor) and the system for a specific functionality. UML use case diagrams can be used to visually illustrate these interactions, typically representing use cases as ovals and actors as stick figures.
  6. Introduction to the Object-Oriented Programming (OOP) paradigm

    Object-Oriented Programming (OOP) is a programming paradigm that structures solutions by grouping operations and data into modular units called objects. Unlike procedural programming (e.g., C), which divides the world into static data and functions that operate on that data, OOP treats objects and their interactions as the basic elements of design. Many modern languages support multiple paradigms; for example, Java is primarily OOP but supports limited functional programming, while Python and JavaScript support functional, procedural, and OOP styles.
  7. Understand the role of Software Platforms

    A software platform provides a runtime environment for applications. While platforms often bundle libraries, tools, and frameworks, their defining characteristic is the presence of a runtime environment. Platforms allow developers to use common infrastructure services (e.g., connection pooling, load balancing, authentication, and transaction management) without implementing them from scratch.

    Examples include:

    • Operating Systems: Windows (for desktop) and iOS (for mobile).
    • Enterprise Platforms: JavaEE (uses the Java Virtual Machine/JVM) and .NET (uses the Common Language Runtime/CLR).