Software Reliability Engineering - ECE654

DRAFT - TO BE FINALIZED IN WEEK 1

Overview

ECE654: Software Reliability Engineering is an advanced graduate course. After introducing basic concepts and models for software reliability and security, we will delve into state-of-the-art research and available tools. It is expected that you will read and prepare research papers that will be assigned for the different lectures and that you experiment with the different research prototypes.

The lectures will consist of presentations by the lecturer and the students. Individual projects will complement the lectures and will give first-hand experience with current research.

Topic areas:

  • Unit testing, automatic test case generation

  • Bug finding tools: Spotbugs, PMD, …

  • Coding guidelines for reliable and secure software

  • Type systems; The Checker Framework

  • Design-by-Specification: Spec#, OpenJML, …

  • Advanced verification approaches: Dafny, rise4fun, …

  • Model checking: Spin, Java Path Finder, NuSVM, …

  • Theorem proving: Coq, Isabelle, …

Contact

Lectures are held 10:00-11:20 Monday and Friday in EIT 3151. There are no lab or tutorial slots.

My office hours are by appointment and will be held either using MS Teams or in my office, EIT 4007. I will usually also be available immediately after lectures. See contact details.

Course material, announcements, and submissions will be handled through Learn.

Begin all email subjects with [ECE654].

Do not to leave your questions until the last minute.

Teaching assistant

TBD.

Course content

Prerequisite

Graduate standing in the ECE department at Waterloo.

Advanced programming skills in an object-oriented programming language. Experience in writing medium-sized programs (>20k LOC) and with setting up and using large open-source projects.

Prereq: ECE 650 or 750 Tpc 26 or instructor consent.
Coreq:ECE 650 or 750 Tpc 26 or instructor consent.
Antireq: ECE 750 Topic 2.

Material

There is no required textbook that needs to be bought. Lecture slides, lecture notes, and reading material will be made available on Learn.

Schedule

All lecture material will be available through Learn.

This is a tentative schedule that will get adapted during the term. Check Learn for updates.

Week   Date Class
1 Jan 9 Introduction and organization
2 Jan 16 Basic reliability and security concepts and models
3 Jan 23 Testing, bug finding, and coding guides
4 Jan 30 Static analysis, lattices, type systems
5 Feb 6 Quiz 1; Soundness, Progress, Preservation
6 Feb 13 Object-oriented type systems
7 Feb 27 Design-by-Specification
8 Mar 6 Model checking, Theorem proving
9 Mar 13 Quiz 2; Symbolic Execution
10 Mar 20 Security fundamentals
11 Mar 27 Language-based security
12 Apr 3    Outlook and wrap-up

The dates for the quizzes might change. Dates will be finalized at least a week before the respective quiz.

Grading

Assignments: 30%
Quizzes: 20%
Final Exam: 50%

All assignments and quizzes will be returned in class, during office hours, or through LEARN.

You must pass the final exam to pass the course. You must pass the weighted average of quizzes and final to pass the course. The final grade will be computed as follows:

def grade(assignments, quizzes, final):
  normal = 0.3 * assignments + 0.2 * quizzes + 0.5 * final
  weighted = (0.2 * quizzes + 0.5 * final) / 0.7
  if final < 50:
    return min(normal, final)
  elif weighted < 50:
    return min(normal, weighted)
  else:
    return normal

If you missed the quizzes (and had permissions from the instructor according to the Course Policy), the final grade will be computed as follows:

def grade(assignments, quizzes, final):
  normal = 0.3 * assignments + 0.7 * final
  if final < 50:
    return min(normal, final)
  else:
    return normal

Grades may be curved or adjusted at the instructor’s discretion.

Fair Contingencies for Emergency Remote Teaching

We are facing unusual and challenging times. The course outline presents the instructor’s intentions for course assessments, their weights, and due dates in Winter 2023. As best as possible, we will keep to the specified assessments, weights, and dates. To provide contingency for unforeseen circumstances, the instructor reserves the right to modify course topics and/or assessments and/or weight, and/or deadlines with due and fair notice to students. In the event of such challenges, the instructor will work with the Department/Faculty to find reasonable and fair solutions that respect rights and workloads of students, staff, and faculty.

