CS 367: Introduction to Data Structures

Lecture 1: 1240 Computer Sciences, TR: 1:00 pm - 2:15 am
Lecture 2: 1240 Computer Sciences, TR: 2:30 pm - 3:45 pm

Jim Skrentny, skrentny@cs.wisc.edu
5379 Computer Sciences, 262-0191


Overview CS 367 covers data structures (including lists, stacks, queues, trees, graphs, and hash tables) and their applications; the development, implementation and analysis of efficient data structures and algorithms (including sorting and searching); and provides additional experience in use of an object-oriented programming language (Java).
Prereqs CS 302 or consent of instructor. Students are strongly encouraged to take CS 367 within two semesters of having taken CS 302.

Enrollment
Waiting List
If you are waiting to enroll in CS 367, please attend the course during the first two weeks. As space opens, those on the waiting list will be invited to enroll. Invitations are sent to your @wisc.edu email address and your invitation will expire so please act quickly. Priority is given to those on the signup sheet passed out in lecture and based on any special circumstances that you list on that sheet.

Course Accounts Each student registered for the course has an account on the CS instructional Linux machines located in room 1350 of the Computer Sciences building.

Course Resources The material comes from many sources: lecture, the on-line readings, the course web site, and piazza. There is no required textbook for the course.

Course Website http://pages.cs.wisc.edu/~cs367-1
The CS 367 website is under construction for the fall semester. Some links might not work.


Course Work Grades are determined using the following breakdown:
  • Exams (55%): 3 exams
    • Midterm 1 (17%): Tuesday, October 15th, 5:00 pm to 7:00 pm
    • Midterm 2 (17%): Tuesday, November 19th, 5:00 pm to 7:00 pm
    • Final (21%): Thursday, December 19th, 10:05 am to 12:05 pm

  • Assignments (45%):
    • Programming (25%):  5 programming assignments each worth 5%.
    • Homework (20%):  10 homework assignments each worth 2%.
All assignments are submitted electronically on or before the specified due date. No late work will be accepted for a grade. The course website will have instructions for how to submit your work.
Collaboration Policy Homework must be done individually. Collaboration on homework assignments is not allowed.

Programs can be done in pairs. You may have one partner for each programming assignment. Your partner must be currently enrolled in this course. You may not pair program with multiple partners on the same assignment. You may change partners on different assignments.

Academic Misconduct

Using someone else's work or allowing someone else to have access to your work in violation of the collaboration policy is academic misconduct and will be dealt with in accordance with University Academic Misconduct procedures. If you are not sure if something violates the collaboration policy, please ask me. Ignorance of what constitutes a violation of the policy is not a defense; it is your responsibility to know what is allowed/disallowed.


Syllabus The following is a tentative schedule of the topics to be covered:
  • Week 1: Course Intro., Interfaces, Java Objects and Generics
  • Week 2: Lists (array-based), Iterators
  • Week 3: Command Line, Exceptions, Complexity Intro.
  • Week 4: Complexity
  • Week 5: Primitive vs. Reference Types, Linked Lists
  • Week 6: Linked Lists (cont.), Stacks and Queues
  • Week 7: Mideterm 1 and Recursion
  • Week 8: Recursion (cont.), Search, Trees Intro.
  • Week 9: General Trees, Binary Trees, Binary Search Trees
  • Week 10: Binary Search Trees (cont.), Balanced Search Trees, Red-Black Trees
  • Week 11: Red-Black Trees (cont.), Priority Queues, Heaps, Hashing Intro.
  • Week 12: Hashing, Midterm 2 (also Thanksgiving Break)
  • Week 13: Hashing (cont.), Graphs
  • Week 14: Graphs (cont.), Sorting
  • Week 15: Sorting (cont.)

Reminders
  • Notify me within the first two weeks of classes if you have a conflict with any of the exams.
  • Notify me within the first two weeks of classes if you participate in religious observances that may interfere with course requirements.
  • If you are a person with special circumstances that you believe will affect your class performance (for example, visual, hearing, or learning disabilities, or language differences), please let me know as soon as possible so that we may work together to develop strategies to meet both your needs and the requirements of the course.
  • If you are a new Linux user (or new to the CS Linux facilities), you are encouraged to attend one of the WACM Linux Orientation Sessions. The sessions are in room 1221 CS at the following times:
    • Wednesday, September 11, 5:30 pm
    • Thursday, September 19, 5:30 pm