Home Syllabus Lecture lesson Assignment Lab Example Reference MyLS

WLU logo

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:

  1. Fundamentals of C programming language
  2. Primary data types, variables, and memory allocation
  3. Secondary data types: pointers, arrays, structures, unions, enumerations
  4. Linear data structures: linked lists, queues, stacks
  5. Trees: binary search tree, AVL tree, red black tree
  6. Heaps: binary heap, binomial heap, Fibonacci heap
  7. Hash tables: hash functions, collisions, chained hash tables
  8. Graph data structures: adjacency matrix, edge list, adjacency lists
  9. 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-10085-8980-8477-7973-7770-7267-6963-6760-6257-5953-5750-520-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.

  1. 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.
  2. 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)
  3. 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.

  1. 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.
  2. 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.
  3. 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.

  1. 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.
  2. 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.
  3. 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).