CS 301: Data Structures

Spring 2014

Meeting Times: Lect: 10:00 - 10:50 am Mon., Wed. & Fri., HB 112
Lab: 10:00 - 10:50 am Tues., HB 204

Apr. 2 - Jun. 5
Instructor: Dr. Jim Schwing
Office: HB 219-C
Phone: 963 - 1432
Web Page:
Office hours: 11:00 - 12:00 noon M T W F,
during my other listed office hours and by appointment.
Text: William J. Collins Data Structures and The Java Collections Framework, 3rd Edition, Wiley, 2011.

Exams (2 - 22% each) 50%
Projects 50%

Grading Scale
95 - 100 A
90 - 94 A -
87 - 89 B +
83 - 86 B
80 - 82 B -
77 - 79 C +
73 - 76 C
70 - 72 C -
60 - 69 D

Grading Note: The programming projects are an important part of the course. Students MUST PASS the project portion of the class to PASS the class.

Objectives: 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.  Specifically:

Lectures, Projects, and Software
The slides for lectures and the lab projects can be found in the shared directory on Neve. Be prepared to spend about 10 hours for each project.

Available in Hebeler Labs are J2SE Development Kit (JDK) and NetBeans IDE from Sun Microsystems. NetBeans is an open source ntegrated development environment (IDE) for writing, compiling, testing, and debugging J2SE and J2EE applications.

Using the Java software at home: Download the JDK with Netbeans (Java SE Development Kit and NetBeans IDE Cobundle for Windows)


  1. NetBeans Reference
  2. Book Resources from the author. (source code from the text, applets, Errata, lab experiments, see link above).
  3. The Source for Java Technology: jGuru, Code Conventions for the JavaTM Programming Language, Training and Tutorials, NetBeans IDE Quick Start Guide and Video Tour, Java's Collections Tutorial.

Honor Code: 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.

The student should sign his or her name under the pledge. Any deviation from this policy is an honor code violation and will be treated as such if detected. It should be included as a comment in your source code and part of your written report.

Course Schedule

Day Date Topic Readings - Item Due
1 Apr 2 Introduction Syllabus, Project 0
2 Apr 4 Introduction to Java Reading: Ch. 0
3 Apr 7 Object-oriented Concepts Reading: Ch. 1
L1 Apr 8 Start Project 1  
4 Apr 9

Additional Features of Java

Reading: Ch. 2


Apr 11

Additional Features of Java

Reading: Ch. 2

6 Apr 14

Analysis of Algorithms

Reading: Ch. 3

L2 Apr 15 Continue Project 1  
7 Apr 16

Analysis of Algorithms

Reading: Ch. 3

8 Apr 18

Analysis of Algorithms

Reading: Ch. 3

9 Apr 21

Analysis of Algorithms

Reading: Ch. 3

L3 Apr 22 Start Project 2 Project 1 Due
10 Apr 23 The Java Collections Framework Reading: Ch. 4
11 Apr 25 The Java Collections Framework Reading: Ch. 4
12 Apr 28 Recursion Reading: Ch. 5
L4 Apr 29 Start Project 3 Project 2 Due
13 Apr 30 Recursion Reading: Ch. 5
14 May 2 Q & A Ch 1 - 5
15 May 5 Exam 1 Ch 1 - 5
L5 May 6 Continue Project 3  
16 May 7 Array-based Lists Reading: Ch. 6
17 May 9 Array-based Lists Reading: Ch. 6
18 May 12 Link Lists Reading: Ch. 7
L6 May 13 Start Project 4 Project 3 Due
19 May 14 Link Lists Reading: Ch. 7
20 May 16 Link Lists Reading: Ch. 7
21 May 19 Stacks & Queues Reading: Ch. 8
L7 May 20 Start Project 5 Project 4 Due
22 May 21 Stacks & Queues Reading: Ch. 8
23 May 23 Stacks & Queues Reading: Ch. 8
-- May 26 Memorial Day - No Classes  
L8 May 27 Continue Project 5  
24 May 28 Stacks & Queues Reading: Ch. 8
25 May 30 Binary Trees Reading: Ch. 9
26 Jun 2 Binary Trees Reading: Ch. 9
L9 Jun 3 Continue Project 5  
27 Jun 4 Binary Trees Reading: Ch. 9
28 Jun 6 Q & A Ch 6 - 9 Project 5 Due
-- Jun 10 Final Exam 8am - 10am -- subject to change - check Registrar's schedule when posted


Last updated: Mar. 26, 2014

JL Schwing
Department of Computer Science

All images and text are ©2014 Central Washington University
This material is subject to copyright and unauthorized use or copying is prohibited.