CSSE-230: Datastructures and Algorithm Analysis: Syllabus

Rose-Hulman Institute of Technology
Computer Science Department
Winter 2011/12

Instructor

Michael Wollowski

Lab Assistants

In-class
Afternoon or evening (F 217)
Here are the times when our lab assistants will be available in the F-217 lab.

Prerequisites

CSSE-220 and a willingness to work hard.

Catalog Course Description

This course reinforces and extends students' understanding of current practices of producing object-oriented software. Students extend their use of a disciplined design process to include formal analysis of space/time efficiency and formal proofs of correctness. Students gain a deeper understanding of concepts from CSSE 220, including implementations of abstract data types by linear and non-linear data structures. This course introduces the use of randomized algorithms. Students design and implement software individually, in small groups, and in a challenging multi-week team project.

Learning Outcomes

Students who successfully complete this course should be able to:
  1. Describe the classical data structures (list, stack, queue, tree, priority queue, hash table, graph, set, dictionary) and explain the issues involved in implementation choices for each.
  2. Analyze and prove the asymptotic worst, best, and average case run times of algorithms, including non-trivial recursive algorithms, using Big O, little o, Omega, and Theta notation.
  3. Explain and analyze classical sorting, graph and tree-balancing algorithms.
  4. Design and implement object-oriented programs competently and independently.
  5. Implement various data structures, and apply them to medium-sized programming exercises.
  6. Work with a team of 3-4 students to design, build, and test a more substantial programming project, using basic software engineering techniques, such as: and demonstrating effective:

Book

We will be using the following book: Data Structures and Problem Solving Using Java, 4/E by Mark Allen Weiss.

Here is a link to the electronic version

Grading

ItemWeight
Written homework. About seven assignments on various topics covered in class. 10%
Exams. Two in-term and a final. 50%
Programming assignments. About seven programming assignments of varying length, including a team project 40%

Policies