Computer Science 232: Data Structures and Problem Solving

Spring 1999

Instructor

Craig Miller
256 South College, x-1400
Email: millercr
Office hours to be announced and placed on Web page

Meetings

9 MWF
Lab: 3:30-5:30 Tuesday Room 4 (basement) South College

Text

Data Structures & Other Objects using Java, by Michael Main

Course Links

Overview

This course covers common data structures (e.g. arrays, linked lists, trees, and hash tables), their role in implementating abstract objects (e.g. collections, stacks, queues, tables, and iterators), and their application to problems. Particular attention is given to understanding the tradeoffs of different data structures in terms of efficiency, maintenance, and simplicity. As with the previous course, students will practice the skills of a computer scientist, which include testing and debugging, technical writing, creating and verifying theories, and using reference materials. Students taking this course are expected to have an understanding of object-oriented principles, substantive programming experience, and familiarity with computer science concepts that include efficiency, recursion, and abstraction.

The course will be taught using the Java programming language. Previous experience with Java is not required, but students without Java experience should anticipate needing some additional study at the beginning of the semester.

Grade Determination

Lab assignments will be posted by the Monday of the scheduled lab period, and will be due on the Monday following the lab (at the beginning of class). Late assignments will be accepted until the following Friday with a 20% penalty. Many of the labs will be assigned for a two week period. In these cases, students will turn in their current work after one week and receive feedback and a score out of 5 points. The completed 2-week assignment, turned in after two weeks, is worth an additional 35 points. All one week labs are worth 20 points.

The scheduled lab period will be used to discuss the assignment and related concepts, and to provide students with immediate feedback as they work on the assignment. While students should be able to complete a substantial portion of the lab within the scheduled lab period, it is expected that a significant amount of work must occur outside of class time in order to finish the lab. Note: attendance at labs is mandatory.

In addition to labs, two 50-minute tests and a cumulative final exam, exercises will be assigned and presented on a daily basis. Students are expected to come prepared to present their solutions to problems assigned on the previous day. Grades will determined using the following weighted averages:

15% Test 1 Wed Mar 3
15% Test 2 Wed Apr 14
25% Final Exam Mon May 3
35% 13 Labs Weekly
10% Participation Daily

Policy On Collaboration

Unless explicitly told otherwise, all assignments in this course are individual assignments. Students may not work together in the design or implementation of code or written assignments. The only exceptions to this are:

  1. Students are encouraged to discuss course concepts and examples that are not specific to any assignment.
  2. Students may assist each other in locating and diagnosing bugs in programs.

All other assistance should come from the instructor. Any questions about the appropriateness of collaboration should be discussed with the instructor. Failure to acknowledge someone else's code or even design ideas in any work is plagiarism, which warrants a report to the College's judicial system and may lead to suspension or expulsion.

Tentative Schedule

Week Topic Text Reading Lab
Jan 20 Software Development Ch. 1 No Lab
Jan 25 Abstract Objects Ch. 2 Java Review
Feb 1 Collection Classes Ch. 3 PokerHand collection class
Feb 8 Intro to linked lists Ch. 4
Feb 15 More linked lists Ch. 4 Solitaire: Row of Cards using Linked Lists
Feb 22 Java Objects & Iterators Ch. 5
Mar 1 Stacks & Queues Ch. 6 & 7 Evaluating RPN Expressions with Stacks
Mar 8 Priority Queues & Recursion Ch. 7 and 8 Queuing Simulation
Mar 15 Spring Break --- No classes
Mar 22 More Recursion Ch. 8 Group Project: Specification
Mar 29 Trees Ch. 9 Group Project Completion
Apr 5 Searching in arrays Ch. 11 Decision Trees
Apr 12 Searching with Hash tables Ch. 11
Apr 19 Sorting Ch. 12 File compression using a hash table
Apr 26 Assorted topics Ch. 13 & 14