CS35 — Data Structures and Algorithms
Fall 2009

Schedule | Grading | Study Sessions | Academic Integrity | Links

Introduction

This course completes the broad introduction to computer science begun in CS21. It provides a general background for further study in the field. Topics to be covered include object-oriented programming in C++, advanced data structures (such as priority queues, trees, hash tables, and graphs), advanced algorithms, as well as software design and verification. Students will be expected to complete weekly lab assignments illustrating the concepts presented.

Prerequisite: CPSC 021 or permission of the instructor. Discrete Mathematics is strongly recommended. This course is designated as a Natural sciences and engineering practicum.

Goals for the course

Class information

Room: Science Center 240
Class: Tuesday, Thursday 9:55–11:10am
Lab: Friday 2:00–3:30pm
Text: Data Structures and Algorithms in C++ by Goodrich, Tamassia and Mount

Instructional staff

Professor: Lisa Meeden
Office: Science Center 243
Phone: 328-8565
Office hours: Stop by anytime my door is open, or Wednesdays 2-4pm.

Student Support: Betsy Horner
Office: Science Center 255
Phone: 957-6062

Student Mentor (aka Ninja): Ryan Carlson

Schedule

WEEK DAY ANNOUNCEMENTS TOPIC & READING LAB
1 Sep 01   Introduction to C++
Ch1: pages 2-8, 10(strings), 16(using), 17-30
Lab1: Introduction to C++
Sep 03  
2 Sep 08   Object-Oriented Design in C++
Ch1: pages 33-38, 46-56; Ch2: pages 62-88
Lab2: Inheritance in C++
Sep 10 Drop/Add ends (Sep 11)
3 Sep 15   Complexity Analysis
Ch3: pages 108-134
Lab3: Analysis
Sep 17 Quiz 1 (Sep 18)
4 Sep 22   Stacks and Queues
Ch4: pages 156-182
Lab4: Maze Solver
Sep 24  
5 Sep 29   Linked Lists
Ch5: pages 217-226
Lab5: Linked Queue
Oct 01  
6 Oct 06   Sorting
Ch10: pages 484-497, 504-521
None
Oct 08 Quiz 2 (Oct 09)
 

Oct 13

Fall Break

Oct 15

7 Oct 20   Trees
Ch6: pages 254-280, 414-420
Lab6: Analyzing web content with binary search trees
Oct 22  
8 Oct 27   Priority Queues
Ch7: pages 312-324, 330-348
Lab7: Processing user queries with priority queues
Oct 29  
9 Nov 03   Dictionaries
Ch8: pages 364-384
Lab8: Caching query results with a dictionary
Nov 05 Last day to declare CR/NC
or withdraw (Nov 06)
10 Nov 10   More Dictionaries, Review None
Nov 12 Quiz 3
11 Nov 17   Graphical User Interface wxWidgets Lab9: Creating a GUI front-end for the web browser
Nov 19  
12 Nov 24   Graphs
Ch12: pages 576-594
None

Nov 26

Thanksgiving Break

13 Dec 01   More Graphs
Ch12: pages 625-633
Lab10: Oracle of Bacon
Dec 03  
14 Dec 08   Review Open lab
 

Dec 15

Final Exam 9am in SCI L26

Grading

Your overall grade in the course will be determined as follows
40%Lab assignments
30%3 Quizzes
5%Class Participation
25%Final Exam

Lab assignment policy

Assignments will be introduced during lab on Fridays and will be due before midnight the following Wednesday night. You are strongly encouraged to start early and to attend the study sessions on Monday nights.

You will submit your assignments electronically using the handin35 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. Late assignments will not be accepted unless you contact me before the deadline. Even if you do not fully complete an assignment, you may submit what you have done to receive partial credit.

Study Sessions

Student mentors will assist me in class and run study sessions on Mondays 7-9pm in SCI 240 (where class meets).

You are invited -- and encouraged -- to participate in these study sessions to prepare for quizzes, to discuss programming concepts, and to get friendly assistance in working on lab assignments. As an added bonus, food will be provided.

Academic Integrity

Academic honesty is required in all work you submit to be graded. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner.

You are encouraged to discuss the lab assignment specifications and general strategies for solving the problems with other students in the class.