Course Syllabus
CP264 Data Structures II 2026 Winter (Session B) 12-week course
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:30 pm -3:30 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: Bricker Academic Building BA201
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, labs, midterm, and final exam. All lessons, lecture notes, assignments are posted on MyLearningSpace (MyLS). All assignment and lab 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.
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 apply the principles of data structures in data representation, organization, 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. Weekly lessons are provided by the instructor and serve as textbook.
Learning materials include weekly lessons, lecture notes, 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.
Course Strategies and Supports
Success in this course requires consistent effort, curiosity, and willingness to learn by doing. The strategies include: a. actively attending classes, asking and discussing questions with instructors and classmates, b. reading lessons and lecture notes before and after classes, c. doing and submitting assignment and lab tasks earlier before deadline.
When encountering difficulties, you can get in-person helps or supports from the instructor. You can directly talk to the instructor after class, during office hours, or by appointment. You can also get hand-on supports from lab instructors and IAs during lab sessions.
Student Evaluation
The learning outcomes will be assessed by the graded tasks with weights given in the following table.
| Assessment category | Weight |
| 10 labs | 5% |
| 10 assignments | 30% |
| midterm | 15% |
| final exam | 50% |
| 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
Every grade item counts, no drops, no weight transfers.
Class participation is mandatory. Reading the weekly lessons is required. All contents covered in lectures and lessons are tested in midterm and final exam.
Assignment and lab 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 and labs 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, marked, and graded. Programs that fail marking test compiling will receive a mark of zero.
The midterm exam will be held in person, is paper-based, 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 exam 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.
Addenting lab sessions are optional. Lab task submissions are required and graded as part of the overall evaluation.
Lecture Schedule
| Week | Day | Date | Class | Topic | Reading |
| 1 | Mon | Jan.05 | 1 | Course introduction, C concepts, compiling, execution | Lesson 1 |
| Wed | Jan.07 | 2 | C program structure, syntax, data types, variables | ||
| Fri | Jan.09 | 3 | Operator, expressions, flow controls | ||
| 2 | Mon | Jan.12 | 4 | Functions | Lesson 2 |
| Wed | Jan.14 | 5 | Pointers | ||
| Fri | Jan.16 | 6 | Array | ||
| 3 | Mon | Jan.19 | 7 | Multi-dimensional arrays | Lesson 3 |
| Wed | Jan.21 | 8 | String | ||
| Fri | Jan.23 | 9 | User defined types: structure | ||
| 4 | Mon | Jan.26 | 10 | User defined types: unions, enumerations | Lesson 4 |
| Wed | Jan.28 | 11 | File I/O | ||
| Fri | Jan.30 | 12 | C summary, principles of data structures | ||
| 5 | Mon | Feb.02 | 13 | Linked lists - I | Lesson 5 |
| Wed | Feb.04 | 14 | Linked lists - II | ||
| Fri | Feb.06 | 15 | Queues | ||
| 6 | Mon | Feb.09 | 16 | midterm, covering contents from week 1 to week 4 and A1-A4 | Lesson 6 |
| Wed | Feb.11 | 17 | Stacks | ||
| Fri | Feb.13 | 18 | Stack applications Next general calendar week is reading break, no classes |
||
| 7 | Mon | Feb.23 | 19 | Concepts of trees, binary trees | Lesson 7 |
| Wed | Feb.25 | 20 | Tree operations and applications | ||
| Fri | Feb.27 | 21 | Binary search trees | ||
| 8 | Mon | Mar.02 | 22 | AVL trees | Lesson 8 |
| Wed | Mar.04 | 23 | Red black trees | ||
| Fri | Mar.06 | 24 | Splay trees, m-way search trees, B-trees | ||
| 9 | Mon | Mar.09 | 25 | Hash tables, hash functions, collisions | Lesson 9 |
| Wed | Mar.11 | 26 | Advanced hash functions, problings | ||
| Fri | Mar.13 | 27 | Heaps, binary heaps | ||
| 10 | Mon | Mar.16 | 28 | Binomial heaps | Lesson 10 |
| Wed | Mar.18 | 29 | Fibonacci heaps | ||
| Fri | Mar.20 | 30 | Concepts of graphs, graph data structures | ||
| 11 | Mon | Mar.23 | 31 | Graph operations | Lesson 11 |
| Wed | Mar.25 | 32 | Minimum spanning tree problem and algorithms | ||
| Fri | Mar.27 | 33 | Shortest path problems and Dijkstra algorithm | ||
| 12 | Mon | Mar.30 | 34 | Case study on graph data structures | Lesson 12 |
| Wed | Apr.01 | 35 | Advanced application of graphs | ||
| Fri | Apr.03 | 36 | Final exam review Coverage: contents from weeks 4-12 and A4-A10, time is to be scheduled. |
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 | Friday, January 16 |
| a2 | Pointers, arrays | individual | 3 | 3 | Friday, January 23 |
| a3 | Strings, word processing, structures, file I/O | individual | 3 | 4 | Friday, January 30 |
| a4 | Sorting algorithms, record data processing | individual | 3 | 5 | Friday, February 06 |
| a5 | Linked lists | individual | 3 | 6 | Friday, February 13 |
| a6 | Queues, stacks | individual | 3 | 7 | Friday, February 27 |
| a7 | Tree, BST | individual | 3 | 8 | Friday, March 06 |
| a8 | AVL, sets | individual | 3 | 9 | Friday, March 13 |
| a9 | Hash tables, heaps | individual | 3 | 10 | Friday, March 20 |
| a10 | Graphs and algorithms | individual | 3 | 12 | Monday, March 30 |
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 Calendars: Students are encouraged to review the Academic Calendar for information regarding all services available on campus.
- Accessibility: Students with disabilities or special needs are advised to contact Laurier's Accessible Learning Centre for information regarding its services and resources. Review the Registration page for information about intake and documentation requirements. Deadlines: Students are responsible for meeting posted deadlines for registering with Accessible Learning and booking accommodated exams. Accessible Learning cannot guarantee accommodations for requests received after posted deadlines
- 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)
- 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 nonacademic 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.
- Late Assignment Policy: Late submissions won't be accepted and marked except under extreme situations. Refer to the Handbook on Undergraduate Course Management.
- Final Examinations: Students are strongly urged not to make any commitments (e.g., vacation) during the examination period. Students are required to be available for examinations during the examination periods of all terms in which they register. Refer to the Handbook on Undergraduate Course Management for more information. Refer to the Handbook on Undergraduate Course Management.
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).