Physics & Computer Science

CP164: Data Structures I - Winter 2024

Course schedule, methodology, assessments, lab attendance and exam policies have been planned based on current public health guidelines. Should these guidelines change, adjustments will be communicated to students.

Instructor Information

Mr David Brown - dbrown@wlu.ca
By Appointment

Lab Instructor Information

Ms Sumeet Kaur Sehra - sksehra@wlu.ca

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 Days Times Room Instructor
B MWF 08:30 AM - 09:20 AM BA201 Mr. David Brown (dbrown at wlu.ca)
C MWF 10:30 AM - 11:20 AM BA201 Mr. David Brown (dbrown at wlu.ca)
L1 M 05:00 PM - 07:20 PM BA113 Mr. David Brown (dbrown at wlu.ca)
L11 F 12:00 PM - 02:20 PM BA113 Ms Sumeet Kaur Sehra (sksehra at wlu.ca)
L13 W 11:30 AM - 01:50 PM BA113 Ms Sumeet Kaur Sehra (sksehra at wlu.ca)
L2 T 03:00 PM - 05:20 PM BA113 Ms Sumeet Kaur Sehra (sksehra at wlu.ca)
L5 R 01:30 PM - 03:50 PM BA113 Ms Sumeet Kaur Sehra (sksehra at wlu.ca)
OC1 - Mr. Qutaiba Albluwi (qalbluwi at wlu.ca)

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

The Department of Physics & Computer Science requires for all first and second year courses that students must pass the final exam in order to pass the course.

If you pass the final exam, the following evaluation is applied:

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

No labs or assignments are dropped from the course evaluation.

Schedule

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

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

University and Course Policies

Resources

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.
http://wiki.python.org/moin/
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.

© 2024 David Brown. All Rights Reserved.