Methods and Tools for Software Engineering - ECE650

Overview

ECE650: Methods and Tools for Software Engineering 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 endeavors (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.

Contact

Lectures are held Thursdays from 17:30 to 20:20 in RCH 309. There are no lab or tutorial slots.

My office hours are by appointment and will be held in DC 2522. See contact details.

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

Begin all email subjects with [ECE650].

Try not to leave your questions until the last minute.

Teaching assistant

Hua Fan, DC 2628, h27fan

Meetings by appointment.

Course content

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.

Prerequisite

Graduate standing in the ECE department at Waterloo.

Grading

Project: 50%, Final exam: 50%.

You must pass the project and the final exam to pass the course.

Material

All material will be (made) available online. There is no textbook that needs to be bought. Some of the sources from which material will be drawn:

Schedule

Any lecture material is available through Learn.

This is a tentative schedule that will get adapted during the term.

Week   Date Class
1 Sep 11 No class; optional tutorial
2 Sep 18 Introduction; Unix basics, ssh, version control
3 Sep 25 Build systems: shell scripts, Makefiles, ant
4 Oct 2 Python programming
5 Oct 9 C programming, system calls
6 Oct 16 Misc. other tools
7 Oct 23 Math, logic, syntax & semantics
8 Oct 30 Data structures
9 Nov 6 Data structures
10 Nov 13 Data structures
11 Nov 20 Data structures
12 Nov 27     Wrap-up

Project

The project forms an integral part of this course. The project will comprise several stages that span the term. It will involve the use of various software tools and techniques to solve a problem. It will exercise skills involving systems programming, use of libraries, and use of third-party software. All programming is to be done in C and using bash scripts only. If you are unfamiliar with C 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.

Expectations

It is expected that students attend lectures and complete the required assignments. Lectures will often include a hands-on activity; participation in these exercises is essential to succeed in the class. Slides will be provided via Learn. Any material discussed in class or in the required readings will be testable unless otherwise noted.

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.

Software Systems - Systems programming and operating systems, scripting, system calls, libraries, compilers and interpreters. Mathematical logic - propositional & predicate logic, and some higher-order logics, syntax, semantics, entailment, deduction, use of logic in software. Data structures - lists, stacks, queues, heaps, trees, graphs, and algorithms to manipulate such data structures. Graduate students who have previously taken ECE 750 with the topic title Methods and Tools for Software Engineering are not eligible to take ECE 650.

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.]

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.

Acknowledgments

Thanks to Mahesh V. Tripunitara for sharing his experience and materials from a previous iteration of this course.

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