| Instructor | Kasra Jamshidi [email] |
| Office Hours | Fridays at 2pm on Zoom |
| Class Meetings |
Wednesday: 9:30-10:20 at AQ3149
Friday: 8:30-10:20 at AQ3149
|
| Grades/Submissions | On CourSys |
| Discussion Forum | On CourSys |
| 2025-09-03 | Initial site upload |
| 2025-09-07 | Update to schedule style; added some tips for using resources |
| 2025-09-12 | Assignment 1 added; class notes uploaded |
| 2025-09-20 | Assignment 2 added |
| Assignments | 15% |
| Quizzes | 25% |
| Project | 60% |
To pass, you must obtain an average grade of >50% in the quizzes, and a grade of >50% in the project.
There are several short quizzes throughout the semester designed to test your understanding of the material. Quizzes will be written in class by hand and should take less than 20 minutes. You will be asked to demonstrate high-level understanding in technical contexts by arguing a position, discussing tradeoffs, or explaining a procedure. You will not need to write code. You may bring a single piece of 8.5"x11" paper as a cheat sheet.
Your lowest quiz grade will not be considered when calculating your final grade for the quizzes component.
Contact the Centre for Accessible Learning if you require accommodations.
Late assignment submissions will not be accepted beyond a 15-minute grace period. I.e., if an assignment is due at 11:59pm, submissions after 12:14am will be ignored.
Large language models (LLMs) have quickly become a ubiquitous tool for software development, and it is important to learn to use them as you would similar tools. To that end, this course has been designed to make LLM use orthogonal to learning outcomes. You should not need to use an LLM, and you will not be punished if you do. However, note that LLM output is not a primary source, and therefore cannot be used as justification for a decision nor as evidence for an argument.
My recommendation is generally to avoid using LLMs. The code generated by LLMs is often subpar and overcomplicated, and inexperienced software developers do not typically have the skills to recognize and address these shortcomings. The result is that vibe coding without extensive practical experience often leads to brittle and unmaintainable code. The better option at this point in your education is to focus less on outcome (i.e., finishing an assignment) and more on actually learning from it. For that to happen, you need to do some hard work upfront in order to build pattern-recognition muscles that are crucial to become a skilled software developer. When you try to defer that work to an LLM, you pay back the time in debugging hours later.
Academic honesty is crucial to achieve a high standard of academic excellence and integrity. All instances of intellectual dishonesty will be handled according to the SFU Academic Honesty and Student Conduct Policies.
Solutions to the term project are allowed to be made public with team consent.