CS 231: Data Structures and Algorithms

Title image Fall 2017

Course Information for Fall 2017

Lecture A Time: MWF 9-9:50
Lecture B Time: MWF 10-10:50
Place:Davis 117
Final Exam: Friday December 15, 2017 at 6:00pm

Instructor Information

Prof. Stephanie R. Taylor (Lecture A)
Office: Davis 114
Email: s r taylor _at_ colby _dot_ edu
Office hours: Mon 1-3pm, Thurs 1-4pm, Fri 1-2pm
Mon 4-5 is a bonus, non-guaranteed, office hour offered many weeks
By appointment (email me), and whenever my door is open

Prof. Zadia Codabux (Lecture B and Lab C)
Office: Davis 111
Email: z codabux _at_ colby _dot_ edu
Office hours: Mon 2-4pm, Wed-Thurs 2-3:30pm

Prof. Caitrin Eaton (Labs A and B)
Office: Davis 116
Email: c e eaton _at_ colby _dot_ edu
Office hours: Mon 4-5pm, Tues 3-5pm, Thurs 3-5pm

Course Description

Focuses on the common structures used to store data and the standard algorithms for manipulating them. Standard data structures include lists, stacks, queues, trees, heaps, hash tables, and graphs. Standard algorithms include searching, sorting, and traversals. Along with implementation details, students will learn to analyze the time and space efficiency of algorithms and how to select appropriate data structures and algorithms for a specific application. In homework, labs, and programming projects, students will implement their own data structures and make use of existing libraries to solve a variety of computational problems.

Learning Goals

  1. Students understand the advantages and disadvantages of fundamental data structures and can implement them using object-oriented design principles.
  2. Students understand, can implement, and can calculate the time and space efficiency of classic search, sort, and traversal algorithms, including the use of big-Oh notation.
  3. Students understand the tradeoffs between different implementation of data structures and algorithms and can make appro- priate design decisions based on application data requirements.
  4. Students can use fundamental data structures and algorithms appropriately to solve a variety of computational problems.
  5. Students can communicate the result of their work and describe an algorithm.

Textbooks

You may choose from any number of Data Structures with Java textbooks that are available, however, we do not require any specific text. There are also lots of on-line resources available, as listed below.

Online Resources

Algorithm Visualization:

Links to web sites comparing Python to Java:
Links to free online data structures textbooks:
Links to Java online documentation, tutorial, and sample code: Note: The Java tutorial and the JDK API documentation (the first two links below) can be downloaded to your computer so that you don't need web access to view them. They also load a little faster if you use a local copy.
Links to free online Java help:
Links to free Java development environments: