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 Chat
Connect with classmates, instructor, and TAs using Discord. Channels are setup for talking to course staff, for asking questions, and for chatting with fellow students. Great for chatting and immediate help; not as good for someone seeing/answering later.
Note: Discord is hosted outside of Canada; it is not mandatory to use; you can sign-up under an expendable email account; emailing Dr. Brian is always an option. - Office Hours
Both the instructor and TA have online office hours. Great for getting one-on-one help or discussing personal concerns. Details in sidebar (right). Also, seeing TAs in-person during lab times can be very effective. Most office hours held using Discord. If you object to using Discord, email/zoom are also options as needed. - Peer Tutoring Drop in to CS Peer Tutoring available online or in-person. Get help from your fellow students who have already taken the course! They can help you identify and tackle your issues in the courses. Come early to stay ahead of the curve. See your tutors' office hours on the website
- Email Less efficient than Discord, but private. Good for private questions about grades or extension requests. Please include course number email's subject line. See sidebar for emails.
Use of Generative AI Tools
Large Language Models (LLMs) such as ChatGPT and Copilot are very powerful for assisting programmers. They can help us by:
- Generating some code to help start solving a problem.
- Provide feedback on what some code does.
- Helping to find bugs.
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). The quizzes associated with each assignment (details below) test that each student has learned the fundamental skills of each assignment and can apply those skills without the use of AI.
For this course, here are the rules:
- You may use any AI tool to help you write code for all assignments and labs.
- 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 Copilot and ChatGPT to write this code.
- There is no deduction for using AI tools.
- In the end, you must be able to write the code yourself.
- No computers or AI tools are permitted on the quizzes, midterm or final exam.
Only 27.5% of the course grade can be earned by a student who unable to work without an AI.
Coding practice (assignments and labs) 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.
Grading
All submissions done via CourSys. Also shows you your marks and marking feedback; look for the magnifying glass icon for detailed feedback.
- Labs (10%) - Weekly lab exercise; see below for details.
- Assignments (35%) - ~6 assignments and or the project; due about every 2 weeks on Sunday. You may use AI tools to help you learn.
- Assignments are marked as follows:
- You submit your assignment and it is marked by the TA. This is your "assignment mark".
- You will then later write a short in-class (hand-written) quiz related to the assignment. This is your "quiz mark".
- The starting maximum grade a student can get on an assignment is 50%. Your score on the related quiz can unlock a higher possible maximum mark on the assignment. Specifically, if the quiz is out of 6 marks then:
- Quiz score of 0 or 1: leaves the maximum grade at 50% on the assignment.
- Quiz score of 2: unlocks a maximum grade of 63% on the assignment.
- Quiz score of 3: unlocks a maximum grade of 75% on the assignment.
- Quiz score of 4: unlocks a maximum grade of 88% on the assignment.
- Quiz score of 5 or 6: unlocks a maximum grade of 100% on the assignment.
- Some examples:
- If Xia earned 95% on the assignment and then scored 3/6 on the quiz:
Their score would be 75% on that assignment in the end because their quiz score unlocked a maximum grade of 75%. - If Yasmin earned 88% on the assignment and then scored 5/6 on the quiz: Their score would be 88% on that assignment in the end because even though they unlocked the 100% maximum from the quiz, their assignment mark was 88%.
- If Ricardo earned 100% on the assignment and then scored 1/6 on the quiz (or did not write the quiz):
Their score would be 50% on that assignment in the end because their quiz score only unlocked a maximum grade of 50% on that assignment.
- If Xia earned 95% on the assignment and then scored 3/6 on the quiz:
- The figure below shows the maximum grade a student can earn on an assignment based on the quiz score they earned for the quiz related to that assignment.
- Assignments are marked as follows:
- Midterm (20%) - In-person on-paper exam.
- Final Exam (35%) - Cumulative for course; in-person on-paper exam.
Grading Details
- Students must attain an overall passing grade on the weighted average of the exams (midterm and final) in the course to obtain a clear pass (C- or better).
- If a student earns a "pass" (50% or more usually) on the either the final exam, or on the weighted average of the final and midterm, then the student gets whatever grade they have otherwise earned in the course.
- If a student does not earn a pass on the final, and does not earn a pass on the weighted average of the midterm and final, then the student can get at most a D in the class. The grade D is a pass, but means the course cannot be used as a prerequisite for later courses.
- This policy ensures that students are able to demonstrate they are proficient with the course content in an exam setting in order to earn a C- or better. For example, if a student does not know the course material but has relied too heavily on others for completing their assignments, they will likely have low exam scores and high assignment scores. This policy helps ensure everyone can independently demonstrate their knowledge on exams.
- 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.
- Explanation of penalties I often apply for academic dishonesty.
Late Policy
- 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.
Labs
Lab Details... Click to expand
Labs will help you get working with the programming concepts introduced in lecture. You can work in the SFU CS labs ("CSIL") labs in either Surrey or Burnaby, or you can do your work on your own computer (Windows, Mac, Linux). In this class the words "lab" and "tutorial" are used interchangeably.
Attending / Getting Help
You may complete the lab in-person (at the Surrey campus), or online. In-person can be better because the TA is in the room and can come to your computer to help you work through any issues.
For online help, find the TA on the Discord server during office hours (link to the right). With Discord you can type or talk, and share your screen if needed.
Lab Schedule
You can attend any lab(s), but priority given to students enrolled in that lab section.
No labs during the first week of the semester (Sept 3rd). See below for weekly lab details.
Marking
Labs are there to support you! They are structured for maximum flexibility and learning:
- Time Flexibility
- You can choose to attend any of the lab sections to receive help doing the lab exercise (priority is given to students who are scheduled in that section).
- Submit the lab online by Sunday 11:59pm. May be submitted up to 3 days late (plus 60m grace period) for no penalty.
- You may work with a partner if you like. If so, both student submit the file. Include both student names in the file.
- Getting Help
- While working on your lab, you may ask anyone for an unlimited amount of help.
- You may use AI tools and web resources to complete your lab.
- You can choose to attend multiple lab sections to get more help.
- You can get help from any TA during any lab times, or office hours on Discord.
- You can get help from the instructor.
- You must take an active part in doing the labs, which means you cannot just copy another student's whole file (copying defeats the whole purpose of having labs).
Good Textbooks (NOT REQUIRED!)
- How to think like a Computer Scientist - C++ Edition
Contains sample questions. - Problem Solving with C++, 10th ed., Walter Savitch, Addison-Wesley, 2018, 9780134448282, Earlier editions OK; eBook versions may be significantly cheaper;
- Starting Out with C++ From Control Structures to Objects 9th Edition, Tony Gaddis, Pearson Education, 9780134498379
- Programming, Principles and Practice Using C++, Bjarne Stroustrup, Addison-Wesley, 2014, 9780321992789