Skip to main content

Class Policy

Assignments Deadlines

Assignments are designed to give you heavy-duty experience with the application of course content. Assignments are graded on correctness.

You will work on ALL Assignments individually All of these Assignments were designed to be completable on your own. Collaborating with other students is strictly prohibited. Please see the section on Academic Dishonesty below.

HARD DEADLINE: 11:59pm on Due date. Assignments have a hard deadline. Assignments have to be pushed into your github repos by the deadline time (locally committing is not sufficient).

FINAL COMMMIT RULE We will only consider the final commit pushed into your git repos by the deadline time.

LATE SUBMISSION POLICY: 0.. We will be locking down your project repositories at 11:59pm

Projects are difficult, so don’t worry if you don’t get 100% on projects! We also have a philosophy on autograders: we only provide visible sanity tests. So there will be immediate feedback that your code compiles and runs on a simple test case but you won’t be able to see the results of the tests that are used to determine your grade. Additionally, you should ensure you have set the submission you want to use as your final grade as your ‘active’ submission. You may change your ‘active’ submission up until the late due date. We will not change your project submission after the late due date passes regardless of if you did better on another submission. We do not want you to use the autograder as an oracle since much of programming is actually testing your code.

Sickness Policy and Deadline extensions

  • Late Policy is 0%
  • We will only consider extensions of deadline due to medical reasons. All extensions due to medical reasons should follow the procedure below.
  • Extensions due to Medical Reasons: If the student is unable to complete an assignment or will miss an exam due to medical reasons, only the University’s Health Care Provider Statement will be accepted as proof. All such requests should be made to the instructor before the assignment is due or before missing the exam to discuss alternative arrangements.
  • All assignments and homeworks are can be submitted and pushed at any time after the release date, prior to the deadline. Hence, we are disinclined to consider extensions to the deadline itself (other than medical).
  • Despite this, if you would like to present a petition for extension due to unforeseen (https://en.wikipedia.org/wiki/Force_majeure) circumstances (e.g., internet is cut-off, power lost in the house, family matters). Please read SFU policy on grading. Following this contact the CMPT student advisor to validate your situation. If the student advisor can validate your situation, the instructor will consider it (however instructor decision is final).

Email policy

  • We will be using the piazza discussion board on for all discussions. For homeworks, exams, or other clarification emails do not email me (the instructor) or the TA directly.
  • If you email the instructor or TA directly then use your SFU email address to send the email (do not use any other provider), and use cmpt295: as the prefix in your subject line.
  • Before you email or post to the discussion board read faq).

Assignment TA help policy

We hope you take advantage of the ample office hours we have scheduled this term. When coming to office hours for lab or project help, there are some policies you’ll need to abide by.

  • In order to reduce queue wait times, help will be limited to 10 minutes. If this is not sufficient, please rejoin the queue. This is designed to make the queuing time both significantly shorter and more predictable.

  • TAs will not be debugging code endlessly without reason. This is not a good learning practice, they have limited time, and part of the goal of this course is to turn you into a great tester and debugger.

Therefore, before coming to office hours, students should have done the following:

  1. Run valgrind and fixed all memory leaks/warnings
  2. Written a test that isolates/demonstrates their issue (NOT just a staff-provided test)
  3. Stepped through the test with (c)gdb to find the line number the issue occurs on

There are instructions for testing on all project specs, and you can review how to run valgrind and (c)gdb in lab.

  • When a TA takes your ticket, they will ask you to show that you do not have any compiler warnings or memory leaks. Please ensure that you have this pulled up so that you can show the TA quickly. If you have compiler warnings or memory leaks, the TA will not be able to assist you until this is fixed (unless your question is about how to fix the compiler warnings or memory leaks).

Before joining the queue, you must add the following to your problem description in order to help the TA better understand what you need help with and to ensure that you have attempted to debug your code before coming to office hours.

  • If your question is conceptual/homework/lab (non-debugging), fill in the prompt below: Detailed question:

  • If your question is project/lab (debugging), fill in the prompt below: Have you fixed all compiler warnings? Have you run valgrind and fixed all memory leaks? Detailed question: Steps have you taken to solve this problem:

  • If you do not fill out the description properly, your ticket will be resolved. Descriptions like “please help”, “I don’t understand how to do this problem”, etc are not sufficient and will be resolved. Examples of good descriptions:

Example 1

conceptual/homework/lab (non-debugging): Detailed question: I am having a hard time understanding when you should use malloc(). I understand that malloc will store data on the heap, and that this data will remain allocated until you call free(), but I don’t understand when you should allocate data using malloc() vs when you should allocate data on the stack.

Example 2

TA: Have you fixed all compiler warnings?
Student: yes

TA: Have you run valgrind and fixed all memory leaks?
Student: yes

Student: I am getting a segfault in my code for Project X. I have determined that it is occuring in the function example_func(). I have also figured out that it only happens when the parameter example_param is greater than 16. Steps have you taken to solve this problem: I have run my code through gdb which helped me determine that the error is occurring in example_func() when example_param() is greater than 16. The segfault is occurring on line 57 when I try to access an element in the example_array.
  • Since our office hours will be in open zoom rooms, you MUST be in the Zoom room if you are on the queue. If we get to your name and you are not in the zoom call, we will skip you and you will have to sign up again.

We have two different types of office hours: Normal OH (includes Head TA and Instructor OH), Lab OH. Each of them has a priority of types of questions which they will answer. Normal OH will prioritize assignment, exam, and conceptual questions. It then will take project questions, and finally take lab questions last. Lab OH will take lab questions first but also take any other type of question if there are no lab questions.

Piazza Policy

  • Search before posting: Sometimes your question may have already been answered by us or other students in the past. This gives us more time to answer new questions. Also you will avoid having us link to another post as an answer.
  • Link and screenshot any external resources you are referring to (exams, discussion, stackoverflow, lecture slides + webcast time/video): It is more convenient for us and other students to look at the screenshot and follow the link if we need more context on the question. It will also substantially decrease the time it takes for us to answer your question.
  • Try to avoid too open-ended/vague questions such as: “How does C work?” or “How come the solution to a discussion problem is this?” or “How does this proof from the textbook work?” It is very difficult for us to know how to help you when we are asked these questions. If you walk us through your thoughts and reference specific lines that you find confusing, we can better address the problem you are facing. It may even help us uncover any misunderstandings that you may have.
  • Please try to post project/homework questions publicly as follow-ups on the appropriate question threads whenever possible. If your question is too detailed/revealing to fit there, that’s a sign that your question is better answered during office hours. We do not have the bandwidth to pre-grade/debug solutions on Piazza, so detailed private homework/project questions are discouraged.
  • You should only post in the “Student Answer” box if you are fairly certain about your answer. Do not post follow up questions or +1 in the student answer. Posting in the “Student Answer” section marks a post as resolved and will likely be missed. Use “Follow ups” to follow up while leaving the overall post unresolved.
  • You should NOT follow up with +1’s to a post you agree/like! Instead, you should use the helpful button on a question/followup. We do not allow +1’s because they clutter the post and make it more difficult to get to the unresolved follow-ups.
  • If you want a reply on a follow up, mark it as unresolved, or we may not see it.
  • If you reply to a follow up answering the question at hand, mark the follow up as resolved since it no longer requires attention.
  • If you don’t understand the given responses to your question, come to OH and mark your question as a conceptual question when putting yourself on the queue. Conceptual questions, which are questions on discussions, past homeworks, concepts (ie from the textbook or lectures) and this semester’s exams get priority over homework or project questions. It is sometimes much easier to explain questions in a one on one setting where staff can articulate their points through illustrations.
  • Excessive spam will result in a ban for at least a day! While we are here to help you learn, we are not the only tool you should use! If we find you posting a lot of excessive posts/followups asking for someone to answer a different post in a short period of time, we will ban you. Also if you have a question, try to think on it for an hour and use your other resources: the textbook, Google, Stackoverflow, etc to see if someone has already answered the question you had. Also feel free to come to office hours!
  • Anonymous Posting Keep in mind that, if you are posting anonymously, you can’t edit posts, so be careful before clicking the Submit button. Please avoid long chains of 1-2 sentence follow ups; it unnecessarily extends the thread and makes it much harder to follow people’s thought processes and find questions that need answers. These may be removed so it is easier to find questions and answer those questions.

Late Enrollments

We do NOT give extensions for late additions to the class. If you have any intention of taking the class but are not enrolled in the class, you must enroll the class (at least being on the waitlist) and you must keep up with the work.

READ THE CANVAS PAGE

Extenuating Circumstances

Inclusion: We are committed to creating a learning environment welcoming of all students that supports a diversity of thoughts, perspectives, and experiences, and respects your identities and backgrounds (including race/ethnicity, nationality, gender identity, socioeconomic class, sexual orientation, language, religion, ability, etc.) To help accomplish this: If you have a name and/or set of pronouns that differ from those that appear in your official records, please let us know.

If you feel like your performance in the class is being impacted by your experiences outside of class (e.g., family matters, current events), please don’t hesitate to talk to the student advisors. If you have any unforeseen circumstances that arise during the course (e.g., electricity cut-off, unable to access internet, living ), please fix an appointment with instructor, or the CMPT student advisors or Toby Donaldson (tjd@cs.sfu.ca)

As a participant in this class, recognize that you can be proactive about making other students feel included and respected. We recognize that our students come from varied backgrounds and can have widely-varying circumstances affect them during their time in the course.

We (like many people) are still in the process of learning about diverse perspectives and identities. If something is said in class (by anyone) that makes you feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident to our instructors, head TA, or another member of staff you’re comfortable with so that we may address the issue and maintain a supportive and inclusive learning environment.

