CS 302 Data Structures
Department of Computer Science & Engineering
UNR, Spring 2015
Course Information
Tuesday & Thursday, 9:30 - 10:45pm,
MIKC 107
Instructor Dr. Mehmet H. Gunes
mgunes (at) unr (dot) edu
(775) 784 - 4313
Web page http://www.cse.unr.edu/~mgunes
SEM 238 (Scrugham Engineering-Mines)
Tuesday & Thursday 11:00 am - 12:30 pm
or by appointment
Muhammed A. Canbaz and Ahmet Soran
Assistants Tue 12-2pm and Wed 12-2pm
Office SEM 255A (Lab SEM 211)
Catalog Description
Data structures and algorithms fundamental to computer science; abstract data-type
concepts; measures of program running time and time complexity; algorithm analysis
and design techniques.
The purpose of this course is to introduce you to data structures, an issue central to the
art of computer programming. At the end of the course you will be equipped with the
tools of data organization to enable you to write simple, clear, and efficient programs.
The course will be structured around a comprehensive set of computer assignments to
enable you to get hands on experience. Our programming language of choice will be
Prerequisite : C or above in CS 202
A good working knowledge of C++ programming up through recursion,
dynamic memory and basic data structures such as stacks, queues, and linked
Frank M. Carrano and Timothy Henry, "Data Abstraction & Problem Solving
with C++", Prentice Hall; 6th edition.
Setfan Brandle, Jonathan Geisler, James Roberge, David Whittington"C++
Data Structures: A Laboratory Course", Jones and Bartlett, 3rd edition
Clifford A. Shaffer Data Structures and Algorithm Analysis, Dover
Publications, 3rd edition.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein,
"Introduction To Algorithms", The MIT Press; 3rd edition.
Mark Allen Weiss, "Data Structures and Algorithm Analysis in C++ ", Prentice
Hall, 3rd edition
W. Ford and W. Topp, "Data Structures with C++", Prentice Hall, 2nd edition
R. Kruse and A. Ryba "Data Structures and Program Design in C++ ", Prentice
M. Main and W. Savitch "Data Structures and Other Objects Using C++.",
Prentice Hall, 4th edition
Nell Dale, "C++ Plus Data Structures", Jones & Bartlett Learning; 5th edition.
Syllabus (Tentative)
This is a tentative list of topics, subject to modification and reorganization.
Data Abstraction
Array- and Link-Based Implementations
Recursion as a Problem-Solving Technique
Algorithm Efficiency
Sorting (Selection sort, Bubble sort, Insertion sort, Merge sort, Quick sort,
Radix sort, Counting sort, Bucket sort)
Queues and Priority Queues
Trees (Binary Search Tree, Interval Tree, MDS Tree)
Heaps (Heap ADT and Heap Sort)
Dictionaries (Dictionary ADT, Hashing)
Balanced Search Trees (2-3 Trees, 2-3-4 Trees, Red-Black Trees, AVL Trees)
Graph (Breadth-first search, Depth-first search, Minimum Spanning Tree,
Bellman-Ford shortest path, Dijkstra shortest path, Circuits)
Processing Data in External Storage
Except this web page, all course materials will be posted at the WebCampus.
Presentation slides will be available on the class web page. I will try to put
them up before each class meeting but no guarantees on that.
Class participation in terms of asking questions is highly encouraged. Please do
not be afraid to ask questions no matter how simple you might think the answer
could be. This type of interaction helps improve the effectiveness of the class
and breaks the monotony.
Students are encouraged to bring articles, demos, web pages, news events, etc.
that are relevant to course topics to the attention of the instructor. The success
of the course depends on everyone in the class engaging the material and
bringing energy, enthusiasm, and intellect to class activities.
Regular attendance is highly recommended. If you miss a class, you are
responsible for all material covered or assigned in class. You should arrive on
time and be prepared to discuss the session's topic. The underlying notion of
the class is interaction, not passivity.
Unless instructed otherwise, use of electronic devices including laptops are not
allowed during lectures.
Extra credit will be offered to the students who attend the departmental
colloquia (an extra point for two colloquium attendance). You will be reminded
in class about upcoming talks but you should also check the colloquia page on a
regular basis (http://www.unr.edu/cse/get-involved/calendar).
There will be 8 programming assignments. In the lectures, you will be
introduced to data structures at an abstract level. In the assignments, you will
write code to implement and use these data structures. Assignments will require
turning in C/C++ code that compiles and runs properly, and a report
documenting the code. Some of the programming assignments will be done in
groups of two. When working with a partner, both team members are expected
to fully understand the structure of the code and the implemented algorithms.
Discussion of the programming assignments is allowed and encouraged.
However, students are expected to do their own work. Assignments which are
too similar or replicated from the Internet will receive a zero. Late assignments
will be penalized by 20% per day, except holidays.
We will be using the workstations in the College of Engineering Computing
Center (SEM 231). Typically you will be asked to submit an electronic version
of your code, and test runs, along with a folder with an appropriate write-up for
your program. Every assignment must be completed, working, and turned in.
There will be 5 points penalty for each missing programming assignment.
Don't get behind in the programming assignments. Probably the main reason
for students doing poorly in this course is getting behind in the assignments and
never recovering. Design and implement in a top-down, modular fashion. Get
something working that has the skeleton structure of what you need and then
add features to it. Each time you add a feature, test it and make sure everything
is still working. It can be tough to debug big programs if all you know is that
the output is wrong and you are not sure any individual module is working.
Online forums are set up in WebCampus to exchange ideas and provide tips.
Active users will be given bonus points at the end of the semester.
There will be 13 online quizzes given every Thursday. The lowest graded 2 will
not affect your overall grade. Questions in these quizzes will be designed to
give you an opportunity to test and affirm your knowledge for the week's
There will be one midterm exam and one final exam. You should plan on
taking the exams on the scheduled times. No late/early exams unless in case of
an emergency situation such as health emergency or similar un-avoidable
situations and you need to provide convincing documentation for it. The
material covered in the exams will be drawn from the lectures, quizzes, and
homework. The exams will be closed books and closed notes but a single page
cheat sheet (double side letter size) is allowed. No calculators (unless otherwise
stated) and no other computing devices should be used during the exam.
Assignments and exams must be prepared strictly individually. You are
welcome to discuss the problems or solution strategies with your class mates
but the resulting work should be your own. Copying from each other or from
other sources is considered as cheating. Any form of cheating such as
plagiarism or ghostwriting will incur a severe penalty, usually failure in the
course. Please refer to the UNR policy on Academic Standards.
Surreptitious or covert video-taping of class or unauthorized audio recording of
class is prohibited by law and by Board of Regents policy. This class maybe
videotaped or audio recorded only with the written permission of the instructor.
In order to accommodate students with disabilities, some students may have
been given permission to record class lectures and discussions. Therefore,
students should understand that their comments during class may be recorded.
If you have a disability for which you will need to request accommodations,
please contact the instructor or someone at the Disability Resource
Center (Thompson Student Services - 101) as soon as possible.
Academic Success Services: Your student fees cover usage of the Math Center
(784-4433 or www.unr.edu/math-center), Tutoring Center (784-6030
or www.unr.edu/tutoring-center), and University Writing Center (784-6801
or www.unr.edu/writing-center). These centers support your classroom
learning; it is your responsibility to take advantage of their services. Keep in
mind that seeking help outside of class is the sign of a responsible and
successful student.
Grading (Tentative)
Both grading policy and scale are subject to change. Failure in either the assignments
or the tests will result in failure in the course.
Grading Policy
50 - Programming Assignments (8)
11 - Quizzes (11 of 13)
19 - Midterm Exam
20 - Final Exams
Grading Scale (Tentative)
A : 87 - 100
B : 75 - 86
C : 63 - 74
D : 51 - 62
F : 0 - 50 (or caught cheating)
Important Note: You will have one week to appeal for your grades after the graded
assignments/tests are returned. So, please keep this in mind if you think that there is a
problem/issue with the grading of your work.
ABET Criteria
The course outcomes are skills and abilities students should have acquired by the end
of the course. These outcomes are defined in terms of the ABET Accreditation
Criterion 3 Program Outcomes which are relevant to this course.
Our graduates will have achieved:
(3) an ability to design, implement, and evaluate a computer-based system,
process, component, or program to meet desired needs, within realistic
constraints specific to the field.
(4) an ability to function effectively on multi-disciplinary teams.
(7) an ability to communicate effectively with a range of audiences.
(9) a recognition of the need for, and an ability to engage in continuing
professional development and life-long learning.
(10) a knowledge of contemporary issues.