**CS240: Data Structures and Algorithms I**

#### Room 8-302

CS240-01: T/Th, 10:00am - 11:50am

CS240-02: T/Th, 1:00pm - 2:50pm

**Winter 2016**

**Instructor:** Dr. Fang Tang

*Office:* 8-11
*Email:* ftang AT cpp.edu
*Phone:* (909) 869-2157
*Office Hours:* T/Th: 9:00pm -- 10:00pm (via Email only). W: 10:00am to 12:00pm (8-11).

**Class Email List: cs24001@cpp.edu; ****cs24002@cpp.edu**

**Course Description: **Abstract data types and their implementations. Linked and array-based data structures. Lists, stacks, queues. Recursion. Analysis of algorithms. Hashing.

**Prerequisites:** CS 130 and CS 141 with grades C or better, or consent of instructor.

**Required Textbook:**

Data Structures and Abstractions with Java (4th Edition) by Frank M. Carrano, 2014.

**Reference**:

*Data Structures & Other Objects Using JAVA*, 4th Edition, by Michael Main, Addison Wesley, 2011.

*Data Structures & Algorithms in JAVA*, 4th Edition, by Michael T. Goodrich and Roberto Tamassia, Wiley, 2006.

**Course Syllabus** [pdf]

**Class Goals**:

**To understand basic data structures**. There are a few fundamental data structures that you will encounter through a lifetime of programming. All the rest are variations of the basic ones. By the end of the class, you should be able to understand the underlying principles of the few fundamental data structures, learn to use the proper data structure given different problem setting, and maybe be able to tweak them when necessary.
**To perform basic algorithm analysis**. In addition to using the proper data structures, you should understand how fast your program should run. At the end of this class, you should understand the basics of algorithm analysis.
**To practice your Java programming skills**. You have learned CS 140 and 141, all the basics of Java programming. Now it is time for you to use them to solve more advanced problems.

*Last updated: Jan. 2016 *