Course-Info

Course Info

Official course outline. See sidebar (on right) for many details.

Getting Extra Help

Some great ways to get extra help are:

  • Discord
    Connect with classmates, TAs and instructor in real-time. Has text chat and voice/video conversations. If you are new to using discord, see this short video on intro to using Discord. Link to join Discord server in sidebar on the right of this page. Note: Piazza is hosted outside of Canada; it is not mandatory to use.
  • Piazza discussion forum
    Check out classmate's questions and answers. Answer someone else's question, or ask your own. You can even post anonymously! Link in sidebar on the right of this page. Note: Piazza is hosted outside of Canada; it is not mandatory to use.
  • Office Hours
    Both the instructor and TA have office hours. Great for discussing bigger issues, or personal concerns. Details in sidebar (right).
  • Email Less efficient than Piazza, but private. Great for private questions about grades or extension requests. Please include course number email's subject line.
    See sidebar for email addresses.

Grading

All submissions done via CourSys. Also shows you your marks and marking feedback.

  • Assignments (40%) - ~5 assignments. Assignment grades limited by quiz scores (see below).
  • Quizzes (35%) - During class time. Covers guides, lecture, assignments.
  • Project (25%)

Policies

  • Assignment Late Policy
    Assignments may be turned in up to 3 days late with 0% penalty. Later than this is 100% penalty (60 minute grace period). Contact the instructor if there are extenuating circumstances.
  • Extensions and Deferrals
    Email Dr. Brian with your request. You may need to complete and email SFU Academic Concession Self-Declaration Form. Doctor's notes are usually not required. Extensions only considered for circumstances beyond the student's control; plan to submit assignments on time.
  • Academic Honesty
    • The MOSS tool will be used to check the originality of all electronic submissions.
    • SFU's Academic Honesty policy is crucial to earning credit in this course. Violations of the policy will be taken seriously and reported to the department and university.
    • Explanation of penalties applied for academic dishonesty.

Use of Generative AI Tools

Large Language Models (LLMs) such as ChatGPT and Copilot are very powerful for assisting programmers. However, they also make it really easy to not learn how to code! To be a good software developer you need to know how to write the code yourself (with and without the AI tools). For this course, here are the rules:

  • You must have written the code yourself, and be able to re-create the application on an exam (or job interview)!
  • If use use an AI tool, you must mention it in your code, such as putting the following comment at the top of your file:
    // Used help from ChatGPT to find null pointer in tokenization code.
    • If you are finding that you need a lot of specific mentions on what AI is doing for you, then you are likely relying on it too much and not building your own software development and systems programming skills.
  • Incorrect use of AI tools is considered a violation of the course's academic honesty policy and will earn a grade of 0 and an academic dishonesty report being filed with the university.

Allowable uses of AI

  • Experiment with code shown in lectures.
  • Help understand concepts.
  • Help understand code and its behaviour.
  • Answer questions such as:
    1. "Explain the return values of fork()?"
    2. "In this example, what are the arguments to fork()?"
    3. "Why does this code crashes when I enter an empty string?"
      (Note: you should first use the debugger and build your skills, but the AI can help)

Forbidden uses of AI

  • Don't use it to write your assignment or project code for you.
  • Don't ask questions like:
    1. "What is an implementation of the following assignment?"
    2. "Write a C function which reads in user input and tokenizes it into an array."
    3. "Write a C program which passes the following tests."

Coding activities (assignments and project) are heavily weighted to encourage everyone to solve problems and learn to code. We give grades for what you have learned, not what your AI tool can do for you.

Course-Info