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.
At the end of the course, students will be able to:
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 |
---|
Section | Time | Staff |
---|
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:
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.
Practice Questions for Midterm I
Practice Questions for Midterm II
Forms for Compsci 201: regrades, exam accommodations, and other aspects of administration with respect to Compsci 201
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!