[
Home
|
Lab
|
New Students
|
Courses
|
Research
|
Publications
|
Activities
]
Back to Courses and Activities of Local Interest
Back to CSC 311 Home
CSC 311: Data Structures
(Section 001; Call Number 282300)
TH 1:05 PM - 2:20 PM, Cox 214
Munindar
P. Singh
Email address: singh@ncsu.edu
Office hours: TH 2:30PM-4:15PM; TH 6:15PM-7:00PM
Office: Daniels 131C
TA: Seema Dutta
Email address: sdutta@eos.ncsu.edu
Phone: 515-
Office hours: M 2:30-4:00PM and W 10:00-11:00AM
Office: Daniels 209
Prerequisites
The following are the prerequisites. Students failing to meet the
prerequisites will be dropped administratively. If you don't have the
prerequisites, please drop yourself to avoid losing an opportunity to
take an alternative course.
Here is a (partial) list of topics that will be assumed: infinite
series, recurrence relations, elementary set theory, relations,
partial orders, functions, concept of a theorem, propositional logic,
predicate logic. These topics are covered in CSC222:
Applied Discrete Mathematics. You may review Chapters 1
to 6 from the following book, which is sometimes used as the CSC 222
textbook:
Textbooks and software
- Required: A Practical Introduction to Data
Structures and Algorithm Analysis: Java Edition by Clifford
A. Shaffer, Prentice Hall, 1998. ISBN 0-13-660911-2.
- Recommended: Course pack. The
course pack contains copies of the transparencies and is online. I
recommend having a a copy of the transparencies handy during class.
Topics
This course will develop the key concepts of data structures that
underlie computer algorithm design and implementation. It seeks to
form the cornerstone of the students' programming skills and shall be
the basis of most later computing education. Upon successful
completion of this course, students should be able to
- understand the concepts of abstract data types enough to
custom-design such to suit the needs of their programming efforts
- understand and write recursive algorithms to implement various
abstract operations
- produce stand-alone computer programs of moderate complexity
- produce significant modules for use as components of larger
development projects
- apply from a select repertoire of the most important data
structures in computing
- compare different implementations of the same abstract data
types in terms of asymptotic performance.
Features
- Mathematical orientation
- Intensive programming projects
- Emphasis on concepts
Topics
Specifically, we will cover the following topics from the
textbook. The indicated class times are approximate
estimates! Not every subsection of a listed section may be
covered.
- Introduction to ADTs (0.5 weeks: chapter 1)
Mathematical Preliminaries (self-study: chapter 2)
- Algorithm Analysis Concepts (1 week: chapter 3)
- Stacks and Queues (1 week: chapter 4.2, 4.3)
- Linked lists and recursion (2 weeks: chapter 4.1)
- Trees (2.5 weeks: chapter 5.1, 5.2, 5.3, 5.5, 5.6, 11.4)
- Graphs (2 weeks: chapter 7)
- Sorting and Bounds (1.5 weeks: chapter 8.1, 8.2, 8.4, 8.6, 8.9)
- Hashing (1 week: chapter 10.1, 10.2, 10.4)
Grading
+/- grades will assigned. There will be a lot of work -
please plan to spend about 11-13 hours for this course (outside of
class) each week. Some of the homework assignments may also involve
programming.
Component | Points |
Quizzes | 30% |
Final Examination | 20% |
Homework | 15% |
Programming Projects | 30% |
Class participation | 5% |
Important Dates
The official dates are provided here only as a courtesy. I don't
accept responsibility for any errors in those dates.
Event | Date |
Last day to drop with refund | January 20 |
Academic difficulty reports due | February 1 |
Last day to drop without grade | February 17 |
Last day of classes | April 30 |
Final Examination | May 4, 1:00-4:00PM |
Watch the page
(http://www4.ncsu.edu/eos/info/dblab/www/mpsingh/local/311/) for
updates.
singh@ncsu.edu