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. However, we will often have questions to do as part of preparing for class. We will typically base lecture/class discussions on these questions.
The calendar 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 will be recorded. Links to these video recordings are accessible here..
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|
Instructions on installing and using git can be found in this document
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|
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.
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!