CSci 2101: Data Structures - Syllabus.

[Home] [Syllabus] [Assignments] [Resources]

Syllabus

The syllabus will be updated throughout the semester. Dates, topics, assigned reading, and problem set due dates will be added or might change. All changes in assigned reading and due dates will be announced in class (and occasionally by e-mail). While I will do my best to update the web site accordingly, it is a student's responsibility to keep track of the problem set due dates and reading assignments. If you are not sure about due dates, please don't hesitate to ask.

Reading assignments are listed for the day when the material is first explained in class. You may read the material ahead of the lecture or after, either way is fine.

The midterms, the final, and quizzes are open book, open notes.
However, you are not allowed to use any materials from previous offerings of the course at any point in this class (in class or on your own).

The dates for the midterm exams and the final are set and will not change. If you have a conflict with these dates, please let me know right away. No makeup exams will be given unless there are circumstances beyond your control AND the makeup time is arranged as soon as possible.

In addition to exams there will be 5-8 short in-class quizzes throughout the semester. Quizzes will not be announced in advance. The lowest quiz grade will be dropped (i.e. not counted towards the quiz total). A missed quiz will receive a grade of zero and thus will be counted as the lowest grade, unless it was missed due to an illness or other circumstances beyond your control. If you missed a quiz or a lab because of an illness or similar circumstances, it is your responsibility to communicate these reasons to me as soon as possible and arrange for make-up work.

Policies on Collaboration and Use of Resources

Problem sets and labs are individual work, unless stated otherwise. While it's perfectly OK (and is encouraged) to discuss problem sets in general terms with others in the class, your solution must be your own work (i.e. written or coded by you without using anybody else's materials). Copying any part of another person's solution (even if you modify the code) is considered academic dishonesty and will be dealt with according to the university's policy.

You may use electronic resources for problem sets to get general ideas for your solutions as well as to help in fixing errors. However, you may not copy a code fragment found online into your solution. Use of sources other than the textbook and the handouts given in class must be acknowledged in the beginning of the problem solution. You also need to acknowledge any ideas that you got for your solution fromyour classmates or anyone else, including a TA.

For take home tests please follow the instructions on the test to determine appropriate resources.

Use of any materials from previous runs of this class is not allowed.

If in doubt whether a resource is appropriate for a given problem set, please ask.

Late problem sets policy:

Problem sets are due in the beginning of the class on the due date, unless a different time is specified for an electronic submission. If a problem set or a lab is submitted at (or before) the next class meeting after the due date, it is graded out of 3/4 credit. If it is submitted any time after the next meeting (until the last class meeting), then it is graded out of 1/2 credit.

Groups for labs and problem sets

Hand in one assignment from the entire group with names of both students on the first page. If submitting by e-mail, you must CC it to all your partner(s). In a programming assignments make sure to keep track (in comments or in some other electronic form) of each partner's contribution to the work.

Generally all group members get the same grade for the submitted group work. If you feel that your group members are not contributing the way they should or if there are any circumstances that prevent you or you partner from contributing a fair share, please talk to your partner(s) to work out an arrangement (if possible) and in either case let me know right away that the contributions to a problem set are not equal. If after the assignment is finished you feel that the group members have contributed unevenly, please talk to me and I'll try to come up with a fair grading strategy.

Discussion with students other than those in your group (or anyone not in this class) should be limited to general approaches to the problem. All such discussions as well as use of sources other than the textbook and the handouts given in class must be acknowledged in the beginning of the problem solution.

Studying in groups

Studying in groups is strongly encouraged. You may study for tests, go over textbook materials or lecture notes, and discuss problem sets in general terms (i.e. without actually writing the program code or giving out the answers).

Use of electronic devices

Use of laptops for class-related activities is usually allowed, except for test time and other specific assignments. Laptops and other devices cannot be used for activities unrelated to the class work (checking e-mail, instant messages, Facebook, etc.). The instructor reserves a right to ask a student to leave the class if the student uses electronic devices inappropriately in a class. No communication devices can be used during a test, including quizzes. If you are taking notes on your laptop, you are not allowed to access anything other than your notes during a test.

Course topics and timeline

