CS 313    

    Intermediate Data Structures    

[ Assignments | CS | Piazza| Canvas ]

Course Description

Our main theme is the equation (proposed by Niklas Wirth) "Programs=Algorithms + Data Structures." First, we will review the asymptotic complexity notations, loop invariants and recurrence equations, as well as the basic linear data structures. Then, we will discuss rooted ordered trees and their usage, especially as search structures (i.e., Binary Search Trees, Reb-Black Trees). We will conclude with some basic sorting algorithms and some analysis using the newly introduced data structures. The objective of the course is to acquire facility using tools to analyze (and design!) algorithms (computational complexity, proofs of correctness) and structuring the information manipulated by the algorithms.

Instructor

Thien Huu Nguyen, thien@cs.uoregon.edu

Lectures and Labs

Two 80-minute lectures are delivered each week. Mandatory attendance at a 50-minute lab each week is also required.

Prerequisites

Textbooks and Readings

Major Topics

Expected Learning Outcomes

This course develops basic concepts and applications of data structures in computer science. The primary topics are familiarity with asymptotic complexity notations, loop invariants, recurrence equations, analysis of basic linear data structures along with their applications to computational problems, rooted ordered trees and their usage and analysis for basic operations of data structures: searches, additions, deletions, and basic sorting algorithms along with their analysis using the newly introduced data structures.

Upon successful completion of the course, students will be able to:

Acquired Skills

Upon successful completion of the course, students will have acquired the following skills:

Approximate Syllabus

Dates Topics Readings in CLRS Notes
Jan 10, 12 algorithm analysis, measuring complexity, big-oh notation, proofs of correctness Ch 1 (pages 5-14)
Ch 2.1 (pages 16-22)
Ch 2.2 (pages 23-29)
Ch 3 (pages 43-59)
week 1 slides
Logarithm Cheat Sheet
loop invariant example
more loop invariant examples
Jan 17, 19 continue content from week 1
Jan 24, 26 linear data structures: linked lists, stacks, queues, priority queues Ch 10 (pages 232-248) week 3 slides
Jan 31, Feb 2 continued content from week 3
Feb 7, 9 binary heaps, heap operations, heapsort, binomial heaps Ch 6 (pages 151-164) week 5 slides
Feb 14, 16 binary search trees: definitions, operations, binary tree efficiency Ch 12 (pages 286-303) week 6 slides
Feb 21, 23 continued with content from week 6, hash tabels, intro to self-balancing trees: rotations, AVL trees, 2-3-4 trees
MIDTERM
week 7 slides 1
midterm note
week 7 slides 2
AVL tree
Feb 28, Mar 1 continue content from week 7
Mar 6, 8 Red-black trees, red-black deletion Ch 13 (pages 308-329) week 9 slides
Mar 13, 15 quicksort, analysis, decision tree bound, linear time sorts, final review Ch 7 (pages 170-184)
Ch 8.1-8.3 (pages 191-199)
week 10 slides
final note

Course Requirements and Grading

This course will be taught in-person, but we will provide options to join removely via Zoom and watch recorded lectures. We will use Canvas and Piazza for assignment submission and discussion.

Grading will be based on the following criteria:

Percentage Component
30distributed for written assignments
20distributed for programming assignments
25midterm exam
25final exam

CIS majors and minors, and DSCI majors, must take CIS 212 graded; others may take it graded or P/N.

Grading Scale

  A    A+ >= 99.00   A 93.34-98.90   A- 90.00-93.33 
  B    B+ 86.67-89.99   B 83.34-86.66   B- 80.00-83.33 
  C    C+ 76.67-79.99   C 73.34-76.66   C- 70.00-73.33 
  D    D+ 66.67-69.99   D 63.34-66.66   D- 60.00-63.33 
  F    F 0.00-59.99     

Barriers and Accommodations

Our goal is a fully inclusive class, accessible to everyone. If you encounter or anticipate barriers to full participation and fair evaluation for any reason, please communicate your needs to the instructor so that we can find a suitable accommodation. If you encounter or observe other impediments to full participation, for yourself or others, please share your concerns with the instructor. You are also encouraged to contact the Accessible Education Center in 360 Oregon Hall at 541-346-1155 or uoaec@uoregon.edu.

It is particularly important that you inform the instructor in the first week of the quarter if you require accommodation. Delayed notification of such a requirement may make it impossible to provide the accommodation.

Academic Honesty