Course Policies

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.

Missed Quizzes

If you miss a quiz, you will receive 0 marks for the quiz. If you have a legitimate reason (at the discretion of the instructor) that you cannot take a quiz, and obtain permission from the instructor a week in advance, the percentage for the quiz may be shifted to the final. No alternative quiz time will be provided.

Official outline

This is the high-level outline provided by the ECE department; this course will follow the general guideline, but will be adjusted according to your feedback, interests, and experience.

The course consists of two related parts. The first part deals with the engineering of reliable software. It introductes basic software reliability concepts, descritbes relevant models and discusses processes for engineering of reliable software, including schemes and patterns for the design of reliable and fault tolerant software. The second part addresses development of secure software. It presents key software security concept, techniques and models, overviews major software security vulnerabilities and their exploitation, and considers processes for development of secure software.

Policies

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. [See the academic integrity site for more information.]

  • Turnitin.com: Text matching software (Turnitin®) will be used to screen assignments in this course. Turnitin® is used to verify that all materials and sources in assignments are documented. Students’ submissions are stored on a U.S. server, therefore students must be given an alternative (e.g., scaffolded assignment or annotated bibliography), if they are concerned about their privacy and/or security. Students will be given due notice, in the first week of the term and/or at the time assignment details are provided, about arrangements and alternatives for the use of Turnitin® in this course. It is the responsibility of the student to notify the instructor if they, in the first week of term or at the time assignment details are provided, wish to submit the alternate assignment.

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.

  • When in doubt please be certain to contact the department’s administrative assistant who will provide further assistance.

Discipline

  • A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for his/her actions.

  • A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (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 offences and types of penalties, students should refer to Policy 71, Student Discipline.

  • For typical penalties check Guidelines for the Assessment of Penalties.

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.

Note for Students with Disabilities

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.

Intellectual Property

Students should be aware that this course contains the intellectual property of their instructor, TA, and/or the University of Waterloo. Intellectual property includes but is not limited to:

  • Lecture content, spoken and written (and any audio/video recording thereof);

  • Lecture handouts, presentations, and other materials prepared for the course (e.g., PowerPoint slides);

  • Questions or solution sets from various types of assessments (e.g., assignments, quizzes, tests, final exams); and

  • Work protected by copyright (e.g., any work authored by the instructor or TA or used by the instructor or TA with permission of the copyright owner).

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 considered 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).

Writing and Communication Centre

The Writing and Communication Centre (WCC) works with students in all faculties to help you consider your audience, clarify your ideas, develop your voice, and write in the style appropriate to your discipline. WCC staff offer one-on-one support for writing papers, delivering presentations, citing research, and revising for clarity and coherence. Group appointments for team-based projects, presentations, and papers are also available.

You can pre-book appointments with WCC staff, or visit us at one of our drop-in locations for quick questions and feedback from WCC peer tutors. To book an appointment and to see drop-in appointment hours, visit https://www.uwaterloo.ca/wcc.

Please note that communication specialists guide you to see your work as readers would. They can teach you revising skills and strategies, but will not change or correct your work for you. Please bring hard copies of your assignment instructions and any notes or drafts to your appointment.

Coronavirus Information

This resource provides updated information on COVID-19 and guidance for accommodations due to COVID-19.

Mental Health Support

All of us need a support system. We encourage you to seek out mental health supports when they are needed. Please reach out to Campus Wellness and Counselling Services.

We understand that these circumstances can be troubling, and you may need to speak with someone for emotional support. Good2Talk is a post-secondary student helpline based in Ontario, Canada that is available to all students.

Territorial Acknowledgement

We acknowledge that we live and work on the traditional territory of the Attawandaron (Neutral), Anishinaabeg, and Haudenosaunee peoples. The University of Waterloo is situated on the Haldimand Tract, the land promised to the Six Nations that includes ten kilometres on each side of the Grand River.

Acknowledgments

Thanks to Mohammad Ahmad Munawar and Rudolph E. Seviora for sharing their course material for previous iterations of the course.

PDF version for easier printing (if you absolutely have to) or if you prefer looking at PDFs.