**Course Overview:**
Building on the skills acquired in CSCI 150, this course introduces data structures such as lists, stacks, queues, trees, and graphs, in the
context of object-oriented software design. We will program using the Java language.

At the end of the course, you will be expected to be able to:

- Write and thoroughly test a medium-sized program (400 lines minimum)
- State and apply a mathematical definition of algorithmic efficiency
- Analyze the running time of an algorithm or data structure operation using "big-O" notation
- Understand and apply common complexity categories to select the right data structure and algorithm for a given task
- Implement and analyze the following data structures:
- Linked lists
- Stacks
- Queues
- Priority Queues
- Hash Tables
- Trees
- Graphs

- Implement and analyze different sorting algorithms
- Use classes to implement abstract data types
- Use interfaces and inheritance to implement subtype polymorphism
- Use generics to implement parametric polymorphism
- Use and understand recursion as an implementation technique
- Articulate the difference between static and dynamic type systems

**Office Hours:**
By appointment. To make an appointment with me, please send an email. Also, please feel free to stop by whenever my door is open.

**Recommended Book:**

*Data Structures and Algorithms, Michael T. Goodrich, Roberto Tamassia and Michael H. Goldwasser, John Wiley & Sons, 2014.*

**Revisions:** After assignments are returned, you are welcome to revise and resubmit your work. I will grade anew each submitted revision, and average the original and revised grades to produce
a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam period.

**No late work will be accepted:** Any work not submitted on time is a zero. However, you may submit a solution after the deadline to qualify under the revision policy. In effect, this means
that late work can earn up to half credit.

**Academic Integrity:** All Hendrix students must abide by the College’s
Academic Integrity Policy as well as the College’s
Computer Policy, both of which are outlined in the Student Handbook.

For specific ways the Academic Integrity policy applies in this course, please refer to the Computer Science Academic Integrity Policy.

The short version is that academic integrity violations such as copying code from another student or the Internet are easy to detect, will be taken very seriously, and carry a default recommended
sanction of a zero on the assignment in addition to a decrease of one letter grade on your final grade.

If you have any questions about how the Academic Integrity policy applies in a particular situation, please contact me.

**Accommodations:** It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law.
Any student who needs accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.
In order to receive accommodations, students with disabilities are directed to contact Julie Brown in Academic Support Services at 501-505-2954.

**Schedule:** The anticipated schedule for the semester is below. The instructor reserves the right to alter the schedule as necessary during
the semester. Unless noted otherwise, each project is due at the start of class.