Algorithms and Data Structures with Applications to Graphics and Geometry

April 24, 2014 | Updated: May 9, 2019
Author: Jurg Nievergelt, Klaus Hinrichs

This is a textbook for first year computer science. It covers programming environments for motion, graphics, and geometry; programming concepts (beyond notation); objects, algorithms, and programs; complexity of problems and algorithms; data structures; and the interaction between algorithms and data structures (case studies in geometric computation).

Subject Areas
Computer Science, Algorithms and Data Structures

Original source

Tell us you are using this Open Textbook

Support for adapting an open textbook

Need help?
Visit our help page

Textbooks flagged as accessible meet the criteria noted on the Accessibility Checklist

textbook cover image
Algorithms and Data Structures cover by the Global Text Project is under a CC BY 3.0 Licence (

Get This Book

Select a file format

Creative Commons License
Algorithms and Data Structures with Applications to Graphics and Geometry by Jurg Nievergelt, Klaus Hinrichs is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.

Similar Textbooks

Request to review this textbook

Reviews (1) Avg: 4.5 / 5

Rafael Bradley

Institution:Simon Fraser UniversityTitle/Position: Teaching AssistantCreative Commons License

Q: The text covers all areas and ideas of the subject appropriately and provides an effective index and/or glossary

I agree that the text cover most relevant ideas of the subject. It mentions every single aspect I would consider and more.

However, I would recommend a better layout for the index. i.e. adding a space (empty line) between the different parts (chapters) would give you better structure and would be easier to follow. Also, I would recommend to shorten the description of each entry in the index.

Comprehensiveness Rating: 4 out of 5

Q: Content is accurate, error-free and unbiased

I did not detect any error in the content, the diagrams are clear and easy to understand. In my view, the content is unbiased as well.

Content Accuracy Rating: 5 out of 5

Q: Content is up-to-date, but not in a way that will quickly make the text obsolete within a short period of time. The text is written and/or arranged in such a way that necessary updates will be relatively easy and straightforward to implement

Since most of the book refers to basic programming theories, it could be valid and useful for long years. There are some sections, however, related to technologies that are changing very fast over the time such as robotics and computer animation. Although this fact could lead to a few sections becoming obsoletes, overall, the book still stay valid and will be helpful to understand the topics addressed.

Relevance Rating: 5 out of 5

Q: The text is written in lucid, accessible prose, and provides adequate context for any jargon/technical terminology used

For the coding part, if there is no color limitations, I recommend using the syntax highlighting that most code editor offer. That is, using different colors for different objects (variables, reserved words, strings, numbers, among others). Also, I would try to make each statement fit in one line. It is true that compilers and interpreters can read one multi-line statements, but for the sake of the reader understanding is much better to see the code clearly i.e. one statement at a time.

I would also recommend to add some space between each paragraph. It is possible that the reader could feel visual fatigue with such a long text fragments condensed without breaks.

Clarity Rating: 4 out of 5

Q: The text is internally consistent in terms of terminology and framework

I would not be more agree that this text is consistent from beginning to end. The author developed the content using the same structure and conventions.

Consistency Rating: 5 out of 5

Q: The text is easily and readily divisible into smaller reading sections that can be assigned at different points within the course (i.e., enormous blocks of text without subheadings should be avoided). The text should not be overly self-referential, and should be easily reorganized and realigned with various subunits of a course without presenting much disruption to the reader.

This book shows a good example of modularity, having a lot of examples, diagrams and subtitles than help the reader to digest smaller ideas in order to build a good understanding of a main point.

However, as I mentioned in above, there are occasions when this fact is not accomplished, Long paragraphs one after the other may produce to the reader a loss of interest and fatigue.

Modularity Rating: 4 out of 5

Q: The topics in the text are presented in a logical, clear fashion

The text is well organized, other than minor chances to the index mentioned above, following it is straightforward and the structure is maintained all along the content.

Organization Rating: 4 out of 5

Q: The text is free of significant interface issues, including navigation problems, distortion of images/charts, and any other display features that may distract or confuse the reader

As I mentioned in the clarity section, the interface of the coding examples must be improved providing to the reader programming code with a color scheme, where each aspect (i.e. reserved words, variables, functions, numbers, strings, comments) has its own color. Moreover, most integrated development environments (IDEs) and code editors provides this functionality.

Interface Rating: 4 out of 5

Q: The text contains no grammatical errors

I could not find any grammatical errors in the text.

Grammar Rating: 5 out of 5

Q: The text is not culturally insensitive or offensive in any way. It should make use of examples that are inclusive of a variety of races, ethnicities, and backgrounds

In my opinion, there is no reason why this text could make any reader feel offended. It is diverse because mentions different races, languages, regions and countries, making it inclusive and culturally unbiased.

Cultural Relevance Rating: 5 out of 5

Q: Are there any other comments you would like to make about this book, for example, its appropriateness in a Canadian context or specific updates you think need to be made?

From a technical and practical point of view, this book is appropriate not only in a Canadian but a worldwide context. No changes are needed in this aspect.