Course Syllabus

Computer Science 182 and 182L  – Data Structures and Program Design

Course Description: A review of primitive data types and their internal representation. Data structures built from primitive types such as arrays and records. Program design, Big O notation and algorithms: searching and sorting. Advanced data structures: stacks, queues, link lists, binary trees and hash tables.

Required Text: Data Structures and Algorithms in Java, 2nd Edition,  LaFore

Grading: Grading will be based on the following breakdown:

Quiz 1 10% 20 points

Midterm 20% 40 points

Quiz 2 10% 20 points

Final 30% 60 points

Homework 20% 40 points

Participation 10% 20 points

Needed Point Totals: A – 175 points, B – 150 points, C – 120 points, D – 100 points

Makeup exams will not be allowed.

Surfing the Internet during class time is reserved for class related web sites. EBay, chat rooms, sports sites and other non-class related surfing is strictly prohibited and may result in penalty reduction of points.

Important Dates:

Please be sure to avoid scheduling conflicts with these dates.

Please check the CS 182 Web Page each week for:

• Weekly Lecture Topics
• Weekly Reading Assignments
• Project Assignments
CS182 Lab Grading 6 Programming projects, 30 points each, 180 points total

Class Participation 20 points

Needed Point Totals: A – 175 points, B – 150 points, C – 120 points, D – 100 points

Please check the CS 182 Web Page each week for:

• Project Assignments
Student Learning Outcomes:
Evaluate and compare computer data structures, and analyze each data structure's impact on algorithms, program design and program performance.

Course Outline

1. Intro to Data Structures, Design decisions - Choosing the right structure for the job, Algorithms
2. Arrays, Searching, Insertion, Deletion, Logarithms, Big O Notation, Measuring algorithms
3. Simple Sorting, Bubble sort, Selection Sort, Insertion Sort, Comparing sort speeds
4. Stacks, Push-Pop-Peek, Queues, Insert-Remove, Priority queues, Array implementations
5. Simple Linked List, Double-ended Linked List, Doubly Linked List, Iterators, Abstract data types
6. Recursion, Divide and Conquer algorithms, Factorials, Recursive binary search, Merge Sort
7. Shellsort, Partitioning, Quicksort, Medium of three, Comparing sort algorithms with Big O notation
8. Binary Trees, terminology, Find, Insert, Delete, Traversing, Inorder-Preorder-Postorder
9. Hash Tables, Keys, Converting keys to numbers, hash functions, Collisions, Probing, Double hashing, Separate chaining
10. When to use What, Choosing the right data structure to 'match' the data/application