TIC4001: SE Practicum I

website·Indexed 29 days ago

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

Course materials for SE Practicum I, featuring a weekly schedule and an adapted software engineering book. Topics include code quality, software testing, modeling with UML Class Diagrams, SDLC process models, design patterns, and a transition guide from C++ to Java.

Tokens
129.9K
Snippets
356
Records
993
Agent score
73%

What's inside TIC4001

  1. Overview of the Java Collections Framework

    The Java Collections Framework provides a set of interfaces and classes for storing and manipulating groups of objects. Key interfaces include:

    • Collection: The root interface for all collections. It defines basic operations for groups of objects.
    • Set: A collection that cannot contain duplicate elements (models a mathematical set).
    • List: An ordered collection (sequence) that allows duplicate elements and provides index-based access.
    • Queue: A collection designed for holding elements prior to processing, offering specific insertion and extraction operations.
    • Map: An object that maps unique keys to values. Each key can map to at most one value.
  2. Overview of the 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. The process consists of three main sessions: a Practice session early in the semester, a Midterm session (approximately two weeks into the tP coding phase), and a Final session at the end of the tP.
  3. Overview of Project Duke

    Project Duke is an educational software project designed to teach incremental development using Java and Software Engineering techniques. The goal is to build a Personal Assistant Chatbot named 'Duke' that helps users keep track of tasks. The project is structured into 'Levels' (sequential feature additions) and 'Extensions' (categorized enhancements for practicing specific techniques or adding entity types).
  4. Introduction to 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 separate 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 JavaScript and Python support functional, procedural, and OOP styles.
  5. Overview of TIC4001 Software Engineering Practicum I

    TIC4001 is a Software Engineering practicum module focused on 'greenfield' projects (starting from scratch). It builds upon the foundations of TIC2002 (Introduction to Software Engineering) and TIC3001 (Software Requirements Analysis and Design) to provide hands-on experience with systematic SE tools, techniques, and processes. The module serves as a prerequisite for TIC4002, which focuses on 'brownfield' projects (working with existing code bases).
  6. Overview of the Software Development Life Cycle (SDLC)

    The Software Development Life Cycle (SDLC) is a collection of stages that software development progresses through, typically including requirements, analysis, design, implementation, and testing. SDLC process models (or software process models) provide a roadmap for managing development by defining the aims of each stage, the required artifacts or outcomes, and the workflow relationship between stages.
  7. Overview of the Individual Project (iP) for TIC4001

    The Individual Project (iP) is a 6-week assignment designed to refresh and build foundational skills in Java, Object-Oriented Programming (OOP), IDE usage, Git/GitHub, project automation tools, and code quality. It is based on a generic project called 'Project Duke'. The project simulates real-world development by introducing volatile requirements that may be released incrementally or vary between students.
  8. Overview of 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, which separates data (static/immutable) from operations (functions), 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 JavaScript and Python support functional, procedural, and OOP paradigms.
  9. Overview of 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, which separates data from the functions that operate on it, 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 JavaScript and Python support functional, procedural, and OOP paradigms.
  10. Introduction to UML Sequence Diagrams

    Sequence diagrams model the interactions between various entities in a system for a specific scenario. They are used to verify that internal interactions provide expected outcomes, such as modeling how system components respond to a user action or how objects within a component respond to a method call from another component.
  11. Understand the components and purpose of an Integrated Development Environment (IDE)

    An Integrated Development Environment (IDE) is a tool that consolidates most software development tasks into a single application. A standard IDE typically includes the following components:

    • Source Code Editor: Provides syntax coloring, auto-completion, code navigation, error highlighting, and snippet generation.
    • Build Automation: Includes compilers and/or interpreters to facilitate compilation, linking, running, and deployment.
    • Debugger: Allows developers to execute programs step-by-step to observe run-time behavior and locate bugs.
    • Auxiliary Tools: May include support for automated testing, UI component drag-and-drop construction, version management, platform simulation, and modeling.

    Common examples include IntelliJ IDEA and Eclipse (Java), Visual Studio (C#, C++), Xcode (Swift), and PyCharm (Python).

  12. Understand the purpose and use of software models

    A model is an abstraction that provides a simplified view of a complex entity by capturing only selected aspects. In software development, models serve three primary purposes:

    1. Analysis: Understanding the problem domain or planning the software architecture.
    2. Communication: Acting as a visual aid for stakeholders (e.g., using architecture diagrams for developers or use case diagrams for customers).
    3. Blueprinting: Providing instructions for implementation, such as a senior developer providing a class diagram for a junior programmer to implement, or using Model Driven Development tools to generate code automatically.