Monday Tuesday - Lab Wednesday Friday
Week 1: January 13 - 17
Course policies and setup.
Overview of data structures. Intro to Java: Java programs, data types, variables, conditionals.
Reading: 1.1, 1.2.
Compiling and running Java programs. Experimenting with Java variables. Java conditionals. History of Java and relation to other languages, compilation/excution model, memory model.
More in-depth introductin to Java data types, variables, and conditionals.
Reading: see the resources page.
Problem set 1: Java variables, conditionals. Due Fri, January 24.
Introduction to Java objects. Java strings. Random numbers. Loops. Java arrays.
Reading: 1.3, 1.4, 1.5.
Week 2: January 20 - 24
Martin Luther King holiday Java conditionals, loops, strings, randomness. Writing methods in Java.
Java Scanner class. Writing methods in Java.
Reading: Ch. 1.7.
Problem set 1 due.
Problem set 2: writing methods in Java. Due Wednesday, January 29.
Week 3: January 27 - 31
Writing methods with conditionals and loops. Writing methods with conditionals and loops. Recursion in Java. ArrayList class.
Reading: Ch. 3.1.
Problem set 2 due.
Problem set 3: Java objects, recursion, arrays. Due Wedn, Feb. 5th.
More on Java methods and recursion.
Reading: Ch. 3.2.

Week 4: February 3 - 7
Java stacks. More on Java objects.
Java stacks. More on Java arrays.
Reading: Ch. 3.2
Problem set 3 due.
Problem set 4: Java arrays. Due Wednesday, .
Writing your own Java classes.
Reading: Ch. 4.
Week 5: February 10 - 14
Writing your own Java classes.
Writing your own Java classes. Review for the takehome.
Problem set 4 due.
Problem set 5: Java classes. Due Fri., February 21.
Midterm I.
Take home portion of the midterm due Tuesday, February 18.
Week 6: February 17 - 21
Writing your own Java classes.
Writing your own Java classes. Introduction to Eclipse.
Take home exam due.
Discussion of Ch. 2.
Reading: Ch. 2.
Linked lists.
Reading: Ch. 4, 5.1, 5.2.
Problem set 5 due.
Problem set 6: Linked lists and iterators. Due Fri, Feb 28th.
Week 7: February 24 - 28
More on Java generic types, type hierarchy. Java iterators.
Reading: Ch. 5.4, 5.5.
Implementing a linked list. Java exceptions. Java interfaces.
Reading: Ch. 1.6, 4.3.
Queue.
Reading: Ch. 7 (review of stacks), Ch. 8 (queues).
Problem set 6 due.
Week 8: March 3 - 7
More on Java type system, queues.
Reading: Ch. 9.
Problem set 7: Queues. Due Mon., March 17.
Queues. Introduction to sorting. Merge sort, quicksort.
Reading: Ch. 10.
More on quicksort implementation.
March 10 - 14: spring break, no classes.
Week 9: March 17 - 21
Non-comparison sorting. Counting sort.
Problem set 7 due.
Implementing merge sort, quicksort. Counting sort and radix sort.
Priority queue, binary heap.
Introduction to JUnit
Reading: 12.2 (priority queues and heaps).
Week 10: March 24 - 28
Priority queue, binary heap (cont.)
Catch-up. Review for Midterm II. Problem set 8: priority queues. Due Wedn., April 9th.
Midterm II.
Take home portion of the midterm due Tuesday, April 1.
Week 11: March 31 - April 4
Priority queue, binary heap (cont.)
Priority queue, binary heap. Trees, Binary Search Trees.
Reading: Ch. 11.
Trees, Binary Search Trees (cont.).
Week 12: April 7 - 11
Balanced trees.
Reading: Ch. 13.1.
Trees. Balanced trees (cont.).
Problem set 8 due.
Problem set 9: hash tables. Due Wedn., April 16.
Balanced trees (cont.).
Week 13: April 14 - 18
Hash tables, hashing.
Reading: Ch. 12, 13.2.

Hash tables, hashing. Graphs, graph traversals, minimum spanning trees.
Reading: Ch. 14.
Problem set 9 due.
Problem set 10: graphs. Due Wedn., April 30.
Graphs, graph traversals, minimum spanning trees.
Week 14: April 21 - 25
Graphs, graph traversals, minimum spanning trees.
Graphs, graph traversals, minimum spanning trees Introduction to Java GUI. Java Swing library. Reading: see resources page.

Graphs: code refactoring and code review.
Week 15: April 28 - May 2
Java GUI. Java GUI. Study of Java Collections Framework.
Discussion and wrap-up.
Problem set 10 due. Last day to submit any late work.
Review for the final.
Final exam: Monday May 5th 11am-1pm in Sci 2185.