Students must be familiar with all of the information below. Read it fully and carefully!
This course teaches students a principled approach to designing & implementing software so that it will be correct, easy to understand, easy to change, and modular. It aims to train students to have the core programming skills necessary as a professional programmer.
The course assumes knowledge of the Java programming language at the level covered in CSE 123; however, students will not program in Java in this course. Instead, Java mainly will be used as a point of comparison for the language that is used (TypeScript).
We expect to cover (at least) the following topics:
Correctness
Testing
Reasoning about functional programs
Reasoning about imperative programs
Abstraction
Debugging
Client and Server applications
Design Patterns
70% Homework
Homework assignments will not be weighted equally. The first few assignments are shorter and are intended as a warm up for the course material, so they are weighted lighter than future assignments. The last two assignments are more involved end-to-end projects, so they are weighted slightly heavier than other assignments. The exact breakdown is:
HW0: 2%, HW1: 3%, HW2: 5%, HW3 - HW7: 8% each, HW8 - HW9: 10% each (Total: 70% of course grade)
10% Section
20% Final Exam
There will be opportunities to earn extra credit on homework assignments throughout the quarter. These questions are optional, and choosing not to complete them will not affect your course grade. At the end of the quarter, extra credit will be taken into account when assigning final grades. Consistent effort and completion of extra credit will result in a small bump to the final grade.
See below for policies regarding regrade requests.
Students should expect and demand to be treated with respect by their classmates and the course staff. All students belong here, and the staff is here to help them learn and enjoy a challenging course. If any incident occurs that threatens this commitment to a supportive and inclusive environment, students should let the staff know so the issue can be addressed.
Please refer to university policies regarding disability accommodations and religious accommodations.
All homework is due at 5:00pm Pacific Time on the due date. This deadline is strict.
You can use up to two late days (48 hours) for each homework assignment. No credit will be granted after 48 hours (two late days). Course staff will not be answering homework questions on the message board during the two day period after it is due.
You are strongly advised to turn homework assignments in early to avoid any issues due to emergencies. Do not skip class or section to work on homework — this will cost you time in the long run.
You are encouraged to discuss homework assignments with your classmates, but the work you submit must be your own. You may work together to solve problems, but you must write / code your solutions independently without consulting any notes or records from the group work. Do not look directly at anyone else's work or solution. Do not show your work or solution to anyone else.
You may use the internet for ideas, definitions, and understanding general concepts. You may not copy code directly from the internet or search for solutions to assigned problems. This includes Google, StackOverflow, reddit, and any other website.
AI tools such as GitHub Copilot or ChatGPT have essentially memorized all the code on the internet. Asking the tool to produce code is no different, as far as we're concerned, from searching for the code and copying it yourself. As such, the use of these tools is not allowed for completing assignments in this course.
If grading mistakes occur, students are encouraged to bring them to the attention of the course staff. To do so, request a regrade in Gradescope.
Regrade requests must be submitted within one week of when the grades are initially posted. We will not respond to regrade requests after this.
Deductions are applied consistently to all students using a pre-written rubric. As a result, we will generally not change the amount of points deducted for an error due to a regrade request, because this would result in the deduction being inconsistently applied across the class.
When you request a regrade, the TA will carefully review your submission and the rubric, making changes to the original grade as required. Note that the grade may go up or down as a result.
If students wish to fix an inconsistency between the grading of two assignments that had similar answers, both students must request a regrade. The staff will then determine whether the appropriate correction is to add points to the student who lost them or to remove points to the student who received more credit.
Section is an opportunity to practice course material without being graded on correctness, which is crucial for learning new material. Section is worth 10% of your course grade, but it will be graded based on effort and completion, not correctness. Section attendance is expected. You may go to any section. If you miss section, you may complete the section assignment independently and email your solutions to your section TAs by 6:00pm on the day of section.
There will also be practice exam questions during each section. These will be submitted on Gradescope, both for students who attend section in person and for those who are completing the section material independently.
You are permitted to bring one page (standard 8.5 x 11 size) of notes to the exam. You must prepare your own notesheet and it must be handwritten. We will collect the notesheets at the end of the final.
Any attempt to misrepresent the work you did will be dealt with via the appropriate University mechanisms.
Note that, in cases where one student copies the solution of another, both students have violated the policy and there will be consequences for both. Again, all students should keep their solutions private.
If you ever feel uncertain about whether their discussions with other students violated policies, you should (a) ask and (b) describe your collaboration clearly on the assignment. If you do, the worst that will happen is losing some points. That is much better than the alternative.
Please also carefully review the UW Academic Misconduct Process, which provides the following policy:
Engineering is a profession demanding a high level of personal honesty, integrity and responsibility. Therefore, it is essential that engineering students, in fulfillment of their academic requirements and in preparation to enter the engineering profession, adhere to the College of Engineering Statement of Principles.
Any student in this course suspected of academic misconduct (e.g., cheating, plagiarism, or falsification) will be reported to the College of Engineering Dean’s Office and the University’s Office of Community Standards and Student Conduct to initiate the student conduct process. Any student found to have committed academic misconduct may receive a zero for their grade on the impacted academic work (e.g., assignments, project, or exams), and academic consequences, with the possibility of expulsion.
Start assignments early.
Aim to complete them the day before they are due. Assignments are often more difficult than you expect, so you should leave time to make and correct mistakes
Prefer the message board over office hours.
Office hours may have long lines, especially close to assignment deadlines, though we will strive to answer questions on the Message Board within 24 hours. Public questions on the Message Board have the added benefit of being useful to everyone in the class, not only the student who initially asked the question.
Do not skip class to work on homework.
Doing so often seems like it will save time in the short run, but it will cost time in the long run.
Focus on understanding, not on getting points.
Understanding of the material, not just the grade you receive, is what will help you get a job and be successful as a professional programmer.