|CS 201||Data Structures||Fall 2018|
The following is a tentative schedule of topics to be covered in this course. Readings refer to the text by Bailey.
|1||Intro, Java||Ch 0, 1, 2, B|
|2||Object-oriented programming||Ch 1|
|3||Algorithmic complexity, vectors, sorting||Ch 3, 5, 6|
|4||More sorting, generics||Ch 4, 6|
|5||Lists, Fall break||Ch 9|
|6||Stacks, queues, Midterm 1||Ch 10|
|7||Iterators, ordered structures, trees||Ch 8, 11, 12|
|8||Priority queues, heaps, applets||Ch 13|
|9||Search trees, balanced trees||Ch 14|
|10||Maps, hashtables, Midterm 2||Ch 15|
|11||Graphs, graph algorithms, graphics, events||Ch 16|
|12||Threads, animation, final projects|
Your final grade will be based on homeworks (40%), two midterm exams (15% each), and a final exam (30%). The first midtem is scheduled for Thu October 18, 7-9pm. The second midterm is a one-week take-home exam requiring the use of a computer, and is scheduled between Wed 11/14 and Wed 11/21. The final exam is scheduled for Tue 12/11, 7-10pm, and Wed 12/12, 9-noon (you may attend either slot). All exams will be open notes, but no electronic devices.
Unless otherwise instructed, feel free to discuss problem sets with other students and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others. Therefore, it is required that you must compose your own solution to each assignment. In particular, while you may discuss strategies for approaching the programming assignments with your classmates and may receive debugging help from them, you are required to write all of your own code. It is unacceptable (1) to write a program together and turn in two copies of the same program or (2) to copy code written by your classmates. This implies that you should never have in your possession a copy of all or part of another student's work. It is your own responsibility to protect your work from unauthorized access. The exams must be entirely your own work.
In keeping with the standards of the scientific community, you must give credit where credit is due. If you make use of an idea that was developed by (or jointly with) others, please reference them appropriately in your work. E.g., if you get a key idea for solving a problem from person X, your solution should begin with a note that says "I worked with X on this problem" and should say "The main idea (due to X) is ..." in the appropriate places. It is unacceptable for students to work together but not to acknowledge each other.
When working on homework problems, it is perfectly reasonable to consult public literature (books, articles, etc.) for hints and techniques. However, you must reference any sources that contribute to your solution. It is also OK to borrow code from the textbook, from materials discussed in class, and from other sources as long as you give proper credit. Assignments and solutions from previous terms are not considered to be part of the "public" literature, and consulting problem set solutions from previous terms constitutes a violation of the Honor Code. Finally, the use of Java decompilers is expressly forbidden.
If you are uncertain how the Honor Code applies to a particular assignment, please ask me. The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.