Teaching - Fall 2014
Methods and Tools for Software Engineering - ECE650
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.
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
Try not to leave your questions until the last minute.
Hua Fan, DC 2628,
Meetings by appointment.
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.
Project: 50%, Final exam: 50%.
You must pass the project and the final exam to pass the course.
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:
Any lecture material is available through Learn.
This is a tentative schedule that will get adapted during the term.
|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|
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.
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.
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.
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.]
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 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.
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.
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.
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.