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>

Office Hours

  • My office: E7-5424
  • Tuesday 10:30 - 11:30 or by appointment
  • Different hours will be announced for midterm week and the exam period

Lab Instructor

Mike Cooper-Stachowsky (mstachowsky@uwaterloo.ca)

 

Teaching Assistants

Majid Dashtbani (majid.dashtbani@uwaterloo.ca)

Sarah Ahmad (s92ahmad@uwaterloo.ca)

Soheil Khatibi (skhatibi@uwaterloo.ca)

Caleb Lam (caleb.lam@uwaterloo.ca)

Zahra Khotanlou (zkhotanlou@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. (Access code will be posted on Learn)

 

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: 20%
Lab Quizzes: 10 %
Midterm Exam: 30%
Final Exam: 40% 
 

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 9 Jan 23 10%
P2 Jan 23 Feb 6 15%
P3 Feb 7 Mar 7 25%
P4 Mar 6 Mar 20 20%
P5 Mar 20 April 3 30%

Bonus Marks

You may earn up to 1.5 bonus marks in total, which will be added to your final grade. The opportunities are as follows:

  • Piazza Participation: Earn 0.1 marks for each question/answer endorsed by an instructor on Piazza, up to a maximum of 0.5 marks. (Please keep a record yourself)
  • Academic Improvement: Earn 0.5 marks if your final exam score is at least 10 percentage points higher than your midterm exam score (e.g., improving from 60% on the midterm to 70% or higher on the final).
  • Course Feedback: Earn 0.5 marks if the section's overall response rate on the Student Course Perception Survey is 70% or higher. This bonus is awarded to everyone in the section if the target is met.

Exams

Midterm exam is currently scheduled on Monday Feb 23 at 10:00am. Final exam schedule will be posted once available. Both will be closed-book exams.

 

Late / Missed Content

  • Midterm Exam: With a valid, documented reason for absence, the midterm's weight will be transferred to the final exam. There are no make-up midterms.
  • Final Exam: Students who miss the final exam for a valid, approved reason will receive an INC (Incomplete) grade and will write the exam the next time the course is offered.
  • Lab Work: Please see the lab manual for the specific late policy regarding all lab deliverables.

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