Course-Info

Course Info

Getting Extra Help

Some great ways to get extra help are:

  • Discord Discussion
    Get (and give!) immediate help from classmates and sometimes instructor or TA. Please don't post your code, but OK to ask questions. Invite link in sidebar (right). Note: Discord is hosted outside of Canada; it is not mandatory to use.
  • Office Hours
    Both the instructor and TAs have office hours. Great for getting in person help or personal concerns. Instructor office hours are in person (or in lab/on discord), and TA office hours are on Discord; however, you can request a Zoom meeting if you don't want to use Discord for privacy reasons. Details in sidebar (right).
  • Assignment Marking Questions
    Visit the TA during their office hours, or email them a question about assignment marking; see sidebar for addresses.
    Include course number in email's subject line.
  • Email Instructor Good for private questions about extension requests or other issues. Please include course number email's subject line. Email addresses in sidebar (right).

Grading

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

  • Assignments (30%) - ~5 assignments; due about every 2-3 weeks. May include some announced in-class quizzes. Assignment weight in CourSys are approximate. Announced in class, posted on website.
  • Midterm (30%) - Written on-paper exam; date in sidebar.
  • Final Exam (40%) - Cumulative for course; written on paper; date in sidebar. If your final exam percentage is better than your midterm percentage, one fifth of the weight of your midterm will be transferred to your final exam automatically.

Grading Details

  • Students must attain an overall passing grade on the weighted average of the exams in the course to obtain a clear pass (C- or better).
  • The MOSS tool will be used to check the originality of all electronic submissions (within this class, and against previous offerings as needed).
  • 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.

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 write 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

  • Do not use AI to write any of your code.
    • Do not ask AI to write code. Hint: If you are prompting AI, add "without showing me any code, explain how..."
    • Do not take any code from an AI system. If it outputs the code, then it's not your code.
  • Do not use AI to read or change any of your code.
    • Do not copy-paste or upload your code to AI.
    • Do not use local tools to analyze your code.
    • Do not ask AI to find a bug, suggest a change, check if you met assignment requirements, refactor your code, add comments, check for style violations, write code based on your comments or directions, translate your code between programming languages, translate your code between human languages.
  • Do not copy the assignment description into an AI tool.
    • Do not have AI summarize assignment requirements.
    • Do not have AI translate assignment requirements into another language.
  • Do not use an AI agent to try write your code.
  • Don't ask questions like:
    1. "What is an implementation of the following assignment?"
    2. "Write a Java function which reads in user input and tokenizes it into an array."
    3. "Write a Java program which passes the following tests."

Good Textbooks (NOT REQUIRED!)

  • Highly Recommended Book:
  • Recommended Book:
  • Reference Books:
    • Head first design patterns, Freeman and Freeman, O'Reilly, 2004, 9780596007126.
    • Code Complete, 2nd ed., Steve McConnell, Microsoft Press, 2004, 9780735619678.
    • Patterns in Java (Volume 1), Mark Grand, Wiley, 2002, 9780471227298.

Course-Info