Course Syllabus

CP164: Data Structures I

Physics & Computer Science, Waterloo Campus

Fall 2021

This syllabus is for Section A

Instructor / Lab Instructor Information

Mr David Brown
By Appointment

Course Information

Introduction to the study of data structures and their applications. Recursion, searching, sorting. Queues, stacks, heaps. Introduction to the analysis of algorithms, big “O” notation.

3 lecture hours, 2.5 lab hours

Credit: 0.50
Prerequisite: CP104
Exclusion: CP114

Section Information
Section Days Times Room Instructor
Lecture A MWF - REMOTE Mr. David Brown
Lab L1 F - REMOTE Mr. David Brown
Lab L2 W - REMOTE Mr. David Brown
Lab L3 W - REMOTE Mr. David Brown

Course Overview and Approach

Course Tools and Learning Materials

You are required to have a personal computer capable of running the Python programming language and the Eclipse / PyDev IDE (Integrated Development Environment). Windows, Mac, and Linux are all appropriate operating systems for this on desktop or laptop machines. Chromebooks are not appropriate.

Python is a programming language used extensively on the World Wide Web. Eclipse is an Integrated Development Environment (IDE) program. Together with the PyDev plug-in it eases the task of writing and executing programs written in Python. Python, Eclipse, and PyDev are all freely available from the Internet, and we provide instructions for downloading and installing them in the Resources section of this page.

You are responsible for storing all your assignment and lab work on your own memory sticks, Laurier network storage, the cloud, or other media. We strongly suggest that you keep at least two copies of your work at all times.

Student Evaluation

Assessment Weighting
Assignments 25%
Labs 10%
Midterm 20%
Final Exam 45%

Students must pass the final exam in order to pass the course.


Note: this schedule is subject to change. All times are based upon Eastern Standard Time - i.e. Waterloo, ON time.

Week Starting Labs
Due 8:30 am Saturday
Due 8:30 am Friday
2 1: Data Classes 1: CP104 Background
3 2: Array-Based Stacks 2: Data Classes
4 3: Array-Based Queues 3: Array-Based Stacks
5 4: Array-Based Lists 4: Array-Based Queues
6 Reading Week
7 5: Simple Recursion
8 6: Linked Lists 5: Array-Based Lists
9 7: Linked Recursion 6: Linked Queues
10 8: Binary Search Trees 7: Linked Lists
11 9: Hash Sets 8: Binary Search Trees
12 10: Sorting 9: Hash Sets
13 10: Sorting

University and Course Policies


MyLearningSpace / Brightspace
Laurier Library
Study Skills and Course Support
writing centre, math centre, academic advising, study skills/supplemental instruction, accessible learning
Software Installation
Instructions for installing CP164 course software at home.
Using Eclipse / PyDev
An introduction to creating projects in Eclipse / PyDev.
PyDev Problems
Some typical problems when using PyDev.
A Free Textbook
How to Think Like a Computer Scientist: Learning with Python: a free textbook available for downloading.
Python Library Reference
This library reference manual documents Python's standard library, as well as many optional library modules.
Style Guide for Python Code
A style guide for Python from the creator of Python.
The Python wiki.

The educational materials developed for this course, including, but not limited to, lecture notes and slides, handout materials, examinations and assignments, and any materials posted to MyLearningSpace, are the intellectual property of the course instructor. These materials have been developed for student use only and they are not intended for wider dissemination and/or communication outside of a given course. Posting or providing unauthorized audio, video, or textual material of lecture content to third-party websites violates an instructor's intellectual property rights, and the Canadian Copyright Act. Recording lectures in any way is prohibited in this course unless specific permission has been granted by the instructor. Failure to follow these instructions may be in contravention of the university's Code of Student Conduct and/or Code of Academic Conduct, and will result in appropriate penalties. Participation in this course constitutes an agreement by all parties to abide by the relevant University Policies, and to respect the intellectual property of others during and after their association with Wilfrid Laurier University.
© 2021 David Brown. All Rights Reserved.