UCR CS 14: Introduction to Data Structures And Algorithms

Summer Quarter 2004: July 26, 2004 - August 28, 2004


Course Schedule
Coding Style Guide
Electronic Turn-in
Course Email List

Tutorials

Anonymously Report Suspected Cheating
Anonymously Provide Comments/Suggestions

Previous CS14 Offerings

Overview

In CS 14, you'll you'll learn how to utilize and design reusable abstractions to lift software development to a higher level. You'll learn about fundamental data structures and algorithms that are widely applicable. Hopefully you'll have fun too!

Catalog description: CS 14. Introduction to Data Structures and Algorithms. (4) Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 12 with a grade of "C-" or better; MATH 009A or MATH 09HA; proficiency in C++. Topics include basic data structures such as arrays, lists, stacks, and queues; dictionaries including binary search trees and hashing; priority queues (heaps); introductory analysis of algorithms; sorting algorithms; and object-oriented programming including abstract data types, inheritance, and polymorphism. Also covers solving complex problems through structured software development.

Note: students receiving less than a C- in the CS 12 prerequisite will be dropped automatically a few weeks into the quarter.

Basic information

Instructor: Titus Winters (titus@cs.ucr.edu) Surge 281
Office hours: TR 11:15-12:15 (after lecture)
Many questions can be answered via email so if you can't make my office hours, please email me. I am also available by appointment.
Teaching Assistant:
Ilker Basaran (ibasaran@cs.ucr.edu)
Office hours: TR 12-1pm (before lab) (Surge 357)
Lectures: M T W Th, 9:40-11:10am. 1222 Speith Hall Labs: T Th 1pm-4pm - Surge 283

Textbook: Data Abstraction And Problem Solving With C++: Walls and Mirrors, Frank M. Carrano and Janet J. Prichard, 3rd ed., 2002 Addison-Wesley.
For optional textbooks, visit the Additional Resources section below.

Course Email List: CS 14 mailing List (send mail now or access the archive): Be sure to sign up to receive important announcements and other information -- some information will only be given via the mailing list, and you'll be responsible for knowing that information. Some questions asked of the TA and the instructor will be answered to the whole mailing list so that everyone can benefit from the question and answer. You need to use your CS or EE account, or some other UCR account, to access the list, so be sure to learn how to read those accounts or at least automatically forward messages to your personal email address (just create in your home directory a file named ".forward" containing your personal email address).
Course Grading: The course is divided into two grading components, combined as a weighted sum to total 100%: Letter grades will be assigned roughly according to the standard 90/80/70/60 scale out of 100 percentage points overall, with a 90 and above corresponding to an A, 80 and above to a B, 70 and above to a C, 60 and above to a D, and less than 60 to an F. +/- grades will also be given. Students are not competing against one another, but rather against the scale -- all students can get good grades if all do well. I may scale ("curve") an individual item if it HELPS the class.

To ensure minimum competency in successive courses requiring a C- or better in this course, a C- minimum in both components is necessary to achieve a C- minimum for the final course grade, regardless of the components' weighted sum; otherwise, the final course grade will be no greater than a D+. For example, a B in the lab component and a D in the lecture component might yield a weighted sum of a C, but would instead result in a final course grade of D+. A C- in either component corresponds to roughly 70% of the total points for that component.

Course schedule

Subject to change as the quarter progresses.

Lectures are designed to assist you in understand basic concepts for the textbook and to clarify difficult areas in the textbook. Lectures DO NOT replace reading the textbook and are instead a supplement to the textbook readings. You will be tested on material from the textbook that is not covered in lecture. Do not put off reading the assigned chapters or you will risk falling behind. Reading ahead is one of the most effective ways of doing better in class -- you'll be amazed how much more comprehensible and useful the lectures will be. You are expected to do the reading before each lecture. Reading assignments will be posted at the end of each lecture, and to this webpage shortly after that.




General course features and policies (please read these carefully)

Lab and At-Home Programming Assignment Guidelines (please read these carefully)


Additional Resources


© 2003 UC Riverside Department of Computer Science & Engineering. All rights reserved.