CS 254 Spring 2002 - Data Structures

| News | Overview | Instructor | Schedule | Grades | Help Resources | Labs | Project |

Course Overview - Fall 2001

Class Meetings
Lecture Monday/Wednesday 8:00 - 8:50 Darwin 2
Lab Section 1 Monday 9:00 - 11:50 Darwin 19B
Lab Section 2 Tuesday 8:00 - 10:50 Darwin 19B
Lab Section 3 Thursday 8:00 - 10:50 Darwin 19B

Description
CS 254 is primarily concerned with the topic of data structures: what the various data structures are, how they are used, and the consequences of choosing one data structure over another when designing a program to accomplish a particular task. The data structures to be discussed include arrays, dynamic arrays, various linked lists (both those using linked nodes and those using arrays), trees of various kinds, and hashing. The data structures will be introduced in the context of abstract data types (ADTs) and object-oriented programming. The ADTs to be discussed include bags (multisets), sets, lists, stacks, queues, tables (maps and multimaps) and graphs. The approach to the material is to combine theory presented in lectures and readings with practice obtained through programming exercises. Programming will be done in C++; important language features will be discussed.

In addition to the data structures the course will discuss: abstraction and the use of C++ classes to implement abstraction; recursion; dynamic allocation of storage and pointers; running time performance of different algorithms and their relevance in choosing a data structure; program reuse and the use of templates in C++; operator overloading.

Course Materials
Required Text: Data Structures and Other Objects Using C++, 2nd Edition by Michael Main and Walter Savitch.

ZIP disks: You will need at least one zip disks for programming work, but you should have a second for backup.

Prerequisites
CS 150: Introduction to Programming or its equivalent. C++ is not required, however, students lacking background in C++ will need to familiarize themselves with the language within the first two weeks of the course. This is usually difficult for students with a knowledge in C, and impossible for students without a knowledge in C. Moreover, students who have not acquired a strong foundation in the fundamentals of programming (e.g. earned a grade below a C in CS 150) are encouraged to retake CS 150 or its equivalent before taking this class.

Important Dates
Wednesday, Feb 6 Last day to DROP courses
Friday, Feb 8 Last day to ADD courses
Monday, Mar 11 and Wednesday, Mar 13 Midterm 1
Monday April 8 and Wednesday, Apr 10 Midterm 2
Friday, Apr 19 Last day to WITHDRAW from courses
Monday, May 20 Final Exam 8:00-9:50 am

Coursework
Lecture and Lab
The proposed outline of what is to be covered appears in the course schedule. You are expected to attend all lectures and labs and to read the relevant sections of the text prior to lecture and the relevant online documentation prior to lab. You are responsible for making up missed work if you are absent.

Everyone is expected to attend the lab. Part of the grade for the lab is based on your attendance. I consider the lab the most valuable part of the course. It provides an opportunity for students in the class to interact with each other and with the instructor, to get immediate solutions to coding problems, to get advice on the process of programming. Exercises will be done as part of the lab. These are not optional. They will not be graded except that you must have made a reasonable attempt at most of the exercises to receive full credit for that lab They will be helpful in completing the programming projects, and the material in the exercises will appear on exams.

Programming Project

There will be programming projects. These projects will be graded. Programs will be written in C++ using CodeWarrior. CodeWarrior is available in both CS Department labs (Darwin 19B and 19C), and in selected IT labs (Darwin 16, Stevenson 2044). You may work at home with any C++ environment, but your completed work must be submitted as CodeWarrior cross-platform projects ready to run on a Macintosh or under Windows. No work will be accepted late without a compelling explanation. If you have not completed your assignment by the time it is due, you may turn in what you have completed for partial credit. However, little credit will be given for programs that do not compile without errors.

Midterms and Final Exam
There will be two midterm exams. All exams are closed book. The examinations are based on the assumption that you are responsible for knowing the material covered in class (lecture and lab) and also material covered in the relevant sections of the course texts. The final exam will be comprehensive.

Grading
Lab Attendance and Exercises 15%
Miterms 30%
Final Exam 25%
Programming Projects 30%

CS majors must take this course for a letter grade. University guidelines regarding the grade of Incomplete will be strictly adhered to. Incomplete grades will only be given for circumstances beyond a student's control; inability to keep up with the work due to an excessive course load, for example, is insufficient to warrant an Incomplete.

You must separately pass the exams (2 midterms and the final) and the programming (labs, lab exercises, and projects) in order to pass the class

One midterm score will be dropped from the computation of the grade if the score on the final is higher.

A- 90 A 93
B- 80 B 83 B+ 87
C- 70 C 73 C+ 77
D- 60 D 63 D+ 67

Policy on Collaboration
You are encouraged to discuss course material with other students. Don't be shy about consulting with anyone, but please understand that you, and only you, bear the responsibility for solving the problems associated with producing a successful project or solving a homework assignment. Please read the CS Department policy on plagiarism and keep the following in mind.

Remember that you are ultimately (i.e. during an exam) responsible for understanding the material.


| SSU | CS Dept |