An assignment is worth a strictly positive number n of tokens (to be established when the assignment is handed out). You can receive any number of tokens between 0 and n. Exceptionally good solutions may also receive 10% “bonus” marks. Assignments can be programmed using C or C++ (with C constructs when required by the underlying API).
Most (if not all the) assignments can be solved in teams. Whether teams are permitted (and what is the maximum size of a team) will be stated with each assignment handout.
Students enrolled in CS 464 should expect to receive four assignments during the course, worth 2, 4, 4, and 10 tokens, respectively. Students enrolled in CS 564 will receive one extra assignment which may be more theoretical in nature and is expected to be worth 3 tokens.
Grading will be based on assignments and an open book written examination scheduled during the regular examination period. Exactly all the assignment tokens will contribute equally to 80% of your final grade for the course. The final examination will give you the remaining 20%. There will be no supplemental evaluations.
Late assignment submissions: Late submissions will be accepted for a few days past the deadline subject to a penalty of 20% per day late until my solutions (if any) are posted on the course’s Web site. Note that solutions may be posted as soon as two days after the due date of the respective assignment. No submissions will be accepted afterward under any circumstance.
Any form of academic dishonesty will result automatically in zero marks for the respective test and may be further pursued according to the departmental and university regulations on the matter. I strongly recommend that you read the Academic Integrity section of the Academic Calendar. Once you have done so sit down and read it again, carefully. I have zero tolerance for academic dishonesty and I will vigorously pursue any such a case to the full extent of the university regulations.
In programming assignments academic dishonesty means the use of any kind of code that is not yours without proper credit. Code that is not yours includes code written by colleagues not part of your team as well as code written by any third party (including the use of automated tools such as generative AI). I am not forbidding the use of third party code, but (a) the main logic of the program must be yours and yours alone, and (b) you must give appropriate credit for all third party code used in your submissions. In addition, code must not be shared between teams under any circumstance.
It is very tempting to borrow code from others or to contract out your programming work for this kind of a course. You are hereby advised not to so any of that, as this kind of behaviour is relatively easy to catch, and has been regularly caught in the past. Most likely my success rate on the matter is much lower than 100%, but the consequences of being caught are quite dramatic for everyone involved with no exceptions, so I will argue that it is not worth it.
Finally, I strongly recommend that you never submit code generated by your favourite LLM system without thoroughly reviewing it and making sure that it conforms with the given specification. LLMs are notoriously bad at following specifications precisely. They are also notoriously good at generating overly complex code, which is harder to inspect to make sure that it is what you want it to be. In fact I argue that you are better off if you do not use LLM code for this course at all. You may also be interested in reading about how LLMs make you dumber.
Should you require special accommodations please come and discuss this with me at the begining of the term. You should also contact the Student Accessibility & Accommodation Services to obtain authorization as well as assistance for any special arrangements.