Assignments
All assignments must be done individually, unless the assignment is explicitly designated as a group assignment. All members of a group receive the same grade (no exceptions). Only one member of a group submits the assignment. The instructors/staff do not arbitrate group disputes; group members must handle any and all problems. A group assignment may be done individually, but it must be understood that the amount of work is significantly greater and no extra marks are given for this additional work.
Please review these guidelines before starting each assignment. You will lose marks if these guidelines are not followed.
| # | % | Topics (tentative) | Assignment Material | Due Date | 
|---|---|---|---|---|
| 1 | 7 | exceptions, semi-coroutines | assignment, Makefile, q1 code, q2 code, q3 code, q3 executable | |
| 2 | 7 | semi/full-coroutines, tasks | assignment, Makefile, q1 code, q1 executable, q2 code q2 executable, q3 code | |
| Family Day, Feb 20 Reading Week Feb 21-24 (Tue-Fri) | ||||
| 3 | 7 | synchronization, mutual exclusion, simple locks | assignment,
		Makefile,
		q1 code,
		q2 code,
		q2 executables (TYPE=char MIMPL=CFOR,
		TYPE=int MIMPL=ACTOR, 
		TYPE=int MIMPL=TASK),
		BargingCheck.h,
		q3 code,
		q3 executables (BIMPL=NOBUSY BCHECK=NOBARGINGCHECK,
		BIMPL=BUSY BCHECK=NOBARGINGCHECK) Note that the testing script relies upon the presence of files q2mergesort.h and q3buffer.h and will fail if they are not present! | |
| 4 | 7 | complex locks | assignment,
		Makefile,
		q1 code,
		q2 code,
		BargingCheck.h,
		q3 code,
		q3 executables (VIMPL=MC, 
		VIMPL=SEM, 
		VIMPL=BAR) Note that the testing script relies upon the presence of the file q3tallyVotes.h and will fail if it is not present! | |
| 5 | 7 | monitors, tasks | assignment,
		BargingCheck.h,
		q1 code,
		q1 executables (VIMPL=EXT, 
		VIMPL=INT, 
		VIMPL=INTB, 
		VIMPL=AUTO,
		VIMPL=TASK) Note that the testing script relies upon the presence of the file q1tallyVotes.h and will fail if it is not present! | |
| 6 | 15 | administrator, future (groups of 2) | assignment, README, lrt starter code, parse configuration file (config.h, config.o), sample lrt.config, PImpl starter code ZIP, lrt executable. | |
Download
To download files for an assignment use the following command, where D is an assignment number 1-6:
wget -m -np -nd -R 'index.html*' -P D https://student.cs.uwaterloo.ca/~cs343/assignments/D/
Submissions
	Assignment submission is electronic.  Use the
	submit command to
	electronically copy assignment files to the course account:
  
submit cs343 N directory # N is assignment number 1..6, directory contains the assignment, e.g., a1
  - Submit rejects all text (*txt) files > 500 lines in length, where lines > 120 characters are folded into multiple lines.
- txt/- docfiles must be plain text (ASCII). No "word" documents.
- Only one test-documentation file per question.
- Submit early and often (no penalty)!
- Use Compilation Request to ensure your makefileis set up correctly.
- Use makefor executing allMakefilefiles.
- Use g++/u++for compiling programs.
Submission Information
	Read the output from submit carefully, as error messages may appear at the top. Verify files submitted against
	expected files.  Check time stamps and sizes to be sure you have submitted the correct versions.
  
Compilation Request
	After submitting an assignment, you can verify if your Makefile is correctly formed.  Select the assignment number
	and press the button to start the request.
  
This facility checks you have:
- submitted a makefileorMakefile
- submitted all required pieces of code
- makefileworks properly with GNU- make
- no compilation errors
Tests are run and results emailed to the specified userid every 5 minutes. Delays can occur if email is backlogged or if the system is heavily loaded.
Lates
- Assignments are due on the due-date at the time specified on the top of the assignment (usually 22:00).
- 3 assignments may be up to 2 days late; except for the last assignment if due on the last day of classes.
- One additional late was provided to all students to account for short-term 48-hour absences. No additional accommodations will be made for this type of absences.
- Under no circumstances will the group assignment be excused or extended as a result of illness or declared absence. As long as the assignment is handed in, it will be marked as is. The only circumstance under which a group assignment may not be handed in is if ALL group members declare an absence (a special case of this would be that you did the assignment yourself). In that case, the accommodation is an INC in the course, and you will have to do the group assignment in a future term. Note that INCs are never automatic, even in this situation. An INC is only awarded if, based on your performance in the rest of the term (including, in this case, the final exam), the instructor feels you had a strong probability of passing the course.
- To determine the number of lates used/available press the button. If you are currently using a late, it is not included in the count.
- 
	  Use command-line argument -tardyor-tto submit a late assignment:submit cs343 N -tardy dirwhere N=1..6
- An assignment not handed in receives a mark of 0, unless there is a documented reason.
- A copy of the documented reason must be given to the Instructional Support Coordinator.
- The weight of the missing assignment is distributed across the other assignments.
Marking
- An assignment is marked on the following criteria:
	  - correctness
- documentation
- testing (sometimes optional)
- style and efficiency
 
- Note, a correctly-working program is only one component of the assignment mark.
- Documentation is very important.
- If you do not hand in testing documentation, testing gets 0.
- 
	  If your makefiledoes not work, or code does not compile, the correctness mark is zero.
- If you complete < 50% of the code, other marks are scaled appropriately.
- Use only relative paths in includes, not absolute (unless specified otherwise in assignment).
MOSS
MOSS (Measure of Software Similarities) is used to compare student assignments to ensure academic integrity.
Discipline cases involving any automated or partially automated marking system such as Marmoset and MarkUs include, but are not limited to, printing or returning values in order to match expected test results rather than making an actual reasonable attempt to solve the problem as required in the assignment question specification.
Returning and Remarking
- Assignment grades and comments are returned through the MarkUs System.
- You have one week after an assignment is returned to email a mark appeal to the management IA, who will coordinate with the grading TA. The mark appeal must clearly state what you want remarked and the problem in grading. Note, the entire assignment may be remarked, which can result in a lower grade than what was originally received. Small appeals (1 or 2 marks) may be rejected.
Work Environment
	Assignments must compile and run on one of the linux.student.cs
	computers. See CPU/Applications
	Hosts
	
	for a complete list of server computers.