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.
What's inside AddressBook Level 3
- 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.
Introduction to Debugging
Debugging is the process of discovering defects within a program to identify and fix errors in the code's logic or implementation.Overview of Software Development Life Cycle (SDLC) Process Models
The Software Development Life Cycle (SDLC) consists of stages including requirements, analysis, design, implementation, and testing. SDLC process models provide a 'roadmap' for developers to manage these efforts, defining the aims of each stage, the required artifacts/outcomes, and the workflow between stages.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).Overview of Peer Evaluation process using TEAMMATES
The module uses the TEAMMATES tool for multiple rounds of peer evaluations. Submitting these evaluations is compulsory; failure to do so routinely can result in the loss of participation marks.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.
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).Overview of Project Duke
Project Duke is an educational software project focused on building a Personal Assistant Chatbot incrementally using Java and Software Engineering (SE) techniques. The goal is to create a tool that helps users keep track of various tasks through a command-line interface.Overview of common software architectural styles
Beyond N-tier and Client-Server architectures, other well-known architectural styles include:
- Pipes-and-filters architecture
- Broker architecture
- Peer-to-peer (P2P) architecture
- Message-oriented (or message-driven) architecture
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.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.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).