Overview

  • Integration: Responsible for overseeing integration of project scripts written by different members.
  • IntelliJ expert : Helps other team members in matters related to IntelliJ.
  • In charge of Command code: In charge of the code that deals with different commands, and their execution based on user input.

Summary of Contributions

Code Contributed

This is the Reposense report of the code contributed

Enhancements Implemented

Basic Template Code Setup

Set up the code for circuit templates, beginning with class Template and LrTemplate (Inductor-Resistor Circuit Template).

Calculate Command for Circuit Template

Added the effective calculation command for the circuit template to be able to calculate and print:

  • effective resistance
  • effective capacitance
  • effective inductance
  • total current
  • total power In the current circuit template chosen.

Interactive Tutorial for Circuit Commands and Initial Summary Command

Added the interactive tutorial feature for circuit commands to the application as well as the initial command summary table. Based on feedback from the PE-D made the tutorial more user-friendly.

Calculate Command and Binary Tree for Boolean Template

Added the effective calculation command for the boolean template to be able to calculate and print the total output of the current logic gate configuration. Also updated classes in model.binarytree and class BooleanTemplate to create a simple visual representation of the boolean logic circuit and added binary tree implementation for the logic circuits.

Unit Testing, Assertions and Logging

Added unit testing for CalculateBooleanCommand, Ui and CalculateCircuitCommand. Added assertions to AddCircuitCommand. Set up logging in Duke.java and added logging to TutorialCircuitCommand, Command, ExitCommand, TemplateCommand and Parser.

PE-D Bugs

Squashed PE-D bugs related to Interactive Tutorial for Circuit Commands and added exception customisation for `model.

User Guide

Added annotated images for calc command sections and bye command.

Developer Guide

Added the section on implementation considerations describing the rationale behind implementing a logic circuit using a binary tree-like data structure. Also, added section describing the BinaryTree<T> class and all its noteworthy public methods employing the use of object and sequence diagrams to aid the reader in understanding how the functions work. Added the glossary of the guide.

Review/Mentoring

  • #18, #36, #52, #56, #86: Suggestions, some minor and some major.
  • #39, #157: Minor suggestions accepted by team-mate. (Co-Authored)

Beyond Project Team

Forum Contribution

Extract: User Guide

5.3 Exiting the Application

This command can be used to exit the application.

Command Format
bye
:exclamation: Warning: You cannot use this command to exit from the app when in interactive tutorial mode. For notes on how to exit tutorial mode, please refer to 5.2 Interactive Tutorial.

The following diagram shows the expected behaviour when using the bye command.

ByeCommand

Extract: Developer Guide

Rationale Behind Using Binary Heap-Like Data Structure

Selecting the appropriate data structure for emulating a logic circuit is an important aspect to consider whilst building such a system. The following table depicts the properties of a Binary Heap-Like structure mapped to the application’s requirements.

Requirements Property of Binary Heap
Connects different gates together A binary-heap, being a type of binary tree, is a connected graph.
Easily stored Can be stored in simple contiguous memory like an Array/ArrayList
Easy to print Nodes stored in an array, rather than a graph-like structure
Inputs can be easily manipulated Manipulating augmented values involves a simple O(1) operation.
Emulate 2-input logic circuit Being a binary tree, each node can have atmost 2 children, thus recreating a 2-Input Logic Gate

Therefore, since the Binary Heap-Like data structure best-fits the requirements for the system, the data structure was selected to implement the logic circuit.

Sequence Diagram Example

The following image is one of the sequence diagrams added to the Developer Guide under the BinaryTree<T> section.

DeveloperGuideSequenceDiagramExample