{"data":[{"id":16,"title":"Information Systems - A Manager's Guide to Harnessing Technology","edition_statement":null,"volume":null,"copyright_year":2015,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"Information Systems: A Manager's Guide to Harnessing Technology is intended for use in undergraduate and/or graduate courses in Management Information Systems and Information Technology. The teaching approach in Information Systems: A Manager's Guide to Harnessing Technology can change this. The text offers a proven approach that has garnered student praise, increased IS enrollment, and engaged students to think deeper and more practically about the space where business and technology meet. Every topic is related to specific business examples, so students gain an immediate appreciation of its importance. Rather than lead with technical topics, the book starts with strategic thinking, focusing on big-picture issues that have confounded experts but will engage students. And while chapters introduce concepts, cases on approachable, exciting firms across industries further challenge students to apply what they've learned, asking questions like: Why was Netflix able to repel Blockbuster and WalMart? How did Harrah's Casino's become twice as profitable as comparably-sized Caesar's, enabling the former to acquire the latter? How does Spain's fashion giant Zara, a firm that shuns the sort of offshore manufacturing used by every other popular clothing chain, offer cheap fashions that fly off the shelves, all while achieving growth rates and profit margins that put Gap to shame? Why do technology markets often evolve into winner-take-all or winner take-most scenarios? And how can managers compete when these dynamics are present? Why is Google more profitable than Disney? How much is Facebook really worth? The teaching approach in this text encourages students to think deeper and more practically about the space where business and technology meet. Every topic is related to specific business examples, so students gain an immediate appreciation of its importance. Rather than starting with technical topics, the book starts with strategic thinking, focusing on big-picture issues that interest students.","contributors":[],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"}],"publishers":[{"id":191,"url":"https://www.lib.umn.edu/publishing","year":null,"created_at":"2018-09-07T12:22:37.000-05:00","updated_at":"2018-09-07T12:22:37.000-05:00","name":"University of Minnesota Libraries Publishing"}],"formats":[{"id":357,"type":"Online","url":"https://biz.libretexts.org/Bookshelves/Management/Book%3A_Information_Systems__A_Managers_Guide_to_Harnessing_Technology","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1673,"type":"PDF","url":"https://biz.libretexts.org/Bookshelves/Management/Book%3A_Information_Systems__A_Managers_Guide_to_Harnessing_Technology","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1674,"type":"eBook","url":"http://open.lib.umn.edu/informationsystems/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":2256,"type":"XML","url":"https://open.lib.umn.edu/informationsystems/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":2257,"type":"ODF","url":"https://open.lib.umn.edu/informationsystems/","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4","textbook_reviews_count":8,"reviews":[{"id":145,"first_name":"Stacy","last_name":"Zemke","position":"Instructor","institution_name":"University of Oklahoma","comprehensiveness_rating":4,"comprehensiveness_review":"Textbook addresses most of the major areas covered in  and introductory information technology management course.  I would like to see additional content project management, systems planning, and some more on legal and social/organizational issues inherent in information technology systems implementation, but these topics are often not covered in introductory books in this discipline.  \r\nThere is a very thorough table of contents (see Interface section), the chapters are nicely sub-divided and have a clear visual structure.  \r\n\r\nThere is no index or glossary.  \r\n \r\n","accuracy_rating":4,"accuracy_review":"Content in the text is timely and accurate, error-free and unbiased.  Examples are from U.S. based companies, as well as international organizations, which helps to broaden the approaches to information systems.  Since the subject of this book is recent information technology and the business world, it is a given that some references will have to be updated and changed, the subject area is just changing very quickly.\r\n\r\nThe text is intentionally presented in a very reader-friendly style that keeps the content from being bogged down with IT jargon, but still explains the IT concepts very well.  ","relevance_rating":4,"relevance_review":"The author does a good job of addressing specifics if IS, that can change very quickly, in a broad way by focusing on the overall management and organizational issues and then illustrating those issues with examples from current events and organizations. Overall these examples are recent and relevant.  \r\n\r\nMany of the specific company references are in specially formatted content boxes so they would be easy to remove/modify, or are addressed in whole chapters that could be removed/modified.\r\n\r\nOrganizational references made within the general text are broad enough that they would not have to be removed, but could be updated to reflect recent events.\r\n","clarity_rating":5,"clarity_review":"Text is well written and easy to read.  Very well written objectives for each sub-chapter, and good use of formatting to give additional meaning and structure to the content. \r\nIt is well referenced, though often the references are written directly in the flow of the text (instead of foot/end notes), making some sections harder to read as the reference information is a bit distracting.  ","consistency_rating":4,"consistency_review":"The text is clear and consistent, well edited, and written in a single voice.  The chapter structure and order are logical and reflective of the discipline.  ","modularity_rating":5,"modularity_review":"Book organized into chapters with short (usually 4 to 6 page) sub chapters that make it very easy to move around, or remove small sections if desired with out making the text difficult to read.  Subchapters are nicely organized, each starting with Objectives, then finishing with Key Takeaways and a Question \u0026amp; Exercise section.  Clear textual and image cues help to identify the different subchapters and sections of the text.\r\n\r\nThe text does reference itself some, but not in a way that would make removing certain sections prohibitive.  \r\n","organization_rating":4,"organization_review":"Overall the chapter order and organization is logical and structured well. The selection of chapters is appropriate to the discipline.  The structure of the chapters is well presented visually and the breakdown of content into subchapters makes the book easy to read, as well as creates a good framework for moving through the content. (NOTE, this review reflects the chapter structure from the versions available at lardbucket, see Interface section)","interface_rating":4,"interface_review":"Some issues with finding the full book, but is more of a repository issue than an issue with the actual book.  The link here is to the Saylor.org edition, it contains all of the charts/graphs that are mentioned in the book, but the chapter structures is more compressed (11 chapters), and there is no table of contents or author information.  \r\n\r\nIf you use the versions available at lardbucket (http://2012books.lardbucket.org), some versions have the images (v. 1.2) and some do not (V 2.0), BUT this site has a better (I think) chapter structure (14 chapters), good table of contents and author information. \r\n","grammatical_rating":5,"grammatical_review":"I found no grammatical error in the text","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive.  Many of the companies used in the examples are US based, but not exclusively.  International issues in implementing I.S. is addressed, (different standards, social norms, regulations) though not extensively. ","overall_rating":9,"overall_review":"I plan to adapt and adopt this book for my course, and will add some sections from other open textbooks to make a full content solution. ","created_at":"2015-01-12T18:00:00.000-06:00","updated_at":"2015-01-12T18:00:00.000-06:00"},{"id":567,"first_name":"Zafer","last_name":"Ozdemir","position":"Professor","institution_name":"Miami University","comprehensiveness_rating":4,"comprehensiveness_review":"This textbook covers most of the important areas in information systems. Content could be added on business processes, ERP, and systems development/project management. An index at the end could be beneficial.","accuracy_rating":5,"accuracy_review":"Content is accurate and up-to-date. This can be tricky for a book on information systems because the field changes quickly. It is nice to see that the author has updated the book every couple of years.","relevance_rating":4,"relevance_review":"I would not consider using an edition of this textbook that is more than three years old. This is because of how fast the information system field changes. This edition is only a year old, which is great. \n\nOne thing to note is that many of the chapters rely on relevant business cases which will become too old at some point (not yet). I would say that a major revision of the textbook will be necessary within five years.","clarity_rating":5,"clarity_review":"The textbook is written in a very reader friendly style. Many introductory information systems textbooks are full of technical jargon and acronyms. This one is not which makes is very easy to read.","consistency_rating":5,"consistency_review":"The text is consistent in terms of its use of the terminology across the chapters. I also like the the consistent structure of each chapter, where learning objectives are presented at the beginning, and key takeaways are listed at the end. Examples illustrating the concepts discussed are consistently boxed in.","modularity_rating":5,"modularity_review":"I really like the modularity of this textbook. As a matter of fact, the ease by which I could move sections and subsections around was the main reason for my use of this textbook in an e-commerce class (despite the fact that the book is written for an introductory information systems course). Chapters 4, 6,7, 8, 10, 12, and 14 are particularly relevant for such a course.","organization_rating":4,"organization_review":"I think I would restructure the chapters every time I would use this textbook, either for an introductory information systems or an -e-commerce course. I tend to think that infrastructure and software/hardware topics (chapters 5, 9, 10, 12) could come earlier. So can the chapter on databases (chapter 11).","interface_rating":5,"interface_review":"I reviewed this book on saylordotorg.github.io website and could not access any of the figures. It would probably not be an issue on a hard copy or an online copy that the students would purchase. Other than that I didn't notice an issue.","grammatical_rating":5,"grammatical_review":"The grammatical errors in each chapter are minimal if any.","cultural_rating":5,"cultural_review":"This is a very US-centric textbook. This is easily understood if we consider the fact that most of the information systems being discussed in textbook have originated in the US. Therefore, I don't see this as a negative. The text is not culturally offensive in any way.","overall_rating":9,"overall_review":"I would strongly recommend this textbook if you have a non-technical audience. Also a great introductory text for e-commerce if you exclude some of the chapters. The discussions are built around cases and stories that bring the concepts to life. And you are free to arrange the chapters any way you want. Best wishes!","created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":811,"first_name":"Dr Jose","last_name":"Valdes","position":"Instructor","institution_name":"Colorado State University","comprehensiveness_rating":4,"comprehensiveness_review":"It is difficult to create a comprehensive text that addresses substantive the numerous concepts associated with management information systems. This text covered the concepts it addressed in a substantive manner using a non-technical engaging writing style and exemplary structure. I appreciate the chapter objectives, take aways and questions and exercises. \n\nI would be selective in assigning readings from the text, the sequence and supplement it with targeted readings and videos. Supplemental content would include the concepts of business analytics, artificial intelligence and security.\n\nIn summary, I would consider the text for an introductory/survey management information system course.","accuracy_rating":5,"accuracy_review":"The content was accurate and did not demonstrate bias. However, the nature of the content suggests that updates will be systematically required in order to maintain content relevance and accuracy. ","relevance_rating":4,"relevance_review":"The business cases may remain relevant for a period of time. However, it be prudent to update the business cases along with the content to retain relevancy. The fact that the cases may be removed or updated relatively simply, because of the format, is an advantage. Some chapters may require substantive update but the time frame for the updates will vary. ","clarity_rating":5,"clarity_review":"The text was easy to read and clear. The technical terminology and jargon was explained and kept to a minimum. However, it was verbose, which added to the length of the text. Some readers may find the additional details of value. ","consistency_rating":5,"consistency_review":"The chapters were formatted in a consistent manner. The consistent format of the chapters added significant value. The terminology was consistent and relevant to the subject matter.  ","modularity_rating":5,"modularity_review":"The modularity of the content was excellent due to the consistent structure of the chapters. The logical, consistent divisions of the chapters facilitated navigation. The occasional self-referencing did not warrant elimination of content.","organization_rating":4,"organization_review":"The overall structure and organization of the text is excellent. Chapters are consistent and informative clearly stating objectives, reinforcing preceding concepts and new concepts clearly introduced. However, the flow of the text is impeded by interspersing technical content chapters with chapters focused on business cases.  But, I realize that chapters may be assigned in other than the sequence in the text. ","interface_rating":5,"interface_review":"No noticeable navigational issues or ineffective images and charts. The images and charts were relevant and added substance and clarity to the content of the text. \n","grammatical_rating":5,"grammatical_review":"No grammatical errors detected. ","cultural_rating":5,"cultural_review":"The text was not culturally insensitive or offensive. The national and international business cases reflected the business situation without bias. ","overall_rating":9,"overall_review":"I found the depth of the subjects covered, non-technical style and structure exemplary. However, the text is verbose. My preference is for text that include a comprehensive glossary and index. ","created_at":"2016-12-05T18:00:00.000-06:00","updated_at":"2016-12-05T18:00:00.000-06:00"},{"id":924,"first_name":"Roger","last_name":"Finnegan","position":"Community Faculty","institution_name":"Metropolitan State University","comprehensiveness_rating":4,"comprehensiveness_review":"The textbook does cover the basics that other MIS textbooks cover:\n•\tSystems development – plus cloud, opensource and off the shelf\n•\tBI – data warehouses and marts\n•\tTelecommunications\n•\tSecurity\n•\tE-commerce\n•\tEnterprise applications – CRM, ERP and SCM\n•\tEthics\nI did not find an index or glossary.\n","accuracy_rating":4,"accuracy_review":"I did not find any issues with the accuracy of the information in the textbook. It does in fact try to go beyond what other textbooks provide. Instead of just stating the facts as most other textbooks do the author provides more of the flavor of how things really are in IT.","relevance_rating":4,"relevance_review":"The relevance is both a strength and a weakness for this textbook. It is very relevant right now but could become outdated very quickly. While this is true of any IT book this one is particular seems to aim at being as relevant to the current market as possible. For many textbooks you need to add current articles as additional reading to stay up to the minute in discussing IT. This text tries to include the up to the minute info. Again, it is very relevant now but may not have great longevity.","clarity_rating":5,"clarity_review":"Clarity is a strength for this textbook. The author states in the forward that “The information systems (IS) course should be the most exciting class within any university. But far too often students resist rather than embrace the study of tech.” The author strives for a clear and engaging style that is similar to periodicals like “Wired and Fortune.” If is not uncommon to discover after the course is over that many of the students did not read the textbook. The engaging style would hopefully encourage more of the students to actually real it.","consistency_rating":4,"consistency_review":"The book is very consistent. Each chapter has multiple sections. These sections are written like short self-contained articles with learning objectives, key take always, questions and references.","modularity_rating":3,"modularity_review":"The book is very modular. In fact an instructor could choose to assign just certain sections or specific articles in the textbook. Each section is written to stand on its own like a periodical article.","organization_rating":4,"organization_review":"The book does not break subjects up like other MIS textbooks. There is not an ethics chapter or a networking chapter or a systems development chapter. Those subjects are interlaced with other subjects throughout the book. While this is a different structure from other textbooks it is more real world since these ideas do not standalone but are incorporated into situations that the students will find in their careers.","interface_rating":4,"interface_review":"The textbook is very well put together. It is also available in different formats such as PDF, XML, ePUB and Kindle.","grammatical_rating":4,"grammatical_review":"I did not see any grammatical errors in the textbook.","cultural_rating":4,"cultural_review":"I did not see anything in the book that was culturally insensitive.","overall_rating":8,"overall_review":"I found the textbook to be quite good. Students can have difficulty with a textbook that is dryly written. The author does make a very good effort to make the subject engaging. As stated above the author’s forward notes that “information systems (IS) course should be the most exciting class within any university.” I absolutely agree but the students don’t always realize that. This book is a step in the right direction in engaging students and helping them realize how exciting IT can be.","created_at":"2017-02-08T18:00:00.000-06:00","updated_at":"2017-02-08T18:00:00.000-06:00"},{"id":2337,"first_name":"dzhu@iastate.edu","last_name":"Dan","position":"Professor","institution_name":"Iowa State University","comprehensiveness_rating":4,"comprehensiveness_review":"ok","accuracy_rating":4,"accuracy_review":"good","relevance_rating":5,"relevance_review":"good","clarity_rating":4,"clarity_review":"good","consistency_rating":4,"consistency_review":"good","modularity_rating":4,"modularity_review":"ok","organization_rating":4,"organization_review":"good","interface_rating":5,"interface_review":"good","grammatical_rating":5,"grammatical_review":"good","cultural_rating":5,"cultural_review":"good","overall_rating":9,"overall_review":"This book covers the most of useful topics on the subjects. But the materials could be updated as the book is almost three years old. Some of the new topics to be added may include topics such as business analytics. ","created_at":"2018-10-23T01:43:00.000-05:00","updated_at":"2018-10-23T01:43:00.000-05:00"},{"id":3847,"first_name":"Shouhong","last_name":"Wang","position":"Professor","institution_name":"University of Massachusetts Dartmouth","comprehensiveness_rating":4,"comprehensiveness_review":"Basics of computer hardware could be included in Chapter 5 before the discussion of Moore’s Law.","accuracy_rating":5,"accuracy_review":"The contents are accurate.","relevance_rating":2,"relevance_review":"Given the fast pace of development of information technologies in business, a textbook of Information Systems should be updated every 3 to 5 years.  The current version of this textbook is about 5 years old.  Many data should be updated.  Some cases are still relevant, but needs updated.  Others may no longer be significant today.  Updating this textbook of Information Systems demands significant time and effort.","clarity_rating":4,"clarity_review":"Overall, the text is easy to follow.  Chapter titles could be plain without jargons for all types of students, including international students.","consistency_rating":5,"consistency_review":"The text is internally consistent in terms of terminology and framework.","modularity_rating":5,"modularity_review":"The textbook is divided into 14 chapters, and can be re-organized to meet the different needs of courses.","organization_rating":2,"organization_review":"The overall organization and the presentation flow could be improved significantly.   The following several suggested changes could be considered.   (1) Chapter 3 and Chapter 4 could be a part of cases for Chapter 2.  (2) Chapter 5 could include basics of computer hardware.  (3) Chapter 9 Understanding Software could be moved forward after Chapter 5.  (4) Chapter 12 Internet and Telecommunication could be discussed before Chapter 6 Network Effects and Chapter 7 Social Media.  (5) Chapter 8 Facebook and Chapter 14 Google might be integrated into other chapters as cases.","interface_rating":4,"interface_review":"Overall, the interface is good.  Some images could be made smaller.  Page 301 Section 10.1 is misplaced.","grammatical_rating":5,"grammatical_review":"The text has no noticeable grammatical errors.","cultural_rating":5,"cultural_review":"The textbook is free of culturally insensitive or offensive material.","overall_rating":8,"overall_review":"This textbook has strengths of emphasis of strategic use of information systems and good business cases related to information systems.  If the textbook is updated frequently and has a good website to build up a good community (see an example https://opentextbook.site/informationsystems2019/  ), it would attract more users.","created_at":"2020-05-27T18:27:07.000-05:00","updated_at":"2020-05-27T18:27:07.000-05:00"},{"id":34393,"first_name":"Mostafa","last_name":"Mesgari","position":"Assistant Professor","institution_name":"Loyola Marymount University","comprehensiveness_rating":4,"comprehensiveness_review":"The book provides a comprehensive overview of information systems, including topics such as data management, network systems, and business intelligence. However, I wish it expanded on enterprise application implementation and some of its nuances, like process management and user resistance. More recent topics like AI and data-driven business transformation also deserve a chapter/case when and if the authors decide to update their text.","accuracy_rating":5,"accuracy_review":"The content and the cases are accurate and to the point.","relevance_rating":4,"relevance_review":"The book stays relevant because it talks about many foundations of business IT that do not change that fast. However, It can use an update to expand on some of the more recent developments in AI and data-driven business product development and transformation.","clarity_rating":5,"clarity_review":"The writing style is straightforward and easy to understand, making it accessible to a wide range of readers, including those with limited technical backgrounds. The authors do an excellent job of balancing technical detail with practical applications, making it a valuable resource for both novice and experienced managers.","consistency_rating":5,"consistency_review":"The authors have taken care to define and explain key concepts and terms, and they use a consistent structure and approach throughout the book to ensure that information is presented clearly and coherently.","modularity_rating":4,"modularity_review":"Mostly, it is easy to use chapters and sections separate from others. Some of the cases could actually break down into smaller pieces and put in the relevant chapter to reinforce learning of the concepts and examples together.","organization_rating":3,"organization_review":"This is the one aspect of the book that I would change most. I think the chapters and sections could reorganize to tell a more coherent story. For instance, section 2.2 would be better read after section 2.4 and all the discussion on IT strategy at the industry level. The link between chapters has to be smoother and more natural. Zara and Netflix cases probably could be broken into smaller cases and included in relevant chapters. Also, chapter 5 might be better read earlier in the book.","interface_rating":5,"interface_review":"I like the interface in both HTML and digital PDF versions that allow easy navigation. The interface uses appropriate images to make it more visually appealing.","grammatical_rating":5,"grammatical_review":"No grammatical error was detected.","cultural_rating":5,"cultural_review":"No cultural biases were found in the test or any of the cases.","overall_rating":9,"overall_review":"The book is useful for managers and business leaders looking to understand how technology can be leveraged to improve their operations and achieve their organizational goals. It is also valuable for students looking to develop their knowledge and skills in information systems and technology management.","created_at":"2023-02-07T18:48:32.000-06:00","updated_at":"2023-02-07T18:48:32.000-06:00"},{"id":35400,"first_name":"Efrem","last_name":"Mallach","position":"Adjunct Faculty","institution_name":"Rhode Island College","comprehensiveness_rating":2,"comprehensiveness_review":"This book is comprehensive - for its publication date. Unfortunately, information technology and information systems years are even shorter than the proverbial dog years, As this review is being written, the book is a decade old, with much of its content apparently older. IT and IS have not stood still, It does not cover many topics that are vital to anyone entering the white-collar workforce in 2025, let alone later. For that reason alone I cannot recommend it for adoption today,","accuracy_rating":4,"accuracy_review":"With the above context, the book is generally accurate. I noticed one non-trivial error: Moore's Law is defined (Section 5.1) as performance doubling every 18-24 months. That's not what Moore said. He said that the number of components that can be placed on a single semiconductor chip doubles in that time frame. Engineers have generally been able to use these components to gain improved performance, but that doesn't make them the same thing.","relevance_rating":2,"relevance_review":"The guidelines for this review section open with \"Content is up-to-date, but not in a way that will quickly make the text obsolete within a short period of time.\" This book is not up to date in 2025, though it was adequately so when copyrighted. Much of its technology content is already obsolete, with major gaps in coverage of topics that have become relevant since 2015, though its discussion of managerial issues is relatively timeless.","clarity_rating":5,"clarity_review":"It is well written, clear, and at a level suitable for undergraduates.","consistency_rating":5,"consistency_review":"I did not notice any consistency issues.","modularity_rating":5,"modularity_review":"The book is well designed from a modularity standpoint.","organization_rating":5,"organization_review":"I like the organization. It is essentially what I use in teaching an introductory IS course to business students.","interface_rating":5,"interface_review":"No issues here.","grammatical_rating":5,"grammatical_review":"The author appears to be an educated native speaker of North American English. His or her grammar is, as far as I noticed, faultless.","cultural_rating":5,"cultural_review":"Examples are chosen from a wide range of countries and cultures. I did not notice anything that would be culturally offensive.","overall_rating":9,"overall_review":"It would be nice to say who the author is. One suspects that it's John Gallaugher, and that this is an older version of a book available in its 2019 edition from a variety of sources - but of which no more recent edition exists, as far as I was able to find, and even 2019 (hence written in 2018 or earlier) is too old for 2025 adoption. If the author or the publisher of later editions requested that the author's name be deleted here, that should at least be stated so we're not left wondering. \n\nSeparately, the index of this edition seems to have been garbled. It contains only one entry, for Twitter. (I confirmed this via the online version and a download of the entire book.) That may not mater to people who don't use indices, but, if the book is still of value to anyone a decade after it was published, perhaps it could be fixed.","created_at":"2025-02-07T14:03:55.000-06:00","updated_at":"2025-02-07T14:03:55.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/information-systems-a-manager-s-guide-to-harnessing-technology","updated_at":"2025-12-15T02:23:29.000-06:00"},{"id":35,"title":"Programming Languages: Application and Interpretation","edition_statement":"Version Second Edition","volume":null,"copyright_year":2007,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"Unlike some other textbooks, this one does not follow a top-down narrative. Rather it has the flow of a conversation, with backtracking. We will often build up programs incrementally, just as a pair of programmers would. We will include mistakes, not because I don't know the answer, but because this is the best way for you to learn. Including mistakes makes it impossible for you to read passively: you must instead engage with the material, because you can never be sure of the veracity of what you're reading. At the end, you'll always get to the right answer. However, this non-linear path is more frustrating in the short term (you will often be tempted to say, “Just tell me the answer, already!”), and it makes the book a poor reference guide (you can't open up to a random page and be sure what it says is correct). However, that feeling of frustration is the sensation of learning. I don't know of a way around it. At various points you will encounter this: ExerciseThis is an exercise. Do try it. This is a traditional textbook exercise. It's something you need to do on your own. If you're using this book as part of a course, this may very well have been assigned as homework. In contrast, you will also find exercise-like questions that look like this: Do Now!There's an activity here! Do you see it? When you get to one of these, stop. Read, think, and formulate an answer before you proceed. You must do this because this is actually an exercise, but the answer is already in the book—most often in the text immediately following (i.e., in the part you're reading right now)—or is something you can determine for yourself by running a program. If you just read on, you'll see the answer without having thought about it (or not see it at all, if the instructions are to run a program), so you will get to neither (a) test your knowledge, nor (b) improve your intuitions. In other words, these are additional, explicit attempts to encourage active learning. Ultimately, however, I can only encourage it; it's up to you to practice it. The main programming language used in this book is Racket. Like with all operating systems, however, Racket actually supports a host of programming languages, so you must tell Racket which language you're programming in. This textbook has been used in classes at: Brown University, Cal Poly, Columbus State University, Northeastern University, NYU, Reed College, UC-San Diego, UC-Santa Cruz, University of Rhode Island, University of Utah, Westmont College, Williams College, Worcester Polytechnic Institute.","contributors":[{"id":1984,"contribution":"Author","primary":true,"corporate":false,"title":"Dr","first_name":"Shriram","middle_name":null,"last_name":"Krishnamurthi","location":"Brown University","background_text":"Shriram Krishnamurthi is Associate Professor of Computer Science at Brown University."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"}],"publishers":[{"id":37,"url":"http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/","year":2017,"created_at":"2018-09-07T12:22:36.000-05:00","updated_at":"2020-11-15T00:39:47.000-06:00","name":"Brown University"}],"formats":[{"id":51,"type":"Online","url":"http://www.cs.brown.edu/courses/cs173/2012/book/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":52,"type":"PDF","url":"http://www.cs.brown.edu/courses/cs173/2012/book/book.pdf","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":53,"type":"Hardcopy","url":"http://www.lulu.com/spotlight/sk2","price":{"cents":2784,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":1,"reviews":[{"id":834,"first_name":"Sanjay","last_name":"Rajopadhye","position":"Professor","institution_name":"Colorado State University","comprehensiveness_rating":5,"comprehensiveness_review":"The text is very comprehensive in the coverage of programming languages and in particular their implementation, although relatively little attention is paid to parsing -- the author is very clear about this choice, and I agree with it.\n","accuracy_rating":5,"accuracy_review":"The content is error free, as far as I could judge","relevance_rating":4,"relevance_review":"The principles covered in the text are definitely of primary concerns of programming language design and will remain relevant in the foreseeable future of computing.\n","clarity_rating":4,"clarity_review":"The text is lucid and most concepts a re clearly articulated and explained well","consistency_rating":5,"consistency_review":"The theme, terminology and framework adopted in the book are consistent.","modularity_rating":5,"modularity_review":"The modularity is very good.  Unlike other texts, the good *does not* follow a linear structure and encourages the student/reader/instructor to navigate it using their preferences.  Despite this dynamic flow of control, the book remains surprisingly modular and consistent.\n","organization_rating":4,"organization_review":"The organization and structure follows from the author's choice of a non-linear flow through the book, and yet the topics are presented in logically and clearly ","interface_rating":4,"interface_review":"The interface and navigation on the web site is very good and supports the non-linear flow","grammatical_rating":5,"grammatical_review":"The grammar and language is excellent.","cultural_rating":5,"cultural_review":"I did not find the text to be insensitive or offensive an any manner","overall_rating":9,"overall_review":"None","created_at":"2016-12-05T18:00:00.000-06:00","updated_at":"2016-12-05T18:00:00.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/programming-languages-application-and-interpretation","updated_at":"2025-12-15T02:01:24.000-06:00"},{"id":43,"title":"Think Python: How to Think Like a Computer Scientist","edition_statement":"2e","volume":null,"copyright_year":2012,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"Think Python is a concise introduction to software design using the Python programming language. Intended for people with no programming experience, this book starts with the most basic concepts and gradually adds new material. Some of the ideas students find most challenging, like recursion and object-oriented programming, are divided into a sequence of smaller steps and introduced over the course of several chapters. This textbook has been used in classes at Bard College, Olin College of Engineering, University of California, Santa Barbara, University of Maine, University of Northern Colorado.","contributors":[{"id":3607,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Allen","middle_name":"B.","last_name":"Downey","location":"Franklin W. Olin College of Engineering","background_text":"Allen B. Downey is an American computer scientist, professor of computer science at the Franklin W. Olin College of Engineering and writer of free textbooks. Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997. He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"},{"id":59,"name":"Programming Languages","parent_subject_id":3,"call_number":"QA76","visible_textbooks_count":26,"url":"https://staging.open.umn.edu/opentextbooks/subjects/programming-languages"}],"publishers":[{"id":201,"url":"http://greenteapress.com/wp/think-python-2e/","year":null,"created_at":"2018-09-07T12:22:37.000-05:00","updated_at":"2018-09-07T12:22:37.000-05:00","name":"Green Tea Press"}],"formats":[{"id":367,"type":"Online","url":"http://greenteapress.com/thinkpython2/html/index.html","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":368,"type":"PDF","url":"https://greenteapress.com/wp/think-python-2e/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":369,"type":"Hardcopy","url":"https://www.amazon.com/Think-Python-Like-Computer-Scientist/dp/1491939362","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1970,"type":"LaTeX","url":"https://github.com/AllenDowney/ThinkPython2/tree/master/book","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":11,"reviews":[{"id":102,"first_name":"David","last_name":"Pieczkiewicz","position":"Director of Graduate Studies and Clinical Assistant Professor","institution_name":"University of Minnesota","comprehensiveness_rating":5,"comprehensiveness_review":"The text concisely but thoroughly covers the basics of programming in the Python language, from expressions and functions to file processing and object-oriented programming. The HTML version of the text has an index, but the DF version lacks it, for some reason. Each chapter features a glossary of relevant terms and topics. Chapters are named in such a way that it is easy to glean topics. I was especially pleased to see a chapter on graphic user interfaces and the Tkinter library. Each chapter also includes several coding or thought exercises for the student, and solutions for all of them are provided as URLs and links. Throughout, special attention is given to principles and techniques in program debugging, and the general prevention of syntactic and semantic errors. This is a short book, so it does not go into every final detail of the language. Its purpose is rather to teach fundamental programming concepts using Python, and does so very effectively.","accuracy_rating":5,"accuracy_review":"I have not spotted any factual inaccuracies or biases in the text. However, see below for some discussion on the particular versions of Python covered.","relevance_rating":4,"relevance_review":"The book's subject matter is mostly timeless, in that as long as procedural and object-oriented programming are taught, the content is relevant. A minor concern is that the book concentrates on Python 2, a slightly older version of the language. (At the time of this review, Python is at version 3.4.1.) The author does point out the few places where there is a difference in coding between Python 2 and Python 3, for tasks such as printing and integer division. On the book's web page is a link to a version of the text that is \"converted\" to Python 3, written by a third party. Those already familiar with Python are probably aware of the protracted transition between Python 2 and 3 in industry and academia. My own preference is that teaching materials cover Python 3 exclusively, to prevent confusion and potentially outmoded coding styles.","clarity_rating":5,"clarity_review":"The prose is direct and to the point, with surprising clarity. New and potentially difficult concepts are expressed clearly, and when technical terminology is used, it is explicitly defined.","consistency_rating":5,"consistency_review":"The text is very consistent in its overall style for each chapter, and the book overall feels like a coherent unit.","modularity_rating":5,"modularity_review":"The book is divided into 19 chapters and three appendices. Chapters are about 10-15 pages long, and appendices are about 5 pages long each. The brevity of the text and the many subheadings for each chapter enables a good degree of modularity. Once in a while, certain concepts are \"sprung early\" in one chapter, but explained more thoroughly in subsequent chapters. For example, opening and reading from text files was introduced briefly in Chapter 9 to enable the analysis of string/text data, but file manipulation itself was more formally covered later, as Chapter 14. I did not find this practice disruptive. While chapters generally built on one another, I felt that many chapters could stand alone or be reordered as needed.","organization_rating":5,"organization_review":"The text had good organization of topics. Chapters are short, so relatively specific topics such as \"Strings\", \"Files\", and \"Inheritance\" are at the focus of each. Since the chapters are only 10-15 pages long, small portions of subject matter can be more easily read and understood. There was also a good flow of topics from simple to complex, where ideas introduced in one chapter are revisited or built upon in subsequent chapters.","interface_rating":5,"interface_review":"I mainly focused on the PDF version of the text, which was free of errors. Links and URLs were enabled in the PDF, making navigation and lookup simple. My only complaint is that exercises, which are interspersed in the text, are not always set off by white space from any preceding material. As such, narrative sometimes runs into exercises. The flow can still be followed, but it is an odd error.","grammatical_rating":5,"grammatical_review":"The text contained no grammatical errors that I was aware of. Based on material in the Preface, the text has been scrutinized by many people over time, and readers are credited with spotting errors and contributing new material.","cultural_rating":4,"cultural_review":"I found no material that was insensitive or offensive from the standpoint of culture, gender, etc. Some examples and exercises involve the manipulation of text in languages other than English, which is a nice feature, as it shows that some concepts, such as string handling or dictionaries, transcend language. Since the text focuses mainly on Python 2, which does not natively support Unicode strings, there is no discussion of non-Roman languages. In true Python fashion, there are occasional references to Monty Python jokes, including strings such as \"spam\" and \"eggs\". While this is harmless in itself, I sometimes worry that as time passes, fewer and fewer students will be familiar with Monty Python, or understand the cultural references.","overall_rating":10,"overall_review":"I was motivated to review this book because I teach a course on basic Python programming to health sciences students. Overall, the book reads best as a brief but comprehensive introduction to computer science principles, with Python as the exemplar language. Some students may not have the background or interests to understand or apply some of the topics covered in the book (e.g., algorithmic complexity or operator overloading), and as such, this text may work best as a short book for science and engineering students. However, I found it to be an unexpectedly readable and usable text, and I plan to try it in a future iteration of my Python course.","created_at":"2014-07-15T19:00:00.000-05:00","updated_at":"2014-07-15T19:00:00.000-05:00"},{"id":823,"first_name":"Sid","last_name":"Suryanarayanan","position":"Associate Professor","institution_name":"Colorado State University","comprehensiveness_rating":5,"comprehensiveness_review":"Python is becoming increasingly important in its use for scientific and engineering applications.  This text is an easy-to-read short volume on the use of Python for coding, that teaches the reader generic skills of good programming. The topics covered are comprehensive and sequentially coherent, especially for a novice in programming. Perhaps the biggest strength of this book is the fluidity of the topics and the ease of communication in the chapters. There are very useful examples and exercises present in every chapter that progressively walks the reader through the aspects of coding (in Python). There are links with solutions in the book for the reader's benefit as well. This reviewer would have liked an introductory section that describes a step by step installation and use of an editor for Python; however, given the wide choices and the changing environment of editors, this is a minor concern that pales in comparison to the myriad benefits provided by this book.","accuracy_rating":5,"accuracy_review":"As far as this reviewer is concerned, the contents of this book are accurate and free of glaring errors.","relevance_rating":4,"relevance_review":"Since the author has taken the approach of educating the reader on how to think and program like a computer scientist rather than provide a crash course or a recipe-type approach to programming in Python, this book may not become obsolete in the near future. However, as version of Python change their syntax every now and then, the onus might be on the reader to keep abreast of such quirks while reading this book.","clarity_rating":5,"clarity_review":"As mentioned before, the biggest strength of this book is the fluidity of the topics and the ease of communication in the chapters. There are very useful examples and exercises present in every chapter that progressively walks the reader through the aspects of coding (in Python). There are links with solutions in the book for the reader's benefit as well. ","consistency_rating":5,"consistency_review":"This text is quite consistent in its contents, terminology, framework, and flow of material.","modularity_rating":4,"modularity_review":"The topics of this book are so arranged in sequential order that it might benefit the novice reader to go thru the book from first to last. However, this may not be true for the slightly advanced reader that may benefit from the modularity of the topic. This reviewer was able to go back and forth between these topics arranged in chapters. The arrangement of the sections within the chapters are also well thought and presented with increasing complexity.","organization_rating":5,"organization_review":"The structure and flow of the book are presented in an organized manner. ","interface_rating":5,"interface_review":"The book has working links for solutions, examples, and other resources that are free of issues.","grammatical_rating":5,"grammatical_review":"This reviewer could not discern any grammatical errors in this book.","cultural_rating":4,"cultural_review":"The text is not culturally insensitive or offensive in any way.","overall_rating":9,"overall_review":null,"created_at":"2016-12-05T18:00:00.000-06:00","updated_at":"2016-12-05T18:00:00.000-06:00"},{"id":2635,"first_name":"Amy","last_name":"Connolly","position":"Assistant Professor","institution_name":"James Madison University","comprehensiveness_rating":4,"comprehensiveness_review":"Python is a great language for beginners to learn the basics of computer programming. This book covers most of the primary Python syntax. It would make a good reference book to supplement existing lectures, without being too unwieldy. For a beginner textbook, I would need to add more explanation of basics and how to think through programming. ","accuracy_rating":5,"accuracy_review":"Content is accurate, although could use more updates for the new version of Python. It was a little confusing in places where explanations switch between Python 2 and Python 3. ","relevance_rating":5,"relevance_review":"I believe this work will remain relevant for as long as the current version of Python is in use. General concepts will not change, but the book will need to be updated with newer versions of code snippets.","clarity_rating":5,"clarity_review":"The writing is clear and concise with few errors. Some lessons will need further explanation from instructor if using this book. ","consistency_rating":5,"consistency_review":"The book is written in a consistent and personable style. ","modularity_rating":5,"modularity_review":"Programming is a difficult topic to teach to beginners. This book did a fairly good job of breaking it down into manageable chunks without overwhelming the reader. ","organization_rating":4,"organization_review":"Although I would have organized the topics in a different order (some difficult topics are presented very early), I believe the book’s flow meets the author’s goals. ","interface_rating":5,"interface_review":"I did not experience any difficulties with the interface. ","grammatical_rating":5,"grammatical_review":"I did not identify grammatical errors. ","cultural_rating":5,"cultural_review":"I don’t believe this category applies to this topic. Having said that, the book was not culturally insensitive or offensive in any way. ","overall_rating":10,"overall_review":null,"created_at":"2019-03-07T13:07:07.000-06:00","updated_at":"2019-03-07T13:07:07.000-06:00"},{"id":2713,"first_name":"Elizabeth","last_name":"Milonas","position":"Assistant Professor","institution_name":"New York City College of Technology","comprehensiveness_rating":5,"comprehensiveness_review":"The text covers all areas and ideas of Python comprehensively and thoroughly. The first few chapters introduce basic concepts needed to understand programming in general. Basic Python programming concepts are also introduced in the first few chapters. The book progresses smoothly introducing more complex programming concepts as the reader progresses through the text. Each chapter builds upon the previous chapter providing a deeper understanding of Python programming as the book progresses.  The index and glossary provide a clear path to key concepts within the text. ","accuracy_rating":5,"accuracy_review":"Topics are presented clearly. The text is error-free and no bias is evident throughout the book.","relevance_rating":5,"relevance_review":"The topics within each chapter are arranged comprehensively and in a modular manner easily allowing additions and updates to the content as needed depending on Python version upgrades. ","clarity_rating":5,"clarity_review":"The text is written very clearly and concisely. Terminology is explained within the chapter and again in the glossary provided at the end of each chapter. Ample examples are used within the chapter to clarify concepts.  Concepts within the chapter are reinforced through exercises provided at the end of each chapter which encourage the reader to practice with Python.","consistency_rating":5,"consistency_review":"The text is consistent in terms of terminology and framework. Terminology is presented, explained and reviewed throughout the chapter and at the end of each chapter in the glossary provided. The framework is consistent throughout the text. Within each chapter, the topic is first introduced and then expanded upon. The topics in the chapter are reinforced through examples and again through the exercises provided at the end of the chapter.  ","modularity_rating":5,"modularity_review":"The text is modular. Topics within a chapter are divided into logical units which are easily read and comprehended. Each unit is succinctly labeled and logically organized within the chapter and also within the book. ","organization_rating":5,"organization_review":"Topics are introduced in a logical and well organized manner. The text begins with basic topics which are then expanded. The earlier chapters help build the foundation for the later chapters. Within each chapter topics are organized in a logical order. The basics are explained in the beginning of the chapter and are then expanded upon throughout the chapter.","interface_rating":5,"interface_review":"It is easy to navigate through the text. There are no distractions and no display features which distract or confuse the reader. ","grammatical_rating":5,"grammatical_review":"The book contains no grammatical errors. The book is well written. It is clear and concise.","cultural_rating":5,"cultural_review":"Does not apply","overall_rating":10,"overall_review":"The book covers the breadth and width of programming in Python. It is well written and organized. It follows a logical order beginning with the basic concepts and building on these concepts as the reader moves through the chapters. The topics are clearly explained and reinforced by the use of ample examples within the chapters and exercises at the end of each chapter. Terminology is reinforced through the use of a glossary at the end of each chapter.  The book provides the reader with a thorough understanding of Python. It assumes the reader has no prior experience of Python. By the end of the book, the reader will be well versed in programming concepts and specifically with Python as a programming language.  ","created_at":"2019-03-30T23:06:33.000-05:00","updated_at":"2019-03-30T23:06:33.000-05:00"},{"id":3349,"first_name":"Euisuk","last_name":"Sung","position":"Assistant Professor","institution_name":"New York City College of Technology","comprehensiveness_rating":5,"comprehensiveness_review":"This book covers a wide range of techniques that are necessary to understand programming in Python. The book starts with introducing fundamental backgrounds of programming languages how they have evolved. Since Python is a type of interpreter language, some instructions could miss telling how a high-level language is translated into a machine language. However, this book presents a comparison of the executions between interpreter and compiler languages. Also, this book addresses useful libraries in Chapter 9, 10 which can be used to instruct young learners by inspiring visible programming libraries. The last a few chapter of this book covers some high level concepts of programming languages such as objects, inheritance, classes, and algorithm libraries- linked lists, stacks, queues, and trees. One bonus point of this book is that this can be used for not only introductory programming courses but also a reference book for advanced computer science courses.","accuracy_rating":5,"accuracy_review":"The content of this book is very accurate and unbiased. When introducing the programming skills, the authors tried to explain that programming always has multiple ways to achieve the designed goal. ","relevance_rating":4,"relevance_review":"This book quite relevant to the area of computer science. However, there is still vague how students become a thinker like a computer scientist.","clarity_rating":5,"clarity_review":"The text uses appropriate terms and vocabularies understood by academies as well as industry practices. Also, the book consists of 20 major chapters and many sub-chapters which help learners clearly understand this book content.","consistency_rating":5,"consistency_review":"The structure of this book keeps solid consistency throughout the entire chapters. Each chapter begins with a short and concise description then shows examples and expected outcomes. Then, at the end of each chapter has glossary section which extremely helps understand this book.","modularity_rating":4,"modularity_review":"This book wonderfully grouped the content by similar concepts. The molecularity of this book, mainly constructed by chapters, increases the usefulness of this book in classrooms.","organization_rating":5,"organization_review":"Overall, the flow and structure of this book looks very smooth. Also, the logical order of chapters were well organized to be introduced this book to beginners sequentially.","interface_rating":5,"interface_review":"The interface of this book needs some improvements. However, given GNU license which is copy-free license, the artistic disadvantages of this book is  negligible.","grammatical_rating":5,"grammatical_review":"There is no issues in grammars","cultural_rating":4,"cultural_review":"Since this book is a technical guide book, there is no need to consider cultural aspects. However, this book kindly addresses the complex programming concepts which enable under-resourced students to start learn computing skills.","overall_rating":9,"overall_review":"This book is one of greatest books in the world of Python languages. I applaud the authors' effort to build this copy-free book that can be accessed free for the students who cannot afford expensive textbooks. Though the book is open and free, it contains all the important programming skills and examples.","created_at":"2019-12-04T21:19:48.000-06:00","updated_at":"2019-12-04T21:19:48.000-06:00"},{"id":3660,"first_name":"Ali","last_name":"Baheri","position":"Research Assistant Professor","institution_name":"West Virginia University","comprehensiveness_rating":5,"comprehensiveness_review":"This book provides a nice overview all necessary materials required to understand Python like a real programmer. More importantly, the book aims to encourage to learn Python conceptually instead of just learning the syntax of a certain programming language.","accuracy_rating":5,"accuracy_review":"The contents of this book are error-free, accurate, and unbiased.","relevance_rating":4,"relevance_review":"The main concern of this book is Python 2. The author may need to consider to shift the materials to Python 3. In that line, more programming exercises may be added to the current version.","clarity_rating":5,"clarity_review":"The technical materials of the book has been discussed in a clear and comprehensive fashion.","consistency_rating":5,"consistency_review":"The style of all chapters are consistent and comprehensive.","modularity_rating":5,"modularity_review":"The modularity of the book is excellent. In fact,  one can easily follow the chapters without trouble.","organization_rating":5,"organization_review":"The organization of this book is quite strong.","interface_rating":5,"interface_review":"The text is well-formatted and easy to navigate.","grammatical_rating":5,"grammatical_review":"I found no grammatical errors or typos in the text.","cultural_rating":5,"cultural_review":"The overall structure of this book is very user-friendly and attainable.","overall_rating":10,"overall_review":"I enjoyed to read the book and I believe can be considered as very first step to learn programming language in a very structured way.","created_at":"2020-03-15T07:36:07.000-05:00","updated_at":"2020-03-15T07:36:07.000-05:00"},{"id":3689,"first_name":"Qiuming","last_name":"Zhu","position":"professor","institution_name":"University of Nebraska - Omaha","comprehensiveness_rating":5,"comprehensiveness_review":"The book covers the structures and components of the Python programming language thoroughly and effectively.  It is appropriate for use as a textbook for an Introductory course for computer science with Python programming.","accuracy_rating":5,"accuracy_review":"Contents are accurate.","relevance_rating":5,"relevance_review":"Yes, the contents is up to date.  This book covers the Python 3, while many other books of similar kind available online only cover Python 2 which has been replaced by the newer version Python 3 since 2008.","clarity_rating":5,"clarity_review":"The book is easy to read and understand.","consistency_rating":5,"consistency_review":"The book uses standard and formal terminology and framework in the subject area.","modularity_rating":5,"modularity_review":"The book is well structured in accordance with the common ways of teaching/learning a programming language in computer science.","organization_rating":5,"organization_review":"Yes, like most of the similar programming language books.","interface_rating":5,"interface_review":"The book makes use of lots of code examples which is a good feature and helps a lot for student to learn the Python language and the programming.","grammatical_rating":5,"grammatical_review":"Did not see any obvious grammatical error.","cultural_rating":5,"cultural_review":"Did not find anything that is culturally inappropriate.","overall_rating":10,"overall_review":"I got this book through an online resource before getting into this library site, and have used some contents of this book, along with other books available to me, to prepare my course material for the Introduction to Python.","created_at":"2020-03-28T18:30:45.000-05:00","updated_at":"2020-03-28T18:30:45.000-05:00"},{"id":4078,"first_name":"Jefferson","last_name":"Fernandes","position":"Associate Professor","institution_name":"Bunker Hill Community College","comprehensiveness_rating":5,"comprehensiveness_review":"The book was easy to get a quick understand of it's focus and areas. Table of Content and index are well built. End of each chapter has glossary review, very useful.","accuracy_rating":5,"accuracy_review":"The book is accurate and the author has made considerable effort in fixing noted issues pointed out by users.","relevance_rating":5,"relevance_review":"The book uses python 2x, python has moved to 3x. End of life for python2 was January 1 2020. Most of the content is still relevant and portable to python 3x","clarity_rating":5,"clarity_review":"Language, code and narrative, was clear to read and understand.","consistency_rating":5,"consistency_review":"I've found the terminology and framework used in this book consistent.","modularity_rating":5,"modularity_review":"Chapters are subdivided with appropriate headings making it easy to read and follow/reference.","organization_rating":5,"organization_review":"The topics in the text are presented in a logical, clear fashion.","interface_rating":5,"interface_review":"Text was easy to navigate, interface is user friendly.","grammatical_rating":5,"grammatical_review":"Have not found any grammatical errors.","cultural_rating":5,"cultural_review":"Not Applicable; the topic is cultural neutral. However, in the context of 'programming' culture, in my view and opinion, it does follow the common traits of disseminating knowledge for the positive influence of making humanity better, to solve problems ethically, morally and the most sacred promiss not to do harm.","overall_rating":10,"overall_review":"For those who are in python2x/2.7 environment is book is a very good reference. To use in a python 3x, the reader/user would have to review python2 to python3 changes: https://docs.python.org/3/howto/pyporting.html","created_at":"2020-06-24T23:59:16.000-05:00","updated_at":"2020-06-24T23:59:16.000-05:00"},{"id":4368,"first_name":"Sheikh Ariful","last_name":"Islam","position":"Assistant Professor","institution_name":"University of Texas Rio Grande Valley","comprehensiveness_rating":4,"comprehensiveness_review":"This book is well structured and outlined to introduce each topic as it builds on the previous. The reader is presented with clear examples related to mathematics and is presented with techniques for building programs. Each chapter gives the readers the tools to test supporting examples and exercises to strengthen their programming abilities. It is easy to read, straight forward, and provides the reader with straightforward plans for program development and design patterns.\r\n\r\nWhile most of the topics are covered in many classes already, this book feels like a refresher more than a lesson on topics like algorithms, lists, classes, etc. The examples on most of the topics are great if you already know this material. I think this book should not be an intro to computer science coursebook. While many for me, I can understand the message and understand the author's information, but I believe this would not work for someone who has only taken the first course in computer science. The simple examples would not be enough for people to grasp what they need unless they supplement this book with many examples outside of the book.","accuracy_rating":5,"accuracy_review":"Most of these examples and topics are great because they are quick and to the point! While I have some experience with python, I learned many small things you can do that make your life easier, like methods within strings. This brings up the book's point of feeling like form someone who already knows some of the computer science material. The topics are very well put together for that target audience.\r\n\r\nEach chapter allows the reader to test their understanding with clear cut examples commonly taught in many programming courses. For instance, they are using recursion for the mathematical function of the Fibonacci sequence. The reader can test each example and have the opportunity to experiment with the exercises provided after every chapter. To provide a bit of accuracy in content, each section includes a glossary section to review key terms and consists of a debugging section that informs the reader of potential errors, pitfalls, or useful techniques used to help with problem-solving.","relevance_rating":4,"relevance_review":"In the literature, the author indicates that thinking like a scientist, more specifically, a computer scientist, “combines some of the best features of mathematics, engineering, and natural science.” This book allows the reader to develop problem-solving skills to think creatively about solutions and enable the reader to express them through programming exercises. Python is currently one of the most popular programming languages, easy to learn and understand, and is a marketable skill for today’s developers. It is used in a variety of industries and is widely used throughout the world.\r\n\r\nI did not like the Turtle example towards the start of the book “Turtle Word” I felt this was not relevant to the import example. I felt the math import did a great job explaining why you need to import modules and how easy they can be to use. By using Turtle world, I felt like it was more work to describe something that is supposed to be simple. This was the only instance where I thought it was more confusing than helpful.","clarity_rating":5,"clarity_review":"The book clarity was great! I liked the conditional statements part of the book since I felt the examples covered everything. Even when an example was missing a condition, if the number was to be a negative number when looking for positive integers, or if the number was zero, I think the author should think of a great way of explaining these core concepts and how they are used in python.\r\n\r\nThe content is concise and straight to the point, but the first-time programmers may find themselves going back to previous chapters to understand the content in later topics. The author wrote to keep the reader on a clear track to support previous sections. The literature builds gradually to difficult issues, but someone who does not know any programming concepts may struggle for a time before becoming acclimated to its context. The book also assumes that the reader has a strong mathematical foundation. This may result in students who are weak in mathematics struggling to understand programming concepts.","consistency_rating":5,"consistency_review":"From start to finish, the work is written using very simple language for any reader. The reader has an opportunity to test their knowledge and competency of each topic, but assumes the reader has previous experiences with programming syntax. There is only a small area that discusses syntax, which may create difficulty for first-time programmers. This book has a text-focused approach to programming, and gives the reader examples to understand without using a computer, and provides a clear break down for every step. Experienced programmers may find themselves skipping sections, while first-time programmers may go back and forth to understand previous concepts.\r\n\r\nThe examples remained relevant and straightforward to everyday things you will typically find in the real world. I felt the same level of difficulty in functions than on classes and explaining inheritance. I also really enjoyed the author's tips during more challenging topics and all the debugging. The book feels complete because of this.\r\n   The book was adapted from a Java book, making this teaching style seem to be very modular. As far as the teaching style on the topics covered, I felt this was well represented to start looking into python as their main programming language. The author went above and beyond with the topic on tkinter. I appreciate it being so flexible to teach not only the core but some UI, in case the reader would like to try and do small projects for themselves.","modularity_rating":4,"modularity_review":"The arrangement of each chapter is divided into subsections that outline various features of computer programming procedural language. This book layers each section of fundamental programming features with how the Python language uses these features through exercises, solutions, and discussions. The text builds on each section giving the reader a clear example and improving each new topic. This book seems to be missing answers for the exercises at the end of each chapter, and it doesn't have an opportunity to test the reader's code.","organization_rating":5,"organization_review":"As mentioned before, the organization was well placed and felt like a complete course on getting your hands-on experience on python. The examples were fun to see and use to know why certain things do not work with python syntax.\r\n        \tThis is a book and not an online interactive program; I feel the interface was excellent since there was not much distracting information over people’s heads. An example would be a graph that might be unnecessary, as the future prediction of how many programmers will be using python over the next ten years. The book was very centered, which made it easy to read on multiple devices.\r\n\r\nThere is a defined structure for building on previous programming concepts and provides a section for debugging potential errors the reader will encounter. It allows the reader to test examples and use the textbook as a reference if an issue arises. This is not the same for the end of chapter exercises. Some can be extremely difficult and often use techniques not yet discussed in the current section. This may leave the reader to find resources or solutions elsewhere.","interface_rating":4,"interface_review":"This book uses dynamic fonts to differentiate a program example from text explaining the current section for ease of reading. The PDF version uses outlined links to different sections of the text and makes it easy to jump to other text areas. This book also provides usable hyperlinks to external online resources. Each chapter offers figures displaying stack diagrams specific to programs to refer to the state of variables in an object, so readers clearly understand the processes.","grammatical_rating":5,"grammatical_review":"The grammar in this text is simple to read and straight to the point. Each concept is explained using simple language to allow the reader to feel comfortable learning a programming language. Each chapter has a glossary for the reader to refresh themselves with critical terms they may not understand. Still, it may have readers searching for additional resources to understand concepts not explicitly described. Readers who are not familiar with mathematical concepts may have difficulty understanding what a program is doing if they struggle with mathematical language.\r\n\r\nThe vocabulary used was also something easy to understand. This made the book feel very welcoming to a large group of people. This book could be simple for someone whose English was not their first language. The sentences were very fluid, and felt like I was being taught directly by the author.","cultural_rating":5,"cultural_review":"Python has been widely adopted across many different industries and has become one of today's leading programming languages. Python is easy to learn, and first-time programmers will easily understand examples in this book. This book is an excellent tool for new and seasoned programmers looking to learn a new programming language. Python has a massive community base and support for developers to find solutions to various problems.","overall_rating":9,"overall_review":"This book is an excellent resource for beginners and those who want to learn a new programming language. The literature is clear, concise, and effective in providing clear examples for readers to follow along. Those who struggle with mathematics may have issues understanding examples and may have questions outside of the scope of programming. The book does an excellent job of structuring each programming concept and building on each to allow the reader to understand how to develop and design a program.","created_at":"2020-11-04T14:09:12.000-06:00","updated_at":"2020-11-04T14:09:12.000-06:00"},{"id":33941,"first_name":"Rekha","last_name":"Rao","position":"Adjunct Instructor","institution_name":"Portland Community College","comprehensiveness_rating":5,"comprehensiveness_review":"The text covers all subject areas well with a comprehensive index, debugging tips at end of each chapter, with glossary and exercises, together forming a good scaffolding structure. Case studies are presented after each set of congruent concepts, and there are three in all in the text book. .","accuracy_rating":5,"accuracy_review":"The book is accurate and the author has made updates and acknowledged suggestions/edits by reviewers, and made relevant updates.","relevance_rating":5,"relevance_review":"Content is up-to-date as the book has been updated and uses Python 3, pointing out where relevant, differences from Python 2. Further version updates will be easy to incorporate as well.","clarity_rating":4,"clarity_review":"The book flows well and is a good introductory text for Programming in general, using Python as an example of a programming language. The language is simple, easy to read and understand. The author at times uses a technical terminology in flow and later explains it. The glossary has more accurate definitions than the ones used in text.","consistency_rating":5,"consistency_review":"I found the book consistent in its approach to the subject and the way the chapters are structured.","modularity_rating":5,"modularity_review":"I found the book is written in a modular fashion and easy to digest as I read. There are subjects referenced in different modules as per their complexity. If some topics need to be handled differently, the book organization makes it easy to move them around.","organization_rating":5,"organization_review":"The text is well organized and presents a clear picture of the topic it covers.","interface_rating":5,"interface_review":"The text is easy to navigate and I saw no significant issues in navigation.","grammatical_rating":5,"grammatical_review":"I found no grammatical errors.","cultural_rating":5,"cultural_review":"The examples and text are specific to data science which does not lend itself much to variety.","overall_rating":10,"overall_review":"I like that the book addresses how to think like a programmer -  how to use debugging techniques to make your program execute, how to understand the ‘flow of execution’ and create 'stack diagrams',  how to interpret error messages, how to keep cool and persevere! In general it covers the programmer mindset and how to develop it, in addition to just teaching the language.","created_at":"2022-07-01T03:28:55.000-05:00","updated_at":"2022-07-01T03:28:55.000-05:00"},{"id":34698,"first_name":"Eljilani","last_name":"Hmouda","position":"Assistant Professor of Computer Science","institution_name":"Lander University","comprehensiveness_rating":5,"comprehensiveness_review":"It covers fundamental programming concepts, Python-specific syntax, and also introduces more advanced topics.","accuracy_rating":5,"accuracy_review":"The author presents information in a way that aligns with industry standards and Python conventions.","relevance_rating":5,"relevance_review":"The examples and exercises are pertinent to real-world programming scenarios.","clarity_rating":5,"clarity_review":"Downey writes in a simple and understandable manner, making complex topics accessible to beginners.","consistency_rating":5,"consistency_review":"Each chapter builds upon the last, making the learning process seamless. However, I recommend covering Data Types such as List, Set, and Dictionary in the early phases.","modularity_rating":5,"modularity_review":"Chapters and sections are well-defined.","organization_rating":5,"organization_review":"The content flows logically from basic to more complex topics. This structured approach aids in understanding and retention.","interface_rating":5,"interface_review":"It's well laid out with clear headings, diagrams, and code snippets.","grammatical_rating":5,"grammatical_review":"The book is well-edited.","cultural_rating":5,"cultural_review":"Downey's book is primarily focused on technical content and doesn't delve deep into cultural aspects. However, it's written in a neutral tone and is designed to be accessible to a broad audience.","overall_rating":10,"overall_review":"Think Python book is a commendable resource for those looking to begin their journey with Python programming. The book’s strengths lie in its clear exposition, structured approach, and comprehensive coverage of essential topics.","created_at":"2023-10-19T11:06:12.000-05:00","updated_at":"2023-10-19T11:06:12.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/think-python-how-to-think-like-a-computer-scientist","updated_at":"2025-12-15T02:02:02.000-06:00"},{"id":46,"title":"Business Information Systems: Design an App for That","edition_statement":null,"volume":null,"copyright_year":2011,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"We set out to design an introductory course governed by four themes: Give students a good idea of what a career in MIS looks like by doing MIS. Enhance the professionalism of deliverables by teaching design and usability concepts. Promote creativity by assigning projects that demand it. Teach students about cloud computing by having them do cloud computing. Students in an introductory Management Information Systems (MIS) course often ask what a career in MIS looks like. Lacking a clear vision, they make their own assumptions. Often they assume the career involves programming with little human interaction. That MIS is a technical field could not be further from the truth. MIS job descriptions typically require candidates to be able to collaborate, communicate, analyze needs and gather requirements. They also list the need for excellent written and communication skills. In other words, MIS workers are constantly interacting with other people both inside and outside the organization. They are coming up with creative solutions to business problems. This course is designed to help students get a feel for what a career in MIS would be like. Our students report that they learn more about information systems from their internships than from their IS courses. Consequently, we designed a course that looks very much like an internship—an introduction to the field followed by a substantial project. Chapter 1 begins by introducing the information systems landscape. Here we discuss all the usual suspects: the information systems triangle, the systems development life cycle, transaction systems (ERP, SCM, CRM), collaboration systems, and business intelligence systems. Other aspects of the landscape such as usability, outsourcing, database concepts and so forth are introduced throughout chapter in Chapter 2 where they fit in naturally with the flow of the project. Chapter 2 is the substantial project which runs over a number of chapters. Over the course of the semester, students plan, build, and develop a proposal for an iPhone application. They develop a very realistic mockup. They also build a website to help market and support the app. Students are engaged because the project is fun and feels real. However, they are simultaneously learning business concepts and MIS skills. Prior to the existence of this course, we were only able to give such an interesting project at the senior level. Now, even as freshmen, students have a real experience of MIS in operation. A by product of creating an engaging course is increased enrollment in the MIS major. Even students who have never heard of MIS become excited about the major and either switch majors or add it as a double major or minor. Many other books have students study tools and then do a case. By contrast, most of this book is a case. Much like the real world, we introduce tools when needed, and only to the extent needed, to get at each part of the case.","contributors":[{"id":2813,"contribution":"Author","primary":true,"corporate":false,"title":"Dr","first_name":"Raymond","middle_name":null,"last_name":"Frost","location":"Ohio University","background_text":"Raymond D. Frost is a Professor of Management Information Systems department at Ohio University. He is also the Director of Studies for College of Business students in the Honors Tutorial College (HTC). Frost joined the College of Business in 1999. His primary research areas are instructional pedagogy, information design, and database design. He was named 2010 Computer Educator of the Year by the International Association for Computer Information Systems. He has also received multiple teaching awards at both the College and University level and holds the title of O’Bleness Teaching Chair. Frost earned a doctorate in business administration and an M.S. in computer science at the University of Miami (Florida), and received his B.A. in philosophy at Swarthmore College. He lives in Athens, Ohio with his wife, Tere, and two boys, Raymond and Luke."},{"id":2814,"contribution":"Author","primary":false,"corporate":false,"title":"Dr","first_name":"Jacqueline","middle_name":null,"last_name":"Pike","location":"Duquesne University","background_text":"Jacqueline C. Pike is an Assistant Professor of Information Systems Management in the Palumbo-Donahue School of Business at Duquesne University. She earned her B.B.A. from the Honors Tutorial College and College of Business at Ohio University and her Ph.D. from the Katz Graduate School of Business at the University of Pittsburgh. Her research interests include behavior in public online communities and social computing environments, the utilization of public online communities by organizations, human-computer interaction, and the visual display of information in a systems context."},{"id":2815,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Lauren","middle_name":null,"last_name":"Kenyo","location":"Ohio University","background_text":"Lauren N. Kenyo is an instructor in the Management Information Systems at Ohio University. After graduating from Ohio University’s College of Business she went on to graduate from Ohio’s Masters of Business Administration Program. In 2004 Kenyo came back to join the faculty as in instructor in the Management Information Systems department. Kenyo currently resides in Streetsboro, Ohio with her husband, Eugene, and daughter, Katelyn."},{"id":2816,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Sarah","middle_name":null,"last_name":"Pels","location":"Ohio University","background_text":"Sarah E. Pels is an Honors Tutorial College student in the College of Business at Ohio University. Her research interests include creating diagrams to aid in software instruction."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"},{"id":23,"name":"Information Systems","parent_subject_id":3,"call_number":"QA76","visible_textbooks_count":27,"url":"https://staging.open.umn.edu/opentextbooks/subjects/information-systems"}],"publishers":[{"id":105,"url":"http://www.saylor.org/site/textbooks/Business%20Information%20Systems.pdf","year":null,"created_at":"2018-09-07T12:22:37.000-05:00","updated_at":"2018-09-07T12:22:37.000-05:00","name":"Saylor Foundation"}],"formats":[{"id":238,"type":"PDF","url":"http://www.saylor.org/site/textbooks/Business%20Information%20Systems.pdf","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":239,"type":"Online","url":"https://saylordotorg.github.io/text_business-information-systems-design-an-app-for-that/","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":6,"reviews":[{"id":202,"first_name":"Lori","last_name":"Rice","position":"Lecturer/Coordinator","institution_name":"The Ohio State University","comprehensiveness_rating":4,"comprehensiveness_review":"The book was very thorough and covered MIS topics in a thoughtful and precise manner. The book did not have a glossary, or index, but that did not concern me in the least.","accuracy_rating":5,"accuracy_review":"The material was presented accurately and objectively.","relevance_rating":5,"relevance_review":"The book focuses on the Systems Development Life Cycle (SDLC) which has been recognized in business for years and will continue to be an important blue print for the process of meeting business requirements. ","clarity_rating":5,"clarity_review":"The book was clear, concise, and easy to follow.","consistency_rating":5,"consistency_review":"The book flows from one chapter to the next, reinforcing previous concepts before introducing new ones.","modularity_rating":5,"modularity_review":"The book can easily be broken up into different modules. For instance, I used Chapter 12 to lecture on the best practices when developing power point presentations.","organization_rating":5,"organization_review":"As stated previously, old concepts were reviewed  at the beginning of the chapter, and then the new concepts were covered making the book easy to follow.","interface_rating":5,"interface_review":"I saw no noticeable issues.","grammatical_rating":5,"grammatical_review":"I found no grammar errors.","cultural_rating":5,"cultural_review":"I did not notice any problems.","overall_rating":10,"overall_review":"This book is ideal for an MIS major.","created_at":"2015-06-10T19:00:00.000-05:00","updated_at":"2015-06-10T19:00:00.000-05:00"},{"id":1712,"first_name":"Dr Trevor ","last_name":"Clohessy ","position":"Associate Professor ","institution_name":"National University of Ireland Galway ","comprehensiveness_rating":4,"comprehensiveness_review":"The text book is suitably comprehensive. Each section commences with clear learning objectives. At the end of each section there is a summary of key takeaways which is also supplemented with questions and exercises to ensure that they learning objectives have been met by the reader. I would have liked if the book contained a glossary and an index. The index would allow for easy navigation and location of topics while the glossary would explain the multitude of topics covered in the book. A possible solution would be to include a glossary which would also serve as an index. ","accuracy_rating":3,"accuracy_review":"While the chapters are presented clearly and error free, to substantiate the arguments posited I would have liked to have seen more intext referencing of theoretical/academic sources. I feel this would be important to engage students with the supplementary material which shaped the authors opinions and framing of the concepts. For instance, take the following example from section 1.2 and the following quote: “Information systems are designed using the systems development life cycle (SDLC)”. While this is accurate, there is no supporting reference which means that the student must take the authors claim at face value. ","relevance_rating":3,"relevance_review":"The SDLC information systems development methodology, business intelligence and mobile app development and databases are traditional stalwarts in companies as consequently will be in use for many years to come. I would have liked to have seen a greater juxtaposition of android v apple mobile app development (e.g. costs, pros and cons). I would have also liked to have seen more contemporary software development concepts referred to such as DevOps, Design Thinking etc. While chapter 8 is relevant, the advent of cloud computing development such as Bluemix means that the cost of developing an app is quite minimal and may negate the need for companies to require a loan. I think this book would be great for planning a mobile app use case, however another book would be required to demonstrate the actual development of the app (e.g. coding, developing platform, testing). Finally, the book makes a lot of use of intext hyperlinks for citing examples and arguments. Some of these links may come obsolete in a few years. It would be important to for any lecturer considering adopting this book to review these links or suggest better ones. ","clarity_rating":4,"clarity_review":"I found the book easy to read. The authors avoid using too much technical jargon and are on point with all of their descriptions. However, once again I would like to have seen the inclusion of a glossary as I am lecturing first years and this terminology would be brand new to them. I also found chapters 15 – 18 to be very basic and rudimentary. ","consistency_rating":4,"consistency_review":"The book flowed freely from one chapter to the next. Each subsequent chapter built on the previous chapter’s learning objectives. I could see how my students would enjoy using this book as there is a clear and logical stricture. I was familiar with all the terminology and frameworks used such as Porter’s Five Forces. However, as mentioned earlier I would have like to have seen the inclusion of a glossary and labelling of the frameworks. ","modularity_rating":4,"modularity_review":"If I adopted this book for my class, I could easily use the chapters for various learning objectives. For example, chapter 1 is a fantastic primer for my first years to highlight what potential MIS careers are on offer. Furthermore, I would use chapter 9 (e.g. SWOT analysis) for the assignment component of my class to demonstrate to the students how they could identify gaps in the market for their project. ","organization_rating":4,"organization_review":"As stated previously, there book is structured perfectly for students who are lay people who have not come into contact with these concepts before. Additionally, the arguments and descriptions of the concepts are concise and easy to comprehend. I have read other books which cover the same materials and would not use them due the vagueness and complexity with which the authors describe these concepts. ","interface_rating":2,"interface_review":"I would have liked to have seen all the visuals used in the book both labelled (e.g. figure 1.2, table 1.4 etc.) and referenced in text (e.g. please refer to figure 1.3) This would improve navigation from text to visuals and vice versa and assist with backward and forward snowballing of literary sources when conducting supplementary research. ","grammatical_rating":5,"grammatical_review":"The book is grammatically correct, and I found no obvious errors. ","cultural_rating":5,"cultural_review":" The book is culturally neutral and uses content which is applicable to all. ","overall_rating":8,"overall_review":"I was really impressed with this book and I am seriously considering adopting specific sections for my modules next semester","created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":2173,"first_name":"Gregory","last_name":"Turcotte","position":"Instructor","institution_name":"Portland Community College","comprehensiveness_rating":5,"comprehensiveness_review":"This book contains a project that integrates Excel, Access and PowerPoint skills into the Mobile App creation process.  It seems to focus on creating a business case for the app being developed and communicating with stake holders, instead of actually programming an app.  I actually like this approach, and it looks to be relevant for a new course I’m looking to teach.\n\nI appreciate the appendix sections of the book.  Even without formal training, a student could use this to obtain the Excel, Access, and PowerPoint skills needed to complete the main project.","accuracy_rating":4,"accuracy_review":"Overall, the book is very accurate.  However, I did find that several hyperlinks used in the projects are already out of date.  I can see this being an ongoing problem since this is a project-based style of book.  That said, the information surrounding the project seems like it will better stand the test of time.","relevance_rating":4,"relevance_review":"As long as iPhone remains the dominant platform for application development, the book will remain relevant.  I can see updates needing to be made frequently, be with relative ease.","clarity_rating":5,"clarity_review":"I found this book to be very clear, and well written for entry-level business information students.","consistency_rating":5,"consistency_review":"Very consistent in it's use of terms.","modularity_rating":3,"modularity_review":"Other than the appendixes at the end, the book indicates that is should be followed linearly.  Divisibility was not the intent.","organization_rating":5,"organization_review":"This book does a good job walking the student through the flow of application development.","interface_rating":5,"interface_review":"I was immediately impressed by the book's layout and interface.","grammatical_rating":5,"grammatical_review":"No errors were noted during my reading.","cultural_rating":5,"cultural_review":"The book is not culturally insensitive or offensive.","overall_rating":9,"overall_review":"Thank you for all the work that went into making such a high-quality book!  I hope to use it soon!","created_at":"2018-06-19T19:00:00.000-05:00","updated_at":"2018-06-19T19:00:00.000-05:00"},{"id":2282,"first_name":"David","last_name":"Scoville","position":"Instructor","institution_name":"Miami University","comprehensiveness_rating":5,"comprehensiveness_review":"This book does a good job of integrating a variety of “intro to MIS” concepts such as Business Process Modeling, SDLC, Porter’s 5 forces, SWOT Analysis, three generic strategies, business intelligence and so on in a project in which the students will design, “build,” market and sell an app. The students will then track sales of the app and make adjustments as necessary. While this book could be used as the sole text for an introductory college-level course in MIS, the lack of a table of contents, index, glossary, and instructor edition hold it back. Also, in this day of major publishers offering online companion sites to accompany a printed text or eBook, does make this book less attractive as a standalone option. That said, I think it would make an ideal companion text as the app project is quite good, and with a really savvy instructor to help “fill-in-the-blanks,” this book could well serve as a sole text. It would just take a good deal of prep on the part of the instructor.","accuracy_rating":4,"accuracy_review":"I had no issues with the accuracy of the text other than a few out-of-date hyperlinks and some missing words here and there. But this is true of many texts from major publishers as well. As always, the instructor should verify the validity of hyperlinks, articles and references in any text at the start of each term and supplement relevant links when necessary. This book is probably no better or worse in this respect than the typical textbook from major publishers.","relevance_rating":4,"relevance_review":"So long as the iPhone remains a relevant platform, I think this book will remain as a viable option. Not sure if or how often a text like this is updated, but it does after all, rely pretty heavily on Apple’s iOS platform. At this point the book will likely remain relevant for at least the next few years and honestly, that's about all one can expect with any tech-related resource.","clarity_rating":5,"clarity_review":"The book is very well written and easily understandable to anyone who’s first language is English. It is well-suited for early college-level or late high school level students. One thing I very much like is the book’s brevity. There are rarely, if ever, long-winded explanations when a simple one will suffice. Again, this relates back to having an IS-savvy instructor to expound on concepts or answer questions in class when necessary.","consistency_rating":5,"consistency_review":"Probably one of the strongest points of this text is its consistency in both content and organization. First, the authors never seem to contradict themselves nor deviate from traditional MIS, design or industry standards and best practices. Additionally, virtually every chapter (after the into chapters) begins with a check-in as to “where we are” in relation to the SDLC. Very nicely done in my opinion.","modularity_rating":4,"modularity_review":"This text does not lend itself well to jumping around in the chapters and a linear approach would likely be best. Some chapters could be skipped or supplemented with other/additional material based on the background and experience of the instructor. One thing I do like is that the actual app project could be used to supplement an existing course or textbook.","organization_rating":5,"organization_review":"The book is well-organized and material is largely presented in the order I would expect. Again, the book is best approached by starting at the beginning and progressing through the chapters in the order in which they are presented. Certain chapters could be skipped without really interrupting the overall flow of the project-based approach.","interface_rating":3,"interface_review":"While the book’s organization is commendable, one irksome thing to me is how in many instances a heading will appear at the bottom of one page with the associated content appearing on the next page. Also, there are many references to pictures and illustrations which are simply missing. This is annoying and could be quite confusing for students. Also, some of the pictures, many of which are screen shots, are distorted or grainy.","grammatical_rating":5,"grammatical_review":"I noted few if any grammatical errors and in fact feel like it’s better in this respect than many texts I’ve used from the major publishers. Very well written.","cultural_rating":5,"cultural_review":"I found no culturally offensive, politically incorrect or insensitive issues with this text.","overall_rating":9,"overall_review":"I want to thank the authors for what I think is a very useful and usable textbook! For the experienced MIS instructor or one with a solid IS background I think this could suffice as a low- or no-cost option for the students. I would like to try and work it into my classes on a trial basis to replace the project I currently use. It may take a bit of alignment on my part and a bit of jumping between our existing text and this one, but the end result may well be worth a little inconvenience.","created_at":"2018-08-02T19:00:00.000-05:00","updated_at":"2018-08-02T19:00:00.000-05:00"},{"id":2788,"first_name":"Biswadip","last_name":"Ghosh","position":"Associate Professor","institution_name":"Metropolitan State University of Denver","comprehensiveness_rating":3,"comprehensiveness_review":"The book takes a practical approach to teach students the fundamentals  of business information systems and illustrates the SDLC approach to analyzing/planning/designing/building and deploying an information systems (an iPhone app).  The practical approach is good for getting the attention of students, who may be deciding on whether to choose information systems as their major.  The text does a great job in the analysis and design aspects - presenting and using concepts of BPR (business process re-engineering) and UI/UX design thinking approaches to create practical assignments for analysis/design of an app.  However, where it falls short is by not introducing the data collection and requirements collection/analysis methodology.  Also no mention of project management  and validation/verification and testing approaches for the iPhone app that they build.","accuracy_rating":4,"accuracy_review":"The book provides an summarized description of the concepts and methodology that the student will use to do the project phases in analysis/design/build of the iPhone app.  The methodologies provided and described are by no means exhaustive, but perhaps the chosen approach is a popular one.   This type of coverage of the topics supports the adoption of this book for an introductory level course, as it is makes it easy to apply to the practical problem.  For a more advanced course for higher division IS majors, the instructor would need to present the other alternative methodologies.  Some of the hyperlinks need to be rechecked to ensure they still work.  ","relevance_rating":5,"relevance_review":"The concept of the app - a mobile application that works on a smartphone (e.g.. the iPhone) is here to stay.  Businesses and organizations are designing and building apps to support their various stakeholders - users, managers, customers, employees, ..  This trend will continue into the future and therefore, the primary \"medium\" used this book to illustrate and \"teach\" the topics covered in this book - analyze/design/build an iPhone app - will not go away.  So this book will remain relevant. and updates can be done easily keeping the same iPhone model.","clarity_rating":5,"clarity_review":"The language of the book is very easy to rad and follow.  The sections are presented in a logical sequence and the technical jargons are kept to a minimum and explained very well and succinctly.  This supports the notion of adopting the book for an introductory course for IS majors to teach them the concepts of designing/building apps to support business problems","consistency_rating":5,"consistency_review":"The sections and the style and way in which each chapter is presented is very consistent.  Each chapter begins with an introduction to outline the chapter  and then the theory is introduced and then exercises are provided to allow the student to apply the theory","modularity_rating":5,"modularity_review":"The chapters in the text book do have modularity, so individual chapters can be adopted along with another text book.  The chapters are sufficiently independent of each other so that they can be taught in any order and in any combination.  The actual app project can also be used to supplement an existing course or different MIS textbook.","organization_rating":5,"organization_review":"The book is well-organized.  It is a good sequence of chapters and topics that is presented  in a logical fashion.  And it allows the student to comprehend the flow of a app design/development project.  Each chapter has \"learning objectives\", \"Key takeaways\" and \"questions and exercises\".  ","interface_rating":4,"interface_review":"It will be good to have a table of contents that is navigable (I refer to the PDF file - which is lacking this).  Otherwise the book is fairly easy to navigate and read.  ","grammatical_rating":5,"grammatical_review":"No problems with grammar in the book.","cultural_rating":5,"cultural_review":"There is no cultural bias or problems in this text book.  There is nothing that would offend students of different backgrounds","overall_rating":9,"overall_review":"The book is a very useful body of work,  It can be used as a supplement to another book that has more comprehensive coverage of the theory.  This book can be used to assign the term project.  It goes good for a \"Introduction to problem Solving \" curse for IS majors.  The concepts in the book assay to follow and apply to project.  So it can be  a Project manual as well.","created_at":"2019-04-14T21:58:17.000-05:00","updated_at":"2019-04-14T21:58:17.000-05:00"},{"id":35417,"first_name":"Biswadip","last_name":"Ghosh","position":"Associate Professor","institution_name":"Metropolitan State University of Denver","comprehensiveness_rating":3,"comprehensiveness_review":"The textbook covers a subset of topics that are typically included in an Introductory MIS course and describes these topics in a \"hands-on\" way with illustrations and assignments.  The notable missing topics include computer hardware, computer networking, computer security and enterprise applications/systems.   Even in the books paradigm of \"designing an app\", these additional topics seem important and very relevant to include.","accuracy_rating":5,"accuracy_review":"The accuracy of the content that is covered in the textbook is excellent.  The topics are introduced with correct terminology and the illustrations match the descriptions accurately.  The exercises, assignments and activities posed at the end of the are a very good follow-on ideas to enhance student learning.","relevance_rating":5,"relevance_review":"The text covers important practical real-world systems, tools and techniques that continue to be heavily used by professionals.  The books provides details of usage of current, up-to-date systems/software such as google sites, databases, cloud based tools, business intelligence and excel functions","clarity_rating":5,"clarity_review":"The textbook is written in an accessible language and is easy to read.  The writing style is direct and in the form of a presentation with questions to promote student reflection of the ideas being covered.","consistency_rating":5,"consistency_review":"The style and framework of the textbook is consistent throughout all its chapters.  Each chapter starts with a list of learning objectives, and an introduction to the concepts of the chapter.  The introduction poses interesting conjectures that motivate the reader to read through the chapter.","modularity_rating":5,"modularity_review":"The textbook is very modular in its design and chapters.  The chapters can be used independently and do not rely too much on each other.  The modularly is a strength of this textbook, as subsets of chapters can be selected and adopted into a course, without the need to use all chapters or use the author's sequence of chapters.","organization_rating":3,"organization_review":"The topics in the textbook are presented in a logical fashion to a great extent.  This would be enhanced by presenting the topics such that they follow the sequence of the \"Life cycle\" framework that is used throughout the textbook.  Some of the topics like \"writing a business case\", and \"presenting the business case\", might be placed earlier in the book.  It is likely that  they would be performed logically before \"design\" activities like User interfaces and database design.","interface_rating":5,"interface_review":"The PDF of the textbook has no interface issues, or navigational problems. All images and charts were displayed without any distortions.  The methods of the text and image presentations are not confusing to the reader.","grammatical_rating":5,"grammatical_review":"The grammar and language are appropriate and have no issues.  There are no spelling errors and sentence lengths are appropriate.","cultural_rating":5,"cultural_review":"The textbook did not seem to have cultural issues or be considered offensive in any way,   Examples are inclusive and appropriate and are from typical scenarios that apply to a variety of people and backgrounds.","overall_rating":9,"overall_review":"The text book is an excellent work that presents the topics within the framework of \"designing an app\" .  The chapters are modular, have good exercises, and practical assignments.  Subsets of these chapters can be selected and used in. a variety of IS courses - systems analysis and design, introduction to Information systems and also courses that cover IT/IS career skill-set development.","created_at":"2025-03-22T16:20:40.000-05:00","updated_at":"2025-03-22T16:20:40.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/business-information-systems-design-an-app-for-that","updated_at":"2025-12-15T02:01:50.000-06:00"},{"id":67,"title":"Essentials of Geographic Information Systems","edition_statement":null,"volume":null,"copyright_year":2011,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"Essentials of Geographic Information Systems integrates key concepts behind the technology with practical concerns and real-world applications. Recognizing that many potential GIS users are nonspecialists or may only need a few maps, this book is designed to be accessible, pragmatic, and concise. Essentials of Geographic Information Systems also illustrates how GIS is used to ask questions, inform choices, and guide policy. From the melting of the polar ice caps to privacy issues associated with mapping, this book provides a gentle, yet substantive, introduction to the use and application of digital maps, mapping, and GIS. In today's world, learning involves knowing how and where to search for information. In some respects, knowing where to look for answers and information is arguably just as important as the knowledge itself. Because Essentials of Geographic Information Systems is concise, focused, and directed, readers are encouraged to search for supplementary information and to follow up on specific topics of interest on their own when necessary. Essentials of Geographic Information Systems provides the foundations for learning GIS, but readers are encouraged to construct their own individual frameworks of GIS knowledge. The benefits of this approach are two-fold. First, it promotes active learning through research. Second, it facilitates flexible and selective learning—that is, what is learned is a function of individual needs and interest. Since GIS and related geospatial and navigation technology change so rapidly, a flexible and dynamic text is necessary in order to stay current and relevant. Though essential concepts in GIS tend to remain constant, the situations, applications, and examples of GIS are fluid and dynamic. Though this book is intended for use in introductory GIS courses, Essentials of Geographic Information Systems will also appeal to the large number of certificate, professional, extension, and online programs in GIS that are available today. In addition to providing readers with the tools necessary to carry out spatial analyses, Essentials of Geographic Information Systems outlines valuable cartographic guidelines for maximizing the visual impact of your maps. The book also describes effective GIS project management solutions that commonly arise in the modern workplace.","contributors":[{"id":3708,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Jonathan","middle_name":null,"last_name":"Campbell","location":"UCLA","background_text":"Jonathan E. Campbell is a GIS analyst and biologist based in the Los Angeles office of ENVIRON. ENVIRON is an international environmental and health sciences consultancy that works with its clients to manage their most challenging environmental, health, and safety issues and attain their sustainability goals. Dr. Campbell has twelve years of experience in the application of GIS and biological services in conjunction with the implementation of environmental policies and compliance with local, state, and federal regulations. He has extensive experience collecting, mapping, and analyzing geospatial data on projects throughout the United States. He holds a PhD in geography from UCLA, an MS in plant biology from Southern Illinois University—Carbondale and a BS in environmental biology from Taylor University. He has been an adjunct professor of GIS and physical geography courses at the University of California, Los Angeles (UCLA) and Santa Monica College,"},{"id":3709,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"MIchael","middle_name":null,"last_name":"Shin","location":"UCLA","background_text":"Michael Shin is an associate professor of geography at UCLA. He is also the director of UCLA’s professional certificate program in Geospatial Information Systems and Technology (GIST) and cochair of the Spatial Demography Group at the California Center for Population Research (CCPR). Michael earned his PhD in geography from the University of Colorado at Boulder (CU) and also holds an MA in geography and a BA in international affairs from CU as well. Michael teaches Introduction to Geographic Information Systems, Intermediate GIS, Advanced GIS, and related courses in digital cartography, spatial analysis, and geographic data visualization and analysis. He was also recently nominated to receive UCLA’s Copenhaver Award, which recognizes faculty for their innovative use of technology in the classroom. Much of Michael’s teaching materials draw directly from his research interests that span a range of topics from globalization and democracy to the social impacts of geospatial technology. He has also worked with the Food and Agricultural Organization of the United Nations and USAID to explore and examine food insecurity around the world with GIS."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"},{"id":44,"name":"Earth Sciences","parent_subject_id":8,"call_number":"QE1","visible_textbooks_count":54,"url":"https://staging.open.umn.edu/opentextbooks/subjects/geology"},{"id":23,"name":"Information Systems","parent_subject_id":3,"call_number":"QA76","visible_textbooks_count":27,"url":"https://staging.open.umn.edu/opentextbooks/subjects/information-systems"},{"id":41,"name":"Geography","parent_subject_id":9,"call_number":"G128","visible_textbooks_count":20,"url":"https://staging.open.umn.edu/opentextbooks/subjects/geography"}],"publishers":[{"id":66,"url":"http://www.saylor.org/site/textbooks/Essentials%20of%20Geographic%20Information%20Systems.pdf","year":null,"created_at":"2018-09-07T12:22:36.000-05:00","updated_at":"2018-09-07T12:22:36.000-05:00","name":"Saylor Foundation"}],"formats":[{"id":248,"type":"PDF","url":"http://www.saylor.org/site/textbooks/Essentials%20of%20Geographic%20Information%20Systems.pdf","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":249,"type":"Online","url":"https://saylordotorg.github.io/text_essentials-of-geographic-information-systems/","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4","textbook_reviews_count":15,"reviews":[{"id":154,"first_name":"Jeffrey","last_name":"Widener","position":"Assistant Professor","institution_name":"The University of Oklahoma","comprehensiveness_rating":4,"comprehensiveness_review":"A new textbook covering fundamentals of geographic information systems (GIS) may cost a buyer between $25 and $150. Geographers Dr. Jonathan Campbell and Dr. Michael Shin have delivered an open textbook alternative to students and professionals. Compared to the paid for versions I am familiar with, their version is comprehensive with no sacrifice of content.\r\n\r\nThe authors begin with a chapter on spatial thinking. They describe geographic questions before moving into a discussion in Chapter 2 on “Map Anatomy.” In this chapter, on page 24, is the actual definition of GIS—perhaps a bit too far into the text to adequately explain GIS. \r\n\r\nChapters 3 through 8 pry deeper into the world of GIS. Chapter 3 covers the way data and information from various sources coalesce to move us from analog to digital maps. Chapter 4 covers the basic data models—vector and raster (order of the two models is not consistent in the text)—used in GIS, while chapters 5 and 6 detail how we manage information and work the data to make it visually accessible. Chapters 7 and 8 explain some basic analysis capabilities within information systems for vector and raster data models. Chapter 9 diverges from the discussion of GIS and introduces readers to basic cartographic principles. Campbell and Shin conclude their textbook with Chapter 10 and a discussion on management of GIS projects. \r\n\r\nThe PDF version lacks an index and a glossary, which would benefit readers, particularly since GIS is such a jargon-filled tool. \r\n","accuracy_rating":5,"accuracy_review":"The content is accurate and unbiased.","relevance_rating":4,"relevance_review":"Campbell and Shin took care in making general statements about the application and use of GIS, which will help sustain this book. Some of the website links the authors placed in the text, on the other hand, have already broken (see pgs. 19 and 101, for example). Adoptees and readers, of course, will want to supplement the text with short articles on advancements in geospatial technologies, as the authors advise in Chapter 1. ","clarity_rating":4,"clarity_review":"This textbook is easy to follow and the inherent technical jargon of GIS is explained well. Repetitive sentences and unnecessary phrasing, however, abound, and a few of the context examples the authors provide are too in-depth for an introductory textbook. Such examples are more suitable for a GIS module/lab book. ","consistency_rating":4,"consistency_review":"Terms used in the text and the framework stay consistent for the most part. \r\n\r\nThere is a noticeable variance in the ordering of discussions about the two types of basic data models in the textbook. In Chapter 4, the subsections are 4.1 Raster, 4.2 Vector, and 4.3 Satellite Imagery and Aerial Photography. But in the data model analysis chapters (7 and 8), vector appears first in Chapter 7. \r\n","modularity_rating":5,"modularity_review":"The authors did an excellent job of partitioning the text. Not only do chapters contain subheadings to guide the reader, but each chapter is broken up into three to four subsections—5.1, 5.2, 5.3, for example. The length of these subsections will serve well the needs of instructors as they assign course readings or of professionals looking to brush up on their GIS terminology. The chapters can easily be rearranged to meet the needs of the user. ","organization_rating":4,"organization_review":"Aside from the raster/vector order discrepancy already mentioned, the general flow and organization within the chapters is fine. However, the chapter flow is interrupted with Chapter 9’s placement. The information in Chapter 9 would fit better after Chapter 2 or as the conclusion to the book.","interface_rating":4,"interface_review":"Overall, the text is satisfactory. Some images and tables, however, have awkward breaks between the pages, such as the Exercise Table on pages 119 to 120. \r\n\r\nThe PDF document I downloaded from the Open Textbook Library at the University of Minnesota lacked the table of contents and the list of figures and tables, and the blue links (or at least that is what I thought they were) on certain captions, endnotes, and figures for navigating the PDF did not work. \r\n\r\nIn Chapter 2, the authors placed a box at the end of the chapter called a “Waypoint,” which contained an intriguing dialogue on satellite images. The authors could place more of these boxes throughout the text to showcase the power of geospatial technologies.\r\n","grammatical_rating":4,"grammatical_review":"Grammatical errors were minimal, but several words and sentences could be removed to make the book more concise.","cultural_rating":5,"cultural_review":"The text is culturally relevant and not offensive. Branching out and discussing what other countries and unions are doing with geospatial technology, particularly regarding satellite data collection, would add to the overall picture the authors present on GIS. ","overall_rating":9,"overall_review":null,"created_at":"2015-01-12T18:00:00.000-06:00","updated_at":"2015-01-12T18:00:00.000-06:00"},{"id":282,"first_name":"Stephen ","last_name":"Leisz","position":"Associate Professor","institution_name":"Colorado State University","comprehensiveness_rating":4,"comprehensiveness_review":"The book covers all the essentials of GIS as its title says, and more so.  The most comprehensive parts of the book are chapters 2 through 8 which cover Maps and Cartography, the differences between Data and Information, where to find data, Data models, Geospatial Data Management, Data descriptions and summaries, and Geospatial vector and raster analysis.  These points are well presented, clear and easy to follow.  The information is also general enough (and fundamental) and will not need to be updated soon.  The last two chapters on Cartographic principles and GIS Project Management, are not always as thoroughly covered as they could be in basic GIS classes that I have reviewed and these two chapters are a welcome addition to the basic GIS coverage of the book.\r\n\r\nThe first chapter where information related to the background of GIS is covered is adequate, but not as well organized as I had expected, especially on reflection after having read and reviewed the whole book.  The first chapter doesn't introduce a definition of GIS until the third section. I found this slightly annoying as I felt that a first time reader would be slightly lost, not having a definition of the subject that the textbook is covering.  When the definition of GIS is discussed it is discussed through an overview of the 'three approaches to GIS'. For my class when I teach it I prefer to augment this type of discussion with an explanation of my preference for what 'GIS' is.\r\n\r\nThe second chapter does a nice job of overviewing maps and cartography and is useful as presented. In this chapter I would have also liked to see a more thorough discussion of moving from 3-D space to 2-D space and at least a mention of the the geoid, eillipsoid and more discussion of datums.  A list of datums used worldwide would be a nice addition as an appendix.\r\n\r\nAnother weakness to the book, but one that the authors cannot fix, is the way that the textbook is presented thorough umn.edu as it is without a title page, author page, or table of contents. This is a weakness to the presentation of the book and to the use of the book.  It makes it more complicated for the user to assign specific chapters to students (as I like to do).\r\n\r\nOverall I would recommend this book for use in an intro GIS class or as a basic reference for the casual user (and have already done so).  All the essentials are there and if the lecturer mixes and matches the chapters to their specific classroom flow, it will be a good complement to a class on GIS.  ","accuracy_rating":5,"accuracy_review":"I didn't find any inaccuracies in the book. Concepts are clearly and accurately explained. The examples to the vector and raster analysis, and data models are very nicely laid out.","relevance_rating":4,"relevance_review":"The book is general enough that it will not be outdated quickly as a basic text. However some of the online links are no longer up / available. That is a minor annoyance if one wants to click through to the book's linked examples.","clarity_rating":4,"clarity_review":"From chapters 2 through 9 I found the explanations offered in the book very clear and concise and easily understood.  Chapter 1 could be reorganized to provide a clearer introduction to the subject.","consistency_rating":4,"consistency_review":"Except for the reversal of the order that vector and raster data and analysis are talked about from chapter to chapter I found the book consistent in its presentation.","modularity_rating":5,"modularity_review":"Each chapter covers one subject.  It would be easy to use the chapters as stand alone additions to a lecture course on GIS.  However, the lack of a table of contents makes it harder to gain an overview of the modules and harder to direct the students to the specific chapter of interest.","organization_rating":4,"organization_review":"The books organization is logical and consistent (expect for chapter 1).  ","interface_rating":4,"interface_review":"It is easy to navigate through the book, although a table of contents and index would help with this aspect.  The images and charts are easy to look at, expect for figure 1.6 which seems to run off of the page.  ","grammatical_rating":4,"grammatical_review":"The book is well written with few grammatical errors.","cultural_rating":5,"cultural_review":"No cultural problems jumped out at me as I was reading it.  Examples are drawn from all over the world and overall culture is discussed neutrally in the book.","overall_rating":9,"overall_review":"Overall this book covers the basics of GIS and can be easily and usefully adopted into an introductory GIS course. It is a very good alternative to the more expensive GIS texts which are otherwise available.","created_at":"2016-01-07T18:00:00.000-06:00","updated_at":"2016-01-07T18:00:00.000-06:00"},{"id":559,"first_name":"Kathleen","last_name":"Nuckolls","position":"Lecturer","institution_name":"University of Kansas","comprehensiveness_rating":3,"comprehensiveness_review":"The book is comparable in scope to many GIS texts on the market, and would provide students with a level of detail appropriate for an introductory course. Its straight-forward explanations and emphasis on cartographic literacy make it a particularly strong choice for non-geography majors. In addition, the text covers some topics that are often excluded or glossed-over by other authors. I particularly appreciated the last two chapters on cartographic principles and project management. Although many introductory texts mention cartography, I have found that few explain it in sufficient detail to allow students to make consistent, informed choices when designing map products. The last chapter is similarly important for students wishing to pursue a career in GIS, who will be happy to have a basic knowledge of project management before landing their first GIS job. This text provides a solid introduction for students of many disciplines, as well as for working professionals who need to understand the strengths and limitations of GIS. Unfortunately, its usefulness as a potential reference resource is hampered by the book’s lack of a glossary or index.","accuracy_rating":5,"accuracy_review":"I did not find any errors or evidence of bias.","relevance_rating":4,"relevance_review":"The text explains the fundamental concepts of GIS, with a few references to emerging trends and technologies. It should remain relevant over the long-term, with a few judicious updates. However, the book includes many URL’s which would need to be checked and updated regularly.","clarity_rating":5,"clarity_review":"The book does not assume any prior knowledge of the topic, beyond the basic map skills familiar to any adult. The writing is clear and understandable, without either talking down to the reader or using unnecessary jargon.","consistency_rating":5,"consistency_review":"The book’s framework is consistent and useful. Every chapter includes an introduction and three of four subsections, each of which begins with one or more learning objectives, followed by topic headings, “key takeaways,” and exercises. Terminology is used consistently throughout.","modularity_rating":4,"modularity_review":"The text does a nice job of using pop-ups associated with keywords to orient readers to definitions that have been covered in other chapters. For more in-depth coverage of concepts, the reader is referred to the appropriate chapter and section. These references are generally useful, but some of them seem unnecessary and might prove annoying if the chapters were assigned in a different order.","organization_rating":5,"organization_review":"The topics within each chapter are organized in a logical order, as are the chapters themselves, with the possible exception of chapter nine. I would have preferred to keep the cartographic principles covered in chapter nine together with the information on “map anatomy,” which is located it the second chapter.","interface_rating":4,"interface_review":"The pdf version of the book lacks a table of contents, which would make navigation much easier. However, the html version of the text begins with a hyperlinked table of contents, which includes separate links for each chapter and subsection. Furthermore, each portion of the book contains links to the previous section, next section, and back to the table of contents, making navigation easy and intuitive. Unfortunately, the in-text references to other chapters do not work as hyperlinks, as they were apparently intended to. The html version also includes bolded key terms that provide pop-up definitions for each term.\nThere is also a Word version of the book available from http://www.saylor.org/books/. Although this version does not currently contain a table of contents, the text is organized under appropriate section headers, which would allow instructors to easily rearrange contents and construct a custom, hyperlinked table of contents. The word version also includes references in footnotes, rather than including them in the body of the text, improving the flow (references are cited in the body of the pdf and html versions). Unfortunately, the word version does not highlight keywords, which would likely be a problem for some students.","grammatical_rating":5,"grammatical_review":"I did not find any grammatical errors.","cultural_rating":5,"cultural_review":"The text is written in an inclusive and inoffensive manner.","overall_rating":9,"overall_review":null,"created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":788,"first_name":"Mary","last_name":"Hall-Brown","position":"Senior Lecturer","institution_name":"University of North Carolina Greensboro","comprehensiveness_rating":4,"comprehensiveness_review":"\"Essentials of Geographic Information Systems\" truly does cover the essentials of an introductory level GIS textbook. Campbell and Shin's discourse on the basics of GIS is exceptional while still maintaining a very \"readable\" text.   Examples are relatable and presented in a down to earth manner.  From \"What is GIS?\" to basic spatial analysis, the GIS component is nicely covered. I appreciate the chapters on Cartography and Project Management. While Cartography is occasionally included in introductory GIS textbooks, the depth of the information is usually lacking. Everything is for naught if your intended audience cannot understand your final product.  I also especially appreciated the chapter on Project Management. The information provided within this chapter offers the student an insight into how a project moves from inception to completion. With the costs of GIS textbooks climbing to well over $100, I am grateful that there is an online option.  \"Essentials of Geographic Information Systems\" is a comprehensive and well written book... (minus some editing issues).  \n\n","accuracy_rating":5,"accuracy_review":"The content of the book is accurate. I did not find any errors of content within this book. I appreciate that the authors did not highlight one GIS program or company over another. The book focused on GIS basics that transcend individual GIS companies. ","relevance_rating":4,"relevance_review":"\"Essentials of Geographic Information\" will be able to stay relevant for quite some time as the concepts presented within this book (What is GIS?, Map Anatomy, Vector vs Raster datasets, Cartographic principles) are general and basic enough to ultimately be timeless. Even the technical explanations are presented in such a way that they too will not become obsolete quickly. The URL links are the only things that may become questionable, and as such, will need to be checked and updated.  ","clarity_rating":4,"clarity_review":"The book is written very well. The headings, examples and figures provided in the first chapter are lighthearted keeping the tone of the book friendly and fun. The discussion of each chapter's topic is both clear and concise. ","consistency_rating":4,"consistency_review":"The book is consistent in terms of terminology and framework. ","modularity_rating":4,"modularity_review":"The book makes it easy to assign any GIS topic in any order. The understanding of the material in one chapter does not depend on previous chapters. There are places, however, where the reader is referred to previous chapters where a definition and/or discussion of a term is located. ","organization_rating":4,"organization_review":"The organization of the book make sense. Chapters cover one topic and are broken down into subsections. Each subsection is preceded by bulleted \"Learning Objectives\" with \"Key Takeaways\" provided at the end. ","interface_rating":5,"interface_review":"I saw only two instances of where images had gone awry; pages 248 and 256. The information is not lost but the image is too large for the page. The bookmark navigation within the pdf is correct. ","grammatical_rating":4,"grammatical_review":"I saw no grammatical errors. However, there were several references within chapters 9 and 10 (citations and figures) that were omitted. ","cultural_rating":3,"cultural_review":"I don't believe \"Essentials of Geographic Information Systems\" to be offensive to anyone. The examples used in the cartography chapter, 9, are relevant to US elections.     ","overall_rating":8,"overall_review":"I will use this book next year for my introduction graduate level course, Understanding Geographic Information Systems.  It would be nice if the citations and figures within the last two chapters are corrected before then. ","created_at":"2016-12-05T18:00:00.000-06:00","updated_at":"2016-12-05T18:00:00.000-06:00"},{"id":1235,"first_name":"Darlette","last_name":"Meekins","position":"Professor","institution_name":"Virignia State University","comprehensiveness_rating":4,"comprehensiveness_review":"The text is too convoluted for my students to follow alone.  For my beginners GIS course, the book neglects to introduce the basic principles.  It lacks practical exercises that allow the students to work directly in the ArcGIS workspace. Thus familiarizing them with the software.  The basic components of GIS are  not covered in-depth.  Students need to know how to create spatial features as well as to use them as representation.  It does not explain GIS and its concepts to the novice student.  The pdf lacks a glossary, Index or table of contents.\nAs the Instructor, however, there are some chapters that I would use in my course during the mid portion of my term.\n\nOverall, the book is quite thought provoking and will provide a challenge and offer additional critical thinking to the concept of GIS.","accuracy_rating":5,"accuracy_review":"The concepts were clearly explained.  The content is accurate and unbiased.","relevance_rating":4,"relevance_review":"Most of the text content is written in a way that updates will not be necessary in the near future.  The content is up to date, but several of the resource links were broken.  If this PDF is used in my course, I will have to supplement it with additional exercises, references, and expand upon the applications from a more basic perspective.","clarity_rating":4,"clarity_review":"Some of the content in the chapters are advanced for my general education students taking GIS for the first time.  The text is clear and comprehendible for me but I will have to supplement each chapter, maybe use  PowerPoint.","consistency_rating":5,"consistency_review":"The text is consistent with the chapter headings and subtitles","modularity_rating":4,"modularity_review":"Great job was done in partitioning the chapters,subheading and sections.  The lack of a table of contents made it difficult to navigate through the book; when searching for a specific topic","organization_rating":4,"organization_review":"The organization and structure order appear to flow rather well, accept for The Cartography Chapter.\nThis chapter should have been presented earlier in the book.","interface_rating":4,"interface_review":"The text is satisfactory; the broken links are causing some navigation problems.  The display features were necessary and relevant.","grammatical_rating":5,"grammatical_review":"I found no grammatical errors.","cultural_rating":5,"cultural_review":"The text is culturally relevant and not offensive.","overall_rating":9,"overall_review":"Overall, the book is Good and I will recommend it to my colleagues and eventually to my students.  It covers principles related to GIS but not the actual principles involved in GIS for the Novice.  I would gladly use the book as a reference.  I hope to incorporate portions of this book into my course with some adjustments and more hands on activities in ArcGIS Desktop.  My students need to the fundamentals; i.e. the components of ESRI ArcGIS: ArcMap, ArcCatalog, and ArcToolbox. In addition to how to create spatial features and data within the attribute tables.\n\nI do appreciate the efforts put forward in writing this Publication.\n\nRespectfully.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":1320,"first_name":"Thomas","last_name":"Allen","position":"Professor","institution_name":"Old Dominion University","comprehensiveness_rating":5,"comprehensiveness_review":"The authors cover a wide range of GIScience that would allow for a core foundation combining geographic abstraction and \"spatial thinking,\" data models and structures, cartographic representation, and importantly, a variety of data sources (e.g., GPS and remote sensing.)  Some included content is rather surprising, yet also welcomed, such as the strong coverage given to \"map anatomy\" and GIS project management.  Oftentimes other \"cookbook\" approaches to introductory GIS will omit the vital issues of cartographic principles (color, symbology, and design).","accuracy_rating":5,"accuracy_review":"Fundamental GIS data and analytical techniques are presented very accurately. The conceptual basis of GIS is rooted in geographic and spatial abstraction, which provides for a sound mix of \"spatial thinking\" applied to actual GIS data. Terminology is introduced and referred later unambiguously.","relevance_rating":4,"relevance_review":"Currency is an enormous challenge for any textbook in GIScience and Technology. GPS technology is presented rather lightly and historically, with accurate but limited currency, for instance on international GNSS constellations (GNSS includes Galileo, GLONASS, for instance, as well as regional satellites for positionining such as BeiDou-2 and WAAS.) Overall, however, the material presented at a fundamental learning level balances rigour and relevance with longevity. Map essentials or \"anatomy\" are critical and timeless in this sense.  Raster and vector data models are also time invariant. As compared to some texts, the book focuses on essentials and not the rabbit hole of arcane historic structures (e.g., GBF DIME files).  The revolutionary development of LiDAR, however, is something that may merit introduction at this level, and it blends vector and raster data structures (LAS files, point clouds, and derivative DSM and DEMs.)  Unfortunately, LiDAR is not introduced.","clarity_rating":5,"clarity_review":"Spatial data and analytical techniques are quite clearly presented in the text. Illustrative figures are well chosen and augment the textual content. A few additional graphics might further improve students comprehension of new, abstract spatial structures. For instance, TINs are introduced and only one graphic of a TIN surface model is given. This rather limits the fundamental notion of TINs as vector structures with attributes, as well as their intrinsic relationship to topography and surface modeling.  TINs are not mentioned in the vector GIS data structure section nor the single-layer vector analysis section.  \n\nThough there are moderate gaps in some of the individual sections, overall the content presented is clearly conveyed. The written explanations are easily followed. White space and interspersed figures supporting concepts are replete. The style and length of subsections allow for one to easily and non-fatiguingly read through chapters.","consistency_rating":5,"consistency_review":"The layout and presentation are quite consistently organized among sections.  Learning objectives, key concepts, and after-chapter mental exercises are very integrative as well as keeping the learner on track within chapters/modules.  Between sections, key terms are also unambiguously mentioned.  One COULD see a bit more synthesis or even repetition fruitfully employed, however. For instance, TINs not presented again after a cursory introduction in data structures, yet they could be reviewed or mentioned again usefully in the vector structures, spatial interpolation, or terrain mapping sections.","modularity_rating":5,"modularity_review":"The chapter organization balances content and length very well.  Ten chapters would conform very well to applications in weekly readings in a course that supplemented the text with other exercises, yet allowing for emphasis or de-emphasis as an instructor chose.  No chapters too lengthy or conceptually overburdened.  Some modules could be dropped in actual instructional use if, for instance, an instructor wished to use another source for greater detail.  There is very little burden of self-referencing, almost to a fault, as some re-enforcement or application of data concepts might be useful.","organization_rating":5,"organization_review":"A logical and cumulative structure of content is used that makes great sense and jives with most other GIS texts and authoritative pedagogical references (e.g., GIS Body of Knowledge and other related \"core curricula\".)","interface_rating":5,"interface_review":"Available as a PDF and online, both formats are stylistically easy to navigate, cogent, and appropriately supported with embedded graphical content. The online format is easy to page and refer or jump to alternative sections.","grammatical_rating":5,"grammatical_review":"The book is free from grammatic errors and would be easy to read and follow from a very wide range of readers.","cultural_rating":5,"cultural_review":"No cultural biases are evident in the book, and there are no national or unusual localized biases toward data structures or sources or terms as sometimes can be found in GIS texts.","overall_rating":10,"overall_review":"\"Essentials of Geographic Information Systems\" is exactly what it is entitled, providing introductory concepts that are importantly rooted in spatial thinking, mapping and related geographic concepts. Although a few concepts tend toward a light or cursory nature, these are easily augmented by an instructor with other resources.  The book is to be prized for its accessibility, pragmatism, and provision of a rigorous yet easy to follow framework for GIS concepts, spatial analysis, and future learning.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":1386,"first_name":"Joanne","last_name":"Logan","position":"Associate Professor","institution_name":"University of Tennessee","comprehensiveness_rating":4,"comprehensiveness_review":"I was thoroughly impressed by the comprehensiveness of this book. It covered most of the important aspects needed for an Introductory GIS class - from GIS and mapping basics all the way to project management. The book does not currently have a glossary nor an index, which would make it even more useful for instruction. Therefore, I highly recommend that the authors include a glossary and index in the next edition.  There are several new areas of GIS that were not covered in this book, due to the fact that it was published in 2011, more than 6 years ago. Since that time, LIDAR (Light Detection and Ranging) has become an invaluable addition to the GIS data inventory, and entire chapter could easily be devoted to this topic. Also, online mapping tools and mashups deserve more coverage in this book. However, I very much appreciated the generality of the book, i.e. it did not often mention specific formats or programs or data sources, which  of course, are moving targets and would require continual and frequent updates.","accuracy_rating":5,"accuracy_review":"The book was very accurate and error-free. The only misspelling I found was under the Table of Contents/Licesning Information instead of Licensing Information. Other than that silly error, the text was spot on with terminology and concepts. I have used mostly ESRI books in the past, which of course are biased toward their software platform and data formats. I believe the authors did a good job or presenting the wide array of GIS options, including open-source. Much of their information was generalized enough that it could be applied across a wide array of GIS platforms.","relevance_rating":3,"relevance_review":"Because the author's did a good job of keeping the text as general as possible, the relevance of this 2011 book was a pleasant surprise. I expected it to be quite out of date, but not so. Of course, several of the links provided in the text were broken and need to be updated. Also, some of the images were pretty old and newer ones could be inserted. I think the authors could perhaps review some of the text that refers to specific sources of data, satellites, etc. and try to generalize even more. Also, some of the proposed exercises were perhaps a little too specific and might become outdated with new technologies and websites.","clarity_rating":4,"clarity_review":"Due to the nature of the book, a certain level of jargon/technical terminology is to be expected. That is why a glossary would have been oh-so helpful. However, I felt that the terminology was appropriate for an entry level GIS book. Most of the book is very readable and easy to understand, even for a newbie. Perhaps several of the sections could be lightened up a bit, such as the vector data model topic.","consistency_rating":5,"consistency_review":"The authors were very consist in terms of terminology and framework. I liked the way they often linked back to previous concepts to show the relevance of the newly presented information. The framework was also very consistent - learning objectives, materials in a digestible chunk (not too much, not too little for the most part), basic concepts learned, and further practice with exercises.","modularity_rating":5,"modularity_review":"I found the modularity to be on of the best  aspects of this book. Some GIS books have very long and complex chapters, and students get lost or distracted. Their chapters and sections are very concise, with clearly stated objectives. Many of the sections are stand alone and not highly dependent on other sections, which is excellent for those of us wishing to daisy chain elements from several books.","organization_rating":4,"organization_review":"There are so many different ways that GIS instruction can be presented, but I thought their flow was as good as any of the other books I have used. The authors did jump around a bit between raster and vector, so perhaps those two aspects could be presented more cohesively.","interface_rating":5,"interface_review":"I thought the interface was fine. The pdf file worked great in IBook and was easy to navigate. However, it could be improved by having a linkable table of contents (like it is in the html format), and a linkable glossary and/or index. I thought the figures and tables were very helpful, but some of them could use more descriptive captions.","grammatical_rating":4,"grammatical_review":"My only suggestion for improvement would be too keep the same grammatical tone as much as possible throughout the book. In some parts, it's very light and readable, in other parts, it gets quite complex and deep.","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive in any way. They included some diverse examples of GIS applications, but even more diversity would be appreciated.","overall_rating":9,"overall_review":"I would use this book for sure, in the GIS class that I teach. I was pleasantly surprised by the rigor, breadth, and content.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":1511,"first_name":"Joe","last_name":"Gordon","position":"Instructor","institution_name":"Portland Community College","comprehensiveness_rating":4,"comprehensiveness_review":"Campbell and Shin’s “Essentials of Geographic Information Systems” provides a comprehensive overview of GIS.  They begin with a general introduction to geographic and spatial concepts (and the role of GIS within geography), and proceed to lay out the fundamental conceptual components of GIS in Chapters 2 through 5, including common elements of maps, common data types and metadata, challenges of researching, identifying, and finding relevant data, GIS data models (raster/vector), and database management.  Chapters 6 through 9 are dedicated to visualization and analysis, including selecting, searching and querying data, classifying data, common single- or multiple-layer analyses, raster and surface analysis, and basic cartography (color, symbology, map design).  Chapter 10 concludes with an important, albeit often overlooked, discussion about the challenges of effective project management, both in general and as specifically relates to the particularities of GIS projects.\n\nSubjects that could perhaps use greater exploration in Campbell and Shin’s book, include (a) geodesy (e.g., geoids, datums), (b) coordinate transformation, (c) global navigation satellite systems, (d) photogrammetry, (e) development of various satellite sensors, (f) lidar, (g) network analysis, and (h) types of geospatial models (e.g., weighted, spatio-temporal, agent-based).\n\nThe concepts in Campbell and Shin’s book that are particularly unique for an introductory GIS textbook include (a) spatial thinking (e.g., mental maps), (b) map abstraction (e.g., what is a forest?), (c) the challenges of acquiring accurate and relevant data, (d) the challenges of implementing effective database management, and (e) the practice of good project management.\n\nAlthough aiming toward providing a broad overview of GIS, Campbell and Shin also elaborate on a fair amount of subfield specifics, but not so much as to obscure or distract from the central points of interest.  The strength of the book is the emphasis on GIS practice and the actual decisions that lead from conceptualization and project planning to an effective deliverable with useful information.","accuracy_rating":5,"accuracy_review":"Both in terms of broader GIS concepts as well as domain-specific and technical skills, Campbell and Shin’s book accurately provides the “essentials” of GIS.  I found no glaring conceptual errors or omissions.","relevance_rating":4,"relevance_review":"The book is generally relevant and up-to-date, as relates to the current ecosystem of common GIS software, hardware, workflows, and functions.  That said, technology, data, methods quickly evolve, and the book will need to be updated as-needed.  The structure of the book, especially in the online version, allows for flexible inclusion of new material or elaboration upon specific components of existing material.\n\nI was a little surprised that Python was not mentioned regarding development in GIS, especially related to its current role in Esri tool development and general rise in data science.  That said, for an \"essentials\" book that is not focused on Esri software specifically, this omission does not seem that important.","clarity_rating":5,"clarity_review":"The book is clear, and it is evident that the authors write from experience.  Throughout the different sections, a good balance exists between detail and conciseness.  Where detail is omitted, it seems that the authors implicitly suggest that some of the onus is on the student for a deeper understanding of the specific subfields, such as the case of transformations between projections, where the authors simply state that although “most GISs include functions to assist in map projections[...]an awareness of the potential and pitfalls that surround map projections is essential.”","consistency_rating":5,"consistency_review":"The book is consistent in structure (e.g., primary learning objectives at the beginning and key takeaways and exercises at the end of each section), tone (e.g., a guidebook of “essentials” for working with and understanding GIS), and GIS-specific content (e.g., lists of relevant GIS definitions and geography-specific jargon are laid out prior to exploration of subject).","modularity_rating":5,"modularity_review":"The book lends itself well to modular assignment of sections, as needed in coordination with lecture or lab topics.  There are internal cross-referencing when topics intersect or overlap, but the references do not break the modular cohesiveness of the sections being read, especially in the online version where links are provided and use of the web browser enables easy navigation between sections.","organization_rating":5,"organization_review":"The organization and structure of the subjects in the book are appropriate, beginning broadly with a discussion of geography and spatial thinking, moving on to GIS and maps (the most prominent or identifiable aspect of GIS), and finally the complex decision-making processes involved with data management, analysis, cartography, and project management.  The balance that Campbell and Shin strike regarding detail and conciseness on specific topics also plays out well in the overall structure of the book, whereby chapters are split into a few manageable sections each.  Compared with, hypothetically, on one extreme, a book with a few long chapters or (on the other extreme) many short chapters, Campbell and Shin have designed their “essentials” such that each chapter is suitable for about a week’s worth of reading and exercises, both in terms of required reading time as well as conceptual modularity.","interface_rating":5,"interface_review":"Overall, the online interface is seamless.  Navigation via linear links (i.e., next/previous section) and nonlinear links (i.e., table of contents) are available, as well as subject-specific links within the text.  The charts are simple, appropriate to the subject, and intuitive.","grammatical_rating":5,"grammatical_review":"Noticed one or two spelling or grammar errors, but overall the writing is professional and enjoyable.","cultural_rating":4,"cultural_review":"In Chapter 1 and 2, the book contextualizes GIS in terms of the ongoing development of social technologies and the related democratization of GIS, which is important for introductory students to understand in terms of the moving ground upon which GIS is evolving.  Additionally, the authors explore the ideas of bias and generalization, and the responsibility of GIS practitioners in the communication of information through maps.\n\nAlso, occasionally, the book provides examples of the incorporation of social data into GIS workflows, primarily by providing brief references to data sources for social or demographic data (e.g., census data) or types of data in potential analyses (e.g., income data in mall suitability analysis).","overall_rating":9,"overall_review":"No other comments other than I really like this book.  Our current textbook is good, as well, but perhaps too detailed for an introductory class of students using ArcGIS for the first time.  This book will be a good conceptual accompaniment to our Esri-based labs.","created_at":"2017-08-15T19:00:00.000-05:00","updated_at":"2017-08-15T19:00:00.000-05:00"},{"id":1683,"first_name":"David","last_name":"Ramos","position":"Professorial Lecturer","institution_name":"American University","comprehensiveness_rating":3,"comprehensiveness_review":"Comprehensive information about data formats, data operations, and analysis. Less coverage of fundamental concepts, applications, and cartography.\n\nThe chapters about GIS data formats and data management are thorough and well-organized, though they too would read better if they included more narratives and concrete examples from the field. The information here is dense and thoughtfully explained, and diagrams support the concepts well. These chapters form the heart of the book, and represent the book’s greatest value.\n","accuracy_rating":3,"accuracy_review":"No errors stand out; the book shows a certain level of generalization, appropriate for an introductory text.\n","relevance_rating":5,"relevance_review":"This book takes an ecumenical approach to the choice of software; the authors wisely observe that GIS software changes quickly, and that students and instructors might choose any number of tools. This approach is welcome, in a world that too often teaches the details of one piece of software rather than the longer-lived principles that underly that software. Some more discussion of the ideas that programs embody, though, would help introduce in students a useful skepticism.\n","clarity_rating":2,"clarity_review":"The text is clearly written.\n\nThe quality of the graphics varies considerably, an issue in a book that leans heavily on diagrams, example data, and model maps. Some sections would be clearer with more skillfully-drawn graphics. The explanation of projections, particularly, suffers. Other sections, like the chapters on searches and queries, and on vector operations, are accompanied by excellent graphics. \n\n\n","consistency_rating":5,"consistency_review":"A quite internally consistent book, in terms of perspective and use of language.\n","modularity_rating":5,"modularity_review":"Chapters are self-contained and would read well in more than one order.\n","organization_rating":2,"organization_review":"More case studies and narratives would help readers, particularly novices. The book offers a handful of examples—a glimpse at deforestation in the Amazon, or a hypothetical database query and its effects on returned data—but they are rare and abbreviated. More stories, and more real-world data, would help turn abstract concepts into concrete ones. \n","interface_rating":3,"interface_review":"The design of the book deserves a note. I read the PDF-formatted book. Whether for screen viewing or for printing, the book would be far more readable if lines were shorter. \n","grammatical_rating":5,"grammatical_review":"Grammatically, fine.","cultural_rating":4,"cultural_review":"Generally neutral; appropriate awareness of the cultural frameworks that surround our use of maps.\n","overall_rating":7,"overall_review":null,"created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":1901,"first_name":"Donna","last_name":"Dambrosio","position":"Instructor","institution_name":"University of South Florida","comprehensiveness_rating":4,"comprehensiveness_review":"This text is an excellent resource as an introductory GIS course for undergraduate and graduate students in a computer technology curriculum who have not had any prior experience with GIS. As the introduction states it “is designed to be accessible, pragmatic and concise.” (pg.2).There are ten chapters in the text which review GIS in a logical flow beginning with chapter 1 explaining GIS and why it is used. Within this chapter there is a discussion of spatial thinking and how we use special thinking every day. Chapter 1 also provides an overview of geographic concepts which define GIS and how GIS is currently used and how it may be used in the future; in addition, there is a discussion on the geospatial web. All of this affords a good foundation for the remaining chapters. An important component of this online text is the student’s ability to click on the external links to additional information. The remaining chapters present understandable lessons on cartography and cartographic principles, maps, map types, data and information, data files and formats, GIS data models, satellite imaging, data visualization, geospatial analysis and GIS project management. Each chapter begins with learning objectives and ends with a review of concepts learned and topical exercises. In addition, the charts and illustrations provide good visual learning support. ","accuracy_rating":4,"accuracy_review":"The content seems accurate.","relevance_rating":4,"relevance_review":"The content seems relevant and up-to-date since the authors provide link to pertinent websites. It seems that any updates can be added to the chapters if needed. An important component of this online text is the student’s ability to click on the external links to review additional information. ","clarity_rating":4,"clarity_review":"The text is clearly written and there are explanations of technical terminology.","consistency_rating":4,"consistency_review":"It seems internally consistent.","modularity_rating":4,"modularity_review":"A chapter or portions of a chapter could be assigned for each week of the semester.","organization_rating":4,"organization_review":"There are ten chapters in the text which review GIS in a logical flow beginning with chapter 1 explaining GIS and why it is used. Within this chapter there is a discussion of spatial thinking and how we use special thinking every day. Chapter 1 also provides an overview of geographic concepts which define GIS and how GIS is currently used and how it may be used in the future; in addition, there is a discussion on the geospatial web. All of this affords a good foundation for the remaining chapters. ","interface_rating":4,"interface_review":"The text is accessible as are the external links.","grammatical_rating":4,"grammatical_review":"Grammatical errors were not found.","cultural_rating":4,"cultural_review":"There was no evidence of insensitivity.","overall_rating":8,"overall_review":"Overall this text presents a well-balanced, clearly written and informative introduction to Geographic Information Systems. I enjoyed reading this text and will use it for the GIS course.","created_at":"2018-03-27T19:00:00.000-05:00","updated_at":"2018-03-27T19:00:00.000-05:00"},{"id":2220,"first_name":"Elia","last_name":"Machado","position":"Assistant Professor","institution_name":"Lehman College, City University of New York (CUNY)","comprehensiveness_rating":3,"comprehensiveness_review":"“Essentials of Geographic Information Systems” provides an accessible foundation of GIS and mapping at the undergraduate level, suitable for readers without previous experience with GIS, mapping, or spatial thinking. \n\nThe book is not very concise, but it is well written, engaging, and promotes the critical thinking of the reader by interspersing several questions and comments to encourage the critical examination of the content presented (e.g., what is included in mental maps, section 1.1). I also appreciate that it helps developing a sense of the type of questions that can be examined using a GIS and spatial thinking skills.  \n\nEach unit starts with a clearly laid out set of objectives and concludes with a summary of the main takeaways and a set of exercises. Altogether the units provide a broad foundation of GIS and mapping. Some of the main topics covered include: Spatial Thinking and GIS definition, map types (mental, reference, thematic, dynamic), map elements and scale representation, GIS data models and associated file formats (vector vs. raster), coordinate systems (only GCS) and projections, remote sensing and remote sensing data resolutions (very basic introduction), data quality (accuracy vs. precision), descriptive statistics and histograms, attribute and spatial queries, data classification methods, vector and raster data operations (including local, neighborhood, and zonal operations, and interpolation), cartographic principles and map design, and project management. \n\nOverall, the level of depth is adequate for an introductory textbook, but there are few potential weaknesses: i) the unit on coordinate systems and projections did not seem to offer the necessary depth, and did not include a discussion on planar coordinate systems, omitting two widely used coordinate systems in the U.S. (UTM and State plane), ii) the textbook does not cover how to read and specify coordinates from paper maps or USGS digital topo maps, iii) the unit on remote sensing is also quite brief and defines spectral resolution using the term wavelength without defining it first, some additional links would be helpful in this regard, iv) there is no coverage of the different types of thematic maps (choropleth, dot density, graduated symbols, flow maps, etc) and the data suitable to be represented by each type. Choropleth maps are briefly defined in unit 6, but the definition omits an important characteristic of them: the data represented in choropleth maps are aggregated by area (e.g., administrative areas). In addition, the authors use a choropleth map of population by county in the U.S. to illustrate the effect of different classification methods on the spatial patterns of the same dataset. Choropleth maps are ideal to identify spatial patterns, but their use with absolute numbers is discouraged because in many cases the aggregation units differ in size. Since it is difficult to make comparisons across units of varying sizes, transforming the data to percentages and rates is recommended when using choropleth maps. \n\nA table of contents is provided in the description of the textbook, but not in the version of the .pdf that I have downloaded. There is no glossary or index of terms, which would be very useful.","accuracy_rating":4,"accuracy_review":"Overall, the content of the book seems accurate.","relevance_rating":4,"relevance_review":"Most of the book focuses on the fundamentals of GIS, is up-to-date, and will remain relevant over the long term. Some references to GIS applications, external links, and software will need to be checked and updated on a regular basis.","clarity_rating":4,"clarity_review":"The book is well written at an introductory level. Most of the concepts included are defined in a clear, accessible manner, with a few exceptions (e.g., wavelength).","consistency_rating":4,"consistency_review":"The terminology used throughout the book is consistent.","modularity_rating":4,"modularity_review":"The book is subdivided in a logical manner and can be read/assigned as separate chapters. There are internal references to other chapters in the book. It would be very useful to have a table of contents in the .pdf version with page ranges for easier navigation, reference, and identification of the length of each section.","organization_rating":4,"organization_review":"The sequence of topics and chapters progresses logically, but personally I would have preferred having Chapter 9 (cartographic principles) after Chapter 6 (data characteristics and visualization).","interface_rating":3,"interface_review":"A table of contents is included in the description of the book, but there is not a table of contents included in the .pdf of the book I downloaded from the Open Textbook library. This hinders navigating through the text and having a sense of the extent and structure of the book. It is also more difficult to refer to specific chapters for assignment. The online version starts with a hyperlinked table of contents and each chapter has links to the table of contents, as well as the previous and next chapter. The internal links to other chapters included in the text do not seem to work, this is also true for the .pdf version.","grammatical_rating":5,"grammatical_review":"I have not found major grammar errors.","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive. The authors promote a critical examination of what information is presented in map and the implications of how it is presented (e.g., mental maps, section1.1; map abstraction, section 2.3). These discussions are not typically included in “traditional”  introductory level GIS textbooks.","overall_rating":8,"overall_review":null,"created_at":"2018-06-19T19:00:00.000-05:00","updated_at":"2018-06-19T19:00:00.000-05:00"},{"id":2579,"first_name":"Edward","last_name":"Davis","position":"Professor, Depat. of Geography \u0026 Earth \u0026 Environmental Sciences","institution_name":"Emory and Henry College","comprehensiveness_rating":5,"comprehensiveness_review":"Campbell has covered GIS in a very complete way - the text may not include every possible element of the subject, but I think all the GIS essentials are given very complete explanations.  I particularly like the excellent coverage of data structures and statistics. These are areas sometimes given inadequate coverage, but Campbell gives them very good attention.  The latter chapters on cartography and project management are often neglected in GIS textbooks, but Campbell provides solid chapters that should really benefit students. One area that could have more coverage is remote sensing, which is a closely related field, but that is seldom taught within a GIS course - it is best taught separately.  ","accuracy_rating":5,"accuracy_review":"The book is quite accurate, in my opinion.  I am a stickler for accuracy, but I found just a few errors - fewer than in most textbooks.  One small error will be discovered by students in Figure 4.11, where the topology table is missing a few values. But other than that, and a few typos, I am impressed with the writing, editing, and overall attention to the subject.  ","relevance_rating":5,"relevance_review":"The textbook is designed to be relevant for years. Published in 2011, it is now 8 years old, and it seems quite up-to-date.  Yes, some of the references may seem outdated, but Campbell has written the book in such a way that the essentials are not hidden by a fascination with rapidly shifting technology.  For example, the data structures and the computer languages being used in relation to GIS now are mostly the same or simply derivative of those the author describes.  It would be impossible to keep up with all the computer language options in this kind of text - any professor will have to supplement the text with updates on that. This is not a flaw in Campbell's book.   The same is true for examples.  Campbell tries to avoid using examples that would be easily outdated.","clarity_rating":4,"clarity_review":"The writing is clear and easy to follow.  I think students should have no trouble reading and even being fascinated by the field as presented here.  I do think three improvements could be made:   A. The text could have more structural highlighting, such as bold terms, headings or colored guides, so that as a student reads she/he finds the important terms and concepts easily.     B. Many of the diagrams could be better designed.  I find quite a few of them to be overly simplistic, to the point where the reality being modeled is too hard to imagine.     C. More examples from the real world should be included, particularly when talking about the most difficult subjects, such as data structures and project management.  Students will easily follow the examples already shown, but in some sections, the author seems to have forgotten to maintain his good style.","consistency_rating":5,"consistency_review":"The book is consistent in its presentation of the subject.  Campbell shows he is a good writer and organizer.  We should also credit the editor(s).  The quality shows.","modularity_rating":4,"modularity_review":"The chapters are logically structured and not too long.   But sometimes the author goes on too long without subheadings, which can allow the reader to be distracted.  Our modern culture creates short attention spans, unfortunately.  The book should work to reflect the typical student reader's ability to focus.","organization_rating":4,"organization_review":"Most teachers will find the book to be logically organized and each chapter properly connected to the others.  One complaint I have is the decision to place cartography at the end of the book.  In my experience, students enjoy knowing these design principles earlier, so they can apply them in the middle of the course.","interface_rating":5,"interface_review":"I encountered no interface problems other than a few defunct links, which is inevitable. The simplicity of design helps in this regard.","grammatical_rating":5,"grammatical_review":"I am a careful reader, yet I found no grammar problems.  This is impressive.","cultural_rating":5,"cultural_review":"The book is US-centric, but as far as I could see it is not insensitive to culturally diverse groups. Perhaps more examples from other cultures could be included.  In act, as I think about it, it seems the book could use more examples, so if there is to be a second edition, the best choice would be examples from outside the US.","overall_rating":9,"overall_review":"I like the book so much that I may adopt it for my course next year. Where it is flawed, I can make up the difference with a few adjustments (additional examples and diagrams).","created_at":"2019-02-23T10:07:40.000-06:00","updated_at":"2019-02-23T10:07:40.000-06:00"},{"id":3964,"first_name":"Sarah","last_name":"Kelly","position":"Instructor","institution_name":"University of Colorado Boulder","comprehensiveness_rating":2,"comprehensiveness_review":"This is where I feel the text struggled the most. Some of the basic and very important topics, such as projections, data classification, and visual hierarchy, were mentioned in such brevity that the reader is left without proper instruction on these topics. The text tries to cover so much that it often seems rushed and lacks comprehensiveness in many areas. No index or glossary is included.","accuracy_rating":4,"accuracy_review":"I was pleasantly surprised to find the text mostly free of errors. However, with the text having been published 8 years ago some of the links provided were no longer active or incorrect. I did find some areas in which the terms or explanations used did not fit standard conventions. Additionally, in a portion of Chapter 9 the figures are not referenced to in the text, only empty parentheses are included.","relevance_rating":4,"relevance_review":"With a technology like GIS, changes happen very quickly and with a major software revision to one of the most widely used commercial products occurring in 2015 updates would be needed to portions of the text to increase relevance. While some of the information may at first glance seem dated, the historical information presented provides the reader with background as to where GIS has been. On the converse, the text is not forward looking which is needed for a text based on computer technology.","clarity_rating":4,"clarity_review":"The book was designed as an introductory text for individuals that are not familiar with GIS. It introduces “key concepts behind the technology with practical concerns and real-world applications”. There are a lot of terms to learn with each indicate in bold text and well explained, but no index or glossary is provided. If a term/concept is discussed in multiple sections of the text they are indicated as such so the reader can switch between sections to gain full understanding of the concept. Many practical examples are used throughout the text which helps the reader understand the application of the concepts presented.","consistency_rating":5,"consistency_review":"I found no issues with internal consistency. The framework used - a chapter introduction, and learning objectives at the beginning and key takeaways at the end of each section lends to a well thought out text.","modularity_rating":4,"modularity_review":"The text can be readily broken down into smaller sections, not only by chapter, but within each chapter there are multiple sections that are clearly divided by topic. However, there are multiple incidences in the text where the author refers to other sections/chapters of the text that could make some divisions more difficult than others.","organization_rating":3,"organization_review":"I found the text topics did not flow well between a few of the chapters (3-5 and 6-9) with some rearrangement recommended. Furthermore, some of the chapter and section titles did not accurately represent the content or in one incidence repeated similar information. What did work was the use of an introductory section at the beginning of each chapter along with basic exercises provided at the end of each section within a chapter.","interface_rating":3,"interface_review":"In the PDF form there are quite a few images that run off the page, but when viewing the text online these issues do not exist. Otherwise, the graphics and interface work well.","grammatical_rating":5,"grammatical_review":"Well written with no grammatical errors found.","cultural_rating":5,"cultural_review":"All information presented is done so in a culturally sensitive manner.","overall_rating":8,"overall_review":null,"created_at":"2020-06-11T16:19:48.000-05:00","updated_at":"2020-06-11T16:19:48.000-05:00"},{"id":4023,"first_name":"Patrick","last_name":"Kennelly","position":"GIS Program Director","institution_name":"Central Oregon Community College","comprehensiveness_rating":4,"comprehensiveness_review":"Essentials of Geographic Information Systems is designed to be a book for an introductory book in GIS. It is comprised of ten chapters which include introduction, map anatomy, data/information and where to find them, data models for GIS, geospatial data management, data characteristics and visualization, geospatial analysis (vector), geospatial analysis (raster), cartographic principles, and GIS project management. I would say the first and final chapter of this book are relatively unique when comparing it to other introductory GIS textbooks. The first chapter focuses on mental maps, which could be part of a more basic course typically called something like “spatial thinking”. The final chapter is a summary of elements of project management. It doesn’t hurt to introduce GIS students to PM in an introductory textbook, but many might find this the most surprising chapter to include.\r\n\r\nEach chapter begins with learning objectives and then gets into the main portion of the chapter. The authors include images that are generally informative and colorful. They end each chapter with key takeaways and exercises. The exercises are typically reflective (e.g. compare and contrast), or task oriented (e.g. find your home). This textbook does not include GIS exercises or labs, so instructors using this book would need to have another source of these. Finally, the authors end with a few references that are designed as overviews of the ideas such as Monmonier’s How to Lie with Maps.\r\n\r\nThis book covers the main basics of GIS, but is not a deep dive into the technology and what it can do at the introductory class level. It was originally published with Flatworld as an OER, then when Flatworld was purchased only available at a cost for a while, and now it is available again as an OER. I reviewed some of the original chapters in 2011 when they were first written, and like the style and writing.","accuracy_rating":5,"accuracy_review":"I would describe the content as accurate, error-free and unbiased. Each author is going to have specific ideas about how to present content, but I think book does so in a fair and balanced manner. It focuses more on the concepts of GIS as opposed to how it works, which I think is appropriate for this type of introductory text.","relevance_rating":5,"relevance_review":"The content covered tends to be the fundamentals of GIS, so I would say that the longevity is good by design. The big ideas in GIS covered in an introductory class are not evolving rapidly, but of course the software and applications are. This only means that this book would have to be coupled with other lab or exercises resources if the instructor wants to include hands-on GIS work in his/her class.","clarity_rating":5,"clarity_review":"The writing is clear and concise. It doesn’t go too deep into the jargon, and clearly explains the terminology that it does use.","consistency_rating":4,"consistency_review":"The materials in this book are consistent in terms of terminology. I am unsure what is meant by framework, but I would say at times the internal arrangement of materials was not always the most intuitive to me. For example, the final chapter on project management includes sections on working with CAD data, applications development, map series and grid-to-ground transformations.","modularity_rating":5,"modularity_review":"This seems like a very modular textbook to me. However, since it only has ten chapters, I don’t think it could be used for more than an introductory course, and the materials here might not be enough to cover every topic in that course in sufficient detail, depending on the instructor’s curriculum.","organization_rating":4,"organization_review":"The topics are organized in a logical manner, and probably follow the typical organizational structure of many GIS instructors when teaching an introductory course. There is always room for potential reorganization depending on how topics are covered, and the sections would help the instructor assign specific readings from chapters.","interface_rating":3,"interface_review":"The book is available in both a pdf and online format. The online format is nice, and has a table of contents with links to all chapters and sections within the chapters. In summary, it’s very easy to navigate. I wasn’t as impressed with the pdf, as it doesn’t include a table of contents or links to specific chapters/sections. Moreover, only page numbers appear on each page, there is no indication of what chapter you are in unless there is a figure number or section heading. I’d suggest sticking to the online version.","grammatical_rating":5,"grammatical_review":"I didn’t notice any grammatical errors. I also know that the original material was reviewed by external reviewers, so I hope that such edits were made during this process.","cultural_rating":5,"cultural_review":"This material is not culturally insensitive in any way. The authors also try so show some maps related to social justice when appropriate, such as deforestation, worldwide life expectancy, GDP and literacy disparities, etc.","overall_rating":9,"overall_review":"Good as an introductory textbook, but will need accompanying exercise/lab materials.","created_at":"2020-06-20T19:51:59.000-05:00","updated_at":"2020-06-20T19:51:59.000-05:00"},{"id":4130,"first_name":"Ashok","last_name":"Pandey","position":"Associate Professor","institution_name":"Massachusetts Maritime Academy","comprehensiveness_rating":5,"comprehensiveness_review":"As an introductory book on GIS, the authors have done a commendable piece of work. The book has a constant flow connecting all the ten chapters succinctly. Each chapter starts with a ‘learning objective’ and ends with a take –away summary and some simple exercises for the reader. The associated graphics and illustrations in the chapters are well conceived and literally say a thousand words! A good piece of work for the uninitiated as it tells a simple story of a complex subject.","accuracy_rating":5,"accuracy_review":"'Essentials of Geographic Information Systems' covers almost all a beginner would like to know about GIS. It makes an interesting read and I found the contents precise and accurate.","relevance_rating":5,"relevance_review":"The authors have written the book skillfully and retained its relevance although the world of GIS is transforming so rapidly with evolving technology and multi-disciplinary applications. The examples cited in the chapters are aptly put and retain their logical connection even though the book was first published in 2011.","clarity_rating":4,"clarity_review":"The authors have demystified the complexity of GIS with a clarity of thought and purpose in this book. As an introductory book, the chapters give a peripheral knowledge that the student must possess. Connecting the chapters to practical to-do lab exercises may have made each chapter more interesting.","consistency_rating":4,"consistency_review":"The book is consistent in its style and presentation. Complex and intricate terminologies have been avoided as far as practicable especially in the first five chapters to engage the reader and make the subject matter engrossing.","modularity_rating":5,"modularity_review":"A requirement for modularity is to clearly define the interfaces between modules and enable the modules to work together. The steps involved in the transfer of the flow of control between the author(s) and reader seems well defined through the organization of chapters and dissemination of introductory information. Small chapters keep the readers’ focus better that the book clearly displays.","organization_rating":5,"organization_review":"The book is well organized for the teacher and well- balanced for the taught. The structure, flow and organization of the various sections is tidy, well-kept and straight.","interface_rating":4,"interface_review":"I do not see a Table of contents in the .pdf version. The online format looks better. I suggest a modification of the .pdf format for people to read and save offline. All the associated web links work well in the .pdf format. The Kindle file format may increase readership particularly among students with PDA's/mobile phones.","grammatical_rating":5,"grammatical_review":"The book has been through multiple reviews to date. I did not notice any grammatical errors as such. The book has a lucid syntax and makes splendid reading.","cultural_rating":4,"cultural_review":"The subject matter of the book is largely technical interspersed with management techniques.  The examples and illustrations cited in the chapters could be drawn from multiple regions and industries, however. The world of GIS encapsulates almost every activity and it may interest readers and instructors far and wide.","overall_rating":9,"overall_review":"I shall recommend  this book to any reader who wants to understand the world of GIS. If a book can tell a complex subject and reads like a storybook, the authors have succeeded in making an impact on the uninitiated as well as the seasoned GIS practitioner.","created_at":"2020-06-29T12:15:29.000-05:00","updated_at":"2020-06-29T12:15:29.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/essentials-of-geographic-information-systems","updated_at":"2025-12-15T02:01:55.000-06:00"},{"id":80,"title":"How to Think Like a Computer Scientist: Learning with Python","edition_statement":null,"volume":null,"copyright_year":2008,"isbn10":null,"isbn13":null,"license":"Attribution","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"How to Think Like a Computer Scientist: Learning with Python is an introduction to programming using Python.","contributors":[{"id":3597,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Allen","middle_name":null,"last_name":"Downey","location":"Franklin W. Olin College of Engineering","background_text":"Allen Downey is an American computer scientist, Professor of Computer Science at the Franklin W. Olin College of Engineering and writer of free textbooks. Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997. He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc."},{"id":3598,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Jeff","middle_name":null,"last_name":"Elkner","location":"Yorktown High School","background_text":"Jeffrey Elkner is a high school math and computer science teacher at Yorktown High School in Arlington, Virginia."},{"id":3599,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Chris","middle_name":null,"last_name":"Meyers","location":"Lane Community College","background_text":"Chris Meyers is a professional programmer who teaches a beginning Python class at Lane Community College in Eugene, Oregon."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"},{"id":59,"name":"Programming Languages","parent_subject_id":3,"call_number":"QA76","visible_textbooks_count":26,"url":"https://staging.open.umn.edu/opentextbooks/subjects/programming-languages"}],"publishers":[{"id":1,"url":"http://www.greenteapress.com/thinkpython/thinkCSpy/","year":null,"created_at":"2018-09-07T12:22:36.000-05:00","updated_at":"2018-09-07T12:22:36.000-05:00","name":"Green Tea Press"}],"formats":[{"id":1,"type":"Online","url":"http://www.greenteapress.com/thinkpython/thinkCSpy/html/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":2,"type":"PDF","url":"http://www.greenteapress.com/thinkpython/thinkCSpy/thinkCSpy.pdf","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":3,"type":"Hardcopy","url":"http://www.lulu.com/shop/allen-downey/how-to-think-like-a-computer-scientist-learning-with-python/paperback/product-3487688.html","price":{"cents":2495,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":8,"reviews":[{"id":219,"first_name":"Hongliang","last_name":"Xin","position":"Assistant Professor","institution_name":"Virginia Tech","comprehensiveness_rating":4,"comprehensiveness_review":"The book covers the basics of programming in the Python language in a very readable fashion. The materials are organized reasonably well. The new concepts are always introduced to have a direct comparison to previous Chapters. The new terminology is revisited in the end of each Chapter. The PDF file lacks links, which makes the reading slightly inconvenient. Each Chapter includes one or two questions for the students to think and code. More examples and Problems are definitely very welcome and helpful. I understand that this is a short book, but some important concepts, such as List Comprehensions, are not discussed. Overall, the book serves very well as introductory materials for the students to grab fundamental programming concepts using Python, and does this job very effectively. ","accuracy_rating":5,"accuracy_review":"I only spotted one minor error throughout the whole book. On pg 48, the “type string” should be “type str”.  ","relevance_rating":5,"relevance_review":"The book's topics are very basic and so always relevant for Python Programming. Many people are concerned about the transition to Python 3 that has significant difference to Python 2 in terms of data types and many other aspects. That should be a completely new book to cover Python 3. I think the current book did an excellent job for introducing those basic Python concepts and styles that will definitely last in future versions. ","clarity_rating":5,"clarity_review":"The explanations and examples are extremely clear. For example, whenever a new type or new concept is introduced, it is directly compared or differentiated from previous chapters. Furthermore, the technical terminology is clearly defined throughout the text and in the end of each chapter. ","consistency_rating":5,"consistency_review":"The overall style of chapters is very consistent. ","modularity_rating":5,"modularity_review":"The text is divided up into 20 chapters and three appendices. All of them are relatively short with ~10 page each. The overall grouping of materials is excellent. Chapters are generally built upon previous chapters and it is better to read through in sequence.","organization_rating":5,"organization_review":"The content is well structured. All the Chapters are very short and concise for specific data types or concepts, such as String, List, Tuples, Dictionary, Function, and Class. The flow is very well from simple to more complex, and new terminology are introduced in the beginning and revisited in the end in such a way that reader can also grab the difference to relevant ones in previous Chapters and that follows.  ","interface_rating":3,"interface_review":"The main critic of this book is lack of links, which makes the navigation a little inconvenient. That would be helpful if the PDF can be made crossed-linked. Also, organizing the code in blocks instead of spreading out all over the place would make people test the code easier. ","grammatical_rating":5,"grammatical_review":"I was not aware of any grammatical errors in the book. Apparently, the book has been proof read by many authors and probably many readers as well. ","cultural_rating":5,"cultural_review":"For this matter, I did not find anything worthy of mentioning. No material presented in this book is cultural sensitive or offensive to any group of people. ","overall_rating":9,"overall_review":"I was very motivated to review this book upon request because my research group uses Python quite extensively as an interface language to electronic structure modeling. The book serves very well as introductory materials to students who do not have much programming background. Some of my students and myself did not have strong interests to understand or apply some of the concepts covered in the book (e.g., Queues, Tree). But overall I found it to be very readable, and I plan to use it as the required reading material for new group members and for a modeling course I am developing. ","created_at":"2015-06-10T19:00:00.000-05:00","updated_at":"2015-06-10T19:00:00.000-05:00"},{"id":391,"first_name":"Joe","last_name":"Gordon","position":"Instructor","institution_name":"Portland Community College","comprehensiveness_rating":5,"comprehensiveness_review":"The book provides a good overview of Python syntax and basic functions, while also examining more complicated and potentially confusing concepts (e.g., abstract data types).  Python-specific glossaries are provided at the end of each chapter, and the ideas build from simple to complex.  The book is good for both beginner and intermediate developers.","accuracy_rating":5,"accuracy_review":"I worked through about a third of the code, and found no errors.  I focused primarily on the concepts and less on the computation, and was pleased to see that - although the book can be useful as a tutorial - it also stands alone as a conceptual problem solving book, which reaffirms the title phrase, “how to think like a computer scientist.”","relevance_rating":5,"relevance_review":"The emphasis on general programming concepts, and the exploration of computer science as a means of designing methods, functions, and algorithms to solve linear or iterative/recursive problems makes the utility of the book long lasting.  Additionally, the focus on simple and fundamental core concepts (such as syntax and format), increases the usefulness of the book for beginner and intermediate level programmers.","clarity_rating":4,"clarity_review":"Generally speaking, the authors carefully and deliberately explain the use of Python for solving specific computational problems.  The later chapters become a bit abstract, but this is probably the nature of the concepts, and not so much a shortcoming of the explanations.   Iterative readings, as well as continued programmatic familiarity, will help the reader understand more clearly.\n\nFrom a formatting perspective (i.e., bold, italics), the book does a good job of communicating types of Python language.  At the end of each chapter, the glossary of newly introduced concepts helps cement the ideas further.","consistency_rating":5,"consistency_review":"The themes and structure of the book are consistent from chapter to chapter, and relatively easy to follow.  The concepts build consistently upon each other, from very simple to complex and abstract.  Most importantly, the example problems are topically consistent, and are touched upon in multiple chapters (i.e., programming a card game).","modularity_rating":5,"modularity_review":"The structure of the book lends itself to modular development, and even repeatedly reminds the reader to break processes down into smaller, more manageable chunks.  The book also repeatedly suggests the benefit of generalizing snippets of code into tools that can be recycled into multiple workflows.","organization_rating":4,"organization_review":"The flow of the book is good, incrementally proceeding from very basic examples of statements and functions to more complicated examples of classes and objects.  The typological formatting of the book is explicitly designed to communicate an at-times non-intuitive Python vocabulary.  The structure of the chapters becomes suitably familiar, and often iterates through multiple examples of achieving similar or identical results with varied syntax and structure.","interface_rating":4,"interface_review":"The book is not designed to be a step-by-step tutorial, but instead balances applicable code examples with a narrative about the advantages and simplicity of programming in Python.  In between sections, the reader is invited (in italics) to be creative and fix or enhance code without explicit or obvious guidance.  The book will reward the casual reader and dedicated coder alike.","grammatical_rating":5,"grammatical_review":"No grammatical errors of note.","cultural_rating":5,"cultural_review":"The primary cultural relevance of this book is to make computer science more user-friendly, familiar, and attainable by providing tangible examples of programming as, essentially, stepwise problem solving.  Additionally, coding is not portrayed as being particularly easy or difficult; good code is attainable, but it takes thought (to plan ahead of time) and patience (to fix afterwards).","overall_rating":9,"overall_review":"I really enjoyed the combination of a broad overview and detailed examples of “how to think like a computer scientist,” and I look forward to reading again and recommending to my students as a good intro to programming generally and Python specifically.","created_at":"2016-01-07T18:00:00.000-06:00","updated_at":"2016-01-07T18:00:00.000-06:00"},{"id":855,"first_name":"Norm","last_name":"Jones","position":"Professor","institution_name":"Brigham Young University","comprehensiveness_rating":5,"comprehensiveness_review":"This book is designed for beginning programmers, but it still useful for readers with prior programming experience. The book starts out with a well-written discussion of algorithms, machine language, and other helpful foundational material for new programmers. The following chapters introduce the elements of the Python language in a thorough and comprehensive fashion. There is certainly much more that could be said about Python, but the scope seems just right for an introductory text.","accuracy_rating":5,"accuracy_review":"I did not note any errors or issues with accuracy.","relevance_rating":5,"relevance_review":"This text has been around for several years (current edition = 2008) and is a popular and widely known textbook on the Python language. The authors should be able to update it without a problem as new versions of Python are released.","clarity_rating":5,"clarity_review":"I teach an introductory programming course myself, so I have an eye for concepts that can easily trip up new programmers. I think the greatest strength of this text is the simple, readable prose and the logical manner in which the material is presented. In courses such as math, chemistry, and physics, students are trained to learn a new concept and then apply that concept to example problems and homework exercises by following the pattern in the examples. While this is still true to a certain degree in programming courses, programming is more open-ended and there is often a large number of ways one can use the syntax and structure of the language to accomplish a given task. This open-ended nature can be a major stumbling block for some new programmers, who feel more secure with a \"cook book\" approach to problem solving. As the title of the book indicates, the text is written in a way that teaching the students to think algorithmically, thus empowering them to harness the creative aspect of programming.","consistency_rating":5,"consistency_review":"The text maintains a consistent tone throughout. The terminology is consistent and new terms and concepts are introduced in a logical manner.","modularity_rating":4,"modularity_review":"The text is divided into 20 chapters, each of which covers a specific topic. However, one has to be careful when not reading the text sequentially. For example, functions are introduced in chapter 3, but it is not a complete coverage. Functions are further explained in the following two chapters: 4 and 5. It seems the authors have organized the book in this fashion in order to keep each chapter short and focused, which is a worthy goal. But an instructor would need to be careful about assigning portions of the book to cover specific topics.","organization_rating":5,"organization_review":"Excellent organization. Simple foundational topics are covered first and the chapters progress to more advanced topics at the end.","interface_rating":5,"interface_review":"The PDF version is nicely formatted. The HTML version is simple and easy to navigate.","grammatical_rating":5,"grammatical_review":"No problems.","cultural_rating":5,"cultural_review":"No issues.","overall_rating":10,"overall_review":null,"created_at":"2016-12-05T18:00:00.000-06:00","updated_at":"2016-12-05T18:00:00.000-06:00"},{"id":1631,"first_name":"Alan","last_name":"Ford","position":"Instructor","institution_name":"American Univeristy","comprehensiveness_rating":5,"comprehensiveness_review":"This text covers all fundamental elements of funtional programming using python.\nChapters are well structured and concise enough to be approached in an orderly fashion.","accuracy_rating":4,"accuracy_review":"Some challenge exists in maintaining all the examples and exercises in line with current state of the discipline. This is most notable in sections referencing the Internet which is understandable. Other than that, the text is up to date with the python functionality well described and implemented in the examples. A flag noting the recency of updates might be helpful here to better key users into possible areas of concern. ","relevance_rating":3,"relevance_review":"Python programming is a constantly evolving and dynamic domain. The authors are making great effors to keep the text updated with ongoing versions of the software. The text has already forked into versions for python 2 and python 3 further challenging the authors.","clarity_rating":4,"clarity_review":"Appropriate terminology is used throughout the text. Concepts are introducted, described, and demonstrated in clear prose.\nComments are used extensively within code segments to provide context and support comprehension and retention.\n","consistency_rating":5,"consistency_review":"The prose is highly consistent, utilizing appropriate terms and concepts to train early programmers. Subsections on good programming practice are well distributed throughout the text, providing a regular reinforcement of behavior and structure. Chapters are kept relatively the same size, so each occupies the same timeframe within the semester. No overly long or short chapters are present making for ease of use within the weekly course calendar.","modularity_rating":5,"modularity_review":"Highly modular, the chapters lend themselves to hopping around as necessary. Some chapters rely on previous work and a travelers key would be a useful addendum, identifying any clear content dependencies.\nExercises are well integrated into the chapter and provide ample opportunity to practice the concepts presented.","organization_rating":4,"organization_review":"I appreciate the outline and approach taken by the authors in covering the fundamental concepts of Python programming language.\nI have had difficulty in the past with the Turtle based chapters, specifically in getting the turtle modules to correctly load and execute. This presents a problem in following the text by chapter.\nI would prefer a forking architecture with the graphics chapters in a seperate thread which can be used or ignored as necessary.\nWhile this is nearly impossible to accomplish in a printed text I can appreciate the more linear nature of the text. But as this is now primarily available as an online resource it may be worth revisiting the strategy for presenting the material.","interface_rating":5,"interface_review":"The authors have done a superb job to present all images in straightforward and consistent size, font, color and frame. This is particularly true with examples which can be easily cut and paste into an editor and executed to demonstrate the concepts being covered.\n","grammatical_rating":5,"grammatical_review":"Syntax and grammar are consistently high and well structured. I have found no glaring grammatical errors. As programming computer syntax is a language unto itself, the authors do a good job of keeping the two separate in the textual descriptions of the concepts and implementation of python code. ","cultural_rating":3,"cultural_review":"The text relies on two primary cultural touchstones throughout. The first, Monty Python, is understandable in the context that the language name was chosen to honor this British comedy troop.. The second, Alice in Wonderland, is used to explore string and file manipulation. Neither is particularly relevant to the exercise and could easily be replaced by other sources of text.\nThere are no insensitive or offensive uses of language or cultural reference to my understanding.","overall_rating":9,"overall_review":"I have used this text as the primary course material for three years and am very satisfied with it.","created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":1696,"first_name":"Robert","last_name":"Dyer","position":"Assistant Professor","institution_name":"Bowling Green State University","comprehensiveness_rating":5,"comprehensiveness_review":"The book provides a great introduction to Python programming.  It reads at a level of a beginning programmer, though even novices should enjoy it.  The basic syntax and semantics of Python are covered, including functions and objects.  Some of the more advanced features are missing, and readers are encouraged to continue on to other books.  Every chapter provides a glossary of new technical terms at the end.  There is a comprehensive index at the end of the book.","accuracy_rating":5,"accuracy_review":"All content was accurate. I spotted no errors and I did not feel there was any bias in the material.","relevance_rating":5,"relevance_review":"The book is up to date with Python 2 syntax.  Since it focuses on beginner Python, most of the concepts should not really change over time.  Newer, more advanced concepts can easily be added in the future as additional chapters.","clarity_rating":5,"clarity_review":"The book is very easy to read.  Technical terms are introduced only when necessary and typically given via an example.  Each chapter contains a glossary of new terms at the end for review.","consistency_rating":5,"consistency_review":"The book is very consistently organized and presented.  Most chapters read similarly to previous chapters.  Terminology from prior chapters is consistently applied in later chapters.","modularity_rating":4,"modularity_review":"Overall the book is modular.  There are 20 chapters each around 11 pages in length.  Generally, a concept is fully covered within a single chapter.  The exception is the functions, which for some reason are not entirely covered within a single chapter but actually in several chapters.  Overall however it should be easy to reorganize/split the reading in a course.","organization_rating":4,"organization_review":"The organization and flow of the book is quite nice.  It starts with simple concepts and slowly builds up more complex concepts.  There were only a few places where I was wondering 'why is this here?' for example, when introducing the modulus operator.  It felt very out of place, even though I kept reading and realized it was necessary for the chapter's examples.  I also felt like the last several chapters seemed strangely out of place for the book as a whole.  Almost like the authors decided to tack on a quick intro to data structures at the end.","interface_rating":4,"interface_review":"I read the PDF version and felt the interface was about what you would expect.  I was disappointed that there were not hyperlinks in the PDF to easily jump from TOC or Index directly to the page.  A quick glance through the HTML version indicates it is quite usable.  The HTML version seems to syntax color the code while the PDF does not for some reason.","grammatical_rating":5,"grammatical_review":"I did not spot any issues with spelling or grammar in the book.  The book has clearly had some careful proof reading.","cultural_rating":5,"cultural_review":"The examples from the book should not be offensive to any particular culture.","overall_rating":9,"overall_review":null,"created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":2104,"first_name":"John","last_name":"Blackwood","position":"Associate Professor","institution_name":"Umpqua Community College","comprehensiveness_rating":5,"comprehensiveness_review":"The text begins with by associating problem-solving with programming and then moves ahead into a detailed description of Python. From there, the text moves logically ahead to variables, functions, operators, etc.\n\nI found the end of chapter glossary very useful (and preferred over one large glossary) and the index to be comprehensive.","accuracy_rating":5,"accuracy_review":"The text's content appears to be accurate and unbiased. While I did not run each program in the text as of this writing, all of the programs I did run performed as expected with one exception, the program listed on p. 8. In Python 3.6, the code to run the program requires a slight modification (the addition of opening and closing parens) to: \n\nprint (\"Hello, World!\")\n\nThis was true in all cases, but is a trivial matter.","relevance_rating":5,"relevance_review":"The text's content is excellent and offers extensive coverage for an introductory python programming course. While trivial aspects of the language will always be subject to evolution, the concepts covered should be long-lived.\n\nEducators and students alike can decide the depth to which they want to learn python by completing the content through chapter 11, or decide to include more depth in classes, inheritance, sets, and queues, which admittedly, are more complex topics.\n\nThe explanations given should be well-received by beginning students and even complex topics, such as the concept of a variable, usually a source of great discomfort to students, are well-described and handled.","clarity_rating":5,"clarity_review":"The text is written in a flowing, easy to read manner and clearly explains terms as they are introduced. For example, the coverage of recursion in chapter 4 is excellent. In my experience, most students struggle with this concept. However, the simple and easy to understand examples given help the student understand the necessity of asking a running function to again call (run) itself.","consistency_rating":5,"consistency_review":"The text's framework seems to match the introduction of concepts and flow of competing introductory Python courses with what seems to be a natural course separation after chapter 11, where afterwards, classes are introduced, along with more complex topics.","modularity_rating":5,"modularity_review":"Chapter topics are broken down into discrete, logical sections with easy to understand and execute snippets of code. The flow of the material seems natural, so that students can progress through the text in the order in which topics are presented.","organization_rating":5,"organization_review":"The topics in the text are presented in a logical, clear fashion, as I've mentioned in many of my prior review comments.\n\nI also appreciate the appendices. For example, Appendices B and C direct the student to additional study materials for further study.","interface_rating":5,"interface_review":"This text seems quite easy to navigate with no issues related to distorted images (there aren't very many images - mostly code snippets).","grammatical_rating":5,"grammatical_review":"The grammar used in the text seems appropriate for a college freshman course. I did not locate any grammatical errors.","cultural_rating":4,"cultural_review":"I only located one instance of the use of 'his or her' and no references to he/him or her/she. Most references were to the \"user\" rather than an actual person. While this is not an offense, I recommend using actual user names that can then infer cultural inclusiveness.","overall_rating":10,"overall_review":"I like the flow of the material and code examples. If a student wanted to use this text, she could easily install and use Python 2. However, the slight changes between versions 2 and 3 might frustrate the student as they subsequently move to the newer version. On the other hand, this is a great opportunity to learn troubleshooting and experience what programmers in the \"real world\" experience way too often as versions and systems change regularly.","created_at":"2018-05-21T19:00:00.000-05:00","updated_at":"2018-05-21T19:00:00.000-05:00"},{"id":4708,"first_name":"Ning","last_name":"Weng","position":"Professor","institution_name":"Southern Illinois University Carbondale","comprehensiveness_rating":5,"comprehensiveness_review":"I find that the book is quite comprehensive including both the Python language and also important data structures. The Python-specific glossaries are very helpful at the end of each chapter. Also, the Appendixes are essential for those who are new to Python.","accuracy_rating":5,"accuracy_review":"This book sound very accurate to me, partly due to the fact that a lot of people have contributed to make it error-free.","relevance_rating":4,"relevance_review":"The book did an excellent job for introducing basic Python concepts. However Python 3 has been released which is incompatible with the 2.4 on which this version of the book is based.  I think the authors should be able to update it to a new version with no problem.","clarity_rating":4,"clarity_review":"Overall this book is very easy to follow for me.","consistency_rating":5,"consistency_review":"Both terms, and concepts are consistent through the whole book. Each chapter nicely flows from basic to advanced.","modularity_rating":5,"modularity_review":"The whole book is divided into 20 chapters plus three appendices, which are self-contained and easily accessible for quick reference. The whole book flows naturally from chapter to chapter, which will make it easier for the beginner to progress.","organization_rating":5,"organization_review":"As my comments in modularity, the book is well organized. The book ends up with some important advanced data structures such as Stacks, Queue and Trees, which are important for Computer Engineering students.","interface_rating":4,"interface_review":"There are no found interface issues. The book consists quite a lot of example snippets code for hands-on experience. As mentioned in Relevance, these snippets code are designed for Python 2.4, which might not be compatible for Python 3.","grammatical_rating":5,"grammatical_review":"I have found no grammatical errors.","cultural_rating":5,"cultural_review":"It is about programming language. No cultural issues.","overall_rating":9,"overall_review":"I will use this book for the required reference book for my classes including Computer Network and Computer Security. In Network class, Python has been used for network socket programming. In Security classes, Python has been adopted as main script language for small tasks such as attack payload construction.  This book will help my electrical engineering students who do not have a strong programming experience as computer engineering students do, but are interested to take my Computer Network class and Computer Security class.","created_at":"2021-03-25T22:33:16.000-05:00","updated_at":"2021-03-25T22:33:16.000-05:00"},{"id":34193,"first_name":"Isaac","last_name":"Wang","position":"Assistant Professor","institution_name":"James Madison University","comprehensiveness_rating":4,"comprehensiveness_review":"This book is fairly comprehensive, touching on all the major topics of introductory Computer Science and the specifics of the Python language. Each chapter introduces relevant CS terms and provides a helpful glossary at the end of the chapter. However, some sections offered only a cursory glance and are missing important topics (e.g., order of operations is not fully explained for Boolean operations, list operations are light and do not include valuable methods such as .append). But overall, the book is sufficient as a companion to a course, but not particularly as a reference or independent way of learning.","accuracy_rating":5,"accuracy_review":"While reading, I did not notice any errors or biases in the content. The code examples provided look correct and the actual source code for all examples used in the book are provided, so they can be easily tested for accuracy.","relevance_rating":5,"relevance_review":"The content is excellent in this regard. The concepts and terminology used are fairly universal to Computer Science and not Python-specific. In addition, the source files for both the manuscript and code examples are provided for easier collaboration and remixing. One critique I have is that the LaTeX source for the book is contained entirely in one file, making it difficult to isolate specific sections for reuse.","clarity_rating":5,"clarity_review":"This book is written in a conversational tone, without being informal, which is hard to find in a textbook. The language used is accessible, technical terms are clearly introduced and used only when needed to explain concepts. The use of code examples help to illustrate the points made in the text and show readers what is happening, instead of just telling them.","consistency_rating":5,"consistency_review":"The text properly uses the terms it introduces (which are highlighted in bold upon first occurrence, and also re-defined in each glossary section). These terms are continually used in the following chapters. Readers should have no issue searching through the index and glossaries either if they need to review specific terms.","modularity_rating":4,"modularity_review":"The chapters in the book are designed to be self-contained. For the most part, this held true: most chapters contained all the knowledge you would need to understand a given topic. However, this comes with a major drawback. Oftentimes, a topic would be interspersed throughout chapters (e.g., functions are presented in multiple sections). This makes it difficult if you are teaching one topic and need readings that focus on that topic alone.","organization_rating":3,"organization_review":"This was, in my opinion, the largest weakness of the book. Oftentimes, sections within a chapter would feel out-of-place. For example, the section on recursion is combined with the chapter on conditionals; although conditionals are needed to write recursive functions, the section does not fit the rest of the chapter and is not standalone enough to be considered modular. Keyboard input is also introduced in that same chapter on conditionals.\r\n\r\nThis is a common theme I noticed throughout the book. When topics in a chapter require knowledge of other topics, the book decides to introduce the prerequisite knowledge in an ad-hoc fashion. Sometimes this is even unnecessary, and just confusing (e.g., the modulo operator is introduced with conditionals, as opposed to with the other arithmetic operators, because an example uses it to show alternative execution). The concepts of local variables is introduced with iteration, and random numbers are introduced alongside tuples, which does not make logical sense.","interface_rating":5,"interface_review":"The text reads clearly and is properly formatted to ease with reading. Figures and examples are clearly presented (although more graphical figures could help illustrate concepts such as flow of execution, functions, and string indices).","grammatical_rating":5,"grammatical_review":"I did not encounter any grammatical errors in my review of the book.","cultural_rating":5,"cultural_review":"The text does not contain any offensive language or examples. As a programming book, the text is surprisingly accessible and should be readable regardless of background.","overall_rating":9,"overall_review":"After completing my review, I found an updated version called \"Think Python\". However, upon a cursory readthrough, many of my points (specifically on modularity and organization) still hold.","created_at":"2022-11-26T10:54:31.000-06:00","updated_at":"2022-11-26T10:54:31.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/how-to-think-like-a-computer-scientist-learning-with-python","updated_at":"2025-12-15T02:01:22.000-06:00"},{"id":82,"title":"Physical Modeling in MATLAB","edition_statement":"Version 4.0","volume":null,"copyright_year":2021,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"Modeling and simulation are powerful tools for explaining the world, making predictions, designing things that work, and making them work better. Learning to use these tools can be difficult; this book is my attempt to make the experience as enjoyable and productive as possible. By reading this book — and working on the exercises — you will learn some programming, some modeling, and some simulation: With basic programming skills, you can create models for a wide range of physical systems. My goal is to help you develop these skills in a way you can apply immediately to real-world problems. This book presents the entire modeling process, including model selection, analysis, simulation, and validation. I explain this process in Chapter 1, and there are examples throughout the book. Simulation is an approach to modeling that uses computer programs to implement models and generate predictions. This book shows how simulations are used to run experiments, answer questions, and guide decision-making.","contributors":[{"id":3776,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Allen","middle_name":null,"last_name":"Downey","location":"Franklin W. Olin College of Engineering","background_text":"Allen Downey is an American computer scientist, Professor of Computer Science at the Franklin W. Olin College of Engineering and writer of free textbooks. Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997. He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"}],"publishers":[{"id":35,"url":"https://greenteapress.com/wp/","year":null,"created_at":"2018-09-07T12:22:36.000-05:00","updated_at":"2023-11-01T15:07:02.000-05:00","name":"Green Tea Press"}],"formats":[{"id":49,"type":"PDF","url":"https://greenteapress.com/wp/physical-modeling-in-matlab/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":50,"type":"Hardcopy","url":"https://www.amazon.com/gp/product/0615185509?ie=UTF8\u0026tag=greenteapre01-20\u0026linkCode=as2\u0026camp=1789\u0026creative=9325\u0026creativeASIN=0615185509","price":{"cents":1780,"currency_iso":"USD"},"isbn":null},{"id":1962,"type":"LaTeX","url":"https://github.com/AllenDowney/PhysicalModelingInMatlab","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":9,"reviews":[{"id":535,"first_name":"Katie","last_name":"Sheldon","position":"Adjunct Professor","institution_name":"Central Oregon Community College","comprehensiveness_rating":5,"comprehensiveness_review":"This book covers introductory programming with MATLAB in a methodical manner.  This textbook was perfect for students who did not have a programming background.  The text did a nice job summarizing chapters and explaining terms and methods in a non-programming language.  Perfect for my introductory course.","accuracy_rating":4,"accuracy_review":"I used this textbook in conjunction with FreeMAT, the free version of MATLAB.  There were a few functions that did not translate into FreeMAT.  This was a unique situation for the free version of MATLAB.  Other than that, the textbook was well-written and error-free.","relevance_rating":5,"relevance_review":"The chapters in this textbook are well-organized and up-to-date.  The organization of the chapters would make updating or adding features without adding clutter relatively easy.","clarity_rating":5,"clarity_review":"This was the most clear MATLAB textbook that I found for an introductory course.  The textbook combined a nice balance of technical programming language with detailed explanations and summaries in language accessible to a first-time programmer.","consistency_rating":5,"consistency_review":"This textbook is consistent in terminology and organization.  Each chapter follows a similar format and is easy to follow.","modularity_rating":5,"modularity_review":"Each section does not have large blocks of text.  Rather, the text provides a nice balance of example scripts and code with explanations and reasoning behind each method.  My students seemed to find the mid-text examples a beneficial addition to each section.  No one section was too lengthy.  Easy to follow and well-labeled.","organization_rating":4,"organization_review":"I found the lack of plotting methods to be the biggest downfall of this text.  I ended up including my own section on plotting capabilities.  All included sections were very thorough and easy to follow.","interface_rating":5,"interface_review":"The textbook is free of significant interface issues.  The online version is very easy to navigate with direct links to chapters.  There are minimal image distortions.","grammatical_rating":5,"grammatical_review":"I did not find any grammatical errors in the text.","cultural_rating":5,"cultural_review":"This text is not culturally insensitive or offensive in any way.  There were not any examples that I came across that have any racial or ethnic background references.","overall_rating":10,"overall_review":"This textbook was very easy to follow for my students in an introductory MATLAB course.  I would have liked to see a section on plotting capabilities, but other than that, it was a wonderful text!","created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":578,"first_name":"Andrew","last_name":"Paluch","position":"Assistant Professor","institution_name":"Miami University","comprehensiveness_rating":5,"comprehensiveness_review":"I currently teach a sophomore-level introduction to MATLAB and numerical methods course for chemical engineers. This text is perfect, and I plan to use it in place of a traditional textbook. \n\nMathWorks has a large number of very good MATLAB resources available online, which range from readings, to video tutorials, and example files. While these resources are excellent, I still find a I need a course text guide the student (who is new to MATLAB) through the course. For this purpose, the text is an excellent fit. It contains just the right amount of detail and is structured perfectly for my course. The basic coverage is exactly what I would hope to cover in 1 semester. The text assumes knowledge of calculus plus differential equations, with no programming experience, which is perfect for my class.\n\nWhere the text is lacking, which I actually think is a good thing, is on the examples and end of chapter problems. I say this is good, because it is something the instructor can readily create and use as a opportunity to customize the text for their field of study. Likewise, compared to other MATLAB texts I have used in the past, it lacks mathematical content. Again, I think this is a good thing. The author assumes knowledge of calculus and differential equations. (Both are pre-requisites for my course.) If the student needs review or help in these areas, they can refer to their course notes/text book, and I can help fill in gaps during class and recitation. But by omitting this material from the text, it becomes a much better resource for my students that like to quickly read through the material.","accuracy_rating":5,"accuracy_review":"Great! The material is current and up-to-date. I would also add that the text would also be appropriate to introduce students to GNU Octave (an open-source MATLAB alternative). This has happened to me while teaching abroad.","relevance_rating":5,"relevance_review":"The text is currently up to date, and I believe it is written in a way that it can easily be maintained for many years to come. The only material that can become outdated are the examples (and example i/o). By teaching and working through the book, any problems can readily be identified and fixed as needed.","clarity_rating":5,"clarity_review":"The text is very clear. The author writes very informally, which I appreciate. I feel as if I am being taught by a friend at just the right level.","consistency_rating":5,"consistency_review":"Yes, the text is very consistent. At the end of each chapter, the author summarizes the new vocabulary terms from the chapter. This builds through the book. The text reads very smoothly.","modularity_rating":3,"modularity_review":"The text is very well structure for a course of study. The chapters, and text as a whole, are a very nice length. They allow the students to spend less time reading and more time doing. In terms of modularity, for my course I would work through the text as is. My students have no prior MATLAB or programming experience. With a more advance background, the some of the earlier chapters could be skipped.","organization_rating":5,"organization_review":"Great! For a student new to MATLAB and programming, the pace and structure is great.","interface_rating":5,"interface_review":"Great! The website provides a PDF and an online version, in addition to a link to purchase a printed copy on Amazon. When I download the provided PDF it is not hyperlinked. However, the LaTex source is also available and allows for customization and hyperlinking, and you can even create a version for an e-reader. This additionally allows one to created a customized version for their course.","grammatical_rating":5,"grammatical_review":"The book is well written, and the author has done a great job editing.","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive in any way. It is a math/science book, so I do not believe this is relevant.","overall_rating":10,"overall_review":"Great text! I would also comment that the author has written many other very good, non-open source computer science texts. The availability of this text at no cost is absolutely wonderful.","created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":617,"first_name":"Curtis","last_name":"Lipski","position":"Part Time Instructor- Engineering","institution_name":"Portland Community College","comprehensiveness_rating":4,"comprehensiveness_review":"Physical Modeling for MATLAB is a text book that would provide a great reference text book for our Electrical Circuits series courses (three courses) where MATLAB is used in the laboratory portion of the course. The text provides all the areas of subject matter as described in the table of contents from basic programming syntax, scripting, looping, plotting, to vectors, functions and higher order physical and engineering equations pertaining to real problem solving situations. \nThe text shows several examples throughout the book on usage for the particular subject matter in each chapter. Examples are helpful for both the instructor and students as the explore the different function and code samples. Each example provides strong explanations on how the code works. \n\nThis text would be a great text for the elrctrical cicuits courses and I plan to utilize them in an upcoming course.","accuracy_rating":4,"accuracy_review":"The information in the text is highly accurate to provide necessary information on code usage and code explanations. The text also has a list of errata giving credit to othre people who found issues or errors in the text.","relevance_rating":5,"relevance_review":"The text is advanced in nature containing the most up to date information for the use of MATLAB. The text is only two years old, so the material is up to date.","clarity_rating":4,"clarity_review":"The text is written in higher level terms which is particularly useful for the targeted audience for this text. The text is clear in its statements and show by example approach.","consistency_rating":4,"consistency_review":"The text follows a consistent pattern for each chapter and an overall framework for the text. Each chapter topic is defined and then provided with syntax explanations, examples, usage, and related information necessary to follow along the topic.","modularity_rating":4,"modularity_review":"Th text is broken down by MATLAB topics making it asy for the student to relate. Within each chapter, a definition of the topic is created followed by an explanation of the topic code usage and examples.","organization_rating":4,"organization_review":"this text is definitely written in a clear logical fashipn starting with simple code blocks and builds to more  complex structures.","interface_rating":4,"interface_review":"the interface to this text is concise and easy to follow","grammatical_rating":4,"grammatical_review":"The grammar in this text is correct and written with the student in mind.","cultural_rating":4,"cultural_review":"There is no cultural sensitivity for this text. As a technical text it is written universally with the whole idea of making the information in its own understand by everyone.","overall_rating":8,"overall_review":"I plan to use this text next year for the Electrical Circuits Series courses at Portland Community College. This will enable to students to focus on what is important in particular with the laboratory experiments as to what code and approach to use.","created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":999,"first_name":"Anathea","last_name":"Pepperl","position":"Assistant Professor","institution_name":"Virginia Commonwealth University","comprehensiveness_rating":4,"comprehensiveness_review":"The text covers introductory programming appropriately and is an excellent resource for students with no programming background.  The author tends to focus on an application and using programming methods to make the job of the programmer easier.  While this can be a great tool for a beginner, it can make the organization of the book difficult.  There were times when I was concerned that the author introduced a fundamental concept quite late in the book.  For example, if statements are covered in Chapter 4: Vectors, which did not seem to be an intuitive place for me to find this content.  There were also times when the author glossed over the function of a bit of code, opting instead that it follow the correct form.  For example, when talking about the MATLAB differential equation solver, the author did not include to much detail into the role of a function handle.  However, the author talked about potential problems associated with the function handle (here, it must be an anonymous function), focusing solely on the syntax of the code.","accuracy_rating":5,"accuracy_review":"The content of the book is accurate and unbiased.","relevance_rating":5,"relevance_review":"The content is up-to-date.  Furthermore, it looks like the text is arranged in such a way that updates to the code would be relatively straightforward to implement.","clarity_rating":5,"clarity_review":"The author writes in a very informal voice, which makes the text much more readable and accessible to the beginning programmer.  I appreciate that technical terminology is summarized in the Glossary, found at the end of each chapter.","consistency_rating":5,"consistency_review":"The text is internally consistent in its use of terminology.  I also appreciate the consistency of each chapter, with a Glossary of terms and supporting Exercises at the end of each chapter.","modularity_rating":2,"modularity_review":"The book would really serve students well if they were to read the text in its entirety in the order in which it is presented.  The later chapters are rather long and difficult to break up into smaller sections, as each subsection often relies on a previous subsection.","organization_rating":5,"organization_review":"The author generally presents each topic as a solution to a problem from a previous implementation, so there is a clear application of the programming method being discussed.  My only concern is that students may not generalize the uses of the programming method, focusing only on the way it is implemented.","interface_rating":4,"interface_review":"On the online version, the border demarcating an equation was distracting.  However, the author did a good job of making sure that the code was distinct from the rest of the text.","grammatical_rating":5,"grammatical_review":"The text was free of grammatical errors.","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive in any way.","overall_rating":9,"overall_review":"I would consider using this book in my Computational Methods course.  My only concern is that this book's organization is a bit different from the way my course is currently laid out and I don't think the book is particularly modular.","created_at":"2017-02-08T18:00:00.000-06:00","updated_at":"2017-02-08T18:00:00.000-06:00"},{"id":1198,"first_name":"Sanichiro","last_name":"Yoshida","position":"Professor","institution_name":"Southeastern Louisiana University","comprehensiveness_rating":4,"comprehensiveness_review":"This book covers the fundamentals of MATLAB essential for beginners to conduct numerical analysis. It is user friendly and easy to use. It would be great if this book has sections to explain file input/output, file formatting, handling graphs and a little more depth in physical modeling from the physical viewpoint. The modeling part discusses mainly how to solve differential equations focusing on the integration of the function. It could use other typical problems such as wave equations, state-space representation and analysis, etc (it is unfortunate that Chapter 12 has a short description about “State Vectors” but it does not elaborate on their usage or examples).","accuracy_rating":4,"accuracy_review":"I do not found any error in this book. Chapters are mostly written concisely and accurately. I found one minor error: “For example, if we know that f(0) = 5 billion cells, then we can write f(0) = 5 =b e^a0 (Near the end of section 8.1.)","relevance_rating":5,"relevance_review":"This book can be used as a quick guide to check the syntax and usage of MATLAB commands/statement when writing a script, or as a reference to understand various concepts of mathematical operations handled by MATLAB. I have been using MATLAB over 15 years but found some new features of MATLAB in this book.","clarity_rating":5,"clarity_review":"This book explains basics of MATLAB clearly. I recommend my students to refer to this book before reading any MATLAB reference manuals. Each concept of MALAB is concisely described in a logical way.","consistency_rating":4,"consistency_review":"Most chapters are written in the same format. This makes easy to find the part in a chapter that is relevant to a given problem to solve. The glossary section at the end of chapter is concise and helpful.  The chapters for Physical Modeling could be in a bit more detail.","modularity_rating":5,"modularity_review":"Most chapters are written in the right length and depth. Chapter 8 could go a bit deeper in the physical content. The chapter is very good from the practical point of view.","organization_rating":4,"organization_review":"The entire book could be divided into two parts; part 1 for MATLAB usage and part 2 for Physical Modeling. Part 2 could be elaborated.\n\n“7.2 Physical modeling” does not fit to the flow. Physical modeling could be a stand-alone section and be beefed up. \n\nSections “12.1 What is a vector?”, “12.2 Dot and cross products”, and “12.4  Animation” provide general topics and comments on vectors. These sections could be included in Chapter 4 “Vectors”. \n\nSection “12.6 What is a model for?” could be at the beginning of modeling (Chapter 8).","interface_rating":5,"interface_review":"I do not find any interface related issue.","grammatical_rating":5,"grammatical_review":"I do not find any grammatical error.","cultural_rating":5,"cultural_review":"I do not find culturally any insensitive or offensive element in this book.","overall_rating":9,"overall_review":"Overall, this book is very helpful to our students. I am planning to use this book in our “Computational Methods in Physics” course in the next fall semester.  I also encourage my research students to read this book as a reference guide.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":1277,"first_name":"Mohammad","last_name":"Saadeh","position":"Associate Professor","institution_name":"Southeastern Louisiana University","comprehensiveness_rating":5,"comprehensiveness_review":"The text covers the major topics that a typical MATLAB course should contain. The glossary section in each chapter provides a powerful tool for the student to recap the chapter and identify the concepts again","accuracy_rating":5,"accuracy_review":"Content is accurate and the text is error free.","relevance_rating":5,"relevance_review":"The content is up -to-date. The general body of the software has had subtle changes over the years, thus it is highly unlikely that this material and narration will be obsolete any time soon, Thus, if new edits or updates are to appear in the future, it would be easy to include them in the text","clarity_rating":5,"clarity_review":"The authors use simple language with as possible layman terms as the text/topic allows. When jargon are used, the authors typically elaborate on them.","consistency_rating":5,"consistency_review":"The text is consistent, headlines are consistent with the text accompanying them. Both terminology and framework are consistent","modularity_rating":5,"modularity_review":"The text is divided into many subheadings that target multiple ideas under each chapter. The text under each section is of reasonable size for the students to follow.  \nIn particular, I think the error's sections in the first four chapters are of great importance. Students typically run into several types of errors (syntax, run-time, logical, etc), and these sections work pro-actively by simulating usual mistakes encountered by students.","organization_rating":3,"organization_review":"I think that vectors' chapter (Chapter 4) would be better swapped with the Loops chapter (Chapter 3). Loops require knowledge of vectors and indexing prior to start using them. In addition, the text lacks multiple exercise opportunities for the students to practice their understanding. I would suggest adding more exercises to each chapter.","interface_rating":5,"interface_review":"No interface issues were noticed","grammatical_rating":5,"grammatical_review":"I didn't find any grammatical errors in the text","cultural_rating":5,"cultural_review":"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.","overall_rating":10,"overall_review":"The course provides a reference for students to start using MATLAB. It gradually builds on knowledge that was presented in the earlier sections and chapters. It might need a re-arrangement of sections and the inclusion of additional practice problems, but overall it is a very good resource for MATLAB","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":2349,"first_name":"Caizhi","last_name":"Zhou","position":"Assistant Professor","institution_name":"Missouri University of Science and Technology","comprehensiveness_rating":4,"comprehensiveness_review":"This book contains the most basic function and operations in Matlab for physical modeling and calculations.","accuracy_rating":4,"accuracy_review":"The physical modeling part is not very comprehensive. More 3D model and plots are needed.","relevance_rating":5,"relevance_review":"The contents of the book are more relevant to the introduction to Matlab, than physical modeling.","clarity_rating":5,"clarity_review":"The clarity is very clear and concise.","consistency_rating":5,"consistency_review":"The terminology is consistent in this book.","modularity_rating":3,"modularity_review":"The modularity of this book is not very good. Different chapters cannot be separated and recombined.","organization_rating":5,"organization_review":"The logical of the topics is clear and understandable.","interface_rating":4,"interface_review":"The number of figures in this book is small. More 3D colorful figures may be useful for attracting students.","grammatical_rating":5,"grammatical_review":"There are no obvious grammatical errors.","cultural_rating":5,"cultural_review":"The contents of this book are culturally insensitive.","overall_rating":9,"overall_review":"Numerical interpolation, extrapolation and fitting of data should be included in this book, as it is for the physical modeling.","created_at":"2018-10-30T23:36:01.000-05:00","updated_at":"2018-10-30T23:36:01.000-05:00"},{"id":3192,"first_name":"Aaron","last_name":"Coyner","position":"Associate Professor of Physics","institution_name":"Southwestern Oregon Community College","comprehensiveness_rating":4,"comprehensiveness_review":"This text provides a solid introduction to MATLAB programming and solving pertinent physical or engineering problems using the software. The concepts covered are in my view ideal for an introductory engineering course in MATLAB. The concepts discussed are easily adapted into multiple engineering fields so this text could become a handy reference beyond the class initially intended.","accuracy_rating":5,"accuracy_review":"Text is accurate and previously found mistakes are included in a provided errata.","relevance_rating":4,"relevance_review":"The code and programming statements are up to date. The text is written in a manner that updating for subsequent versions of MATLAB will not detract from the overall quality or effectiveness of the text as a guide.","clarity_rating":4,"clarity_review":"I have used or previewed a number of texts for my Introduction to Engineering Computation course. I believe this one has the best chance of connecting with my students, the majority of which are novice programmers who likely have no prior MATLAB experience.","consistency_rating":5,"consistency_review":"This book uses a consistent tone and pattern throughout which I believe will help students to first understands the concepts and then build into the applications. ","modularity_rating":5,"modularity_review":"The text is organized into manageable conceptual blocks. The sequence of organization is consistent with an introductory MATLAB course or a MATLAB handbook. The chapters could relatively easily be rearranged to change the topic of focus more quickly for other classes if desired.","organization_rating":5,"organization_review":"This book's organization is a strong point to me. I like starting with the concept of MATLAB as a glorified calculator and then step by step addressing its more expansive and powerful features, This allows, in my view, the students to form needed foundations before being thrown into the deep end of complex programming and numerical analysis.","interface_rating":4,"interface_review":"My one drawback with the book's interface is in sections early on where plotting is discussed. Images of the plots in questions and the plotting process could be more frequent. Otherwise the content is presented in a very useful and accessible manner.","grammatical_rating":5,"grammatical_review":"There are no noticeable errors, and the text is easy to follow.","cultural_rating":5,"cultural_review":"The text is written in an unbiased way and make no references which may be considered culturally insensitive.","overall_rating":9,"overall_review":null,"created_at":"2019-10-18T16:22:39.000-05:00","updated_at":"2019-10-18T16:22:39.000-05:00"},{"id":4027,"first_name":"Diane","last_name":"DiMassa","position":"Professor","institution_name":"Massachusetts Maritime Academy","comprehensiveness_rating":5,"comprehensiveness_review":"This book is intended for students who have never programmed before. It assumes some knowledge of basic physics, calculus, and differential equations.  The text focuses on programming and MATLAB and does not review the mathematics. It is well-suited for a sophomore level programming class for engineers. At the end of each chapter is a glossary - this is great for students to review key vocabulary.  The index includes many of the commonly used built-in functions. Where I believe the text lacks is in the number of exercises at the end of each chapter. My experience is that the more variety of problems students can do, and the more examples of code that they see, the better. I prefer many exercises to ensure the fundamental functionality and then a few more complex exercises that require students to put pieces together. Regardless, this is a very good text.","accuracy_rating":5,"accuracy_review":"The text is accurate and unbiased.","relevance_rating":5,"relevance_review":"As the book is an introductory text and the subject is a programming language, the content is up-to-date and likely to stay relevant for considerable time. New features of MATLAB are likely to be more advanced than what this book is intended to cover. The text is well-organized and updates should be easy to implement.","clarity_rating":5,"clarity_review":"This book is very well-written in casual but not over-friendly prose. It is professional yet comfortable which I think is great for students in an introductory class of any kind. Explanations are concise but clear. Terminology is explained well, and the glossary at the end of the chapter reinforces the key vocabulary. Example code is offset.highlighted for clarity as well.","consistency_rating":5,"consistency_review":"The structure of each chapter is consistent and the explanations are consistent between topics. It is obvious that considerable time was spent to ensure a logical presentation of the material.","modularity_rating":3,"modularity_review":"The text is designed to present material in a specific order. If you like the order the text is great. If you prefer to teach topics in a different order, it is not as flexible. The topic is programming and the point is to progress through more and more capabilities and solve more and more complex problems building on what was learned before. Later sections assume techniques were learned earlier so in that sense the text is not very modular. However, is you like the order that the material is presented, it is modular in the sense that chunks can be used to focus on a concept clearly and concisely.","organization_rating":4,"organization_review":"Two of the greatest strengths of MATLAB are its simplified syntax and its ability to handle vectors and matrices so easily. For this reason I would prefer introducing vectors and indexing prior to presenting loops and plotting. When topics are presented they are done so clearly.","interface_rating":5,"interface_review":"There is both a PDF version and LaTex version with hyperlinking on github.","grammatical_rating":5,"grammatical_review":"Well written.","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive in any way; it is an objective text on programming.","overall_rating":9,"overall_review":"Well done.  Really like the github accessibility. Will definitely incorporate into my course.","created_at":"2020-06-22T09:32:51.000-05:00","updated_at":"2020-06-22T09:32:51.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/physical-modeling-in-matlab","updated_at":"2025-12-15T02:01:24.000-06:00"},{"id":83,"title":"The Little Book of Semaphores","edition_statement":null,"volume":null,"copyright_year":2016,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming. In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including \"Readers-writers,\" \"Producer-consumer\", and \"Dining Philosophers.\" In addition, it collects a number of not-so-classical problems, some written by the author and some by other teachers and textbook writers. Readers are invited to create and submit new problems.","contributors":[{"id":3801,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Allen","middle_name":"B.","last_name":"Downey","location":"Franklin W. Olin College of Engineering","background_text":"Allen B. Downey is an American computer scientist, Professor of Computer Science at the Franklin W. Olin College of Engineering and writer of free textbooks. Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997. He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"}],"publishers":[{"id":46,"url":"http://www.greenteapress.com/semaphores/index.html","year":null,"created_at":"2018-09-07T12:22:36.000-05:00","updated_at":"2018-09-07T12:22:36.000-05:00","name":"Green Tea Press"}],"formats":[{"id":343,"type":"PDF","url":"https://greenteapress.com/wp/semaphores/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1963,"type":"LaTeX","url":"https://github.com/AllenDowney/LittleBookOfSemaphores","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":3,"reviews":[{"id":362,"first_name":"Mukul","last_name":"Goyal","position":"Associate Professor","institution_name":"University of Wisconsin Milwaukee","comprehensiveness_rating":3,"comprehensiveness_review":"This little gem of a book is an excellent introduction to semaphores and their use in synchronization/concurrency control. The book discusses a large number of concurrency control problems both simple and hard. The book is quite comprehensive in terms of the range of concurrency control problems it covers. For each problem, the book walks the reader through a number of solutions including non-solutions that might lead to deadlocks or starvation. Each solution is very nicely described.\n\nThe book does not talk much about the basic mechanisms used to achieve mutual exclusion (such as interrupt disabling, test-and-set instruction, algorithms such as Peterson's algorithm). There is no separate treatment of deadlocks (and deadlock detection/avoidance/prevention strategies) beyond what is covered in the discussion of solutions to various concurrency control problems.","accuracy_rating":5,"accuracy_review":"The content is accurate and very reader friendly.","relevance_rating":5,"relevance_review":"Concurrency control as a topic is unlikely to become obsolete in foreseeable future. All undergraduate level courses in Operating Systems devote a significant portion of class time to the concurrency control discussion. The book is an excellent textbook for use in this discussion and will stay useful for many many years.","clarity_rating":5,"clarity_review":"The book is very well written. Very easy to read.","consistency_rating":5,"consistency_review":"The book is consistent in terms of the terminology used.","modularity_rating":5,"modularity_review":"The book is highly modular.","organization_rating":5,"organization_review":"The book is very well structured. Various chapters follow a logical order.","interface_rating":5,"interface_review":"The book is formatted in a manner that makes it easy for the instructor to use the book pages as class handouts, which is nice.","grammatical_rating":5,"grammatical_review":"There are no grammatical errors.","cultural_rating":5,"cultural_review":"There is no culturally insensitive or offensive content in this book.","overall_rating":10,"overall_review":"Very valuable contribution to the field.","created_at":"2016-01-07T18:00:00.000-06:00","updated_at":"2016-01-07T18:00:00.000-06:00"},{"id":1724,"first_name":"Ray","last_name":"Kresman","position":"Professor","institution_name":"Bowling Green State University","comprehensiveness_rating":5,"comprehensiveness_review":"The book certainly stays true to its title. Scope of semaphores is discussed in a comprehensive manner; begins with a gentle, but motivational introduction, and covers known and less well-known synchronization problems, and also introduces new problems that can perk up students’/instructor’s curiosity. Nicely rounds up the discussion with coding techniques for popular languages such as Python and C. \n\nAdditionally the book is comprehensive because the author is on the money in not only noting that synchronization takes lots of practice to get it right, but in providing a variety of motivational examples and puzzles (for students to solve) to help reinforce students’ comprehension of this rather difficult topic!","accuracy_rating":4,"accuracy_review":"Both synchronization primitives and solution strategies are accurately described.","relevance_rating":4,"relevance_review":"Semaphores have been a major part of Operating Systems literature for over 5 decades; while I don’t have a crystal ball, since the book addresses this issue in an extensive manner, it (the book) is likely to remain relevant for the foreseeable feature. \n\nI also feel that the code snippets in the book can be easily tried out in class or lab with no to minimal modification. The book's organization also permits incremental addition of (future) content. ","clarity_rating":5,"clarity_review":"The writing style is certainly engaging and is likely to be a draw for the student! Problems and solution strategies are introduced in a progressive manner so the reader can easily and clearly follow the information being conveyed. ","consistency_rating":5,"consistency_review":"The book adopts simple-to-follow notation and is consistent in its use throughout the text. The notation/pseudo-code has a more natural-language feel that is likely to appeal to the reader.","modularity_rating":4,"modularity_review":"Information is compartmentalized into modules that are small and manageable. And, there is a nice cohesion b/w adjacent modules (chapters). The chapters are also fairly self-contained, and permits one with a bit of familiarity, to jump to specific chapters.","organization_rating":4,"organization_review":"Organization is just fine and the book reads well as information is supplied on an as-needed basis.","interface_rating":5,"interface_review":"The book has minimal to no interface issues. In fact, the layout of the material is pretty clever and handles pagination issues rather nicely; puzzles are presented throughout the text, and information for each puzzle is contained in one page with (blank) space on that page for the reader to solve the puzzle – should one be stumped, (more) hints are found on a subsequent page, with space for another crack at solving the problem. ","grammatical_rating":4,"grammatical_review":"The book is well-written with no apparent grammatical issues.","cultural_rating":4,"cultural_review":"The content and language is culture-neutral and should appeal to folks from any culture.","overall_rating":9,"overall_review":"Couple of observations: while the title is fine, one wonders if synchronization could have been part of the title – the word, ‘synchronization,’ has wider appeal, and the book is pretty much focused on synchronization; an appendix on pthread availability for Visual C++ would be a nice addition – just indicate that pthread is available for Visual C++, and perhaps provide an example of its application (in Visual C++); the amount of class time one can spend on semaphores is no more than a couple of weeks, and I concur with the author that (while semaphores is an important topic) many topics compete for attention in an Operating Systems class – in other words, it may not be possible to cover some of the chapters in the text","created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":2009,"first_name":"Shaikh","last_name":"Arifuzzaman","position":"Assistant Professor","institution_name":"University of New Orleans","comprehensiveness_rating":5,"comprehensiveness_review":"The book discusses the concept of semaphores comprehensively. It covers many interesting classical problems and their variants. Avid readers will surely enjoy reading and thinking about those problems. The book also discusses how to implement synchronization primitives with popular programming languages.","accuracy_rating":5,"accuracy_review":"The book accurately presents information on the pertinent topics.","relevance_rating":4,"relevance_review":"Semaphore is a classical concept in operating systems. The book is relevant for any operating system class.","clarity_rating":4,"clarity_review":"The book is well written. The discussion is fluid and easy to follow.","consistency_rating":5,"consistency_review":"The book is consistent in terms of terminology and framework. ","modularity_rating":5,"modularity_review":"The book is divided into chapters that are easy to read and follow. The overall organization is effective. The sections and paragraphs follow modular approach.","organization_rating":5,"organization_review":"The book presents the concepts in a logical and lucid way. It is a good reference for synchronization primitives in operating system.","interface_rating":3,"interface_review":"The overall interface is good. However, there are page breaks (blank pages) and short lines (line breaks) that seem distractive to me. Margins are excessive at times. These aspects could be improved.","grammatical_rating":5,"grammatical_review":"The book is free from any apparent grammatical errors.","cultural_rating":5,"cultural_review":"The book is culture-neutral.","overall_rating":9,"overall_review":"The title of the book could be changed to something more expressive and popular. The book comprehensively covers synchronization primitives and classical problems related to these. This is definitely an important part of operating system literature. I think the book can be used as a supporting textbook for operating system class. ","created_at":"2018-05-21T19:00:00.000-05:00","updated_at":"2018-05-21T19:00:00.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/the-little-book-of-semaphores","updated_at":"2025-12-15T02:01:59.000-06:00"},{"id":144,"title":"Programming Fundamentals - A Modular Structured Approach using C++","edition_statement":null,"volume":null,"copyright_year":2013,"isbn10":null,"isbn13":null,"license":"Attribution","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"Programming Fundamentals - A Modular Structured Approach using C++ is written by Kenneth Leroy Busbee, a faculty member at Houston Community College in Houston, Texas. The materials used in this textbook/collection were developed by the author and others as independent modules for publication within the Connexions environment. Programming fundamentals are often divided into three college courses: Modular/Structured, Object Oriented and Data Structures. This textbook/collection covers the first of those three courses. The learning modules of this textbook/collection were written as standalone modules. Students using a collection of modules as a textbook will usually view it contents by reading the modules sequentially as presented by the author of the collection. The learning modules of this textbook/collection were, for the most part, written without consideration of a speci??c programming language. In many cases the C++ language is discussed as part of the explanation of the concept. Often the examples used for C++ are exactly the same for the Java programming language. However, some modules were written speci??cally for the C++ programming language. This could not beavoided as the C++ language is used in conjunction with this textbook/collection by the author in teaching college courses.","contributors":[{"id":3164,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Kenneth","middle_name":"Leroy","last_name":"Busbee","location":"Houston Community College","background_text":"Kenneth Leroy Busbee, M.Acc. (Master of Accountancy), Brigham Young University. Teaches programming topics including courses in COBOL, main frame IBM assembly, Intel assembly, Pascal, \"C\" and \"C++\"; Business Computer Applications; Principles of Accounting."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"},{"id":59,"name":"Programming Languages","parent_subject_id":3,"call_number":"QA76","visible_textbooks_count":26,"url":"https://staging.open.umn.edu/opentextbooks/subjects/programming-languages"}],"publishers":[{"id":250,"url":"http://cnx.org/content/col10621/latest/","year":null,"created_at":"2018-09-07T12:22:38.000-05:00","updated_at":"2018-09-07T12:22:38.000-05:00","name":"OpenStax CNX"}],"formats":[{"id":520,"type":"PDF","url":"http://cnx.org/contents/MDgA8wfz@22.2:YzfkjC2r@17/Preface","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":521,"type":"Online","url":"http://cnx.org/contents/MDgA8wfz@22.2:YzfkjC2r@17/Preface","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4","textbook_reviews_count":9,"reviews":[{"id":954,"first_name":"David","last_name":"McPherson","position":"Instructor","institution_name":"Virginia Tech","comprehensiveness_rating":4,"comprehensiveness_review":"The book covers all the major topics of C++ up to the C++98 standard.  It does have a nice index and table of contents that allows you to find a topic quickly and move to the module quickly.  I did not see a glossary.","accuracy_rating":4,"accuracy_review":"The book is accurate, albeit dated.  ","relevance_rating":2,"relevance_review":"The content is dated and this is one of the major drawbacks.  I teach in an older style and I was glad to see that it showed an older model; however it hasn't been updated in a while.  The online version was published in 2013, but I think the original was published in the late 90s.  I was looking for the copyright date, but I couldn't find it when I was typing this.  \n\nThe reading list is several editions out of date and the book makes no mention of any of the C++11 or C++14 standards.  The changes made to C++ in those standard changes really need to be included in a modern C++ text or it is seriously out of date.","clarity_rating":5,"clarity_review":"I like the book's writing style and I find it very clear.","consistency_rating":5,"consistency_review":"The book is very consistent.  It follows a good style of writing and is easy to follow.","modularity_rating":4,"modularity_review":"The book is modular but it's hard to assign the modules out of order due to the fact that the nature of a programming text will build off previous modules.  This is extremely typical of all programming texts.  ","organization_rating":3,"organization_review":"I disagree with the flow of topics.  I understand why they have chosen to introduce the topics in the way they have but I don't think this is the best way.  I prefer to forestall an in-depth discussion of functions until after loops and selection.  Selection and loops come very late in the topic list in my opinion.","interface_rating":5,"interface_review":"The interface is clean, clear and easy to use.","grammatical_rating":5,"grammatical_review":"The book has very good grammar.","cultural_rating":5,"cultural_review":"The book is not culturally insensitive.","overall_rating":8,"overall_review":"The book is okay.  I don't think I would use this book in my class because there are some major issues with how the examples are developed and the topic flow.  Since the modules are sequential it be too hard to rearrange and keep the content clear to the students.  Also the examples show the use of global variables which, in my opinion, should be avoided and I teach that in my class, so a text that shows examples using global variables would pose a major issue.  \n\nIn general I feel the book needs a major revision to include more modern C++ standards, a topic flow alteration and the removal of global variables in examples.","created_at":"2017-02-08T18:00:00.000-06:00","updated_at":"2017-02-08T18:00:00.000-06:00"},{"id":1419,"first_name":"David","last_name":"Smith","position":"Instructor","institution_name":"Portland Community College","comprehensiveness_rating":4,"comprehensiveness_review":"The book does a good job of covering the first term of a programming class.  It covers the basics of programming but it's not a perfect fit for a one-term only programming class. Some of the topics not covered are: multidimensional arrays and structs,  anything beyond the basic arithmetic operators, output formatting, using library functions for advanced math and bitwise operations.  I agree with the idea of leaving out object oriented programming (classes).  \n\nAlthough every important feature was discussed, I feel like any adopter would want to supplement with more examples.  The book doesn't have much in the way of code tracing examples and additional code examples.  It's not always the best approach for students, but students often solve programming problems by searching for a code fragment that they think solves their problem instead of creating the code fragment by themselves.  I would provide additional code fragment examples.\n\nI also feel like there's not enough emphasis on functions. I think it's fine to introduce functions early but they should be revisited after covering structured programming when students can deal with larger blocks of code and see the benefits of functions.\n\nI feel like introducing recursion to the average student (especially community college students) is not helpful.  So it's fine to have it in there but I wouldn't hesitate to skip it.\n\nThere was no index or end of book glossary although it is searchable (the pdf has an index).  On the other hand, each module has a definitions section.","accuracy_rating":5,"accuracy_review":"The book follows the C++ standard.  I haven't checked every example but I noticed one example that wouldn't compile because it was missing a library include statement.","relevance_rating":4,"relevance_review":"It's not stated which C++ standard is supported although it's obviously C++98.  There have been a few important updates to the standard since the text was written but at this level, I don't think it impacts the material or examples very much, although anyone who adopts the text would need to scrub all the examples and add a section on the changes to the spec.","clarity_rating":5,"clarity_review":"The text is written in a clear style although some of the module titles could be more clear - for example \"program control functions\" and \"Specific Task Functions\" seem obfuscated to me.  Supporting context is at a minimum, which is a choice of style.  Some books surround the code examples with historical context and philosophical context.  This book is about the basics.","consistency_rating":5,"consistency_review":"The structure and style of the text was consistent throughout.  The book follows the form of presenting a text description with pseudocode, then the C++ structure and then one or two example code fragments.  Each major section has a practice programming exercise.","modularity_rating":4,"modularity_review":"I think this question applies better to textbooks from other subjects like history or economics.  The book is modular in the sense that each module is broken down into easy to digest sub modules.   You do have some ability to reorganize the material.  For instance simple functions are introduced very early and you could skip it, cover the material on assignments and structure to get to more complex code and then come back and introduce functions.\n\nHowever, in general it's difficult to reorganize any programming book since examples often depend on concepts and structures introduced in earlier modules.","organization_rating":3,"organization_review":"It's a matter of personal preference but I like to cover functions after structured programming.  It's fine to introduce the idea of calling a function if you use an example that requires a library function but the justification for functions doesn't come until the student has created more complicated code.  Otherwise the flow from data types and operators to selection statements and then to loop statements is fine and pretty standard for any C++ book.  File I/O isn't introduced until late, which might be an issue for some, but it's fine with me.","interface_rating":4,"interface_review":"The HTML works OK as far as the contents and modules.  Each section within the module is one to two pages (depending on your monitor resolution and zoom level).  There aren't many images and charts so there's no issues there.\n\nIt would be nice when I click on the module heading in the HTML version to take me to the start of the module instead of requiring me to expand it and click on a subsection.\n\nThe PDF version uses hard to read and old style fonts that look like old faded computer documentation.  The HTLM version is much more readable","grammatical_rating":5,"grammatical_review":"The grammar is fine.","cultural_rating":5,"cultural_review":"There are no cultural references in the book or even use of specific names.","overall_rating":9,"overall_review":"It's better than some of the other open or free textbooks I've seen out there and is potentially a good alternative to the $100 books.\n\nIf I was to adopt, I would skip over the early introduction to functions and skip the material on recursion and pointers (I think for community college students without calculus it's too much - calculus has nothing to do with pointers but it's the ability to deal with abstraction that's helpful).  I would add a more robust section on functions after the section on structured programming.   I would also add more many more examples and exercises.  Personally I would also add two dimensional arrays because they make a good visual usage case for nested loops.\n\nThe lab exercises are fine but I don't think there are enough of them.  But that's an easy thing to supplement.\n\nI'll use it as a resource in my classes but not make it the sole textbook.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":1719,"first_name":"Winnie","last_name":"Rex","position":"Senior Lecturer","institution_name":"Bowling Green State University","comprehensiveness_rating":5,"comprehensiveness_review":"The text covers the typical content for an introductory programming course in C++ including decisions, loops, functions, arrays and file I/O.  It also has chapters that provide a brief explanation of pointers, object-oriented programming and high-performance computing. An appendix with information about the C++ language, a glossary and an index are also included.","accuracy_rating":5,"accuracy_review":"Textbook examples appear to be accurate and error-free in terms of the C++ language syntax and program format.","relevance_rating":3,"relevance_review":"The content is not up-to-date. Several new standards have been released for C++ (C++11, C++14) since the text was published.  However, the basic fundamental concepts covered in the text are still relevant.","clarity_rating":5,"clarity_review":"The text is written clearly and simply. Explanations of a concept are followed by a list of definitions for the same topic which are stated clearly.  The author's sometimes writes in the first-person (e.g., to tell a humorous story) and uses relatable analogies (e.g., the concept of a flag in programming is related to flags used in car races or flown from pirate ships).   He occasionally introduces color to highlight the relationship between coding lines and the output produced by these lines (p. 207-208).  This visual technique makes the connection easy to follow.","consistency_rating":5,"consistency_review":"The text is very consistent in the organization of the material in each chapter.  Every chapter has similar headings in the same order (e.g., General Discussion, Definitions, Demonstration Program, Exercises, etc.).  A consistent numbering format is used for sections and subsections in each chapter.\n","modularity_rating":4,"modularity_review":"The topics in the text are presented in a logical, clear fashion.  Topics are presented in the typical order for an introductory programming text.","organization_rating":4,"organization_review":"The topics in the text are presented in a logical, clear fashion.  Topics are presented in the typical order for an introductory programming text except that functions are introduced before decisions and loops.  Some may find this preferable while others will not.","interface_rating":5,"interface_review":"Navigation through the text was easy and all text components were clear and easy to read.","grammatical_rating":5,"grammatical_review":"The text is free of grammatical errors but there are occasional spelling errors and typos.","cultural_rating":4,"cultural_review":"The text is mostly free of any cultural references, although there was an occasional example that some might find off-putting or offensive (e.g., p. 177, if gender equals 'F', display \"Are you pregnant?\").  The text is culturally neutral and does not generally make use of examples that would indicate the race, ethnicity or background of a subject.","overall_rating":9,"overall_review":"The author notes that this text was not created to cover the language in detail (e.g., p. 165) but to concentrate on programming fundamentals and concepts and in that he has succeeded.  The book breaks down the introduction to programming topics into small manageable sections (e.g., with separate chapters for each format of the if statement and each type of loop).  However, more depth in the topics presented would be desirable for a college course for Computer Science majors.  Whatever the audience for the textbook, it would need to be supplemented with additional examples, exercises and lab and programming assignments.  The examples and assignments provided in the textbook are very basic.  Later examples do not include much integration of the programming constructs introduced earlier in the text.","created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":1806,"first_name":"Jeffrey","last_name":"Chiampi","position":"Instructor of Computer Science and Mathematics","institution_name":"The Pennsylvania State Univeristy","comprehensiveness_rating":3,"comprehensiveness_review":"The book covers many of the topics I would expect to see in a book for an introductory programming course. It skips multidimensional arrays and structures. Although I wouldn't expect the book to cover the topic extensively it would be nice for it to mention classes. I feel that I would have to supplement this book with additional examples and chapters. C++ 11 and C++ 14 are not mentioned.","accuracy_rating":5,"accuracy_review":"The examples I reviewed appear to be accurate. I did not review every example. ","relevance_rating":5,"relevance_review":"C++ 11 and 14 are not covered. While these additions are not necessary to understand the basics of C++ it would be nice to see them mentioned. They could form their own chapter. Given the nature of C++ a new edition is not necessary on a fast basis. However, it would be nice to see future editions include more examples.","clarity_rating":4,"clarity_review":"The book is easy to follow and introduces terminology in an easy to follow fashion. I would like to see a list of terms after each chapter. ","consistency_rating":5,"consistency_review":"The book follows a consistent patterns. The material in each chapter is presented using the same pattern. Pseudocode, which is absent from some of the textbooks I review, is used throughout the chapters. It is an excellent way to introduce a new programming feature.","modularity_rating":3,"modularity_review":"I prefer to cover material in a different order than this textbook presents it. The examples tend to build off each other making it confusing to cover the material out of order. While this is not a problem unique to this book my current textbook is written in such a way that chapters can be re-ordered without encountering this problem. ","organization_rating":2,"organization_review":"I don't like the way some chapters are organized. If statements are split into chapters titled two way selection and multiway selection. Why not combine them into a chapter called \"decisions structures\", \"making decisions\", or just \"if statements\"? The average undergrad would understand what is in a chapter called \"if statements\" right away while multiway selection is confusing. ","interface_rating":4,"interface_review":"When viewed on my laptop, which has a rather small screen, some of the examples line wrap. This makes the code a little confusing to view.  I prefer the HTML edition to the PDF. Since this textbook is online it would be nice to see some interactive examples. ","grammatical_rating":5,"grammatical_review":"I found no grammar problems.","cultural_rating":5,"cultural_review":"The book is not culturally insensitive. This question is irrelevant for this type of book.","overall_rating":8,"overall_review":"This is a relatively good textbook. I would like to see a new edition with some of the major issues addressed. I would cover some of the material in a different order and supplement the material my University requires with chapters from other books. Given the current costs of programming books this textbook is a good value. ","created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":1890,"first_name":"Andi","last_name":"Toce","position":"Associate Professor","institution_name":"CUNY LaGuardia Community College","comprehensiveness_rating":5,"comprehensiveness_review":"This book is designed for students taking an introductory programming course using the C++ programming language. It includes all the relevant topics for an introductory class. It also provides a lot of material to guide students to develop good programming habits which will be beneficial in any subsequent class and in the workplace.","accuracy_rating":5,"accuracy_review":"The content I was able to verify is accurate. The author pays close attention to every detail and is thorough in his explanations. ","relevance_rating":4,"relevance_review":"The book is 5 years old at the time of this writing. Computer Science and the programming are rapidly evolving so it very difficult to produce a document that is fully relevant for a long period of time. All content related to the basics of the programming and the discussion on the best habits and techniques of a successful programmer will remain relevant. The software tools such as Dev C++, used in this book, while may still be useful and sufficient are not as relevant. A large variety of new options is available to all programmers. The book however can still be used as is for a current introductory class. ","clarity_rating":4,"clarity_review":"The book is very well written. Each topic is discussed in detail. Relevant supporting material and background information is provided in prior to each new topic. The content is broken down into small units and the flow of content is logical and clear. ","consistency_rating":5,"consistency_review":"The book maintains the same 'feel' throughout. The style is consistent throat the book which makes it easier to follow. ","modularity_rating":3,"modularity_review":"The author does a good job at breaking down concepts into smaller units. As a consequence the initial table of contents clearly outlines the material and makes it easier for users to locate what they are looking for. In some cases some of the numbered subsections are very small. For example, a one line definition does not need to be in a separate section. I would also avoid a third level in the subsection hierarchy. For example section 6.5.1.6 can be combined in some way with all other subsections in 6.5.1. ","organization_rating":5,"organization_review":"The book is very well organized. It is evident that the author pays close attention to small detail. The flow of content is clear and all new material is preceded by sufficient relevant background information. ","interface_rating":3,"interface_review":"The visual feel of the book is very simplistic. The book can benefit from a visual makeover. Maybe some color, more figures, and a better presentation of code fragments.  ","grammatical_rating":5,"grammatical_review":"No issues identified.","cultural_rating":5,"cultural_review":"N/A","overall_rating":9,"overall_review":null,"created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":33573,"first_name":"Gayathri","last_name":"Iyer","position":"Full time Faculty and Department Chair","institution_name":"Portland Community College","comprehensiveness_rating":5,"comprehensiveness_review":"The book is very comprehensive and covers everything needed for an Intro to Programming class. I love that it has Program Planning and Design as a topic. This is a very important concept we try to teach students at the beginning of this programming class. It would be great to see a quick Intro to Structs and some of the new C++ 11 syntax and examples.","accuracy_rating":5,"accuracy_review":"The content and examples I have looked at are accurate to the best of my knowledge.","relevance_rating":4,"relevance_review":"All content relevant to basics of programming and the language are still relevant. It has been a few years since the book has been written. It could be revised to include C++ 11 and C++ 14 syntax. It could also use some online interactive IDEs like replit, that would be more inclusive of students who use Chromebooks and such. A new book is not needed since a lot of the content is still very relevant - an update or revision to incorporate a few changes would be useful.","clarity_rating":5,"clarity_review":"The book is very clear and broken into small chunks for students to read and understand! I especially like the fact that it has pseudocode interspersed and definitions at the end of every chapter. Students who are just learning English are always appreciative of the definitions that help them understand the terms better.","consistency_rating":5,"consistency_review":"The book is very consistent throughout. It follows the same format and uses pseudocode and definitions for most if not all chapters.","modularity_rating":3,"modularity_review":"The book is definitely modularized well.  Some sections could be combined to form solid good sized sections. This format makes it seem like there are too many chapters especially when conditionals and loops are broken up into almost 3 chapters each. This can be overwhelming for students when they look at the long list of chapters. I would also rearrange the topics and sub topics better.","organization_rating":3,"organization_review":"If I were to use this book, I would have to rearrange some of the topics to make sure I put relevant topics in the beginning and move some chapters for later - like Program Control Functions. I would also combine some of the chapters like conditionals and loops and make it more comprehensive, so it is less intimidating for students. I would also make some topics towards the end as optional materials - like recursion and pointers - again I feel like this is too much to cover in one term for a community college!","interface_rating":3,"interface_review":"It would be great to have an interactive text book - where students can fill in some code and test them interactively. It would also benefit to have an app like Python tutor embedded that does code tracing so students can benefit from multiple ways to access the resources. This would also fit well into the Universal Design model that is preferred everywhere these days - especially with all institutions going remote due to COVID.","grammatical_rating":5,"grammatical_review":"I have not seen many or any grammatical errors so far.","cultural_rating":5,"cultural_review":"The book is not culturally insensitive or offensive in any way. I think the addition of definitions makes it inclusive.","overall_rating":9,"overall_review":"This is a good textbook. I would like to see a revised version with some of the major changes incorporated. It would also be good to have an interactive version and more examples and labs so students can get more practice. I would also incorporate more on functions and I would introduce that topic later in the book.\r\nOverall if I were to use this book, I would have to have specific notes to move chapters and sections around, and add supplemental examples and labs to give students more practice.","created_at":"2021-12-24T01:07:51.000-06:00","updated_at":"2021-12-24T01:07:51.000-06:00"},{"id":33813,"first_name":"Trisch","last_name":"Price","position":"Assistant Professor","institution_name":"Johnson County Community College","comprehensiveness_rating":5,"comprehensiveness_review":"Covers all necessary areas for a beginning C++ class.","accuracy_rating":5,"accuracy_review":"The technical accuracy is great. There are a few (very few) typos that I came across, but nothing that affects the material.","relevance_rating":5,"relevance_review":"This is a solid foundation for C++ programming. The basics of the language do not fluctuate much over time. The book is clearly laid out addressing one element at a time which would make it easy to update as releases of new language standards are rolled out.","clarity_rating":5,"clarity_review":"I really appreciate how easy this book is to read - I was able to get through the entire book in no time. I feel that it is very accessible to students who can get easily overwhelmed when reading technical books. Examples are often quite memorable. Little bits of humor are injected just often enough to keep you on your toes.","consistency_rating":5,"consistency_review":"Each chapter is laid out in the same manner. It is easy to envision how to use each element in a course.","modularity_rating":5,"modularity_review":"At 24 chapters and 300 pages, it seems like it might be too much. However, the chapters are very short and laden with good coding examples. I can see where I could easily assign two chapters per week because each chapter is fairly specific and steps through the language around the same pace that I cover the material in class.","organization_rating":5,"organization_review":"The book presents the language in clear steps starting with foundational knowledge and building from there.","interface_rating":4,"interface_review":"I read the book as a pdf so I was not able to use some of the links (is there a way to get an interactive pdf?). Other than that, no issues.","grammatical_rating":5,"grammatical_review":"none that I saw, just a few typos.","cultural_rating":5,"cultural_review":"This book in not insensitive or offensive in any way that I could see.","overall_rating":10,"overall_review":"I am planning to adopt this book for fall2022. There are many things that I like about it. It is easy to read. Examples are clear and often humorous (therefore, memorable - I will never cut up a can of soup). Program development and pseudocode are presented early on and stressed throughout. I find that more of my students struggle with the process than the syntax, this should help. The book has a logical progression starting with foundational language skills and building from there.","created_at":"2022-04-26T15:40:41.000-05:00","updated_at":"2022-04-26T15:40:41.000-05:00"},{"id":34250,"first_name":"Margaret","last_name":"Bleichman","position":"Professor","institution_name":"Middlesex Community College","comprehensiveness_rating":4,"comprehensiveness_review":"This textbook covers almost all the topics that a typical Programming I or Computing I course that uses the C++ programming language usually requires.  The approach it uses corresponds to a 'late objects' approach, which is what my college and the college that most of my students transfer to use. However, the way the topics are organized and ordered is a little confusing and unusual .See comments under organization.","accuracy_rating":5,"accuracy_review":"The book and its labs are accurate.  There are a few minor typos/spellos here and there, a few which make the code not compile. \r\nIn this textbook, all demo programs define variables used locally in main as global variables.  While this is not inaccurate, it is something that most people in industry avoid in well structured, maintainable code, and something I and most professors counsel students not to do.  So having every example do this here is a bit odd.","relevance_rating":4,"relevance_review":"The book is written in 2013 and many of the program examples are dated 2008/2009.  For the most part that isn't an issue.  However, newer versions of C++ have been in use since then, with a couple of constructs that are missing here.  In particular, C++ 11 introduced nullptr and range-based for loops.  My curriculum includes both of these.  The latter is particularly useful to teach students.  The book could easily be updated to add these.  An early section discussed IDE's and the book uses Dev-C++.  Other, more recent, IDE's might be more popular now, but Dev-C++ is free and simpler to use than some others, so it's actually helpful to have a section for this.  The source code in demo programs should work in any IDE a student chooses to use. \r\nPresent in every demo program is the author's custom pause function.  Most systems no longer need to call system pause to allow the user to view the output before the output window closes.  This is minor, but a professor will either have to explain the pause function, or tell the students to remove it from every example.  Also, it necessitates an explanation of functions at the beginning of the course, before the actual study of functions other than main is reached.","clarity_rating":4,"clarity_review":"The description of the concepts and constructs are pretty clear.  Adequate examples are used.  A plus in this book is the inclusion of a separate list of definitions for most chapters.  Because of the repetition of instructions to the student (i.e. to set up folders to contain their files.) there's a lot of extra text that has to be scrolled past.","consistency_rating":5,"consistency_review":"The textbook uses consistent format and terminology throughout.","modularity_rating":4,"modularity_review":"In an intro computer science course that would typically use this textbook, concepts are generally present in the same order in most textbooks. But, yes, if a professor wanted to skip a topic, this textbook allows for that.  However, the granularity of this textbook is too small.  For the topics I typically cover in this course (thru pointers), there are 22 chapters, as compared to 9 chapters in the textbook I currently use.  That actually makes it harder to find specific topics by looking at the table of contents.  Of course, searching in the online version can accomplish that.","organization_rating":3,"organization_review":"The section numbering of online version vs. pdf version, i.e. the numbering of chapters/modules, differs by 4.  i.e. Chapter 3 is in numbered section 7, etc.  It's confusing at first.  Students can get used to it, but it makes instructions awkward, i.e. to read Chapter 3, students have to read Sections numbered 7.1 to 7.8.\r\nChapter 10 introduces 2 forms of selection and 4 forms of repetition all at once.  It then covers them separately, but it's a lot for students to look at before understanding what selection or repetition is.\r\nSome concepts are introduced in the middle of chapters devoted to other concepts. This could be confusing to students. For example, File i/o is covered in the middle of the chapter introducing arrays. Most textbooks (and this professor) cover File i/o as its own topic, before or after arrays.","interface_rating":4,"interface_review":"The book comes in two versions:  online and a .pdf.  The online version is preferable to use, since students can click on links to download code and other sample files, etc.  Also, the table of contents is interactive.  The .pdf can be printed, but it uses a font that is hard on the eyes.  (The font used in the online version is much better.)  \r\nThe Memory Building Activities (MBA) links are dead in the online version.\r\nAlthough it's a plus to be able to download a source file to work with it, it should also be visible without having to download it.","grammatical_rating":5,"grammatical_review":"Although there are some typos/spellos, they are minor.","cultural_rating":1,"cultural_review":"This textbook is not inclusive, particularly with respect to gender.  Its use of gender pronouns is cause for concern. While many authors grapple with this, some choosing to alternate between male and female pronouns, or use generic pronouns, this author does not. Discussion and examples use generic nouns like friend, chef, programmer, user, systems analyst, painter, professor. However, all these use the pronouns he/him/his.  We've spent decades to expand the community of coders to beyond the traditional male students.  This textbook is unwelcoming to non-male students. In particular, to read that programmers, users, systems analysts, and students are male sets this textbook backwards in time many years.  Women (and non-binary) students are excluded and will not see themselves reflected here.  It is troubling that the only examples that use female pronouns are limited to mothers, a wife, and a Miss America contestant.  Really.  Literally, these are the only instances of non-male examples in the entire textbook, and they are at best a trope, at worst gender stereotypes.  Consider these alarming quotes:\r\n\"Saying that my cousin is the 2nd Runner Up in the Miss America contest sounds so much better than saying that she was in 3rd Place.\"  \r\n\"Calling you spouse \"Snooky\" may be meaningful to only you. Others might need to see her full name (Jane Mary Smith) to appropriately identify who you are talking about.\"\r\nIn this textbook, women can only be mothers, wives and beauty contestants, but never programmers or system analysts, or students. How depressing.","overall_rating":8,"overall_review":"I was hoping to use this textbook for my Programming I course.  It appeared to match my syllabus, particularly since it uses a 'late objects' approach and covers almost all the topics that my curriculum requires.  The text I currently use is Tony Gaddis' \"C++ From Control Structures through Objects\", which is great, but many students won't purchase a textbook, so I am looking for OER.  The organization of this text is a bit confusing and the embedding of some of the topics inside others is a bit odd.  That said, I was still ready to try it.  However, after spending 20 years implementing programs and activities to encourage students in groups which are underrepresented in STEM, particularly women and girls, I am troubled by the exclusion of women in this textbook except in a couple of stereotypic references.  This textbook sends a message that women need not apply to computer science careers.","created_at":"2022-12-07T22:23:44.000-06:00","updated_at":"2022-12-07T22:23:44.000-06:00"},{"id":35371,"first_name":"Dana","last_name":"Nelson","position":"Adjunct Faculty","institution_name":"Oregon Institute of Technology","comprehensiveness_rating":4,"comprehensiveness_review":"The materials reasonably cover introductory C++ topics.  They are suitable for a first term C++ class.  There is no index, however, there is a table of contents.  There is not a separate glossary, however, most sections contain a “Definitions” subtopic for new terminology introduced in that section.","accuracy_rating":4,"accuracy_review":"The content appears to be accurate error-free and unbiased.","relevance_rating":4,"relevance_review":"There have been multiple releases of the C++ standard since the release of the book.  Technology/tooling has changed/been updated/been invented.  However, as an introduction to C++, the focus/purpose of the book should be core C++ topics and language features, thought process, problem solving, etc.  These aspects are as valid now as when they were written.","clarity_rating":4,"clarity_review":"The prose is approachable.  Most sections have a “Definitions” subtopic where new terminology is defined.  Most sections also have an examples.","consistency_rating":4,"consistency_review":"The materials have internally consistent terminology.  They have a consistent format throughout.","modularity_rating":4,"modularity_review":"Larger topics are broken into relatively small chunks.  It seems like most of the smaller are \u003c= 5 pages.  These smaller chunks seem to generally have subheadings.  An instructor could easily assign one or more of these smaller chunks as an assigned reading multiple times a week.  Within the constraints of the language and logic these smaller chunks could be reorganized.","organization_rating":5,"organization_review":"The organization of topics is reasonable given the constraints of the language.  There is consistency in the structure/format of topics.","interface_rating":4,"interface_review":"In the PDF version. there are a number of “Link to: [missing_resource: index.html]”.  They appear to be links to external resources – perhaps exercises of some sort.  I don’t know if these were missing at the time of publication or if they became unavailable over time.","grammatical_rating":5,"grammatical_review":"I didn’t notice any grammatical issues.","cultural_rating":5,"cultural_review":"N/A","overall_rating":9,"overall_review":null,"created_at":"2024-12-23T10:37:22.000-06:00","updated_at":"2024-12-23T10:37:22.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/programming-fundamentals-a-modular-structured-approach-using-c","updated_at":"2025-12-15T02:04:18.000-06:00"},{"id":150,"title":"Algorithms and Data Structures With Applications to Graphics and Geometry","edition_statement":null,"volume":null,"copyright_year":2011,"isbn10":null,"isbn13":null,"license":"Attribution","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"An introductory coverage of algorithms and data structures with application to graphics and geometry.","contributors":[{"id":3293,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Jurg","middle_name":null,"last_name":"Nievergelt","location":"ETH Zurich","background_text":"Jürg Nievergelt has been full Professor of Computer Science at the ETH Zurich from 1975 until his retirement in 2003. J. Nievergelt received a degree in mathematics from the ETH in 1962, and a Ph.D. in mathematics from the University of Illinois in 1965. From 1965-77 he was on the faculty of Computer Science at the University of Illinois at Urbana-Champaign, from assistant professor to full professor. Since 1975 professor of computer science at ETH Zurich. On leave from ETH 1985-89 he was Kenan Professor and chairman of the Computer Science Dept. at the Univ. of North Carolina at Chapel Hill. Visiting appointments include NTT's Yokosuka Electrical Communications Lab, Visiting IBM Professor at Keio University, and Visiting Professor at the National University of Singapore. He is a Fellow of ACM, IEEE and AAAS. Research Interests: Algorithms and data structures; interactive systems; user interfaces; heuristic and exhaustive search, parallel computation."},{"id":3294,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Klaus","middle_name":null,"last_name":"Hinrichs","location":"University of Muenster","background_text":"Klaus Hinrichs, Professor at University of Muenster."}],"subjects":[{"id":3,"name":"Computer Science","parent_subject_id":null,"call_number":"QA76","visible_textbooks_count":137,"url":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems"},{"id":36,"name":"Pure","parent_subject_id":7,"call_number":"QA37.3","visible_textbooks_count":83,"url":"https://staging.open.umn.edu/opentextbooks/subjects/pure"},{"id":7,"name":"Mathematics","parent_subject_id":null,"call_number":"QA1","visible_textbooks_count":177,"url":"https://staging.open.umn.edu/opentextbooks/subjects/mathematics"}],"publishers":[{"id":299,"url":"http://globaltext.terry.uga.edu","year":null,"created_at":"2018-09-07T12:22:38.000-05:00","updated_at":"2018-09-07T12:22:38.000-05:00","name":"Global Text Project"}],"formats":[{"id":640,"type":"PDF","url":"https://www.dropbox.com/sh/fcd01oy6h102fn7/AACglU-e5UVHmYtCfE-nFpMwa?dl=0\u0026preview=algorithms+and+data+structures.pdf","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"5","textbook_reviews_count":1,"reviews":[{"id":1239,"first_name":"Stephan","last_name":"Olariu","position":"Professor","institution_name":"Old Dominion University","comprehensiveness_rating":5,"comprehensiveness_review":"This book is not intended to be a comprehensive introduction to algorithms and data structures. For this, there are other books. Instead, the authors have focused on a smattering of fundamental topics that provide the student with tools for the study of other topics that were left out in the book. This book is not for beginners -- and it does not teach students how to program. Throughout the book, algorithmic and data structure-related ideas are cast in Pascal-style pseudo-code that has the benefit of being easy to assimilate and has none of the complications of \"modern\" programming languages.\n\nAs the title suggests, this is not a dry text on algorithms and data structures. There is a welcome emphasis on applying the algorithms and the data structures covered to real problems in computer graphics and geometry. In fact, Part VI of the book is intended to show the usefulness of data structures for the purpose of efficient implementation of algorithms that manipulate geometric objects.\n\nIn spite of being a comprehensive compendium of algorithms and data structures, the book can, and has been used successfully, in undergraduate courses dealing with algorithm design and data structures. It can also be used for self-study by all those who wish to broaden their horizon and wish to acquire a solid footing in the fundamentals of computer science.","accuracy_rating":5,"accuracy_review":"The book is highly accurate and has been tested by the authors in their classes for decades","relevance_rating":5,"relevance_review":"This is not a new book. It was published (with the same title) in 1993 by Prentice Hall. The topics covered and their tested relevance guarantee that it will always be fresh and timely. I can say without hesitation that his is one of the fundamental books in the computer science literature.","clarity_rating":5,"clarity_review":"The authors are well known compete scientists and educators. They pedagogical style is perfect. This said, the book is not for everyone. It assumes that the reader has been exposed to the fundamentals of programming.","consistency_rating":5,"consistency_review":"This book is consistent to the extreme. Notation is consistent end-to-end and the coverage of topics is masterfully orchestrated in a coherent and pleasant way. Each chapter starts out by enumerating the learning objectives and presents motivation for the study of the chapter.","modularity_rating":5,"modularity_review":"The book is organized into six parts, each of them partitioned into several chapters. The parts are both independent of each other and, at the same time, build on ideas mentioned in previous parts and chapters. It is an exemplary way of organizing a successful book.","organization_rating":5,"organization_review":"The algorithmic and data structure topics are organized in a natural order. The various topics are motivated, discussed in some detail and then consolidated by showing how they apply to real problems selected from computer graphics and geometry.","interface_rating":5,"interface_review":"Flawless, I could not identify and problems here.","grammatical_rating":5,"grammatical_review":"The authors are using perfect English. I was unable to identify any grammatical errors or typos","cultural_rating":5,"cultural_review":"The book does not further any hidden agenda and is not offensive in  any way.","overall_rating":10,"overall_review":"I highly recommend this book to all those who wish to acquire a solid footing in the design of algorithms and data structures.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/algorithms-and-data-structures-with-applications-to-graphics-and-geometry","updated_at":"2025-12-15T02:08:57.000-06:00"}],"links":{"self":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems.json?page=1","total_pages":16,"total_count":156,"next":"https://staging.open.umn.edu/opentextbooks/subjects/computer-science-information-systems.json?page=2"}}
