Profile Picture

Dr. George N. Rouskas

Professor and Director of Graduate Programs
IEEE Fellow

Dr. George N. Rouskas

Professor and Director of Graduate Programs
IEEE Fellow

CSC 316 — Data Structures

Spring 2019 Schedule of Lectures

Lecture slides, assignments, and solutions available from the course Moodle space

Date Lecture # Topic Assignment Due
Jan 7 1 Overview, goals, logistics
Jan 9 2 Algorithm analysis
Chapter 4 (5th/6th)
Project 1
HW 1
Jan 14 3 Recursion
Chapter 3.5 (5th) / Chapter 5 (6th)
Jan 16 4 Stacks, queues
Chapter 5 (5th) / Chapter 6 (6th)
Jan 21 No class (MLK Holiday)
Jan 23 5 Linked lists
Chapter 3.2-3.4, 6 (5th) / Chapter 3.2-3.4, 7 (6th)
Discussion of Project 1
HW 2 HW 1
Jan 28 6 Linked lists (cont'd)
Chapter 9.5 (5th) / Chapter 10.1 (6th)
Jan 30 7 Binary search
Chapter 9.3 (5th) / Chapter 10.3 (6th)
Skip lists
Chapter 9.4 (5th) / Chapter 10.4 (6th)
Feb 4 8 Introduction to trees
Chapter 7 (5th) / Chapter 8 (6th)
HW 2
Feb 6 No class (reading day) Project 2 Project 1
Feb 11/12 First in-class exam
Feb 13 9 Binary search trees
Chapter 10.1 (5th) / Chapter 11.1 (6th)
Feb 18 10 2-3 trees, B-trees
Chapter 10.4, 14.3 (5th) / Chapter 11.5, 15.3 (6th)
HW 3
Feb 20 11 Discussion of Project 2
Splay trees
Chapter 10.3 (5th) / Chapter 11.4 (6th)
Feb 25 12 Priority queues
Chapter 8.1-8.3 (5th) / Chapter 9.1-9.4 (6th)
Feb 27 13 Leftist Heaps HW 3
Mar 4 No class (reading day) Project 3
HW 4
Project 2
Mar 6/7 Second in-class exam
Mar 11 No class (Spring break)
Mar 13 No class (Spring break)
Mar 18 14 Up-trees for union-find applications
Chapter 11.4 (5th) / Chapter 14.7.3 (6th)
Mar 20 15 Introduction to graphs
Chapter 13.1, 13.2 (5th) / Chapter 14.1, 14.2 (6th)
Mar 25 16 Minimum spanning trees
Chapter 13.6 (5th) / Chapter 14.7 (6th)
Discussion of Project 3
Mar 27 17 Discussion of Project 3
Shortest paths
Chapter 13.5 (5th) / Chapter 14.5 (6th)
HW 5 HW 4
Apr 1 18 Shortest paths (cont'd), Topological ordering
Chapter 13.4.1, 13.4.3 (5th) / Chapter 14.6 (6th)
Apr 3 19 Graph traversals
Chapter 13.3 (5th) / Chapter 14.3 (6th)
Apr 8 No class Project 4 Project 3
Apr 10 20 PageRank
Hashing techniques
Chapter 9.2 (5th) / Chapter 10.2 (6th)
Apr 15 21 Discussion of Project 4
Hashing techniques (cont'd)
Apr 17 22 Sorting: Mergesort, Quicksort, Sorting lower bound, Radix sort
Chapter 11.1-11.4 (5th) / Chapter 12.1-12.4 (6th)
HW 5
Apr 22 23 Greedy algorithms
Apr 24 No class (reading day) Project 4
Apr 29/30 Final exam




Students who wish to take this course must be CSC majors who have received a grade of C or better in both CSC 216 (Programming Concepts with JAVA) and CSC 226 (Discrete Math).


The purpose of this course is to introduce the principles and underlying concepts of algorithm design, and enhance your problem solving and software development skills. To this end, a wide range of practical techniques for manipulating data in digital computers will be presented, along with a mathematical analysis of their performance.

At the conclusion of the course you should be able to:

  • complete moderately large programming projects independently, and code modules of larger projects;
  • define abstract data types to subdivide a large problem into smaller, manageable subproblems;
  • select for a repertory of commonly used data structures the ones most appropriate for the application at hand;
  • effectively implement the abstract data types learned in class (or the ones you design yourself);
  • evaluate the relative performance of alternative data structure and algorithm designs for a given problem, in terms of their asymptotic running time; and
  • explain and feel confident about your approach to the solution of a given problem, and its implementation.

I encourage and expect you to participate actively in the learning process. In particular, I welcome your comments and questions as we cover material in class. One-way lectures quickly become boring, both for you and for me. By asking lots of questions your understanding of the material will be deepened significantly, and the course will be much more fun!


The course will cover a wide range of data structures and associated algorithms, including:

  • Properties of programs, running time, and asymptotics
  • Array and linked-memory implementations of lists, stacks, and queues
  • Searching using lists, unbalanced tree structures (binary search trees, Splay trees) and balanced trees (2-3 trees, randomized binary search trees)
  • Up-trees as sets with union-find operations
  • Graphs and graph algorithms (traversals, shortest paths, minimum spanning trees)
  • Sorting (heap sort, merge sort, insertion sort, selection sort, quick sort)
  • Hash tables and hashing techniques


Students are required to purchase the following textbook:

  • M. T. Goodrich, R. Tamassia, Data Structures and Algorithms in JAVA (6th edition), Wiley, 2014

The authors maintain a webpage with useful resources.

I will also make available an extensive set of lecture slides.


Students are required to complete all assignments and show all work in order to receive full credit. The final grade will be determined using the following weights:

  • 40% — Four programming projects (10% each)
  • 10% — Five homework assignments (2% each)
  • 30% — Two in-class exams (closed book, 15% each)
  • 20% — Final exam (comprehensive, closed book)


Attendance: Attendance is not mandatory but strongly encouraged. Students are responsible for making up any course material they miss.

Assignments: No hard copies of assignments or solutions will be handed out. New assignments and solutions will be announced in class and/or the course mailing list, and will be available on the course web page.

Submission: Students must submit their assignments as PDF or Word files using the submit facility. The deadline for submission is midnight (Eastern time) on the day due. Any deadline extensions are up to the discretion of the instructor, and will be announced to the whole class. Extensions may be provided to individual students only in advance of the submission deadline and only under extenuating circumstances.

Late Submission: No late assignments will be accepted and no partial credit will be given for late assignments without a valid excuse.

Cheating: Homework and projects are individual assignments and students are required to submit their own solutions. All students are bound by the University's academic integrity policies (refer to the relevant section below).

Teaching Assistant

Yunkai (Kai) Xiao ( is the TA for this course.

His office hours are: Mondays 1:45-2:45pm and Fridays 12:45-1:45pm and you may contact him by email or to arrange for an online chat or video call at a mutually convenient time.

Feel free to contact the TA for any questions about the course.

Office Hours

My office is in Room 2306 of the EB II building.

My office hours are 4:15-5:15pm on Mondays and Wednesdays. Distance students may either call me during those times, or may arrange to stop by or call at a different mutually convenient time.

Academic Integrity

Students are required to respect the NC State academic integrity policies.