banner

Data Structures CSC 311

Data Structures and Algorithm Analysis in Java 

 CSU Instructor Open Textbook Adoption Portrait

Abstract: This open textbook is being utilized in a Computer Science course for undergraduate students by Amlan Chatterjee, Ph.D., at California State University, Dominguez Hills.  The open textbook provides data structures concepts and related algorithms using Java.  The main motivation to adopt an open textbook was to offer affordable and accessible materials to students.  Most students access the open textbook as a PDF on their electronic devices. 

About the Textbook

Data Structures and Algorithm Analysis in Java

Description:  

This textbook is designed for Computer Science students to learn and understand the concepts of data structures, one of the core computer science requirements. This book describes many techniques for representing data. These techniques are presented within the context of the following principles: 

1. Each data structure and each algorithm has costs and benefits. Practitioners need a thorough understanding of how to assess costs and benefits to be able to adapt to new design challenges. This requires an understanding of the principles of algorithm analysis, and also an appreciation for the significant effects of the physical medium employed (e.g., data stored on disk versus main memory). 

2. Related to costs and benefits is the notion of tradeoffs. For example, it is quite common to reduce time requirements at the expense of an increase in space requirements, or vice versa. Programmers face tradeoff issues regularly in all xiii xiv Preface phases of software design and implementation, so the concept must become deeply ingrained. 

3. Programmers should know enough about common practice to avoid reinventing the wheel. Thus, programmers need to learn the commonly used data structures, their related algorithms, and the most frequently encountered design patterns found in programming. 

4. Data structures follow needs. Programmers must learn to assess application needs first, then find a data structure with matching capabilities. To do this requires competence in Principles 1, 2, and 3.

Author:

  • Clifford A. Shaffer - Virginia Tech

Formats:  

The book is available for free as a PDF and a print copy can be purchased from Dover for $32.95. 

Cost savings:  

The course used to use Data Structures: Abstraction and Design Using Java by Koffman and Wolfgang which retails for about $60. The course enrolls about 60 students per year thereby having an equivalent cost savings of $3,600.

License: 

The textbook is part of the OpenDSA Project supported by the National Science Foundation. This means you may make copies of this file and redistribute in electronic form without charge. You may extract portions of this document provided that the front page, including the title, author, and this notice are included. Any commercial use of this document requires the written consent of the author.

About the Course

CSC 311: Data Structures

Description:  

More advanced and detailed treatment of concepts of data organization introduced in CSC 123. Includes lists, trees, graphs and storage allocation and collection. Applications to such areas as symbol tables, string search, and optimization.

Prerequisites: CSC 123, MAT 281

GE credit: 3.0

Learning outcomes:

  • An ability to analyze a problem, and identify and determine the computing requirements appropriate to its solution
  • An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
  • An ability to use current techniques, skills and tools necessary for computing practice
  • An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that 

Teaching and learning impacts:

Collaborate more with other faculty: No       
Use wider range of teaching materials: No
Student learning improved: Yes
Student retention improved: Unsure
Any unexpected results: No

Student learning improved - Although I don't have any specific data analysis to attribute to this fact, I chose this option based on the easy accessibility and usability of the book.

Sample assignment and syllabus:

Assignment
This is the syllabus for the Fall 2015 class.

Syllabus
This is one of the projects I used for the Fall 2015 class.

Textbook Adoption

OER Adoption Process

The main motivation for adopting the open textbook was to save students money and provide access to the material online from anywhere using an electronic device.

 I did an extensive search for relevant books for Data Structures. While evaluating this particular book, I found it covers all the topics relevant to the course, and since it has been updated in recent years, this discusses newer concepts that are unavailable in older versions of other books. Also, the fact that this free pdf version also is available as a print version was a factor in choosing the book so that students still have the choice of a hard copy of the book if they desired.

Slide sets were also prepared and provided to students to summarize the concepts discussed during the lectures.

Student access:  

The students can access the online version of the book from any compatible electronic device that supports PDF format documents. Also, since the book is available as a print version, students have the option to buy a hard copy as well.

Student feedback or participation:

Students were pleased with the option of having an online free textbook that can be accessed from anywhere. The students also appreciated that the OER textbook is a recent edition of a data structures book that includes all relevant concepts and implementation details.

I don't have any written comments from students about the book; but I did receive positive verbal feedback about the book on numerous occasions during the lectures.

Amlan Chatterjee, Ph.D.




I am a Computer Science professor at California State University, Dominguez Hills. I teach Introduction to Computer Science and Programming, as well as Data Structures.

As an instructor, my primary objective is to provide students with a learning environment that introduces and explains the basic principles of the subjects as well as excites them to explore the concepts further. The following three distinctive methods form the fundamentals of my teaching philosophy: 

  • “Design and Organize” - identifying the basic learning objectives and structuring the contents; 
  • “Communicate and Emphasize” - using effective techniques to engage different learning styles and reinforce concepts; 
  • “Evaluate and Enhance” - assessing the outcomes through student performance and feedback, which is applied to improve the previous two methods. 

My research interests are primarily in the areas of high-performance computing and big-data, with potential collaborative work across multiple disciplines. My current projects involve analyzing large graphs, specifically online social networks, using commodity multi-core hardware such as graphics processing units (GPU).