COURSE ORGANIZATION & SYLLABUS

Data Structure

CS240 & CSC-503

Fall 2009

Course Objectives: The primary focus of this course is to introduce to students the ways elemental data could be organized into entities that facilitate logical actions and more efficient programming. These organized items, called data structures, form the basis on which advanced programming techniques could be designed. In this lecture-series, we would learn various data structuring techniques and the ways efficient algorithms on such structures could be realized. The course would be basically delivered in C++ language environment. The prerequisite for this course must be met through an appropriate high level structured language.

Instructor: Sam Sengupta, Room C129, phone: 792-7353, email:

Prerequisite: CS108 or equivalent with a grade of C or better(a must)

Textbook: C++: An Introduction to Data Structure by Nyhoff, Prentice Hall (or a similar book will do)

Office hours: Mondays: 12:15-1:55 PM, Wednesdays: 12:15-1:50 PM

Course content:

0. Why data structure? Its rational and scope

1. Basic C++

2. Mathematical preliminaries.

3. Recursive schemes.

4. Abstract Data Type as fundamental units.

5. List as a generalized structure.

6. Stacks and Queues.

7. Linked linear lists. Various Implementations.

7. Trees (Binary search Trees + B-Trees ...)

8. Oh notation for algorithmic complexity

9. Searching

10. Sorting

11. Hashing for storage and retrieval

12. Graphs

Complier choice: The students are free to use any C++ compiler to do assignments and their course project. For this class, I would be using the Dognet UNIX system environment where programs could be compiled, run and tested easily.

The students are expected to work on 4 programming assignments (covering 20% of the grade) to gain proficiency in the language and the concepts of data structure. In lieu of submitting individual student assignments, the students are encouraged to submit group assignments. The idea is to foster group studies, group communication and group exploration to get better grips on data structure concepts to complement the lecture sessions. A group should comprise between 3 to 4 students, and the individual student’s performance would reflect group’s performance in assignments and the written presentation of the group report. Unless the instructor is convinced of the student's proficiency in their chosen language, a student might not receive passing final grade.

Project report and presentation:

All students are supposed to work on a programming project (in a group configuration) that’d enable them to practice their skill to develop and work with appropriate data structures on attendant algorithms. The project must be orally presented to the class (about half-hour duration) and also a written report including the source code and input/output listings must be provided at the time of class presentation. They must field questions posed by the instructor and the fellow students during their oral presentation and answer them appropriately. Students are expected to pass the joint midterm and the final exams before they are allowed to receive a final passing grade.

Calculus usage:

Hardly ever required. But we have to know enough mathematics like college algebra (e.g. you must know log and exponential functions, know summation of series, etc.).

Evaluation scheme:

The final grade to be reported would be computed as follows:

● Assignments (20% of the final grade)

● Tests (25% of the final grade):

■ Test 1 (September 23, 2009): Out of 100

■ Test 2 (October 14, 2009) Out of 100 (Just after the midterm break)

■ Test 3 (November 18, 2009) Out of 100

● Final exam (30% of the final grade): Date to be announced

● Group project (25% of the final grade)

■ Oral presentation in the class (between Nov. 23 and Dec. 2)

■ Written report (to be submitted at the oral presentation time)

Note that both the oral presentation and the written report would carry equal weights. No passing grade would be awarded if the Final exam component earns less than 50 out of 100.

Academic integrity policy: This course, like all other courses offered in SUNYIT, operates in accordance with the principle, outlined and reemphasized at all orientation sessions, of academic honesty. This implies every individual student needs to be responsible for his/her personal behavior, respect for others, independent thought,and absolute adherence to academic honesty. Plagiarism, in any form, would be severely punished. This includes unauthorized collaboration, seeking help form outside one’s approved domain, and unacknowledged use of other works,

Course outcome: Successful completion of this course would enable one to approach general algorithmic problems efficiently and in manners expected in the industry. The major expectation within this broad appeal is that a student would be able to formulate and implement an efficient object-oriented algorithm to capture an operational essence of a system under focus. This course is a gateway to the broad discipline of Computer Science. Also, this course focuses on community learning and functioning in a group environment, a must in an industrial setup.

Class website: