CSC 316 Data Structure

Summer 2004

Department of Computer Science

North Carolina State University


Home Page:

Course Locker:

Class Schedule (for Sections 051 and 651)



(May 22, 2004) First face-to-face meeting day: We will meet in person on Wed (5/26) 3pm in Withers 226. Everyone is encouraged to attend.

Lecture Video


Dr. Injong Rhee Office: EGRC 460, Phone: 515-3305 
Office Hours: there is no scheduled office hour. TA will be scheduling weekly office hours and Q&A sessions.
Home page: 


Gopalakrishnan Subramanian  []
Office: Withers 402 Desk #7
Office Hours: TBA
Face-to-face Q&A session: TBA



CSC 216 and CSC 226 with a grade of C- or higher  (if you do not meet these requirements, you are automatically dropped from the course by the admin system). Students are expected to know JAVA and the course does not teach you how to program in JAVA.



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

Course Overview

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: 

Overview of Java 
Running Time 
Stacks, queues, and linked lists. 
Priority queues 


There will be 7-8 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.

 There will be four programming projects (each of which may be broken into two smaller pieces, each of which may or may not have different due dates).  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. Our specifications are written to reflect this emphasis. 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-orientedness, 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.

Getting help

We have office hours practically every week day. So you should be able to get a help from our teaching staff constantly. You may send email to us or post a question in the message board (which is more preferred). However, DO NOT POST a source code via EMAIL or MESSAGE BOARD. We cannot fix your bugs and we don’t want to parse through your code to find the bugs. If you want us to look at your code, come to office hours. We will be glad to work with you in person.

 We also highly encourage students to help each other. The best way to do this is via message board. In this course, you will be given many opportunities to earn extra credits. Helping others in more controlled ways as through message board will get you a lot of credits (Note that I allocated 10% for class quizzes and class participations). We appreciate your helping each other!!!

Grading Policy




The course grade is determined by the total points earned by students during the semester.

10%. Class quiz and participations

20% pts 5 - 8 written homework assignments 

30% pts 4 - 8 programming assignments 

20% pts one midterm exam

20% pts Final exam


The following grade scale will be used (no curve is applied):


A+ = 97.0 - 100.0

A = 93.0 - 96.9

A- = 90.0 - 92.9


 B+ = 87.0 - 89.9

B = 83.0 - 86.9

B- = 80.0 - 82.9


 C+ = 77.0 - 79.9

C = 73.0 - 76.9

C- = 70.0 - 72.9


 D+ = 67.0 - 69.9

D = 63.0 - 66.9

D- = 60.0 - 62.9



F = < 60.0




Exams and Quizzes

All exams are in-class and closed book. Midterm exams are conducted in a normal class hour (whose date will be announced later on). You need to consult the university schedule to get the final exam schedules.

There will be one or two quizzes per class. These quizzes deal with exercise questions on the topics we discuss typically in the same class. Please note that I allocated 10% of the grade to these quizzes.

You need to turn in all the quizzes through submit by the same weekend (Sunday midnight) that the quizzes are assigned (if a lecture containing a quiz is scheduled for that week according to the class schedule, the quiz is due by Sunday midnight of that week. Since quizzes are given during the class period, you need to watch video to find out the quiz questions. This is one way for teaching staff to ensure that you are keeping up with this class.



You are highly encouraged to attend the weekly Q&A sessions although it is not mandatory. However, you are required to watch lecture via Internet every week. We will conduct many in-class quizzes and there is no make-up from quizzes. No make-up tests will be given. In the event that you have a university excused absence, your grade for the missing exam will be the same grade you receive on the next exam (if you miss the final exam and you have a university excused absence, we will give you a new test at a mutually agreeable date).



K. Arnold and J. Gosling, The Java Programming Language, The Java Series, Reading, Mass.: Addison-Wesley, 1996.

D. Flanagan, Java in Nutshell. O'Reilly, 2nd ed., 1997.

Timothy Budd Understanding Object-Oriented Programming with Java Addison-Wesley, 1998

E. Horowitz, S. Sahni, and D. Mehta, Fundamentals of Data Structures in C++, Computer Science Press.

Late policy




All assignments are due at the beginning of the class on the due date. There is no credit for written assignments turned in late. For programming assignments, you will be deducted 10% off for each day late (including holidays and weekends) and no credit will be given after 5 days beyond the due date). All students (except the EOL students) are required to turn in their hard copy of their programs.

Honor Code

The Computer Science Department uses the MOSS system, developed at UC-Berkeley, to identify students whose programming assignments are similar enough to suggest cheating. MOSS will be run automatically on all programming assignments to cross-check all students from all sections. MOSS has proven highly effective in detecting cheating. In a recent year, 91 students from CSC 114 and CSC 210 were referred to the Office of Student Conduct for disciplinary action. Altogether that year, 118 cases of cheating were resolved by faculty, and 25 cases were resolved by the Judicial Board, resulting in 23 convictions and 5 suspensions/expulsions. Students will be asked to sign this honor statement on each exam: I affirm that I acted with integrity during this examination. In particular, I used no books, notes, or calculators not explicitly permitted; and I neither gave, received, nor solicited unauthorized assistance. I will report any violations by others within 24 hours.

When in doubt about whether something is permissible, ASK THE INSTRUCTOR. For more information on all NCSU Academic Policies, click here.

Students with Disability

Reasonable accommodations will be made for students with verifiable disabilities. In order to take advantage of available accommodations, students must register with Disability Services for Students at 1900 Student Health Center, Campus Box 7509, 515-7653. For more information on NC State's policy on working with students with disabilities, please click here.