CS 140A: Algorithms and Data Structures (Winter, 1997)

Course Information

Instructor : Frank Vahid (cs140a-p@cs.ucr.edu)

Office Hours : TBA, Bourns A207

Lecture : TR 11:10-12:30, BOYHL 1471

Lab : T 6:10-9:00, BRNHL B252

Textbooks :

Fundamentals of Data Structures in C++ Horowitz, W.H.Freeman, ISBN 0-7167-8292-8
Optional: The C++ programmer's Handbook, Lucas, Prent.Hall, 0-13-118233-1.
Optional: Unix for the Impatient, Abrahams, Add. Wesley, 0-201-55703-7
Optional: C++:How to Program, Deitel, Prent.Hall, 0-13-117334-0.

TA : Yi Zheng, email: cs140a-t@cs.ucr.edu

TA office hours : By appointment

Grader : cs140a-g@cs.ucr.edu

Course Objective

To learn the fundamental data structures and algorithms necessary to build large and efficient programs.

Course grade

Homeworks 10%
Programs 25%
Quizzes 40%
Final exam 25% .

Course organization

Programs:
Good programming style is important.

Programs will be due roughly every two weeks.

Halfway through the two-week period which you have to work on a program, a partial submission may be required, consisting of a program that is at least 30% complete; this partial submission contributes to the grade for the program (in other words, don't procrastinate).

Programs must compile without warnings (using the -Wall option of g++).

Programs that do not compile will be given zero credit.

Partial credit will be given, but be sure to comments our portions that don't compile.

All assignments MUST INCLUDE the following at the top of the first page.

I certify that this program submission represents my own original work.
(Your name, the date)
Reading:
In this course, you are required to read and study the materials before class. This should make the course much easier for you, and should lead to your learning and remembering much more.
Quizzes and homeworks:
Each week usually include either a quiz or a homework. Quizzes will be given every other week at the end of lecture. Each quiz will usually consist of simple questions from the materials to be read, more challenging questions from the materials already covered in lecture, and one question from the previous quiz. Homeworks will usually be due during non-quiz weeks. These items are intended to keep you up to date with the material.

Lectures:
You are responsible for knowing the material both from the book and from the lectures. Lectures will not necessarily cover all topics in the book, and not all topics covered in lecture will necessarily appear in the book.

Questions:
Questions during lectures are strongly encouraged. Labs sections are also an ideal time for questions. Email questions are also fine.

Questions about grading should be sent to cs140a-g, and cc'ed to cs140a-p and cs140a-t.

Late programs:
No late programs will be accepted; otherwise, the course organization would become too complex. However, we will drop your lowest program score.

Academic dishonesty:
Be forewarned that any cheating (copying programs, allowing programs to be copied, exam cheating, etc.) will be punished TO THE FULLEST EXTENT POSSIBLE.

Course contents

Week : BOOK sections : Topics

1 : Ch1, Ch2 : Introduction, C++, algorithms, arrays

2 : Ch2, Ch3 : Pattern matching, stacks and queues

3 : Ch3, Ch4 : Linked lists

4 : Ch4 : Linked lists

5 : Ch5 : Trees

6 : Ch5 : Trees

7 : : Algorithm types, Branch-and-Bound, NP-complete problems

8 : Ch6 : Graphs

9 : Ch6 : Graphs

10 : : Misc.

Final exam : 3/20 3-6 p.m.