Visualization: Software Development- Programming Fundamentals Assignment Task: The assignment is designed to test multiple competencies required for successful software development. Therefore the assessment evaluates all skills required not just the code itself. You will be assessed on your ability to comply with requirements as set out in this document which include developing capabilities in: 1. Programming Style: Adherence to a standard naming convention, documentation of your program and consistency in your style. 2. Refactoring Design and Code: Refining your code making it easier to maintain and understand. 3. Incorporating other Parts of Software Development Lifecycle: Incorporating practices such as test case development covering various configurations and test execution. 4. Algorithm Development: Demonstrate your ability to come up with an efficient strategy. The code should closely resemble your logical solution. Progress Marks and Submission There will be two progress assessment points during the semester each carrying 5 marks. Each assessment will be conducted during your scheduled lab session. You are expected to attend your regular scheduled lab for the progress assessments. Your final submission through WebLearn should include your code, reports and test cases and test results highlighting the number of moves for specific configurations (to be released later). Assessment Task Progress Assessment 1 Part A/B Explanation/Demo (strategy/code/demo) Progress Assessment 2 Part C/D Explanation/Demo (strategy/code/demo) Code Submission (to be assessed on) • Correctness / Test cases & results • Code quality / Documentation • Modularity / Use of methods & arguments • Clear Logic / Strategy explained • Reflection / Lessons learnt Assignment Overview ( What you need to do) Write a program to move the stack of blocks from source to target with specific order and constraints (Some of these constraints will be automatically imposed by the Robot object).Movement of Robot arms, picking and dropping are controlled using the Robot methods described below. The methods of Robot class: up(), down(), extend(), contract(), raise(), lower(), pick(), drop(),speedUp(), slowDown() 1. The height (h) of the main arm can be changed by 1 unit using methods up() and down(). The height (h) of the this arm must lie in the range 2 to 14, and is initially set to 2. 2. The second arm can be moved horizontally by 1 unit using extend() or contract(). The width (w) must lie in the range 1 to 10, and is initially set to 1. 3. The depth (d) of the third arm can be changed by 1 unit using lower() or raise(). The depth cannot be less than 0 but must be less than the height of the main arm ( d 4. The target column for all blocks is in column 1 while source is in column 10. The column 9 can be used as a temporary location for parts D and E. 5. An item can be picked from the top of the stack of blocks at source using pick().