Assessment item 1 – Collatz Sequence
Value: 10%
Due Date: 29-Mar-2020
Return Date: 21-Apr-2020
Submission method options: Alternative submission method
Write a program to print out Collatz sequence (https://en.wikipedia.org/wiki/ Collatz_conjecture) for a user-supplied number. Prompt the user for a positive integer which will become the first number in the sequence. Next number in the sequence is derived as follows:
• If previous number is odd, the next number is 3 times the previous, plus 1.
• If previous number is even, the next number is half of the previous.
According to Collatz proposition, the sequence ultimately reaches 1 no matter what the starting number is.
Your program should print out all numbers in the sequence down to 1. At the end, display number of iterations it took to arrive at 1, and average of all values in sequence. For prettier output, insert a line break after printing every five numbers, align the numbers in columns and format the average value to two decimal places.
After printing a Collatz sequence, your program should ask the user if they want to print out another sequence. The loop will continue until user decides to quit.
Review the sample run below to clearly understand all requirements.
|
57 |
172 |
86 |
43 |
130 |
|
65 |
196 |
98 |
49 |
148 |
|
74 |
37 |
112 |
56 |
28 |
|
14 |
7 |
22 |
11 |
34 |
|
17 |
52 |
26 |
13 |
40 |
|
20 |
10 |
5 |
16 |
8 |
|
4 |
2 |
1 |
|
|
|
11 34 17 |
52 26 |
|
13 40 20 |
10 5 |
|
16 8 4 |
2 1 |
Your submission must consist of following tasks:
Task 1
Draw a flowchart that presents the steps of the algorithm required to perform the task specified. You can draw the flowcharts with a pen/pencil on a piece of paper and scan it for submission, as long as the handwriting is clear and legible. However, it is strongly recommended to draw flowcharts using a drawing software. Here are links to some free drawing tools
• Draw.io (https://www.draw.io/)
• Lucidchart (https://www.lucidchart.com/pages/usecase/education) with an education account (register using your_csu_id@postoffice.csu.edu.au)
• yEd Graph Editor (https://www.yworks.com/products/yed)
• Pencil Project (https://pencil.evolus.vn/)
Task 2
Implement your algorithm in Python. Comment on your code as necessary to explain it clearly.
Your submission will consist of:
1. Your algorithm through flowchart/s
2. Source code for your Python implementation
This assessment task will work towards assessing the following learning outcome/s:
• be able to analyse the steps involved in a disciplined approach to problem-solving, algorithm development and coding.
• be able to demonstrate and explain elements of good programming style.
• be able to identify, isolate and correct errors; and evaluate the corrections in all phases of the programming process.
• be able to interpret and implement algorithms and program code.
• be able to apply sound program analysis, design, coding, debugging, testing and documentation techniques to simple programming problems.
• be able to write code in an appropriate coding language.
MARKING CRITERIA AND STANDARDS
|
Criteria |
High Distinction |
Distinction |
Credit |
Pass |
Fail |
|
Flowcharts
(3 marks) |
Algorithm design is efficient in terms of time and memory. |
Flowcharts precisely describe the algorithm design.
Flowcharts do not have any unnecessary component. |
Flowcharts have at most one notation error.
Algorithm matches the program code. |
Flowcharts follow the convention, contain at most three notation errors and produce algorithm at a high level. |
Does not meet Pass criteria. |
|
Program functionality and code style
(7 marks) |
Python code contains only necessary statements and variables.
Inputs are validated and incorrect data is handled properly. |
Program meets all specifications.
Output format is correct as required.
Sufficient inline comments are present.
Indentation is consistent throughout. |
Python code produces correct results.
Output has minor formatting errors.
Small number of inline comments.
All variables have meaningful names. |
Functionality is mostly implemented but code may contain minor syntax or logical errors.
Most variables have unambiguous names. |
Python code is produced that does not execute properly. It may contain lot of syntax errors and/ or produce completely incorrect results. |
Additional Note: The standards outlined for each criteria are cumulative. So, for example, to achieve the standard for high distinction your work also needs to meet the standards outlined for Pass, Credit and Distinction levels.
You have to prepare and present all source code, and flowchart/s separately and include them all in a single MS Word file identified by your name. See the ‘Requirements’ section below. The Python source code you write should be saved with a name such as ITC558assignment1YourName.py and then include a copy of it as text in the MS Word file named ITC558assignment1YourName.docx.
You have to save all the parts of the assignment (as described under ‘Presentation’ above) into a single MS Word document identified by your name as outlined in the section on presentation.
Failure to adhere to these requirements may disqualify the submission for marking.
Submit your complete assignment in MS Word format to Turnitin and insert your program source code as an object to your MS Word document (The subject lecturer will explain to you how to insert the object to your MS Word document).