ECE250 Data Structures and Algorithms (Winter 2024)

 

Overview

The objective of this course is to introduce students to data structures (linked lists, binary search trees, hash tables, graphs), Abstract Data Types (Stacks, Queues, Maps, Sets), 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)

 

Lab Instructor

Ahmed Fahmy (a7fahmy@uwaterloo.ca)

 

Teaching Assistants

Majid Dashtbani (majid.dashtbani@uwaterloo.ca)

Ahmad Nabil Yousef Kamal (anykamal@uwaterloo.ca)

Soroush Mortazavimoghaddam (soroush.mortazavimoghaddam@uwaterloo.ca)

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

Prajwal Thakur (prajwal.thakur@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

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

 

Textbook

We will be mostly using lectures notes posted to 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: 30%
Midterm Exam:  30%
Final Exam:       40% 
 

Labs Projects

There will be 5 lab projects in the course. Each lab project will be given about 2 weeksto finish. Lab projects are done individually. Details about the labs will be posted on Learn.

 

  Release date Due date Weight
Lab0 Jan 16 Jan 29 10%
Lab1 Jan 30 Feb 12 15%
Lab2 Feb 13 Mar 11 25%
Lab3 Mar 12 Mar 25 20%
Lab4 Mar 22 April 8 30%

 

Exams

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

 

Late Policy

Late submission incur a 25% penalty when < 24 hours late, a 50% penalty when > 24 but < 48 hours late, and receive no credit when > 48 hours late. No late submission of exams are accepted.

 

 

Academic Policy

The discussion of ideas and problem-solving strategies is an integral part of the learning experience, but cheating and plagiarism are not. Practically, you violate academic integrity when (1) you obtain solutions and code from others, or (2) you provide solutions and code to others. 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.

 

Schedules(tentative) & Topics

 

Week of

Topics

Jan 8

Introduction and Logistics

Jan 15

Algorithm Analysis & Abstract Data Types

Jan 22

Lists, Stacks, Queues

Lab 0

Jan 29

Trees, Binary (Search) Trees, Tree Traversals

Feb 5

AVL Trees, Red-Black Trees

Lab 1

Feb 12

Heaps, Priority Queues

Feb 19

Reading Week

Feb 26

Midterm Week

Mar 4

Hashing, Hash tables

Lab 2 

Mar 11

Sorting Algorithms

Mar 18

Introduction to Graphs, Graph Traversals 

Lab 3 

Mar 25

Graph Algorithms  

April 1

Algorithm Design Techniques

Lab 4