Prof. Arie Gurfinkel, Office: EIT 4021, first . last AT uwaterloo.ca, Office Hours: by appointment
See lecture notes
No required textbook. Lecture slides, lecture notes, and reading material will be provided.
Some of the sources from which material will be drawn:
This is an introductory graduate course. Its intent is to provide all students that are interested in software systems with a basic background that will help them succeed in subsequent endeavours (courses, research, and work in industry) related to software. The course is intended to be “hands-on” – there is a large project component that involves building a software system.
The course is divided broadly into three components: software systems (~40%), mathematical logic (~15%), and data structures (~45%).
Under software systems, we will cover topics such as systems programming and operating systems, scripting, system calls, libraries, compilers and interpreters.
Under mathematical logic, we will cover topics such as propositional logic, syntax, semantics, entailment, deduction and the use of logic in software.
Under data structures, we will cover topics such as stacks, heaps, trees, and graphs, and algorithms to manipulate them.
Graduate standing in the ECE department at Waterloo.
Grades may be curved or adjusted at instructor’s discretion.
You must pass the assignments and the final exam to pass the course. All assignments will be submitted and returned online.
def grade(A, P, F):
"""Final grade calculation.
A, P, F are grades for Assignments, Project, and the
Final, respectively. Normalize to 100% each.
"""
g = A * 0.4 + P * 0.1 + F * 0.5
if F >= 50 and A >= 50:
return g
else:
return min(49, g)
The assignments form an integral part of this course. They comprise several stages that span the term and involve the use of various software tools and techniques to solve a problem. They will exercise skills involving systems programming, use of libraries, and use of third-party software. Programming is to be done in C and scripting languages only. If you are unfamiliar with these or are weak at programming or scripting, you can do some extra work on your own in parallel with the course to strengthen those skills.
Assignments will be available at least two weeks before they are due.
There will be a significant programming project, separate from the assignments. Details of the project be released during the course.
There will be an in-person final exam.
This course includes the independent development and practice of specific skills, such as programming, reasoning, and application of logic. Therefore, the use of Generative artificial intelligence (GenAI) trained using large language models (LLM) or other methods to produce text, images, music, or code, like Chat GPT, DALL-E, or GitHub CoPilot, is not permitted in this class. Unauthorized use in this course, such as running course materials through GenAI or using GenAI to complete a course assessment is considered a violation of Policy 71 (plagiarism or unauthorized aids or assistance). Work produced with the assistance of AI tools does not represent the author’s original work and is therefore in violation of the fundamental values of academic integrity including honesty, trust, respect, fairness, responsibility and courage (ICAI, n.d.).
You should be prepared to show your work. To demonstrate your learning, you should keep your rough notes, including research notes, brainstorming, and drafting notes. You may be asked to submit these notes along with earlier drafts of their work, either through saved drafts or saved versions of a document. If the use of GenAI is suspected where not permitted, you may be asked to meet with your instructor or TA to provide explanations to support the submitted material as being your original work. Through this process, if you have not sufficiently supported your work, academic misconduct allegations may be brought to the Associate Dean.
In addition, you should be aware that the legal/copyright status of generative AI inputs and outputs is unclear. More information is available from the Copyright Advisory Committee: https://uwaterloo.ca/copyright-at-waterloo/teaching/generative-artificial-intelligence
Students are encouraged to reach out to campus supports if they need help with their coursework including:
By registering for this class, students agree to the following class policies:
Independent work. All work turned in will be that of the individual student unless stated otherwise. Violations would result in zero credit to all students concerned. Policy 71 will be followed for any discovered cases of plagiarism.
Lateness. You have 2 days of lateness to use on assignment submissions throughout the term. Each day you hand in an assignment late consumes one of the days of lateness. If you consume all of your late days, assignments that are still late will get 0 marks. You can only hand in an assignment up to the time all assignments are returned. Missed assignments get 0 marks. For example, you may hand in A1 two days late and A2 on time, or you can hand in A1 one day late and A2 one day late.
In the case of in-person classes are not possible due to COVID, the lectures will be live-streamed during the regular lecture hours. If necessary, the final exam will be done online.
Academic Integrity. 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 http://www.uwaterloo.ca/academicintegrity for more information.]
Grievance. 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, http://www.adm.uwaterloo.ca/infosec/Policies/policy70.htm. When in doubt please be certain to contact the departments administrative assistant who will provide further assistance.
Discipline. A student is expected to know what constitutes academic integrity [check http://www.uwaterloo.ca/academicintegrity] to avoid committing an academic offense, 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 instructor, 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, http:://www.adm.uwaterloo.ca/infosec/Policies/policy71.htm. For typical penalties check Guidelines for the Assessment of Penalties, http://www.adm.uwaterloo.ca/infosec/guidelines/penaltyguidelines.htm.
Appeals. A decision made or 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) http://www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.
Note for Students with Disabilities. The AccessAbility Services, located in Needles Hall, Room 1132, 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 AccessAbility Services at the beginning of each academic term.
University of Waterloo Territorial Acknowledgement The University of Waterloo acknowledges that much of our work takes place on the traditional territory of the Neutral, Anishinaabeg and Haudenosaunee peoples. Our main campus is situated on the Haldimand Tract, the land granted to the Six Nations that includes six miles on each side of the Grand River. Our active work toward reconciliation takes place across our campuses through research, learning, teaching, and community building, and is co-ordinated within the Office of Indigenous Relations.
Thanks to Mahesh V. Tripunitara for sharing his experience and materials from a previous iteration of this course.