CITS2002 Systems Programming  
 

Unit home

Final exam

help2002

Lecture & Workshop
recordings on LMS

Schedule

FAQ

C textbooks

OS textbooks

Information resources


Extra reading

Past projects

Recent feedback


Working effectively

Look after yourself!

Project 2 Marking Rubric - see also project description and clarifications

The project will be marked out of 50, and contribute 25% to your assessment in the unit.

25 of the possible 50 marks will come from assessing your design and programming style, the manual marking, which will assess:

  • Sufficient, clear and descriptive comments; consistent layout and regular indentation of code; choice of meaningful identifier names - all using our sample laboratory, workshop, and project solutions as seminal examples.

  • A Makefile, employing variable definitions and automatic variables.

  • Code in multiple files - ideally, 5 or more C11 source files, not simply a single mysync.h and mysync.c file. Global function prototypes in header file(s), minimal use of global variables.

  • Processing of command-line options, preferably with getopt(). Detects and reports invalid arguments, and exits with an error message and terminates with failure. No significant work performed in the main() function.

  • Typedefs, and choice of primary data-structures to store filenames and their locations. A dynamic array/vector is sufficient, although a hashtable is greatly preferred. Ideally, each filename and its location is only stored once in structures. No fixed constants limiting the number of files (no large fixed-sized arrays, all allocated dynamically).

  • All calls to system calls, and standard C11 functions must be checked for errors. The detection of any problems with opening and reading directories, copying files, and memory allocation, should result in an error message being printed, and the program immediately terminating.



25 of the possible 50 marks will come from assessing the correctness of your solution, the automated marking. Automated tests will include -

  • Checking for valid and invalid command-line options.

  • Checking of directory names passed on the command-line.

  • Synchronisation of a single file from one directory to another directory.

  • Synchronisation of multiple files between two directories.

  • Synchronisation of multiple files between two directories, providing the -a option.

  • Synchronisation of multiple files between two directories, providing the -i pattern option.

  • Synchronisation of multiple files between two directories, providing the -o pattern option.

  • Synchronisation of multiple files between two directories, providing the -i pattern and -o pattern options.

  • Synchronisation of multiple files between three or more directories.

  • Synchronisation of multiple files between two directories, providing the -r option.

  • Synchronisation of multiple files between three or more directories, providing the -r option.

  • Synchronisation of multiple files, their modification times and file permissions, providing the -p option.

  • Reporting of 'what would happen' when synchronising multiple files between three or more directories, but providing the -n option to disable file-copying.


Good luck!

Chris McDonald.
October 2023.


The University of Western Australia

Computer Science and Software Engineering

CRICOS Code: 00126G
Presented by [email protected]