
Course Syllabus
CP264 Data Structures II 2025 Fall (Session A)
Department of Physics and Computer Science, Faculty of Science, Waterloo Campus
I acknowledge that in Kitchener, Waterloo, Cambridge and Brantford we are on the traditional territory of the Neutral, Anishnawbe, and Haudenosaunee peoples.
Instructor Information
Instructor: Dr. Hongbing Fan (HBF)
Office: Science Building N2081
Email: hfan@wlu.ca
Weekly Office Hours: Friday 2:00 pm -3:00 pm, or by appointment
Course Information
Calendar Description: A continuation of the study of data structures and their applications using C. Linked lists, binary search trees, balanced search trees. Hashing, collision-avoidance strategies. A continuation of basic algorithm analysis.
Credit: 0.50
Pre-requisite: CP164, exclusion CP114
Mode of Delivery: In person
Lecture Time: MWF 09:30 am - 10:20 am
Class Room: Peters Building P110A/110B
Course Overview and Approach
Overview: Data structures are essential to algorithms and play a crucial role in determining their efficiency and resource usage. In this course, you will learn how to design, analyze, and implement data structures at a low memory level using the C programming language. The curriculum covers arrays, linked lists, queues, stacks, trees, heaps, hash tables, and graphs, with a focus on their practical applications in solving computational problems.
The following topics will be covered:
- Fundamentals of C programming language
- Primary data types, variables, and memory allocation
- Secondary data types: pointers, arrays, structures, unions, enumerations
- Linear data structures: linked lists, queues, stacks
- Trees: binary search tree, AVL tree, red black tree
- Heaps: binary heap, binomial heap, Fibonacci heap
- Hash tables: hash functions, collisions, chained hash tables
- Graph data structures: adjacency matrix, edge list, adjacency lists
- Time and space complexity analysis of algorithms and data structures
Approach: This course will be taught through Class lectures, reading lessons, program examples, assignments, midterm, and final exam. All lessons, lecture notes, and assignments are posted on MyLearningSpace (MyLS). All assignment submissions are made through MyLS.
Class email will be used for important and urgent matters. The discussion board will be used for general public questions. If your questions are personal, you may email the instructor. Due to time constraints, the instructor may not always respond immediately. You may also speak to the instructor after class or during office hours.
Goals and Learning Outcomes
The primary goal of this course is to teach students the concepts, principles, and skills needed to design, analyze, and implement data structures for algorithmic programming. By the end of this course students should be able to
- Design and write C programs to solve general computing problems.
- Understand and describe the principles of data structures in data representation, storage, and operations, as well as in algorithm design and implementation.
- Implement and use fundamental data structures, including arrays, linked lists, trees, hash tables, heaps, and graphs.
- Design, analyze, and implement application-specific data structures for algorithms.
Course Textbooks and Learning Materials
There is no required textbook for this course. Lessons are provided by the instructor.
Learning materials include lecture notes, lessons, examples, and references.
Software tools include GNU C compilers and programming IDEs. For Windows OS, mingw64 compiler and the make build tool will be used and supported for assignments. VS Code is used as default IDE for programming tasks of this course.
Student Evaluation
The learning outcomes will be assessed by the graded tasks with weights given in the following table.
Assessment category | Weight |
10 assignments | 30% |
midterm | 15% |
final exam | 55% |
Total | 100% |
You must achieve a minimum grade of 50% on the final exam and an overall grade of at least 50% to pass the course.
Final letter grades are obtained by converting the numerical percentage grades by the following table. The instructor reserves a right to adjust the cut-off for final letter grade up or down by 2.0%.
A+ | A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
90-100 | 85-89 | 80-84 | 77-79 | 73-77 | 70-72 | 67-69 | 63-67 | 60-62 | 57-59 | 53-57 | 50-52 | 0-49 |
Learning Activities, Assignments, and Examinations
Class participation is mandatory. Reading the weekly lessons is required. All content covered in lectures and lessons is included in tests.
Assignment tasks will be posted one week before their due date. All tasks are programming questions and must be completed individually. You must not view or share assignment solutions with others. Using AI-generated solutions is not permitted. You are responsible for and must be able to rewrite any assignment work you submit.
Assignments must be submitted to the MyLS dropbox before the due date at 11:59 pm. Late or missed submissions will not be accepted. Every submission will be tested and marked. Programs that fail marking test compiling will receive a mark of zero.
The midterm exam will be held in person and is closed book. It will be conducted in class at the scheduled time as shown in the Lecture Schedule table.
The final exam will be held in person, is paper-based, and is closed book. The Final Examination will be scheduled by the Examinations Office of the University. I will provide you with the date, time, and location as soon as they become available.
Lab sessions are optional and lab tasks are not graded as part of the overall evaluation.
Lecture Schedule
Week | Day | Date | Class | Topic | Reading |
1 | Fri | Sep.05 | 1 | Course introduction, C concepts, compiling, execution | Lesson 1 |
Mon | Sep.08 | 2 | C program structure, syntax, data types, variables | ||
Wed | Sep.10 | 3 | Operator, expressions, flow controls | ||
2 | Fri | Sep.12 | 4 | Functions | Lesson 2 |
Mon | Sep.15 | 5 | Pointers | ||
Wed | Sep.17 | 6 | Array | ||
3 | Fri | Sep.19 | 7 | Multi-dimensional arrays | Lesson 3 |
Mon | Sep.22 | 8 | String | ||
Wed | Sep.24 | 9 | User defined types: structure | ||
4 | Fri | Sep.26 | 10 | User defined types: unions, enumerations | Lesson 4 |
Mon | Sep.29 | 11 | File I/O | ||
Wed | Oct.01 | 12 | C summary, principles of data structures | ||
5 | Fri | Oct.03 | 13 | Linked lists - I | Lesson 5 |
Mon | Oct.06 | 14 | Linked lists - II | ||
Wed | Oct.08 | 15 | midterm, covering contents from week 1 to week 4 and A1-A4 | ||
6 | Fri | Oct.10 | 16 | Queues Next general calendar week is reading break, no classes |
Lesson 6 |
Mon | Oct.20 | 17 | Stacks | ||
Wed | Oct.22 | 18 | Stack applications | ||
7 | Fri | Oct.24 | 19 | Concepts of trees, binary trees | Lesson 7 |
Mon | Oct.27 | 20 | Tree operations and applications | ||
Wed | Oct.29 | 21 | Binary search trees | ||
8 | Fri | Oct.31 | 22 | AVL trees | Lesson 8 |
Mon | Nov.03 | 23 | Red black trees | ||
Wed | Nov.05 | 24 | Splay trees, m-way search trees, B-trees | ||
9 | Fri | Nov.07 | 25 | Hash tables, hash functions, collisions | Lesson 9 |
Mon | Nov.10 | 26 | Advanced hash functions, problings | ||
Wed | Nov.12 | 27 | Heaps, binary heaps | ||
10 | Fri | Nov.14 | 28 | Binomial heaps | Lesson 10 |
Mon | Nov.17 | 29 | Fibonacci heaps | ||
Wed | Nov.19 | 30 | Concepts of graphs, graph data structures | ||
11 | Fri | Nov.21 | 31 | Graph operations | Lesson 11 |
Mon | Nov.24 | 32 | Minimum spanning tree problem and algorithms | ||
Wed | Nov.26 | 33 | Shortest path problems and Dijkstra algorithm | ||
12 | Fri | Nov.28 | 34 | Graph pplications | Lesson 12 |
Mon | Dec.01 | 35 | Graph application case study | ||
Wed | Dec.03 | 36 | Final exam review |
Lecture schedule is subject to change according to the progress of class.
Course Work Schedule
Job | Topic | Work Type | Weight | Due week | Due date |
a1 | C basics | individual | 3 | 2 | Wednesday, September 17 |
a2 | Pointers, arrays | individual | 3 | 3 | Wednesday, September 24 |
a3 | Strings, word processing, structures, file I/O | individual | 3 | 4 | Wednesday, October 01 |
a4 | Sorting algorithms, record data processing | individual | 3 | 5 | Wednesday, October 08 |
a5 | Linked lists | individual | 3 | 6 | Wednesday, October 22 |
a6 | Queues, stacks | individual | 3 | 7 | Wednesday, October 29 |
a7 | Tree, BST | individual | 3 | 8 | Wednesday, November 05 |
a8 | AVL, sets | individual | 3 | 9 | Wednesday, November 12 |
a9 | Hash tables, heaps | individual | 3 | 10 | Wednesday, November 19 |
a10 | Graphs and algorithms | individual | 3 | 12 | Monday, December 01 |
University Course Policies
Laurier has several senate approved policy statements it requires instructors to include in their syllabus. Those with specific wording approved by senate are indicated specifically below.
- Academic Integrity: Laurier is committed to a culture of integrity within and beyond the classroom. This culture values trustworthiness (i.e., honesty, integrity, reliability), fairness, caring, respect, responsibility and citizenship. Together, we have a shared responsibility to uphold this culture in our academic and nona-cademic behaviour. The University has a defined policy with respect to academic misconduct. As a Laurier student you are responsible for familiarizing yourself with this policy and the accompanying penalty guidelines, some of which may appear on your transcript if there is a finding of misconduct. The relevant policy can be found at Laurier's academic integrity website along with resources to educate and support you in upholding a culture of integrity. Ignorance is not a defense.
- Plagiarism: the University has approved the following wording for inclusion on all course syllabi about the use of the institutionally supported plagiarism software tool. “Wilfrid Laurier University uses software that can check for plagiarism. If requested to do so by the instructor, students are required to submit their written work in electronic form and have it checked for plagiarism.” (Approved by Senate May 14, 2002)
- Special Needs: Students with disabilities or special needs are advised to contact Laurier's Accessible Learning Centre for information regarding its services and resources. Students are encouraged to review the Academic Calendar for information regarding all services available on campus.
Intellectual Property
The educational materials developed for this course, including, but not limited to, lecture notes and slides, assignments and helps, examinations, and any materials posted to MyLearningSpace (exclude reference materials), 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 Student Non-Academic Code of 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.
- As a registered student of this course, you are allowed to download and hold all posted teaching materials of this course for your own reference. You are not allowed to disclose the course materials and information (including your solutions) of assignments, labs, examinations to others.
Kitchener/Waterloo campus resources
The University approved the inclusion of information about select wellness and safety services and supports on campus in the course information provided to students. (Approved by Senate November 28, 2011). Specific language (by campus) is provided below.
- Waterloo Student Food Bank-All students are eligible to use this service to ensure they’re eating healthy when overwhelmed, stressed or financially strained. Anonymously request a package online 24-7. All dietary restrictions accommodated.
- Waterloo Foot Patrol-519.886.FOOT (3668)- A volunteer operated safe-walk program, available Fall and Winter daily from 6:30 pm to 3 am. Teams of two are assigned to escort students to and from campus by foot or by van.
- Waterloo Student Wellness Centre519-884-0710, x3146 - The Centre supports the physical, emotional, and mental health needs of students. Located on the 2nd floor of the Student Services Building, booked and same-day appointments are available Mondays and Wednesdays from 8:30am to 7:30 pm, and Tuesdays, Thursdays and Fridays from 8:30 am to 4:15 pm. Contact the Centre at x3146, wellness@wlu.ca or @LaurierWellness. After hours crisis support available 24/7. Call 1-844-437-3247 (HERE247).