C343 Data Structures (Spring 2011)

Overview

In this course, you will learn how to efficiently store and retrieve data in a computer. The data might be people in a database, graphic objects in a game, or numbers in a scientific model. You will see many of the standard, classical data structures and algorithms, and you will develop skills for modifying these or inventing new ones.

Specific learning objectives include:

  • Ability to select or invent an appropriate data structure or algorithm for a problem.
  • Practice implementing data structures.
  • Understanding of various data arrangements, specifically linear arrangements, trees, arrays, and graphs.
  • Knowledge of standard data structures, including stacks, queues, binary search trees, and hash tables.
  • Knowledge of standard algorithms, including several algorithms for sorting, searching, and manipulating graphs.
  • Experience applying this knowledge in nontrivial programming projects.
  • Skill and experience in C++ programming.

The ideas and techniques you learn here will be crucial to more advanced classes and to a career in computer science. The instructors will strive to make the course clear, informative, engaging, fair, and even entertaining. In return, students are expected to be attentive, inquisitive, and creative.

Instructors

Instructor:

  • Joshua Bonner
    Office hours: Tuesdays and Thursdays 1:00–2:00pm, Lindley Hall 325.
    And by appointment.

Associate Instructor:

Undergrad Instructors:

  • Brett Poirier
    Office hours: Mondays 5:30-7:30pm, Lindley Hall 035.
  • Carlo Angiuli
    Office hours: Wednesdays 5:30-7:30pm, Lindley Hall 035.

Lecture

Mondays and Wednesdays 4:00-5:15pm, at Informatics 150.

Discussion

Thursdays 4:40-5:30, at Ballentine Hall 006.

Assignments

Assignments will be posted at oncourse.

Resources

Text book is Introduction to Algorithms, Third Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein.

We use C++ for the programming assignments. You may find C++ Reference useful for C++ standard library reference. Thinking in C++, Volume 1 by Bruce Eckel is a useful book for learning C++. A free online edition is available from various mirror sites.

Here are some old exams you might find useful for studying. We will not be posting solutions for these, but if you'd like to check your answers, please feel free to contact us via office hours, email, or the message board.


Date: 2011-01-26 21:05:23 EST