School of Science
COSC1073 Programming 1
Assignment 1
1. Overview
A programmer is able to take fundamental programming concepts and, with the experience they have gained from analysing and solving problems, put them together to solve new problems. In this assignment, you will create a program of your choosing to demonstrate your ability to apply a given set of concepts (that we have covered in class). You may extend your Assignment 1 for Assignment 2 (which will be in a similar format with added requirements), so it is important that you spend some time on planning.
Note: You must not just throw the concepts in to your assignment solution just because they need to be there. You will also need debug your code on your own and document any issues, etc. You are given marks on your ability to fulfill all requirements of this document.
2. Assessment Criteria
This assessment will determine your ability to:
1. Follow coding and behavioral requirements provided in this document.
2. Independently solve a problem by using programming concepts taught over the first several weeks of the course.
3. Write and debug Java code independently.
4. Document code.
5. Ability to provide references where due.
6. Meeting deadlines.
7. Seeking clarification from your supervisor (instructor) when needed via discussion forums.
8. Create a program by recalling concepts taught in class, understanding and applying concepts relevant to solution,
analysing components of the problem, evaluating different approaches.
Assessment Type: Individual assignment; no group work. Submit online via Canvas→Assignments→Assignment 1. Marks awarded for meeting requirements as closely as possible. As in with real-world projects, clarifications/updates to requirements/specification may be made and will be notified via announcements/relevant discussion forums.
Due date: Deadlines will not be advanced but they may be extended. Please check Canvas→Syllabus or via Canvas→Assignments→Assignment 1 for the most up to date information.
As this is a major assignment in which you demonstrate your understanding, a university standard late penalty of 10% per each working day applies for up to 5 working days late, unless special consideration has been granted.
Weighting: 15 marks + 3 bonus marks
Page 1 of 5
3. Academic integrity and plagiarism (standard warning)
Academic integrity is about honest presentation of your academic work. It means acknowledging the work of others while developing your own insights, knowledge and ideas. You should take extreme care that you have:
Acknowledged words, data, diagrams, models, frameworks and/or ideas of others you have quoted (i.e. directly copied), summarised, paraphrased, discussed or mentioned in your assessment through the appropriate referencing methods,
Provided a reference list of the publication details so your reader can locate the source if necessary. This includes material taken from Internet sites.
If you do not acknowledge the sources of your material, you may be accused of plagiarism because you have passed off the work and ideas of another person without appropriate referencing, as if they were your own.
RMIT University treats plagiarism as a very serious offence constituting misconduct. Plagiarism covers a variety of inappropriate behaviours, including:
Failure to properly document a source
Copyright material from the internet or databases
Collusion between students
For further information on our policies and procedures, please refer to the University website.
4. Assessment details
You must meet all of the following code requirements (C1…), documentation requirements (D1…) and miscellaneous requirements (M1…).
4.1) Demonstrate the following code concepts in a small utility/program, in a cohesive and justified manner. Concepts must be used to solve problem(s) related to the overall application (i.e. don’t just throw them in there):
C0. Code presentation – Naming of classes and variables must follow the Java API style of naming. Code must be formatted consistently (Eclipse→Source menu→Format).
C1. User input(s) – Must use Scanner or JOptionPane. You must demonstrate taking numerical inputs and String inputs.
C2. else if statements.
C3. while loops when repetition is needed; no for, do..while, recursion, or any other form of repetition. while-loop condition must fail eventually.
C4. Accessing/modifying values in (standard/plain) arrays using while loops. No ArrayList or similar data structures. Students must demonstrate their ability to manipulate (standard/plain) arrays on their own.
C5. Demonstrating object oriented concepts as per the object oriented design checklist given in this document.
Tip: You do not need to know how to meet all the requirements to get started but think of an application where you can meet C4 and C5 and the rest will likely “fall in to place”.
Some restrictions to guide you to a better solution: Use primitive data types when possible (e.g. double instead of Double, etc.). Do not use break, continue, System.exit(), switch, etc. Do not use return in the middle of methods. Perform some preliminary planning before coding to know where to put which concept (or else you might have an unnecessarily bloated program).
In places where this specification may not tell you how exactly you should implement a certain feature, the programmer (you) need to use your judgment to choose and apply the most appropriate concepts from class materials.
You will also need debug your code on your own and document any unresolved issues, etc. (see section 4.2 below).
Page 2 of 5
4.2) Documentation requirements:
D0. All documentation must be within your .java files and in plain English whenever possible. You must not have any directly copied question/specification text, unused code or anything irrelevant to the final version, within your .java files even if they are inside comments. The submitted version should be a final product.
D1. Write comments next to important variables and explain their intended purpose in the program. Explain what other options would have been possible (e.g. with variables, discuss which data type you used and what else might have been possible/impossible.) Do not assume that the reader can figure these out.
D2. For every block of code (e.g. near public static void main, if-statements, etc. where you can have { }), write comments explaining its intentions and purpose in plain English. Discuss any possible alternative approaches that would have been possible (e.g. whether something could have been done before another, etc.). Do not assume that the reader can figure these out. The comment for the ‘public static void main’ should explain the overall idea of the program and any important things to note when running it.
D3. If you have any unresolved bugs, you must document these in the approximate locations they originate within your code. If you do not have bugs, you must explicitly say that there are none. Note: Being able to recognise bugs is a good thing.
4.3) Miscellaneous requirements:
M1. You must not use the example programs and program designs given in the class demonstrations. Choosing an application to develop is a part of the assessment.
M2. Always choose to use/demonstrate concepts taught in class over concepts shown in external materials. The list of things that students must not do is an endless one; in general, doing anything more than what is asked for is dangerous as the simplest solution that meets the requirements is the correct solution (Occam’s razor principle). In general, if you have not been asked to use something, it means you should avoid it. Ask via relevant discussion forum when in doubt.
M3. Code must be valid, runnable Java. If your code has one or more red dots in Eclipse, a 50% penalty will apply to the entire submission.
4.4) Bonus requirements (bonus marks for this assignment are capped at 3)
You can do either or both of the requirements below but to obtain any bonus marks, you must meet all requirements of the non-bonus/standard part.
B1. Submit your final version of the assignment 1 week before the deadline for +1 bonus marks or 2 weeks before the deadline for +2 bonus marks or 3 weeks before the deadline for +3 bonus marks.
B2. Reading from text files using BufferedReader+FileReader classes and writing to text files using BufferedWriter+FileWriter classes (up to +2 bonus marks). Permitted file extensions are .txt and .csv and these files must be in your default current folder. E.g. If your file is gayansData.csv your code should refer to it as “gayansData.csv” rather than as “c:/blah/gayansData.csv”, “/users/me/gayansData.csv”, etc. so that it works on anyone’s computer). In Eclipse, this is your project’s folder (if you go in to bin or src, you’ve gone too far). Also, “gayansData” or “yournamesData” is a terrible name for a data file, most of the time. Have a look at Eclipse app installation folders for file name suggestions.
Note: The total mark for the non-exam component is capped at 50 marks; the exam will be 50 marks. For a full break-down, see Canvas→Home→Syllabus.
Page 3 of 5
5. Referencing guidelines
What: This is an individual assignment and all submitted contents must be your own. If you have used sources of information other than the contents directly under Canvas→Modules, you must give acknowledge the sources and give references using IEEE referencing style.
Where: Add a code comment near the work to be referenced and include the reference in the IEEE style. How: To generate a valid IEEE style reference, please use the citethisforme tool if unfamiliar with this style.
6. Submission format
Submit two types of files: .java files and a screenshot showing the output of your final program via Canvas→Assignments→Assignment 1. It is the responsibility of the student to correctly submit their files. Please verify that your submission is correctly submitted by downloading what you have submitted to see if the files include the correct contents. Note: If doing Bonus B2 option, you will also need to submit some sample data files in plain text (.txt) and/or text CSV (.csv).
7. Assessment declaration
When you submit work electronically, you agree to the assessment declaration.
8. Assessment criteria (marks allocation)
For C2:
C2 requirement + relevant D requirements + relevant M requirements = 2 marks. For every other C requirement:
C requirement + relevant D requirements + relevant M requirements = 1 mark. Deductions (applied on mark obtained above):
Code with one or more red dots will receive a 50% penalty.
When clients state their requirements, it is normal that the programmer (you) might need further clarification. If you are uncertain, consider Gayan as the client and ask via the Discussion forums in a general way.
Page 4 of 5
9. Object Oriented Design Checklist (relevant to Code requirement C5)
The following Object Oriented Design constraints must be followed for Intro To Programming. Please also refer to the MusicLibrary+Song code shown in lecture 1 for further examples. Your code must be structurally different to the MusicLibrary+Song example code shown (i.e. your program must be more than just different identifier names).
1. Must have multiple classes and each class must be connected to one or more classes in some way. Each class must be in its own .java file.
Tip: Imagine a “snapshot” of your finished application; What components would it have (objects)? Which of these components would be of the same type (from the same class)? E.g. MusicLibrary is a class and we have one ml object. All song objects are created from the Song class.
2. Each class must have one constructor and it must take one or more relevant parameters. The constructor parameter(s) must provide the minimum information required for creating an object of that class.
E.g. A Song object cannot be created without a ‘title’ and a ‘filename’.
3. Every method must have exactly one return statement.
4. All classes must have object member variables and they must be explicitly private and non-static. There should be no = (equals) signs where member variables are declared. All member variables must be explicitly initialised in the constructor. Whenever a method refers to a member variable, it should use this. (i.e. “this dot”, e.g. this.name).
5. One more more object members (variables) must be an array and the data type of this array must be a class that you have created.
E.g. The array ‘songList’ of the Song class type in the MusicLibrary connects the Song class to the MusicLibrary.
6. One or more classes must have get methods (accessors with return values). One or more classes must have set methods (mutators with parameters).
E.g. ‘getTitle’ and ‘setTitle’ in Song class.
7. There should be only one main method for the entire program. The main method should have only one line to create an object of the main application class. All other methods must be explicitly public and not static.
Page 5 of 5