ECE250 Data Structures and Algorithms (Winter 2025)

 

Overview

The objective of this course is to introduce students to data structures (linked lists, binary search trees, hash tables), Abstract Data Types (Stacks, Queues, Maps, Sets, Graphs), algorithms (sorting, graph search, minimal spanning tree) and algorithms design techniques(greedy, divide and conquer, dynamic programming, etc) Prereq: ECE 150 (or equivalent)

 

Instructor

Ziqiang Patrick Huang (ziqiang.huang@uwaterloo.ca) E7-5424

 

Lab Instructor

Mike Cooper-Stachowsky (mstachowsky@uwaterloo.ca)

 

Teaching Assistants

Majid Dashtbani (majid.dashtbani@uwaterloo.ca)

Sheikh Abrar Tahmid (sheikh.abrar.tahmid@uwaterloo.ca)

Prajwal Thakur (prajwal.thakur@uwaterloo.ca)

Ninghan Zhong (n5zhong@uwaterloo.ca)

 

Lectures, tutorials, labs

For lecture, tutorial and lab schedules, see the Undergraduate Schedule of Classes.

 

Makeup Lectures

We have 5 makeup lectures tetatively scheduled throughout the term. Whether they will be used will depend on the pace of the course. Students will be notified (in class & through emails) beforehand if we intend to use any of them.

 

Tutorials

We will walk through example problems that help students strengthen their understanding of lecture materials and prepare for exams. (Tutorials will start from the 2nd week)

 

Discussion Forum

We will use Piazza for class discussions. The system is highly catered to getting you help fast and efficiently from classmates, the TAs, the lab instructor, and myself. Rather than emailing questions to the teaching staff, you should post your questions on Piazza. The Piazza course site is here

 

Office Hours

Patrick: by appointment (Email me and we will set up a time)

TAs: during lab sessions & by appointment (Please email all the TAs when booking an appointment)

 

Textbook

We will be mostly using lecture notes posted on Learn, however, students are encouraged to use the following optional texts to supplement their learning:

Mark Allen Weiss, Data Structures and Algorithm Analysis in C++, 4th Ed., Addison Wesley, 2012.

Cormen, Leiserson, Rivest, and Stein (CLRS), Introduction to Algorithms, 2nd Ed., MIT Press, 2001.

 

Grading

Lab Projects: 25%
Midterm Exam:  30%
Final Exam:       45% 
 

Projects

There will be 5 projects in the course. Each project will be given about 2 weeks to finish. Projects are done individually. Details about the projects will be posted on Learn.

 

  Release date Due date Weight
P1 Jan 10 Jan 24 10%
P2 Jan 24 Feb 7 15%
P3 Feb 7 Mar 7 25%
P4 Mar 7 Mar 21 20%
P5 Mar 21 April 4 30%

 

Exams

Midterm exam is currently scheduled on Feb 25 at 9:30am. Final exam schedule will be posted once available. Both will be closed-book exams.

 

Late Policy

Late assignments will not be accepted without documentation submitted via appropriate UW channels. 48-hour self-declared absence cannot be applied to LAB components per UW policy.

 

Assignment Screening

Plagiarism detection software such as MOSS (https://theory.stanford.edu/~aiken/moss/) WILL be used for lab code.

Tentative Course Schedule

Week of

Topics

Jan 6

Introduction and Logistics

Jan 13

Algorithm Analysis & Abstract Data Types

Jan 20

Lists, Stacks, Queues

Jan 27

Trees, Binary (Search) Trees, Tree Traversals

Feb 3

AVL Trees, Red-Black Trees

Feb 10

Heaps, Priority Queues

Feb 17

Reading Week

Feb 24

Midterm Week

Mar 3

Hashing, Hash tables

Mar 10

Sorting Algorithms

Mar 17

Introduction to Graphs, Graph Traversals  

Mar 24

Graph Algorithms  

Mar 31

Algorithm Design Techniques