Academic Honesty

  • Some examples of unacceptable behaviour:
    • Handing in assignments that are not 100% your own work (in design, implementation, wording, etc.), without proper citation. There must be a README file in your submission with citations to any external code used.
    • Using any un-permitted resources during an exam.
    • Looking at, or attempting to look at, another student’s paper during an exam.
    • Submitting work that has been submitted before, for any course at any institution.
  • If you are unclear on what academic honesty is, see Simon Fraser University’s Policy S10-01.
  • All instances of academic dishonesty will be dealt with very severely.
  • In general, minimum requested penalties will be as follows:
    • For assignments: a mark of -100% on the assignment. So, academic dishonesty on an assignment worth 5% of your final mark will result in a zero on the assignment, and a penalty of 5% from your final grade.
    • For exams: an F in the course.
    • Please note that these are minimum penalties. At the instructor’s option, more severe penalties may be given/requested. All instances of academic dishonesty will be noted on your University record.
  • The instructor may use, or require students to submit assignments to, an automated service that will check for plagiarism.
  • Refer to assignment page for precise instructions on what you can refer online.

Mark Appeals

Except for final grades, this is how you can go about getting your mark changed:

  • Requests for a change in your mark must come to the course instructor. Teaching Assistants will not change your mark, except for errors in addition or data entry.
  • Requests should come in the same form as you received your marks: if you got marks by email, forward that email to the instructor; if you had paper handed back, return that.
  • You should give a brief explanation of why you want your mark reevaluated.
  • Appeals may be made up to two weeks after the mark is returned or until the final exam date, whichever is first. After that deadline, you must make a formal mark appeal for any changes.
  • For exams in particular, these are not reasons to get more marks:
    • I knew what I was saying here, but didn’t write it.
    • This is the correct answer for some question other than the one asked, but I didn’t get any marks for it.
    • I didn’t understand the question.
  • ONLY FINAL COMMIT PUSHED INTO YOUR REPO UNTIL DEADLINE WILL BE CONSIDERED FOR EVALUATION. We will not evaluate any local commit not pushed to your git repo. We will not consider any earlier commit that has been pushed.

Final Exam and Final Marks Appeals

If you’re concerned about your mark at the end of the course, you can see the instructor. Here are some guidelines:

  • You can come to the instructor’s office at designated times to review your final exam.
  • Like assignments, you can ask the instructor to reevaluate your final exam marking.
  • The following are not good reasons to get a higher final mark:
    • I want it.
    • I think I deserve it.
    • I need it.
    • I’m close to the next grade cutoff.
  • This is a good reason:
    • There’s a marking irregularity on my final or some other piece of work.
  • The marking scheme is fixed. If you did badly on a midterm, you can’t weight the final more heavily.
  • For multiple choice questions we will not regrade unless the marking key itself is incorrect

Diversity Inclusion

We are committed to creating a learning environment welcoming of all students that supports a diversity of thoughts, perspectives, and experiences, and respects your identities and backgrounds (including race/ethnicity, nationality, gender identity, socioeconomic class, sexual orientation, language, religion, ability, etc.) To help accomplish this: If you have a name and/or set of pronouns that differ from those that appear in your official records, please let us know. If you feel like your performance in the class is being impacted by your experiences outside of class (e.g., family matters, current events), please don’t hesitate to come and talk with us. We want to be resources for you. As a participant in this class, recognize that you can be proactive about making other students feel included and respected. We recognize that our students come from varied backgrounds and can have widely-varying circumstances affect them during their time in the course. If you have any unforeseen circumstances that arise during the course, please do not hesitate to contact the instructors in office hours or private Piazza post to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances include work-school balance, familial responsibilities, religious observations, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class. We (like many people) are still in the process of learning about diverse perspectives and identities. If something is said in class (by anyone) that makes you feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident to our instructors, head TA, or another member of staff you’re comfortable with so that we may address the issue and maintain a supportive and inclusive learning environment. You may also contact the department’s student advisors and UPC chair Toby Donaldson. tjd@cs.sfu.ca

Grading policy

  • Graduate students will compulsory do a project chosen by them in conjunction with the instructors. Can be done in groups of up to 3. Contributions of each group member should be catalogued at the end of the project. Contributions and project quality will determine the grade assigned by the instructor.
  • Undergraduate students have the option to choose a project in conjunction with instructor. Can be done in groups of up to 3. Contributions of each group member should be catalogued at the end of the project. Contributions and project quality will determine the grade assigned by the instructor.
  • Undergraduate students have the option to complete one or two assignments (decided by the instructor) in-lieu of the project. These should be done individually. The same assignment will be assigned to all students that choose this option.
  • The quality of the projects has to be at the level of a workshop/conference submission. The Int’l Symposium on Computer Architecture (ISCA) deadline is on Nov 28th and the workshop deadlines are typically in the 1st or 2nd week of Jan. The top 3/4 projects in this class are expected to be at the level at which we can submit to these venues.

Covid-19 and Mask policy

Masks in the classroom are encourged but not required. Please consider wearing a mask to protect yourself and your classmates.

If you are sick with Covid-19 or other contagious diseases, please do not attend class. You can request a lecture recording link from the instructors in this case.

If instructors are sick with Covid-19, we will attempt to communicate with students as soon as possible and have a contingency plan to deliver the lectures (possibly through recordings).

Acknowledgment

This document has been modified by your CMPT instructor. It has been derived from John DeNero and Kara Nelson. All comments should be sent back to your CMPT instructor only.