Introduction to object-oriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting medium-sized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites.
Instructor's Name | Office Location | Contact | Office Hours |
Caroline Kierstead | MC 4009 | ctkierst at uwaterloo.ca | Fridays (May 4-July 20) 1:30pm-3:30pm, or by appointment, or if door is open and I'm not busy. |
Aaron Moss | MC 4065 | a3moss at uwaterloo.ca | Thursday (May 3-July 19) 2:30-3:30pm |
Victoria Sakhnini | DC 3113 | vsakhnini at uwaterloo.ca | Mondays (May 1-July 25) 3:30-4:30pm; Tuesdays/Thursdays (May 2-July 19) 4-5pm; or by appointment |
ISA | Office Location | Contact | Office Hours |
Jin Li | MC4065 | cs246@uwaterloo.ca | TBA |
Frank Wang | MC4065 | cs246@uwaterloo.ca | TBA |
Yang Tian Zi | MC4065 | cs246@uwaterloo.ca | TBA |
ISC | Office Location | Contact |
Caroline Kierstead | MC4009 | ctkierst@uwaterloo.ca |
Note that due to the holiday Mondays (May 21 and July 2), Tuesday May 22 and Wednesday July 25 both follow a Monday schedule.
Lecture Section | Time/Date | Building/Room | Instructor Name |
LEC 001 | 1:00pm-2:20pm TTh | MC 1056 | Kierstead, Caroline |
LEC 002 | 11:30am-12:50pm TTh | MC 4045 | Sakhnini, Victoria |
LEC 003 | 10:00am-11:20am TTh | MC 4045 | Sakhnini, Victoria |
LEC 004 | 2:30pm-3:50pm TTh | MC 2038 | Sakhnini, Victoria |
LEC 005 | 1:00pm-2:20pm TTh | MC 2017 | Moss, Aaron |
Tutorial Section | Time/Date | Building/Room |
TUT 101 | 11:30am-12:20pm W | MC 4042 |
TUT 102 | 09:30pm-10:20pm W | MC 4063 |
TUT 103 | 01:30pm-02:20pm W | MC 4063 |
TUT 104 | 08:30am-09:20am W | MC 4063 |
TUT 105 | 08:30am-09:20am W | MC 4060 |
TUT 106 | 09:30am-10:20am W | MC 4060 |
TUT 107 | 12:30pm-01:20pm W | MC 4058 |
All timings are approximate.
Assignments | Number | Tentative Due Date | Marks | Totals |
0 | May 8 (Tues.) | 0 | ||
1 | Due Date 1: May 14 (Mon.) Due Date 2: May 22 (Tue. since Mon. is a holiday) | 5 | ||
2 | Due Date 1: May 28 (Mon.) Due Date 2: June 4 (Mon.) | 7 | ||
3 | Due Date 1: June 11 (Mon.) Due Date 2: June 18 (Mon.) Due Date 3: June 25 (Mon.) | 7 | ||
4 | Due Date 1: July 3 (Tue. since Mon. is a holiday) Due Date 2: July 9 (Mon.) | 9 | ||
5 | Due Date 1: July 16 (Mon.) Due Date 2: July 25 (Wed.) | 12 | ||
40 | 40 | |||
Tests | Midterm | June 21, 04:30-06:20Th, Location M3 1006, DC 1351 | 20 | 20 |
Final | TBA, scheduled by the registrar | 40 | 40 | |
100 |
Note: you cannot get credit for assignments 1-5 until you have achieved 100% on assignment 0.
Note: These due dates are tentative only, and are subject to change.
Note: The final assignment is a project to be done in groups of three. You may do the project in pairs or individually, but you will be expected to produce the same output as a group of three. Be sure to work with people whom you trust; we will not arbitrate disagreements. Part of the evaluation of your project will consist of a live demo in front of a TA. This is mandatory.
if ( testing_average < 50% or a1-a4_average < 45% ) then final_grade = MIN( weighted_testing_average, a1-a4_average, normally_calc_grades ) else final_grade = normally_calc_gradesIn other words, good assignment marks alone cannot get you a passing mark in this course. Neither can good exam or project marks alone.
Both the midterm test and the final exam are closed book.
A missed test/exam receives a mark of 0, unless there is a documented reason. If a documented reason is provided for missing the midterm, its weight is applied to the final exam. If a documented reason is provided for missing the final exam, a grade of INC MIGHT be given, and the final exam must be written at the end of the next term the course is offered. A copy of the documented reason must be given to and approved by the instructor.
Note: Marmoset is not a compiler! Do not submit C++ code to Marmoset, without first attempting to compile it yourself. For each problem on Marmoset where the deliverable is C++ code, if you have three or more submissions marked "Did not compile", a mark will permanently be deducted from your score on that problem.
The release test for a problem gives you the result of running your program on one basic test case (usually a case that appears in the assignment specification). The remaining test cases are secret tests, the results of which are revealed after the assignment is due. So be sure to test your code thoroughly, so that you pass as many of our secret tests as possible.
Note: The entire assignment or test is examined when remarking; therefore, the grade could decrease.
The primary form of communication of information outside of lectures will be through Piazza. It is thus very important that you read it daily! Since it is very common for the number of posts to get very large, very quickly, we have posted some guidelines to using Piazza in Piazza to help make everybody's lives easier. Please make sure that you read the guidelines before you post.
In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. Check the Office of Academic Integrity's website for more information.
All members of the UW community are expected to hold to the highest standard of academic integrity in their studies, teaching, and research. This site explains why academic integrity is important and how students can avoid academic misconduct. It also identifies resources available on campus for students and faculty to help achieve academic integrity in — and out — of the classroom.
Students in CS 246 are permitted to discuss the assignments with each other in generalities only. Students may not look at each other's code or show their code to others. Any discussions about assignments must take place away from a computer, and without any written (or typed) record of the conversation. Similarities between students' code submissions, if they lie beyond what the instructors feel may be reasonably explained by chance, will be taken as evidence of excessive collaboration and will be forwarded to the Math Faculty integrity officer.
Please note that if you gain access to someone else's solution to a problem, you have already committed an offence, even if you never actually use that solution. Please protect your work from being seen by others, and please do not put your friends in difficult situations by asking to see their code. Any evidence that you had knowledge of someone else's solution while writing your own solution will be reported as an offence.
Posting assignment, project, midterm, and final exam solutions in publicly-accessible locations is not permitted in this course. For more information, and for information on alternatives to posting publicly, see here.
Course materials and the intellectual property contained therein, are used to enhance a student's educational experience. However, sharing this intellectual property without the intellectual property owner's permission is a violation of intellectual property rights. For this reason, it is necessary to ask the instructor, TA and/or the University of Waterloo for permission before uploading and sharing the intellectual property of others online (e.g., to an online repository).
Permission from an instructor, TA or the University is also necessary before sharing the intellectual property of others from completed courses with students taking the same/similar courses in subsequent terms/years. In many cases, instructors might be happy to allow distribution of certain materials. However, doing so without expressed permission is considered a violation of intellectual property rights.
Please alert the instructor if you become aware of intellectual property belonging to others (past or present) circulating, either through the student body or online. The intellectual property rights owner deserves to know (and may have already given their consent).
A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70 — Student Petitions and Grievances, Section 4. When in doubt please be certain to contact the department's administrative assistant who will provide further assistance.
A student is expected to know what constitutes academic integrity, to avoid committing academic offenses, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offense, or who needs help in learning how to avoid offenses (e.g., plagiarism, cheating) or about "rules" for group work/collaboration should seek guidance from the course professor, academic advisor, or the Undergraduate Associate Dean. For information on categories of offenses and types of penalties, students should refer to Policy 71 — Student Discipline. For typical penalties, check the Guidelines for the Assessment of Penalties.
Most students are unaware of the line between acceptable and unacceptable academic behaviour, especially when discussing assignments with classmates and using the work of other students. For information on commonly misunderstood academic offenses and how to avoid them, students should refer to the Faculty of Mathematics Cheating and Student Academic Discipline Policy.
A decision made or a penalty imposed under Policy 70, Student Petitions and Grievances (other than a petition) or Policy 71, Student Discipline may be appealed if there is a ground. A student who believes he/she has a ground for an appeal should refer to Policy 72 — Student Appeals.
The AccessAbility Services Office (AAS), located in Needles Hall, Room 1401, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with the AAS at the beginning of each academic term.