CompSci 201
Fall 2017: Data Structures & Algorithms
Latest Announcements ×
What we do in the class

Analysis, use, and design of data structures and algorithms using an object-oriented language like Java to solve computational problems. Emphasis on abstraction including interfaces and abstract data types for lists, trees, sets, tables/maps, and graphs. Implementation and evaluation of programming techniques including recursion. Intuitive and rigorous analysis of algorithms.

Become proficient in tradeoffs involving data, information, and programming so you can understand how to use computation to change the world. Using computer science to: empower, educate, enlighten, and explore.

Our Goal

At the end of the course, students will be able to:

  • Given a problem statement & a real data source, design, develop, debug,and test a Java program that uses appropriate libraries to solve the problem.
  • Write programs that effectively implement and use data structures suchas: arrays, maps, linked lists, stacks, queues, trees, and graphs.
  • Evaluate the time and space complexity of iterative and recursively-defined algorithms using empirical or mathematical analysis.

We'll have readings, but no textbook.

Added 9/19 However, we will often have questions to do as part of preparing for class. We will typically base lecture/class discussions on these questions. See questions here for pre-class reading/thinking.

The syllabus below is a plan, not a commitment. Depending on the time needed to cover the various topics, it may be necessary add some material or skip some of what's listed. We'll keep this site current.

Note that assignments and APTs are always due on Thursday. In the pages below we indicate a due date on the Wednesday before something is due.

Each class presentation is recorded. Links to these video recordings are accessible to all.

Class notes are linked below. However, class notes do not necessarily cover all material discussed in class, and reading them is not a substitute for attendance or for studying the required materials.

Notes Topic Resources and Readings Due
Discussion Time & Place

Discussion Section Documents

Section Time Staff
Course Policies

Please review the Collaboration policy. For more information, please consult What's OK and What's Not OK?

See the Syllabus for course policies. If you are not in the course, Duke users can view the course by adding themselves to the course by going to Sakai and following the steps below:

  • In "My Workspace" area (click on "My Workspace" tab)
  • Click the "Membership" tool on the left
  • On the "Membership" page, click "Joinable Sites"
  • From the list of the "Joinable" sites, search for COMPSCI.201.001.F17 (or some subset)
Using Eclipse and Git in Compsci 201

    Instructions on installing and using git can be found in this document

Assignment Reflect Link Due Date

You will submit your assignments via gradescope. The gradescope autograder will run your code through a set of scripts that will execute a number of test case and record the scores. Your REFLECT.txt will reviewed and graded by your UTA. Your code may also be reviewed by your UTA.

To submit your assignment, complete the following steps:

APT Test the APT Submit for grading Reflect Due Date Solutions

You must use the class name and the exact method signature provided in the APT write-up/specification. You do not typically run code in Eclipse or your IDE/editor (though you may find this useful for debugging). Your code is tested when you upload to the APT tester/submitter. That code calls the method your write. Your class must not have a package declaration and your class should have no static methods.

Getting Help
Get help by...

Or go to UTA help hours (at French Science 2237 starting on Sunday, September 3.):


Many lecture slides, assignments, and other instructional materials on this site are either derived or taken directly from the Computer Science Education Group at Duke including former members Tabitha Peck, Mac Mason, and Mike Hewner; Robert Sedgewick and Kevin Wayne; Cynthia Lee and Beth Simon; Paul Hilfinger; Josh Hug; and Nick Parlante.

Thank you to Isaac Zhang for designing this website!