ECE 650 - Fall 2015

ECE 650 - Methods and Tools for Software Engineering

Outline

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

Content

The course is divided broadly into three components: software systems (approximately 40%), mathematical logic (approximately 15%), and data structures (approximately 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.

Instructor

Dr. Werner Dietl, website, email

Prerequisite

Graduate standing in the ECE department at Waterloo.

Grading

Midterm: 15%, Project: 35%, Final exam: 50%.

Project

The project will comprise 5 or 6 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.

Text books

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: