Prerequisites: CS 111, MATH 154
Syllabus
CS 301: Data Structures
Spring 2008
|
Meeting
Times |
Lect: 10:00 - 10:50 MWF, HB 106 Labs: 10:00 - 10:50 Tu, HB 209 |
|
Instructor |
Dr.
Razvan Andonie, HB 219-B,
Office hours |
|
TA |
Daniel
Garcia |
|
Text |
William J.
Collins Data
Structures and The Java Collections Framework, McGraw Hill,
2005. |
This
course explores data structures, algorithms for manipulating them, and the
practical problems of implementing those structures in real programming
languages and environments. Attention is paid to the analysis of algorithms to
characterize their worst and average case requirements for running time and
memory. Perhaps more than any other course, CS 301 should expand the students’ tool
box of basic techniques for manipulating data at both the conceptual and
the concrete level. At the conceptual level, the student will see a broad
selection of standard practices and approaches used in program design. At the
concrete level, the student will begin what should be a career-long practice of
accumulating useful, reusable code units. The basic organization of this course
will proceed through the classic data structures and Java-based
containers, exploring the use and implementation of each in turn. Motivating
problems will be drawn from a variety of application areas.
One of the distinctive features of this course is its emphasis on the Java Collections Framework, part of the java.util package. The collection classes implement most of the data structures studied, such as resizable array class, a linked-list class, a balanced binary-search-tree class, and a hash-map class.
Student Learning Outcomes
|
|
On completion of this course, the student will have:Applied complexity measures to basic algorithms. The student will be able to give a general description of how these complexity measures are obtained. |
|
|
A basic understanding of an abstract data type. The student will be able to demonstrate the association between ADT concepts and basic Java constructs. |
|
|
Applied ADT, both user defined and from
the Java Collections Framework,
in various
applications. |
|
Exams
(3 - 20% each) |
60%
|
|
Lab
Projects |
40%
|
95 - 100 A
90 - 94 A-
87 - 89 B+
83 - 86 B
80 - 82 B-
77 - 79 C+
73 - 76 C
70 - 72 C-
67 - 69 D+
63 - 66 D
60 - 62 D-
0 - 59 F
If
you must miss an exam, contact your instructor prior to the
exam to schedule a time to make it up. Late submission of assignments is generally
not accepted. No partial credit for late assignments will be offered.
The
slides for lectures can be found in the shared directory on Neve. Be prepared to
spend 5-10 hours for each project.
1. Additional reading: NetBeans IDE Field Guide, by Patrick Keegan et al., second edition, Prentice Hall, 2006.
2. Book Resources from the author. This includes
access to: Applets for projects that have a strong visual component,
source code from the text., Errata, and several proposed lab experiments.
3. The
Source for Java Technology:
Code Conventions for the JavaTM Programming Language
4. Available in Hebeler Labs are J2SE Development Kit (JDK) and NetBeans IDE from Sun Microsystems. NetBeans is an integrated development environment (IDE) for writing, compiling, testing, and debugging J2SE and J2EE applications. In June 2000 NetBeans was made open source.
5. NetBeans IDE Quick Start Guide and Video Tour
Using
the Java software at home: Download the
JDK with Netbeans (Java
SE Development Kit and NetBeans IDE Cobundle for Windows).
| Date |
Topic |
Readings |
| 3/26 |
Introduction |
Syllabus |
| 3/28 |
Object-Oriented Concepts |
Ch. 1 |
| 3/31 |
Additional Features of Java |
Ch. 2 |
|
4/2 |
Analysis of Algorithms |
Ch. 3 |
|
4/4 |
Analysis of Algorithms |
Ch. 3 |
|
4/7 |
Analysis of Algorithms, HW1 (due next class) |
Ch. 3 |
|
4/9 |
Analysis of Algorithms - Exercises |
Ch. 3 |
|
4/11 |
The Java Collections Framework |
Ch. 4 |
|
4/14 |
The Java Collections Framework |
Ch. 4 |
|
4/16 |
Recursion |
Ch. 5 |
|
4/18 |
Recursion |
Ch. 5 |
|
4/21 |
Review |
Ch. 1-5 |
|
4/23 |
Exam 1 |
Ch. 1-5 |
|
4/25 |
Array-Based Lists |
Ch. 6 |
|
4/28 |
Array-Based Lists |
Ch. 6 |
|
4/30 |
Linked Lists |
Ch. 7 |
|
5/2 |
Linked Lists |
Ch. 7 |
|
5/5 |
Linked Lists |
Ch. 7 |
|
5/7 |
Review |
Ch. 6-7 |
|
5/9 |
Exam 2 |
Ch. 1-7 |
|
5/12 |
Stacks |
Ch. 8 |
|
5/14 |
Stacks: Postfixed and Prefixed Notations |
Ch. 8 |
|
5/16 |
Queues: Simulation Application |
Ch. 8 |
|
5/19 |
Binary Trees |
Ch. 9 |
|
5/21 |
Binary Trees |
Ch. 9 |
|
5/23 |
Binary Trees |
Ch. 9 |
|
5/26 |
Memorial Day |
|
|
5/28 |
Mathematical Induction |
Appendix 2.5 |
|
5/30 |
Review |
Ch.
1-9 |
|
6/5 |
Final Exam: 8:00 - 10:00 |
Ch. 1-9 |
|
Date |
Topic |
Item
Due |
|
4/1 |
Introduction to NetBeans and javadoc; Introduce
Project 1 |
|
|
4/8 |
Project 1 |
|
|
4/15 |
Introduce Project 2 |
Project 1 due |
|
4/22 |
Project 2 |
|
|
4/29 |
Introduce Project 3 |
Project 2 due |
|
5/6 |
Project 3 |
|
|
5/13 |
Introduce Project 4 |
Project 3 due |
|
5/20 |
Project 4 |
|
|
5/27 |
Final discussion on assignments |
Project 4 due |
All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: “ I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here.”
Help each other with the lab assignments. You may work together, but do the work on separate computers. The point is to understand the material enough so that you to go on and complete that week's programming assignment on your own.
Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution.
All program solutions turned in for credit are to be your
individual work and should demonstrate your problem solving skills, not someone
else's. Since everyone is writing their own code, no two programs should be the
same or so similar that I could convert one to the other by a simple mechanical
transformation (e.g. changing variable names and comments). I consider this
plagiarism and a violation of academic code. First violation: Students must
meet with the instructor. In most cases, the grade will be split between the
authors of the copied programs. Second violation: Students will receive no
credit for the assignment. An incident letter will be placed on file in the
Computer Science Department and the matter referred to the Computer Science
Department Chair.
Class
attendance is expected and recorded.
Students
with disabilities who wish to set up academic adjustment in this class should
give me a copy of their "Confirmation of Eligibility for Academic
Adjustment" from the Disability Support Services Office as soon as
possible so we can discuss how the approved adjustment will be implemented in
this class. Students without this form should contact the Disability Support
Services Office, Buillon 205 or dssrecept@cwu.edu
or 963-2171.
The
schedule and procedures for this course are subject to change. It is the
student's responsibility to learn of and adjust to changes.