Fall 2007

CSUDH Computer Science Department

CSC311 Data Structures

 

Instructor:                  Jianchao (Jack) Han

Phone number:           x2624

Office:                        NSM A-133

Email:                         jhan@csudh.edu

Meeting time:            Tuesdays and Thursdays 5:30pm -- 6:45pm

Class room:                WH C-155

Office hours:              T.Th.: 4:30pm -- 5:30pm or by appointment

Course Website:        http://www.csc.csudh.edu/jhan/Fall2007/csc311

 

Prerequisites:             CSC123, MAT191, MAT271 and MAT281

Text/Reference:         Data Structures and Algorithms in JAVA, 4th edition, by Michael T. Goodrich and Roberto Tamassia, John Wiley & Sons, Inc., 2006. ISBN: 0-471-73884-0

 

Content: This course will provide a comprehensive introduction to data structures and algorithms, and discuss their design, analysis, and implementations in JAVA. The content will include fundamental abstract data types such as stacks and queues, sequences, trees, priority queues, dictionaries, search trees, and graphs as well as their implementations with different data structures such as arrays, lists, vectors, and linked structures. We will also address the design and analysis of various algorithms related to different abstract data types and their implementations. Additionally, object-oriented design methodology, software design patterns, text document processing, and other advanced topics on software engineering will be also covered in this course.

 

Objectives: The objectives of this course is to help students

  • understand principal abstract data types including stacks, queues, priority queues, heaps, hash tables, sequences, dictionaries, trees, and graphs;
  • improve the skills of implementing abstract data types using different data structures including arrays, lists, and linked structures;
  • enhance the abilities of  object-oriented design and programming as well as the preliminary algorithms such as sorting, searching, insertion, deletion;
  • know the software design patterns such as Locators, Iterators, Positions, Template methods, Compositions, Comparators, and Decorators.

 Requirements: There will be TWO midterm tests and ONE final examination. All tests will be written in Class. Four written assignments and three programming projects will be required. To pass this course, you MUST complete all examinations, AT LEAST three written assignments and two programming projects.

 

Grading: The following weights will be applied to calculate your final score:

  • Four written assignments 20%, 5% each
  • Three programming projects 24%, 8% each
  • Two midterm tests 30%, 15% each
  • One final examination 26%

The score will be mapped to your final grade as follows:

Range

Grade

Range

Grade

Range

Grade

[95, 100]

A

[75, 80)

B-

[55, 60)

D+

[90, 95)

A-

[70, 75)

C+

[50, 55)

D

[85, 90)

B+

[65, 70)

C

[0, 50)

F

[80, 85)

B

[60, 65)

C-

 

 

 

Academic Integrity: Academic integrity is very important for all courses including this one at CSUDH. You are obliged to consult appropriate sections of the University Catalog and obey all rules relevant to its lawful missions, processes, and functions. Unless specifically stated otherwise in this syllabus, all written exams and programming projects must be the students' own work. Plagiarism and cheating (e.g. stealing or copying the work of others and turning it in as your own) will not be tolerated, and will be dealt with according to the University policy.

 

Attendance: Students are expected and encouraged to attend lectures and contribute to discussions. It is the students' responsibility to contact the instructor as early as possible if he/she cannot attend the class to write exams. With convinced reasons, the instructor might arrange make-up midterm exams, but not final exam.

 

Drop Policy: The students should follow the course drop policy of the University. The last day to drop Without Record of Enrollment or from FT to PT Status with Refund is Thursday, September 13, 2007, after which the drop/withdraw will be reflected in the students' record of enrollment. The last day to drop/withdraw with serious and compelling reason is Thursday, November 15, 2007, after which the serious accident/illness will be required to drop/withdraw

 

Tentative Class Schedule (subject to change):

 

Week

Topic

Chapters

Assignments

Projects

1

Introduction and Java Review

1, 2

 

 

2

Arrays, Linked Lists, and Recursion

3

A1-->

 

3

Analysis Tools

4

 

P1-->

4

Stacks and Queues

5

<--A1, A2-->

 

5

Lists and Iterators

6

 

 

6

Trees

7

<--A2

<--P1

7

Review and Test 1

1 ~ 7

 

 

8

Priority Queues

8

A3-->

P2-->

9

Hash Tables and Dictionaries

9

 

 

10

Binary Search Tree and AVL-tree

10

<--A3, A4-->

 

11

(2-4) Tree and Red-black Tree

10

 

<--P2

12

Graphs and directed graphs

13

 

P3-->

13

Weighted graphs

13

<--A4

 

14

Review and Test 2

8, 9, 10, 13

 

 

15

Memory

14

 

<--P3

Final Examination: December 13, Thursday, 2007 at 5:30pm to 7:30pm