Skip to main content

Link to Assignments

Please note that all our assignments are designed to be completed on CSIL or VM only. We are unable to provide support for custom environments.

  • github ci wait-times can be long close to these deadline dates.. TEST EARLY AND PUSH OFTEN
  • If all else fails we include a local script for you to test; however the final grade will only be based on obtaining tick on github.
  • Deadline: 9pm. Repos will be locked (unless you have attendance credit; see below)
    • YOU CANNOT USE ANY CODE ON GITHUB (exception being course content) (violations will be reported as academic dishonesty)
  • YOU CANNOT USE ANY AI ASSISTANCE UNLESS WE EXPLICITLY ALLOW IT (violations will be reported as academic dishonesty)
<style type="text/css"> .tg {border-collapse:collapse;border-color:#ccc;border-spacing:0;} .tg td{background-color:#fff;border-color:#ccc;border-style:solid;border-width:1px;color:#333;overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{background-color:#f0f0f0;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-buh4{background-color:#f9f9f9;text-align:left;vertical-align:top} .tg .tg-ru17{font-weight:bold;position:-webkit-sticky;position:sticky;text-align:left;top:-1px;vertical-align:top; will-change:transform} .tg .tg-0lax{text-align:left;vertical-align:top}
Link Release Due Percent TAs Time Needed
Assignment 1 [link] Jan 6 Jan 22 4% TAs:Anagha,Aditya,Mahmoud Grader: Anagha High
Assignment 2 [link] Jan 22 Feb 10 4% TAs:Anagha, Aditya, Mahmoud Grader: Sedi Medium
Assignment 3 [link] Feb 10 March 3 7% TAs:Taba, Marzieh Grader: Taba High
Assignment 4 [link] Mar 5 Mar 17 5% Grader:Marzieh, Taba TAs: Marzieh Medium
Assignment 5 [link] Mar 17 Mar 31 5% Grader:Mahmoud, Sedi TAs: Mahmoud Low
Assignment 6 [link] Mar 31 Apr 12, No ext. 5% Grader: Sedi TAs: Sedi Low

By cloning the github repo you accept the following:

  • I have read, and will adhere to policies about academic integrity on course website and SFU website. In particular, I will not:
    • Share my work with others, both before and after finishing this course.
    • Post my work in public repositories, both before and after finishing this course.
    • Plagiarize under any circumstance.
  • Assignment repose will be destroyed 2 weeks after deadline.

Coding Rules

  • You cannot and will not modify the function return and arguments
  • You cannot and will not add any additional print statements
  • We will provide printf statements that you should insert in your code to match the reference output.
  • You cannot and will not need to add any additional .c or .h files. You cannot modify the header files
  • You cannot use your own methods or data structures that are designed to purposefully obfuscate or bypass
  • the provided methods. Our internal tools will fail and you will simply be marked as 0.
  • `In general, if you find yourself doing things outside required or todo blocks,
  • then your assignment might be potentially contravening the rules
  • Note that the grade distributed within the assignment scripts is tentative only. If you contravene the rules we cannot guarantee that your code will run against our internal testing.
  • Failure to obey any of the rules above, may lead to failed test cases and/or a final grade of 0.
  • SFU Policies

Completing assignment on your own machine

  • WE DO NOT SUPPORT COMPLETING ASSIGNMENTS ON YOUR OWN MACHINE.
  • That said all programming assignments are capable of being run on WSL or MacOS. You will need python3, gcc, and gdb installed. You will need to be comfortable working with the command line.
  • If you complete on your own machine there are two rules: i) YOU ARE RESPONSIBLE FOR INSTALLING THE REQUIRED SOFTWARE (no responses will be provided on piazza) ii) YOU MUST ENSURE THE CODE OBTAINS A TICK MARK ON GITHUB (we will only test on the linux) environment
  • If you have read above and wish to set up your own environment. For WSL read here and python on WSL.
  • For MacOS

We appreciate contributions; if you find errors on your machine and can provide a fix, please submit a PR. OR provide documentation with updated instructions and will include it here (along with your name)

Extension Form

Form has to be filled out prior to assignment deadline

Fill this form to request an extension (you can only request up to 7 days extension, only for assignments 2-5, and you must have sufficient attendance credit).

<iframe src="https://docs.google.com/forms/d/e/1FAIpQLSe7f2RIDT3dwlPkyZBxpiouHgreCYY1WLIcqafZfF5w5BLqEA/viewform?embedded=true" width="100%" height="588" frameborder="0" marginheight="0" marginwidth="0">Loading…
  • For every in-person class lecture you attend, you will receive a 1 day extension credit for the assignment.
  • Our standard policy is late submission is 0%, but if you attend the lectures and fill this form we will extend your deadline. e.g., Assignment 2 is due on Feb 10. If you attend all 7 lecture in the weeks approaching the deadline. You will have up to an additional 7 days to complete the assignment. Any unused credit can be carried over to future assignments.

Why? Our analysis of previous data indicate the class classroom attendance is the strongest indicator of performance on midterms and finals. We understand that you are making an effort by attending the class, and we want to reward that effort.

Rules and Policies

Click on headings to expand.

TA/Instructor Help
<iframe allowfullscreen frameborder="0" style="width:960px; height:480px" src="https://lucid.app/documents/embeddedchart/8fe27987-07c3-45d1-87cd-526a7c99c564" id="ycpyLWEwWvMV">
  • Go to the lab. The labs are there to help you get experienced in concepts that will help you do the assignments. Attend them.
  • Book TA appointment for code-specific questions.
  • Post links to repo not actual code on piazza (TA may respond)
  • Post questions on groups. Tag and ask conceptual questions. on groups.
  • The head TA is expected to be the local expert on the assignment. While other TAs may help with programming Q/A that can help with the assignment, they may not be able to answer specific questions related to the assignment. During the Q/A sessions following a lab you can attend that Head TA's Q/A sessions if you so choose.
Code Collaboration Policy
  • You are encouraged to help each other debug without viewing each other’s code. Beyond that, we don’t want you sharing approaches, ideas, code or whiteboarding with other students.
  • YOU CANNOT SEE THE CODE OF ANOTHER STUDENT Students can discuss the assignments with other students, but the discussions should be purely for learning purposes only.
  • YOU SHOULD NOT RECORD ANY INFORMATION during those discussions in any form (e.g., writing, printing, audio/video/picture records, memorization, etc.).
  • ALL ASSIGNMENT CODE MUST BE YOUR OWN.
  • YOU MUST NOT SHARE solutions in any form (e.g., direct sharing with other students, hosting code in "publicly accessible" repositories, etc.).
  • YOU CANNOT LOOK AT ANY CODE ON GITHUB. We too can use Github, and also subtly tweak the projects to make cheating more detectable.
  • YOU CANNOT VIEW ANY CODE ONLINE (other than the weblinks provided on the course page).
  • YOU CANNOT USE AI assistant CoPilot/ChatGPT etc. We will be comparing your code against AI generated code.
Code Grading Policy

As you go through this course each student will possibly write 5000 lines of code. We will adopt industry-grade state-of-the-art automated testing and feedback. To help you track progress and obtain partial points, we have split each assignment into a multitude of test cases ranging from small unit tests to complete integration tests. The tests will all be rated at different point scales based on fraction of the assignment that has to be complete for the test to pass i.e., tests that require you to complete more code in the assignment will be awarded higher points.

Even if you do not complete the assignment,just passing some of the test cases will help you obtain partial grade.

Read here as to how testing helps.

  • Late Policy is 0% - No code pushed into the provided repo after the deadline time has elapsed will be graded. All assignments and homeworks are can be submitted and pushed at any time after the release date, prior to the deadline.
  • Deadlines will be 9pm PST on the deadline day.
  • CODE HAS TO BE COMMITTED AND PUSHED into provided github repo for it to be considered as a submission. Please commit lab 0 to understand the steps.
  • ONLY COMMITS PUSHED TO REPO PRIOR TO DEADLINE WILL BE GRADED
  • ONLY YOUR LATEST COMMIT PUSHED TO THE REPO WILL BE CONSIDERED FOR EVALUATION. example: You commit 10 times and push. Your git log shows many commits. Only the latest commit pushed to the repo will be graded.
  • NO CODE MODIFICATIONS PUSHED TO REPO AFTER IT HAS BEEN LOCKED AT THE DEADLINE WILL BE CONSIDERED
  • NO POINTS FOR NON-WORKING CODE. POINTS ONLY FOR TEST CASES PASSED. On each assignment page we include a number of test cases. You need to pass each test case individually to obtain the corresponding points.
  • FEEDBACK WILL BE ON TEST CASES PASSED/FAILED. The test case gives you an indication of what portion of your code is failing without requiring TA intervention
  • GRADING FEEDBACK ON CODE WILL BE AUTOMATED. Unit tests provides feedback on where you went wrong, not how you got it wrong.
  • Submitted code must compile without error. Otherwise, we will not be able to test the code and the student gets no credit for it.
  • Continuous SCRIPT based testing The grading of code will be done through scripts or testing programs that we develop. These tests will be automatically run each time you push a new commit on github. If your code causes failure of our grading scipts then we may apply any of the following i) simply 0 out your entire assignment ii) re-evaluate manually but then deduce 50% of your final grade. iii) delay your grade release (relative to other students in the class). Our decision will be final in all such matters.
  • TESTING takes time (especially around deadline day). We have two VMs set up to run on travis-ci/github. test locally before pushing to github.
  • We will make every attempt to release grades for each homework the 2 weeks. However, this means that after we review the source code we might have to lower your official grade.
  • NO REGRADING FOR ASSIGNMENTS (UNLESS OUR TEST CASES HAVE A BUG)
Academic Dishonesty Policy

SFU Policy

  • DON'T CHEAT. We use MOSS. and another tools to detect. If you get caught cheating, it will make its way to the university grade sheet and could potentially affect your future career.
  • We take this seriously
  • It is NOT acceptable to copy solutions from other students.
  • It is NOT acceptable to copy (or start your) solutions from the Web.
  • It is NOT acceptable to leave your code anywhere where an unscrupulous student could find and steal it (e.g., public GITHUBs, walking away while leaving yourself logged on, leaving printouts lying around, etc. We have tools and methods, developed over many years, for detecting this. You WILL be caught, and the penalties WILL be severe. This software can even detect attempts to purposefully obfuscate copying. If you have questions whether a behavior is crossing the line, ask!
  • At the minimum negative points will be given for the assignment (meaning you’re better off NOT submitting anything than cheating), and a letter in your record documenting the cheating. Both the giver and the receiver of code are equally culpable and suffer equal penalties.
  • If you cheated in some way, such as copying your submission or you have violated the ground rules for each homework, your grades will be decreased from the initial value perhaps even lowered to zero.
  • Please do not try and bypass the intentions of the assignment. If we find that your code goes against the spirit of the assignment or willfully bypasses the code we have asked you to implement we will zero it out.

Sponsors

:-------------------------:|:-------------------------: {: width="100px"} | {: width="100px"}