For homework II, you have to compose a program and write a report on it.
This is a part of your final grade!
Homework 2 variants will be given out personally in the lab!
- Title page
- Declaration of originality
- Description of the program
- Program flow
- How are special cases handled?
- Function descriptions (purpose, parameters and requirements for the values passed, returns, side effects).
- Structure descriptions
- Input and output file structure description (not contents!)
- Screenshots of the running program in different situations
- List of references. Things you got from books, the internet and your course mate or friend.
- Actions must be repeatable without exiting the program! (use menu structure)
- Input data comes from text files. You can choose separators yourself (CSV, TSV, spaces, line changes etc).
- The data in the files is connected by keys (think of relational databases). There’s a one to many relationship between the files (one student can declare multiple subjects)
- The first data file (with only the PK) has to have at least 10 entries, second one (with both PK, FK) 15.
- The results of actions are displayed on the screen. Each action should evoke a write to file. This includes non-visible actions like reading files etc- the file should be written in the style of a log file (storing queries, actions).
- There’s error proofing (files, memory, etc.)
- If there are any dates, they should be stored in a substructure (nested structure)
- You must use dynamic memory management instead of fixed arrays (except on buffers). Program must work with a dynamic amount of records – if we add or remove records from the files, it should still work.
- Text fields within the structures must also be done dynamically (instead of char, use char*)
- Structures used should be appropriate for the given task. You can add members to the structure when needed.
- No memory leaks, wasted or unfreed resources. Use valgrind to check.
- If the task requires you to modify, add or delete data, the modifications must be written to the data files used by the program. If the program is run again, the updated data must be read in!
- Careful with the file naming! Make sure that the files you are submitting have the same name that you have in code as the data files.
Just a reminder from earlier
- The code is divided between meaningful functions..
If you’ve written a snippet of code with the same purpose twice, you should think about creating a function for that as well.
- Data must be passed to the functions using parameters only. You can’t use global variables!
- Coding style requirements are met, including
- No magical numbers
- Only required libraries
- Indentation, spaces, comments where necessary
You can always come and ask us if we think your work follows our requirements.
The second homework is valued at 15p.
To get the highest possible score, You have to follow the coding style and complete the requirements given.
A complete homework must be submitted no later than 26.04.2020
Every week after the deadline removes 1p from the maximum possible score. This countdown is halted at 10p, meaning if you submit 7 weeks late, you can still get up to 10p.
We will only accept Your homework until the end of the contact learning period (15.05.2020). Past that, submitting your homework will not be possible.
If we have questions about the submitted homework or are not sure about the original author of this work, we will grade this with 0p. In this case, the work must be defended.
Bonus points / advanced
It is possible to earn 2 bonus points from the task. The bonus points will be included in the grade calculation.
Late weeks don’t apply for solutions that fulfill the bonus points requirements.
To get the bonus points, the following requirements must also be met in addition to the basic ones:
- Error proofing
- Log must include accurate timestamps
- Good structure, optimal use of code, fast algorithms
- No memory leaks (http://valgrind.org/). Include proof in the report as copied text from the valgrind output, use a mono-spaced font!
- Program must be able to work with text fields containing multiple words
- Files must use a comma or a semicolon as a separator between fields (CSV: https://en.wikipedia.org/wiki/Comma-separated_values)
Submitting Your work
- Documentation (pdf)
- All of the code files
- Data files required to run the program
Submitting is electronic only. Follow the file naming convention or we might miss your work or mix it up with someone else’s!
Naming schema: HW2_<firstname>_<lastname>_<studentcode>
File names: HW2_John_Smith_123456IASB
Submitting is done using moodle: moodle.hitsa.ee/course/view.php?id=13128