The evaluation of your submission will take into account the following criteria:
SVN (5%)
Your code should be in the right place (lab4/, under the root of the SVN repository, of your Redmine project). Furthermore, the SVN repository should show evidence of the incremental development approach recommended for this course.
Makefile (5%)
Your code should build out of the box, i.e., upon checkout/export, and without any warning by executing make
Execution (60%)
We will test the 4 functions specified in Section 5.
Code (30%)
With respect to the code, we will consider different aspects, including:
code organization
reusable code should be in different source files from code that is not reusable
layering
should try to structure the code that interfaces with the KBC and the mouse in layers with increasing level of abstraction: the higher the layer, less knowledge of the details of the KBC and mouse interfaces should be needed
handling of mouse responses
and appropriate actions in case of failure
We will also look at:
state machine implementation
which should follow the suggestions presented in the lectures.
Needless to say, that we will also evaluate general aspects your code, that we have been evaluating since Lab2:
should always be validated (are the values in range?)
return values of function/kernel calls
should always be checked
global variables
should be used sparingly. Only if you cannot do what you want to do, otherwise.
symbolic constants
(rather than numeric constants) should be used when programming I/O devices
kernel calls
should be called with the appropriate arguments
lab4.c
which should be similar to lab2.c from Lab2, as mentioned in Section 2, so that you can test the functions you have developed without recompiling your code. For maximum credit, you should submit an early version of lab4.c before the first class of the lab, with the code necessary to test the functions planned for the first class.
Your grade will be obtained by applying to your submission's grade a contribution factor which will depend on the information we gather on your contribution during the lab.