CSC 316 Data Structures

abstract data types along with efficient implementations for each. Emphasizes asymptotic running time as a measure of program performance. Lists, stacks, queues, sparse arrays, binary trees, heaps, balanced search trees, and hash tables. Illustrative applications such as graph, text-processing, or geometric algorithms. 3 credit hours.


• Prerequisites

CSC 216 Programming Concepts - Java and CSC 226 Discrete Mathematics with a grade of C or higher (if you do not meet these requirements, please consult with the instructor). Students are expected to know JAVA and the course does not teach you how to program in JAVA.

• Course Topics

The purpose of this course is to introduce the principles of data structures that allow one to store and collect data objects with fast updates and queries. The course topics include the following:

  • Running Time
  • Stacks, queues, and linked lists
  • Sequences
  • Trees
  • Priority queues
  • Dictionaries
  • Sorting
  • Graphs

• Course Requirements


  • 10%: 5 written homework assignments
  • 40%: 4 programming projects
  • 30%: Two midterm exams
  • 20%: Final exam


There will be 5 written assignments. Written assignments are mostly exercise and reinforcements of what we learn in the class period and should be doable within 4-5 hours. All students have to post their solutions through submit in PDF or ASCII file (.pdf or .txt).

There will be four programming projects. They are regarding implementation of data structures and an application to use them. We are currently considering four data structures to be implemented, but we may change them. These include:

Stack and Queue
Sequence (list, doubly linked lists)
Tree (binary trees, heap)

In doing these assignments, we emphasize object oriented concepts. Your job is to strictly follow the specification to the teeth. It might look onerous to do the assignment as specified in the assignment, and you might find a better more efficient way to accomplish the assignments. But you can only try a new way only after you finish the implementation according to the specification. In this class, we don't teach you object-oriented programming, but we require you to practice what you learn from the prerequisite.

Also no test cases will be given for programming assignments. It is your job to test your programs thoroughly.


All exams are closed book. All the exam schedules are posted through the course webpage.

• Textbook

Goodrich and Tamassia, Data structures and Algorithms in JAVA, 5th Edition, ISBN: 9780470383261
Text URL:
You can find useful information about the course materials, code fragments, etc.

• Computer and Internet Requirements

NCSU and Engineering Online have recommended minimum specifications for computers. For details, click here.

• Instructor
  Dr. George N Rouskas, Professor
Computer Science-Engineering
Engineering Building II(Eb2) 3-278, Box 8206
NCSU Campus
Raleigh, NC 27695

Phone: 919-515-3860
Fax: 919-515-7896
Web Site:
Class Web Site: