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
Class room: WH C-155
Office hours:
T.Th.
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
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