{"data":[{"id":581,"title":"A Byte of Python","edition_statement":null,"volume":null,"copyright_year":2013,"isbn10":null,"isbn13":null,"license":"Attribution-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"\"A Byte of Python\" is a free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save text files, then this is the book for you.","contributors":[{"id":4615,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Swaroop","middle_name":"C","last_name":"H","location":null,"background_text":"Swaroop C H"}],"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":552,"url":"https://legacy.gitbook.com/","year":null,"created_at":"2018-09-07T12:22:40.000-05:00","updated_at":"2020-01-02T23:50:28.000-06:00","name":"Swaroop C H"}],"formats":[{"id":945,"type":"Online","url":"https://python.swaroopch.com/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":946,"type":"PDF","url":"https://github.com/swaroopch/byte-of-python/releases/tag/va62ee8caa3475e8733c40918bbe16719b4904693","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":947,"type":"eBook","url":"https://github.com/swaroopch/byte-of-python/releases/tag/va62ee8caa3475e8733c40918bbe16719b4904693","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":14,"reviews":[{"id":2738,"first_name":"Iris","last_name":"Champion","position":"Full Professor","institution_name":"Southern University Shreveport","comprehensiveness_rating":4,"comprehensiveness_review":"There are not a lot of 'Python' textbooks that are designed for beginner programmers.  \"A Byte of Python' is an easy book to follow in learning how to program using Python. This book is very simple to understand and makes it very simple to develop simple programs. It is an excellent book/reference for teaching  beginner coding in K-12 or higher-ed. \r\nMinor problem that can be easily fixed:  the Table of contents page numbering is off and an index was not present.","accuracy_rating":5,"accuracy_review":"The content contained in \"A Byte of Python\" is accurate and sectioned out for ease of accessibility.","relevance_rating":5,"relevance_review":"Programming instructions or coding instructions (programming language) just does not change frequently like some disciplines such as \"American Government\". \"A Byte of Python\" is written such that the content is current and with a usefulness for quite some time. Any future updates to the textbook can be easily grafted/merged in with very little effort and without distorting the topics within each chapter. It is hoped that the next version will consist of an index and a corrected Table of contents.","clarity_rating":5,"clarity_review":"The author put in a lot of effort to keep the contents of the textbook simple and very clear to understand. Step-by-step processes along with many examples were used to ensure clarity.","consistency_rating":5,"consistency_review":"This textbook is consistent in terms of terminology and framework. In looking at other textbooks written for programming with Python, the basic language terminology is the same. There may be some variations in the particular editors that can be used but the meaning, usage, and design are the same.  Students can start learning from this textbook, and in no time will be able to better interpret a more complicated written textbook.","modularity_rating":4,"modularity_review":"This textbook is sectioned out using chapters. The text is varied in that titles are large and sub-titles and paragraph headers are sized appropriately making it easy to recognize the division in each chapter. The major points of each topic, of each chapter, is broken out into chunks making it very easy for students to understand.  When students have the need to refer back to a particular point, they can readily do so by referring to the headings and sub-headings. \r\nNote: an index added to the textbook would increase to functionality of the book in regards to ease of use and accessibility.","organization_rating":4,"organization_review":"Here is where the correct 'Table of Contents\" is helpful. The author of this textbook presented the chapter topics in an organized and logical flow. A small print problem was encountered. The section/chapter on 'Problem Solving' downloaded with a font size of 12 instead of the title size. Maybe just another download bug. Additionally, the summary in the chapter entitled \"Basics\" implies that the next chapter to be discussed is dealing with 'control flow' but in actuality the next chapter focuses on 'Operators and Expressions'.  This should be changed to eliminate any possible confusion regarding expectation.","interface_rating":5,"interface_review":"Regarding the interface there were no significant or observed interface issues. The couple of text translation errors was very minimum. All text, images, and charts were easy to read and identify without distraction or confusion to the reader. There were no accessibility problems. ","grammatical_rating":5,"grammatical_review":"In reading through the textbook there were no grammatical errors found. However, please be aware that sometimes in downloading the textbook, symbols can get easily change. So, for example, if you see a \"?\" where a \",\" should be in a word like \"don't\", that is a just download error. That happens.","cultural_rating":5,"cultural_review":"The textbook is not culturally insensitive or offensive in any way. From an instructor's perspective I am mainly looking for ease of use and understanding for different learning styles. The way the book is written  I see no problem with my students grasping the intended concept of learning 'Python'.  However, the name is one that would make some persons distant themselves in the beginning.","overall_rating":9,"overall_review":"Very good textbook that I will be using.","created_at":"2019-04-06T13:37:54.000-05:00","updated_at":"2019-05-06T11:38:14.000-05:00"},{"id":3127,"first_name":"Connie","last_name":"Lance","position":"PT Instructor","institution_name":"Aims Community College","comprehensiveness_rating":5,"comprehensiveness_review":"The book has a detailed explanation of how to download and install Python, and how to write and run code in the development environment. This is valuable for people who are new to programming. There is not any actual Python code until twenty pages into the book.\r\nIt would be a good reference for those who are just learning to program, or if they need a concept explained in a new way. The comprehensiveness is enough for a beginner.\r\nIt delves into many concepts, but does not cover them in a lot of depth.  For example, there are four data structures in Python: lists, tuples, dictionaries, and sets.  Each of them is covered in about two pages, including code examples.  An additional half-page looked at objects and classes and how they relate to lists. \r\nThere are three control flow statements in Python - if , for and while. They are the backbone of many programs. Those are initially covered in only five pages total.\r\nThere are five pages of good resources and links near the end.\r\nThere is not an index or a glossary.","accuracy_rating":5,"accuracy_review":"The book is accurate for Python 3, the mostly commonly used version today. \r\nI did not find any errors in the code.","relevance_rating":5,"relevance_review":"The text and example code are timeless and will not become obsolete.\r\nThe topics could easily be expanded with more examples and explanation.\r\nThere are several pages of resources at the end.  However, some of these links are no longer active. For example, the link to Python Module of the Week goes to python.org instead of pymotw.com.","clarity_rating":5,"clarity_review":"The book is relatively easy to read. The text is written for beginning programmers.  It defines new terms as soon they are used.\r\nThe author mentions the Python Standard Library, then admits that the reader may need to return to that when they are more experienced.","consistency_rating":5,"consistency_review":"The text is consistent.  The program examples are formatted the same throughout.\r\nThe format is usually like this: a new topic is introduced, example code shows how it works, then the code is explained.\r\nIt is not easy to make a programming language easy to understand, but the author does this well.","modularity_rating":4,"modularity_review":"The Table of Contents breaks down the material. The sections could easily be incorporated into a course. \r\nThere are a few places where the reader is given a link to jump ahead for more info before returning to the current topic.\r\nIt would be nice if the Table of Contents had links to the subheadings.","organization_rating":5,"organization_review":"Most programming texts follow a similar path. Data types, variables, and indentation are all in the Basics section. From there, it moves on to Operators and Expressions, then Control Flow, then Functions.\r\nThe section on object-oriented programming starts about two-thirds of the way through. This is a more advanced concept for beginners.","interface_rating":4,"interface_review":"The text is clear, and the program examples are readily visible.\r\nAt the beginning, there are six pages of reader comments in light gray text.  The lack of contrast makes this section more difficult to read.","grammatical_rating":5,"grammatical_review":"I did not find any grammatical errors.","cultural_rating":5,"cultural_review":"The book does not refer to any race, ethnicity or background.\r\nVolunteers have translated the book into more than twenty languages.","overall_rating":10,"overall_review":"A copy of the book can be purchased for $29.","created_at":"2019-07-30T12:54:51.000-05:00","updated_at":"2019-07-30T12:54:51.000-05:00"},{"id":3303,"first_name":"Yolanda","last_name":"Anderson","position":"Academic Teaching Specialist","institution_name":"Michigan State University","comprehensiveness_rating":4,"comprehensiveness_review":"This book assumes the reader has no experience with Python and does a good job writing to that assumed audience.  There are a few places where it may benefit the reader if it was more comprehensive.  For example, there is a list of operators and the list includes bit-wise AND, yet there is no explanation of what that operator is or does, even though most of the operators have an explanation and example (but not all).","accuracy_rating":4,"accuracy_review":"The content was accurate and I did not notice any errors.  There were a few characters that did not show up correctly, but I attribute that to download errors.  There were a few broken links, but each link has detailed information which can be easily searched on the internet.","relevance_rating":5,"relevance_review":"The content is very relevant and the examples will not make the text obsolete.  The author does a good job of mentioning how the syntax/vocabulary has changed from one version to the next or how it compares to other programming languages.","clarity_rating":4,"clarity_review":"The author is very clear, with simple language that is to the point.  At times, it is almost too simple.  For example, the section on while-loops doesn't mention sentinel values.  The author absolutely does a good job of introducing the concept, explaining the control flow, and providing an example, but doesn't mention sentinel values.  This level of writing gives the very basic foundation.","consistency_rating":5,"consistency_review":"The book is very consistent.  The author consistently presents a narrative about a concept, sample code, the output, and then breaks down the code and output.  The format is laid out nicely and is consistent throughout the entire book.","modularity_rating":5,"modularity_review":"This book is not overly self-referential.  There are several places where the author provides a link to a later chapter or mentions that more about a concept will be discussed later, but it does not disrupt the reading.","organization_rating":5,"organization_review":"The organization is typical of a programming language book.  I think the book can benefit from either subheadings in the table of contents, a glossary, or an index.  Digital books are so easily searchable, that an index or glossary is almost obsolete, but that assumes you know what to search for.  Given how this was written for a beginner, I think the user would benefit from at least one of the above.","interface_rating":5,"interface_review":"There is no problem with the interface in the PDF version.  I did not look at the online version.  I would have appreciated page numbers in the table of contents for the PDF version, but the headings in the table of contents are links, so it's easy to navigate the interface.","grammatical_rating":5,"grammatical_review":"I did not notice a single grammatical error.","cultural_rating":5,"cultural_review":"This book is designed for a beginner from any cultural background.  The one and only example that I noticed was using the term \"marks\" when referring to a student's grade.  As an american, we don't use that term, but it is in no way offensive, nor does it detract from the example.  The author does a great job of using neutral language to teach a topic that can be overwhelming to a beginner.","overall_rating":9,"overall_review":"This is a great book for a resource, but I'm not sure it's a good textbook, in the traditional sense.  Meaning, if you are accustomed to a textbook that lays out the concepts and then gives several problems to work on, you will not receive those traditional problems.  This is not a criticism.  It just depends on your need.  There are a few \"homework\" problems, but there are no solutions.  On another note, the author gives links to several problems/challenges/projects that are readily available on the internet.  Overall, I think this is an excellent book for a beginner.","created_at":"2019-11-21T08:52:37.000-06:00","updated_at":"2019-11-21T08:52:37.000-06:00"},{"id":3386,"first_name":"Omer","last_name":"Soysal","position":"Assistant Professor","institution_name":"Southeastern","comprehensiveness_rating":3,"comprehensiveness_review":"This book, as stated in the Preface, \"It is mainly targeted at newbies\". Therefore, only basics of Python programming and its environment is explained.","accuracy_rating":4,"accuracy_review":"Although I could not see an error, the statement \"Just remember that Python treats everything as an object and this includes functions\" on page 66 would be confusing, The objects are instances of a class that includes data fields (properties) and methods (functions). ","relevance_rating":5,"relevance_review":"The content is up-to-date. It would be good to add a note about more specific version (3.#) of the Python used. The book has some references that the reader can keep track updates. ","clarity_rating":4,"clarity_review":"In general, the language is clear. Some sections such as \"Raw String\", \"VarArgs parameters\", and \"Lambda Forms\" needs more clarification with some simple examples to make it easier to comprehend purpose and usage.","consistency_rating":5,"consistency_review":"I could not see any inconsistency throughout the book.","modularity_rating":5,"modularity_review":"The book follows traditional chapters and subsections for a programming language. ","organization_rating":5,"organization_review":"The flow of the book is smooth; the readers can navigate easily to comprehend the content.","interface_rating":5,"interface_review":"The format is appropriately designed for smooth reading.","grammatical_rating":5,"grammatical_review":"I did not see any textual or grammatical error.","cultural_rating":5,"cultural_review":"The content is free of offensive language.","overall_rating":9,"overall_review":"This books is intended for \"newbies\" who are familiar with an OOP language. Particularly, the reader would appreciate for the sections \"How It Works\" and \"Note for C/C++ Programmers\".","created_at":"2019-12-17T00:58:55.000-06:00","updated_at":"2019-12-17T00:58:55.000-06:00"},{"id":3404,"first_name":"Neb","last_name":"Jaksic","position":"Professor","institution_name":"Colorado State University - Pueblo","comprehensiveness_rating":3,"comprehensiveness_review":"The book is written for new first-time programmers on a language that has a huge library, so in its nature it could not be comprehensive. However, the basics are covered well, as was the intention of the author.","accuracy_rating":5,"accuracy_review":"This reviewer didn't see any errors in the text nor in the program examples. The content is accurate.","relevance_rating":4,"relevance_review":"As with any computer language book, the changes are expected as the language develops. For now, the author was making the necessary changes from one edition to another. The basics will stay the same for at least few more years, since that part of the language will most likely not change.","clarity_rating":5,"clarity_review":"The language structure, the principles, and the examples are well written and easily accessible. All the programming terms are well defined. However, the session on object oriented programming, maybe,  could  use a few more examples.","consistency_rating":5,"consistency_review":"The text is consistent from chapter to chapter and within chapters. Definitions are provided and used consistently.","modularity_rating":5,"modularity_review":"The chapters are well balanced. The book follows a story - from simple examples to more complicated and involved examples demonstrating various aspects of Python. It is not intended for readers to skip and/or mix chapters.  Of course, experienced programmers could probably finish the book in a matter of hours, but then, this book is not written for them.","organization_rating":5,"organization_review":"Definitely! Readers are gently introduced to the language syntax, procedural programming using functions, and then object oriented programming. At the end, a number of other,  more involved, books and websites were provided.","interface_rating":5,"interface_review":"The book is well presented. A small suggestion would be to have a couple diagrams showing the relationship between classes, sub-classes, objects, etc. Since I downloaded the whole book and printed it - I could not observe any computer-related interface issues.","grammatical_rating":5,"grammatical_review":"There were no grammatical errors that I observed.","cultural_rating":5,"cultural_review":"This book is not culturally insensitive or offensive. The book examples deal with groceries, universities, etc. which are culture-neutral.","overall_rating":9,"overall_review":"I liked the book and most likely I will use it as a beginning of Python learning in class. However, since I am looking at IoT and mechatronics uses with Raspberry Pi, I will have to add some more material for that purpose. \r\nOnce again, this is a well-written easy-to-read book with examples for Python 3 that I will likely adopt for my first robotics class.","created_at":"2019-12-19T14:29:15.000-06:00","updated_at":"2019-12-19T14:29:15.000-06:00"},{"id":3784,"first_name":"Laurie","last_name":"Seeder","position":"Instructor","institution_name":"LSUE","comprehensiveness_rating":4,"comprehensiveness_review":"This book gives a very good fundamental plan for the beginner.","accuracy_rating":4,"accuracy_review":"When I first opened the book and clicked on the download links and when I went back to the link two weeks later it had been changed. It made it a bit more challenging; but I was still able to follow along.","relevance_rating":4,"relevance_review":"I plan on using this book for the first two, maybe three weeks of my Python class. I think it will give my students a basic understanding of what they will be learning throughout the rest of the semester.","clarity_rating":4,"clarity_review":"This was written by a young man, and as most of my students are young adults, they will be able to follow this book easily.","consistency_rating":5,"consistency_review":"I was able to closely follow from section to section on the flow of the books' path.","modularity_rating":5,"modularity_review":"Good fundamental starting point for students that want to learn Python.","organization_rating":5,"organization_review":"The flow was done in clear language and logically moved from section to section on learning the fundamentals of Python.","interface_rating":4,"interface_review":"The book is a PDF. no major issues.","grammatical_rating":5,"grammatical_review":"I couldn't find any grammatical errors.","cultural_rating":5,"cultural_review":"This book was written with a straight-forward point of view for Python and Python only.","overall_rating":9,"overall_review":"This book is rather short and I think it was creating to give the user just a 'taste' of the Python language. As such, I'm seriously considering using this book for the first two to three weeks of class to give my students a basic understanding of what they will be learning and also give them a resource on which they can reference when we use a fuller textbook.","created_at":"2020-05-01T00:31:22.000-05:00","updated_at":"2020-05-01T00:31:22.000-05:00"},{"id":3888,"first_name":"Marvin","last_name":"Daniels","position":"Adjunct Instructor","institution_name":"Middlesex Community College","comprehensiveness_rating":5,"comprehensiveness_review":"This book goes into detail on the aspects of programming with Python. A good beginning basic book on this programming language.","accuracy_rating":5,"accuracy_review":"I could not find any content errors and the content appeared accurate.","relevance_rating":5,"relevance_review":"This book appears relevant and should be able to easily maintain any updates. The author gives a very good explanation of the terms used in Python and other programming languages.","clarity_rating":5,"clarity_review":"The author talks about the different versions of Python and different programming languages, but the book seems to be designed for the beginning programmer. Because of that the reader my not understand the differences but the examples that the author provides throughout the book seem easy to comprehend.","consistency_rating":5,"consistency_review":"The writing of the text is consistent throughout the book. At the end of each chapter is a brief recap of what was done.","modularity_rating":5,"modularity_review":"The book is broken up into many chapters which cover different topics. The reader should be able to proceed from chapter to chapter and should be able to finish the entire book by the end of the semester.","organization_rating":5,"organization_review":"Readers should find the text easy to go through. Chapter headings listed in a clear fashion.","interface_rating":4,"interface_review":"The text was free from any significant interference problems although the light grey text in some of the chapters made it somewhat difficult to read.","grammatical_rating":5,"grammatical_review":"I noticed one error in the Installed section of the book, where the text did not display an apostrophe in a word and it’s replacement was a symbol..","cultural_rating":5,"cultural_review":"The text was not insensitive or offensive. There was a listing of this book being translated into many different languages.","overall_rating":10,"overall_review":"This book would be a very good book to use in an intro to Python course. The author backs up his writing with examples throughout the book.","created_at":"2020-06-01T13:50:44.000-05:00","updated_at":"2020-06-01T13:50:44.000-05:00"},{"id":4219,"first_name":"Joseph","last_name":"Jess","position":"Instructor","institution_name":"Linn-Benton Community College","comprehensiveness_rating":4,"comprehensiveness_review":"An excellent beginner level book on Python.  \"A Byte of Python\" covers many of the language features I would expect a programmer to pick up early on.  I appreciate the additional references and bits of historical context that come up.  I would like to see an expanded talk about how programming intersects with other related topics such as computer science in general, algorithms, and maybe an expanded section on software development processes (or maybe just some additional links to said related topics to keep the book approachable).","accuracy_rating":5,"accuracy_review":"\"A Byte of Python\" is quite accurate and as unbiased as a book on a specific programming language could expect to be.","relevance_rating":5,"relevance_review":"\"A Byte of Python\" is written in a way that covers the basics using generic enough approaches to be applicable for a long time, but relevant enough to only need minor updates from time to time (noting when new valuable features are added, such as f-strings).","clarity_rating":5,"clarity_review":"This book is written using simple terms and initially direct approaches to each problem that it proposes and solves, which should make it approachable and easy to get through for most readers.  There are plenty of technical terms, but they are well explained in their given context.","consistency_rating":5,"consistency_review":"This book is consistent in its use of terminology and framework, approach to proposing and solving prooblems, and even in giving additional ideas and resources in many sections.","modularity_rating":4,"modularity_review":"This book is well divided into sections and has the current section's title in the header of each page.  I agree with another reviewer that the book could be improved with an index as well as a glossary of terms, but a majority of readers will likely already be decently capable at looking terms up on the Internet and with a little guidance searching a digital document for keywords.","organization_rating":4,"organization_review":"I appreciate the organization and structure of the book, however there are a few sections that refer to other sections that do not make obvious or complete sense (Basics says that control flow should be next (maybe rearranged or split and merged sections?), Operators and Expressions says that next up is statements (overly simplified?).","interface_rating":5,"interface_review":"This book is easy to interact with, easy to search, and easy to read.","grammatical_rating":5,"grammatical_review":"No notable grammatical errors found; simple writing certainly helps keep it this way.","cultural_rating":5,"cultural_review":"This book uses generally neutral to inclusive wording and examples.","overall_rating":9,"overall_review":"A good book that I will likely use as a core resource to an intro to programming and computer science course.","created_at":"2020-07-01T17:06:30.000-05:00","updated_at":"2020-07-01T17:06:30.000-05:00"},{"id":4615,"first_name":"Chunmei","last_name":"Liu","position":"Professor","institution_name":"Howard University","comprehensiveness_rating":5,"comprehensiveness_review":"This book is comprehensive. It starts with why python, how to install python in different platforms, and then choose an editor and install. Then it introduces different data types, control flows, functions, function parameters, modules, packages, data structures, object-oriented programming, classes, files, and appendices that contain more about python. It is a good beginning book for people who want to learn python.","accuracy_rating":5,"accuracy_review":"The content is accurate and no errors were found.","relevance_rating":5,"relevance_review":"The book is relevant. It is a very good beginning book for anyone who wants to learn python. For instructors who teach python, it is a very introduction book to use.","clarity_rating":5,"clarity_review":"This book is clearly written. The terms of python are well explained. The examples are easy to understand.","consistency_rating":5,"consistency_review":"The context is consistent in the book. Each chapter ends with a good summary.","modularity_rating":5,"modularity_review":"It is a good fundamental book to follow with different topics from easy to hard.","organization_rating":5,"organization_review":"The book is well organized with different topics. Each topic is written and explained clearly with examples.","interface_rating":4,"interface_review":"The interface of the book is fine overall, but it is not very easy to identify between different chapters sometimes.","grammatical_rating":5,"grammatical_review":"No grammatical errors were found.","cultural_rating":5,"cultural_review":"The book is written for python version 3.","overall_rating":10,"overall_review":"This book is a very good book for people who begin to learn a programming language. It would be a good introductory book for anyone who wants to learn python.","created_at":"2021-02-09T08:45:54.000-06:00","updated_at":"2021-02-09T08:45:54.000-06:00"},{"id":4863,"first_name":"Shivani","last_name":"Mogullapalli","position":"Graduate Assistant","institution_name":"Colorado State University","comprehensiveness_rating":5,"comprehensiveness_review":"This book is very comprehensive. It covers all the topics from the start like what is Python, why should we use python and also gives a detailed explanation of how to install python. It starts with the basic flows, data types, loops, functions, packages and data structures in a very elaborated way. It is an easy book to read as it has a very detailed example for each and every concept in python. It is a very good book for a beginner who wants to learn python from scratch.","accuracy_rating":5,"accuracy_review":"It is a good book in which the content is accurate and I couldn't find any errors in the book. The book isn't biased and it covers all the possibilities a concept can be explained.","relevance_rating":5,"relevance_review":"This book has up-to-date concepts of python. i.e, all the new concepts are also mentioned in the book along with the previous versions. The Author gives a very good explanation of the terms used in Python and other programming languages.","clarity_rating":5,"clarity_review":"The author also explains the previous versions of Python. This book is mainly very useful for beginners as it gives a detailed explanation of every concept. The text is written in very lucid, accessible prose and it provides adequate context. The author uses terminology which is understandable to everyone mainly beginners.","consistency_rating":5,"consistency_review":"The flow of the book is consistent throughout all the concepts. The book follows the same approach of explanation for every concept as it would be easy for the reader to clearly understand how the concept is explained with examples. Beginners could easily understand this book.","modularity_rating":5,"modularity_review":"The book is broken into many chapters for every concept. The reader will be able to go chapter by chapter as it is clearly organized and so that the reader can start from the start and then complete each chapter and by which he/she can easily complete the book. By having small chapters, it would be easy to keep on track of the concepts that are being learnt.","organization_rating":5,"organization_review":"The flow of the chapters and topics are clearly organized and they are in such a way where the before concepts are used in the later chapters which helps the users go through the previous topics and understand the concept more clearly. The structure and flow of the book is very clear and precise.","interface_rating":5,"interface_review":"This book doesn't have any interface issues. The images and charts are clear to understand and help in understanding the concepts a lot better.","grammatical_rating":5,"grammatical_review":"The book doesn't have any grammatical errors and the language is easily understandable as it doesn't have any complex words.","cultural_rating":5,"cultural_review":"There wasn't any culturally sensitive information and any offensive words in the entire book. There are examples which have an inclusive variety of races and ethnicity and background.","overall_rating":10,"overall_review":"Overall, this is a very good book. The main purpose of this book is to explain to new beginners all the concepts of python. This is the best book for people who have no knowledge of Python. The starting 20-25 pages explain no code and only has an explanation of concepts of python.","created_at":"2021-04-30T10:27:15.000-05:00","updated_at":"2021-04-30T10:27:15.000-05:00"},{"id":5183,"first_name":"Shruti","last_name":"Nagpal","position":"Assistant Professor","institution_name":"Worcester State University","comprehensiveness_rating":5,"comprehensiveness_review":"This book goes into detail on the aspects of programming with Python. A good beginner's book on Python programming language. This book is good for both the students who do not have any previous programming skills as well as those who have some prior experience in another programming language like C/C++/Java/C#. What I liked in this book is that the preface starts with detailed instructions of installing the requisite software on different operating systems, which is something all instructors spend time on during their first lab class(es). This is very beneficial for the beginners. Also, comparisons given for different syntax encountered in Python vis-a-vis other programming languages at important focal points in the book gives a perspective for students having prior knowledge in one or more programming language(s) of C/C++/Java/C#.","accuracy_rating":5,"accuracy_review":"I could not find any content errors and the content appeared accurate.","relevance_rating":5,"relevance_review":"This book is relevant with the Python's software version mentioned and should be easily maintainable through minor updates with later versions of Python and operating systems (for example, installation on Windows 11) through GitHub.","clarity_rating":5,"clarity_review":"The examples provided by the author are concise and easy to comprehend by the reader.","consistency_rating":5,"consistency_review":"This textbook uses consistent terminology throughout, defining terms that might be new to students. Furthermore, I laud the author on consistently including short clickable hyperlinks to additional web resources where the student could learn more about a given topic if they wished.","modularity_rating":5,"modularity_review":"Given the wide range of Python programming language, this book does justice to the intended audience who are beginning their journey in Python with or without any prior knowledge of any previous programming knowledge. The book is broken up into many chapters which cover different topics. The reader should be able to comfortably proceed from chapter to chapter and fall back on different programming exercises for practice.","organization_rating":5,"organization_review":"The book is well organized. Starting with the necessary \"Installation\" instructions with respect to different operating systems, the book's \"flow\" starts with sequential programming, and then introduces the readers to the data structures and object-oriented concepts. Readers should find the text easy to go through. Also, hyperlinks are provided at relevant places in the text to help readers to quickly jump to a particular topic/module, if they need to have a quick reference to that topic, and back again.","interface_rating":5,"interface_review":"It is available both in pdf format as well as in HTML in the free version. Both are well-formatted. The hyperlinks are available in both formats at appropriate places to fall back and revise/clarify any terminology/concept, which makes it very convenient. Moreover, availability of entire code on GitHub is definitely an added advantage.","grammatical_rating":5,"grammatical_review":"There are no grammatical errors. I did not find any!","cultural_rating":5,"cultural_review":"The text was not culturally insensitive or offensive. Moreover, there is a listing of this book being translated and available in other languages in the appendix.","overall_rating":10,"overall_review":"Overall, I liked the flow of the text and the spectrum of topics that were covered in the book with ease. This book would be a very good book to use in an Introduction to Python course for students having CS as Major/Minor, and for non-CS students learning Python programming for their respective course works.","created_at":"2021-06-30T10:39:04.000-05:00","updated_at":"2021-06-30T10:39:04.000-05:00"},{"id":33919,"first_name":"Changhong","last_name":"Liu","position":"Assistant Professor","institution_name":"Trine University","comprehensiveness_rating":5,"comprehensiveness_review":"It covers most of the basics of python and it will be a good book for students who are new to the python language","accuracy_rating":4,"accuracy_review":"Overall, this book is accurate and error-free.","relevance_rating":5,"relevance_review":"Page 92  \"The best way to further explore the standard library is to read Doug Hellmann's excellent Python Module of the Week series (also available as a book)\"\r\nThe amazon book hyperlink is no longer available","clarity_rating":5,"clarity_review":"Page 27  \"when using the format method, we can change the message without having to deal with the variables used and vice-versa.\"  As a reader, I am not sure what the word \"message\" refers to.","consistency_rating":5,"consistency_review":"This book is internally consistent in terms of terminology and framework.","modularity_rating":4,"modularity_review":"I think this book could be divisible into smaller sections with better subheadings.","organization_rating":5,"organization_review":"The organization of this book is very clear and easy to follow","interface_rating":4,"interface_review":"Table content could be broken down more with a numerical index. It will be easier for users to navigate.","grammatical_rating":5,"grammatical_review":"There is no grammatical errors in this book","cultural_rating":5,"cultural_review":"The text is not culturally insensitive or offensive in any way.","overall_rating":9,"overall_review":"Good coverage on basic topics and good depth for beginners. The data structure is a section I am not most familiar with. It would be nice to give the reader an overview comparison first and then goes into depth. Maybe explain different situations that which one can use different data structures as well as the pros/cons of each. More information could be added under the summary. It is a little confusing after the first time reading this section.","created_at":"2022-06-20T14:44:52.000-05:00","updated_at":"2022-06-20T14:44:52.000-05:00"},{"id":34049,"first_name":"Linda","last_name":"Sundbye","position":"Professor","institution_name":"Metropolitan State University of Denver","comprehensiveness_rating":4,"comprehensiveness_review":"The text is well written and provides a solid introduction to the basics of Python programming for beginners. It is easy to read. In general, the author provides one clear coding example of each topic.","accuracy_rating":5,"accuracy_review":"Overall, the content is accurate, and no errors were found.","relevance_rating":5,"relevance_review":"The content remains and will continue to remain relevant for the foreseeable future. The author maintains and regularly updates the text for newer versions of Python.","clarity_rating":5,"clarity_review":"Overall, the text is very clear. The “Lambda forms” subsection and the section on object -oriented programming could use more clarity and/or examples.","consistency_rating":5,"consistency_review":"The text follows a clear and consistent layout for each topic.","modularity_rating":5,"modularity_review":"The text is divided into a series of short sections on each topic. It is a good design.","organization_rating":5,"organization_review":"The text is overall well-organized.\r\n\r\nHowever, there is no index. The TOC lists sections 1.1. ,1.2, etc. but does not give page numbers. And the sections are not labeled 1.1, 1.2, etc. For those using a printed copy of the PDF, like myself, the cross referencing must be managed by looking for the section titles. A simple recommended fix is to add the page numbers to the TOC and the section numbers to the body.","interface_rating":5,"interface_review":"The PDF has active links. The TOC has active links to the sections. The links I checked seem to work fine.","grammatical_rating":5,"grammatical_review":"No grammatical errors were detected.","cultural_rating":5,"cultural_review":"This text has been impressively translated into numerous languages. The text is unbiased.","overall_rating":10,"overall_review":"I had my Intro to Python students work through most of this text. They appreciated having an OER textbook to use. There is, however, not enough material for a full semester course. I supplemented the course with my own materials. \r\n\r\nWe use the Anaconda installation and Jupyter notebooks in my course. I recommend adding Anaconda info under the installation section and adding a new section on Jupyter notebooks.\r\n\r\nOverall, this text is a clear, concise, and streamlined introduction to Python programming for beginners.\r\n\r\nNote: This review is for the version released Jan 4, 2022.","created_at":"2022-09-18T18:06:52.000-05:00","updated_at":"2022-09-18T18:06:52.000-05:00"},{"id":35381,"first_name":"Jared","last_name":"Oliverio","position":"Faculty","institution_name":"Tidewater Community College","comprehensiveness_rating":5,"comprehensiveness_review":"This book does a good job of covering everything that should be in an introductory programming course. In addition, there were several additional topics that were covered that would be in future classes.","accuracy_rating":5,"accuracy_review":"The book was highly accurate. I didn't observe any inaccuracies in the material.","relevance_rating":4,"relevance_review":"Overall, the book was relevant and was mostly up to date. However, the installation section was a little bit dated. This is to be expected since the book was published a while ago.","clarity_rating":5,"clarity_review":"The book was very clear, easy to read and understand. The examples given were relevant and easy to understand.","consistency_rating":5,"consistency_review":"The book was very consistent in terms of terminology. A large number of the examples were focused on simple math and standard programming terminology was used throughout the book.","modularity_rating":5,"modularity_review":"The book was organized using modules. Each of the modules corresponded to a specific programming/Python construct. Overall, this is one of the best organized books I have read. Each section was easy to traverse, and the labels used for each module/section reflected what was covered in them.","organization_rating":5,"organization_review":"The organization and flow of the book is excellent. The book starts with basics and moves into each construct in a logical order. I especially like the first steps section which introduces one of my favorite IDEs.","interface_rating":5,"interface_review":"The book has a simple, easy to use interface. Each section has a link and you can easily click between the sections. I didn't notice any issues with the images and charts. Each image/chart was easy to read.","grammatical_rating":5,"grammatical_review":"The book was free of grammatical errors and was easy to read.","cultural_rating":5,"cultural_review":"The text does not have any culturally offensive material that I saw. Most of the examples were math problems.","overall_rating":10,"overall_review":"I thought this was a very good book. It is an excellent introduction to Computer Science/Programming book that utilizes Python. It contains all of the constructs that would be taught in those courses as well as additional material including Object Oriented Programming, and Exceptions. The book is well organized into modules and this gives the user the ability to easily navigate the material. The book does a good job relating the information to new programmers as well as experienced programmers that are not familiar with Python. The book contains several examples that help C++ programmers that are learning Python. Overall, this is a good, easy to read introductory book.","created_at":"2025-01-09T21:55:59.000-06:00","updated_at":"2025-01-09T21:55:59.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/a-byte-of-python","updated_at":"2025-12-15T02:12:41.000-06:00"},{"id":453,"title":"Eloquent JavaScript: A Modern Introduction to Programming","edition_statement":null,"volume":null,"copyright_year":2014,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"JavaScript lies at the heart of almost every modern web application, from social apps like Twitter to browser-based game frameworks like Phaser and Babylon. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications. This much anticipated and thoroughly revised third edition of Eloquent JavaScript dives deep into the JavaScript language to show you how to write beautiful, effective code. It has been updated to reflect the current state of Java¬Script and web browsers and includes brand-new material on features like class notation, arrow functions, iterators, async functions, template strings, and block scope. A host of new exercises have also been added to test your skills and keep you on track.","contributors":[{"id":4166,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Marijn","middle_name":null,"last_name":"Haverbeke","location":null,"background_text":"Marijn Haverbeke is a programming language enthusiast and polyglot. He's worked his way from trivial BASIC games on the Commodore, through a C++ phase, to the present where he mostly hacks on database systems and web APIs in dynamic languages. He recently won the JS1K—JavaScript demo in 1024 bytes—contest, and is the author of a wide range of open-source software."}],"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":372,"url":"http://eloquentjavascript.net/","year":null,"created_at":"2018-09-07T12:22:39.000-05:00","updated_at":"2020-01-02T22:40:23.000-06:00","name":"No Starch Press"}],"formats":[{"id":634,"type":"PDF","url":"https://eloquentjavascript.net/#links:~:text=Other%20pages","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":635,"type":"eBook","url":"https://eloquentjavascript.net/#links:~:text=Other%20pages","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":2044,"type":"Online","url":"https://eloquentjavascript.net/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":2045,"type":"Hardcopy","url":"https://nostarch.com/ejs3","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":6,"reviews":[{"id":1294,"first_name":"Brian","last_name":"Bird","position":"Faculty","institution_name":"Lane Community College","comprehensiveness_rating":5,"comprehensiveness_review":"This book is quite comprehensive. It covers the features of the JavaScript language thoroughly as well as giving a complete explanation of the way JavaScript interacts with the DOM and the HTML 5 canvas. Advanced features like Modules are also presented. In addition there is a chapter on debugging as well as a section on  Node.js","accuracy_rating":5,"accuracy_review":"The book is very accurate. The author's explanations and descriptions are thorough and correct.","relevance_rating":4,"relevance_review":"This book was copyrighted in 2014 and is based on ECMAScript version 5. ECMAScript 6 was released in 2015 so the book is slightly out of date.","clarity_rating":5,"clarity_review":"The writing is lucid and includes some nice humor. Concepts are broken down and explained clearly and in a way that is accessible to readers without prior programming experience.","consistency_rating":5,"consistency_review":"Terms related to programming and JavaScript in particular are used consistently and accurately throughout the book.","modularity_rating":5,"modularity_review":"The books parts, chapters and sub-sections are divided logically and while the topics build on one another each section is well organized and cohesive.","organization_rating":5,"organization_review":"The book follows a fairly typical organization for a book on programming, stating with procedural concepts, then introducing functions, then objects. Chapter length projects are interspersed at regular intervals throughout the book to illustrate the concepts that have been presented.","interface_rating":5,"interface_review":"The book has a detailed table of contents and index with accurate page numbers. Diagrams and illustrations are clear and well done.","grammatical_rating":5,"grammatical_review":"I did not detect any grammar errors. The English is standard and does not reflect any regional dialect.","cultural_rating":5,"cultural_review":"The book mainly sticks to the technical details of JavaScript programming, but the author does use some entertaining stories, like the one about the Jacques the \"weresquirrel\", a man who turns into a squirrel after the sun goes down. He uses this story as a prop to discuss data sets. All the the stories are unoffensive and would be relevant to readers from most cultures.","overall_rating":10,"overall_review":"This is a very well written book that is accessible to beginning programmers but that will take them all the way to an advanced level of programming with JavaScript.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":2118,"first_name":"Mary","last_name":"Lebens","position":"Instructor","institution_name":"Anoka Technical College","comprehensiveness_rating":4,"comprehensiveness_review":"“Eloquent JavaScript” is very comprehensive in its coverage of JavaScript. While most JavaScript textbooks cover only superficial examples of how to use JavaScript on the client side, such as validating forms and displaying alerts, this textbook explains the fundamental concepts of JavaScript as a programming language. This textbook covers fundamental programming concepts such as data types, operators, functions, and data structures. Then the book dives deep into how JavaScript interacts with the browser through the Document Object Model (DOM) and event handling. The only weakness in the coverage is that the book uses Node.js, which is a library for running JavaScript server-side, instead of one of the more popular JavaScript libraries like jQuery, React, or Angular. This book contains an index, but it does not contain a glossary, at least in the electronic version that was reviewed.","accuracy_rating":5,"accuracy_review":"The JavaScript code and the explanations of concepts are accurate. I tested several code examples in my browser, and they were error-free. The tone of the writing is neutral and unbiased.","relevance_rating":5,"relevance_review":"Since this textbook covers the fundamental programming structures of JavaScript as well as how the language is used for browser interaction, this book should remain relevant for a reasonably long period of time. The only section which may change quickly in relevancy is the section that focuses on the JavaScript library Node.js. JavaScript libraries come in and out of fashion quickly as developers adopt and discard them, so this section may be updated in a future edition of the textbook. In a future edition, I would love to see an additional instructor bank of materials, like quizzes, to accompany this textbook.\n","clarity_rating":4,"clarity_review":"The textbook describes concepts in a clear, straight-forward manner. This text is very readable, and the language approachable for a beginning programming student. The examples that are given illustrate the programming concepts lucidly. For example, Chapter 14 on the Document Object Model (DOM), the author gives the Hypertext Markup Language (HTML) for a simple web page, and then presents a diagram depicting how the HTML content is represented by the DOM.","consistency_rating":5,"consistency_review":"This textbook is consistent throughout in regards to terminology and general formatting. When multiple terms are used to describe the same concept, the author makes it clear that the two terms are interchangeable. This is helpful, and makes the terminology clearer for beginning students.","modularity_rating":5,"modularity_review":"Like most programming textbooks, this book starts with fundamental concepts, such as data types, and then progresses though more advanced concepts, such as data structures and control statements. The chapters shouldn’t be assigned in a non-sequential order, as this would break the logical progression of concepts for students. However, the book is broken into three large modules which could be assigned independent of each other: language, browser, and Node (the JavaScript library.)","organization_rating":5,"organization_review":"The text is logically organized, with the programming concepts building on one another like most standard software development textbooks. Each chapter is structured so that the exercises at the end of the chapter reinforce the chapter concepts. In addition, the author uses projects at intervals throughout the book to illustrate the concepts.\n","interface_rating":5,"interface_review":"The table of contents is accurate and the hyperlinks work well to direct the reader to the correct chapter. The diagrams and code are easy to read and free of distortions. ","grammatical_rating":5,"grammatical_review":"I found no grammar errors in this textbook.","cultural_rating":5,"cultural_review":"The book is written in standard English. The examples used to illustrate the coding concepts appear to be culturally neutral. The book seem like it would appeal to most readers, and the language was inoffensive.","overall_rating":10,"overall_review":"This book is an exciting new resource for teaching JavaScript, not only because the text is part of the Open Library, but because it is the only JavaScript book I've found which explains the concepts of the language using solid computer science concepts. The approach that this book takes of teaching students the fundamental concepts first will give students a solid footing before they dive into the web-specific features of JavaScript.","created_at":"2018-05-21T19:00:00.000-05:00","updated_at":"2018-05-21T19:00:00.000-05:00"},{"id":2356,"first_name":"Nicholas","last_name":"Caporusso","position":"Assistant Professor","institution_name":"Fort Hays State University","comprehensiveness_rating":4,"comprehensiveness_review":"The book contains a comprehensive and very detailed explanation of most of the fundamental concepts of Javascript. The author covers almost all the aspects of the language, from data types to asynchronous programming and promises. In addition to detailing how Javascript can be utilized in front-end design, the book introduces elements of server-side programming using NodeJS. Moreover, code snippets, examples, and projects help understand concepts and complete the theoretical overview.\r\nHowever, despite its comprehensiveness, the book could be more detailed regarding topics, such as, responsive design and front-end routing (e.g., using fragments). Moreover, it does not contain any reference to libraries, such as, jQuery, and to APIs. ","accuracy_rating":5,"accuracy_review":"Every topic in the book is discussed accurately and appears error-free. Moreover, most of the code attached to the book is well-indented and contains comments that increase its readability. In addition to being accurate and well-formatted, the code can be executed without any issues. The book is primarily available in many digital formats and the author appears to be very active and attentive in regard to fixing inaccuracies. Moreover, the website associated with the book contains a section that lists the errata and corrections for previous (printed) editions.","relevance_rating":4,"relevance_review":"As “Eloquent Javascript” contains a thorough overview of the fundamentals of the language, the core of its content is not expected to significantly change over the next years, which makes the book a durable resource for both students and instructors. However, as in the case of many programming languages, given the pace at which innovation happens in this domain, the longevity of the book could be affected by updates and by the development of new resources and libraries. Nevertheless, as the book received support from multiple backers, including the Mozilla foundation, the author appears to be continuously improving the content and the code: the book is already at its third edition.","clarity_rating":5,"clarity_review":"The book introduces and explains concepts concisely albeit very clearly. In addition to the multiple examples given every time a new argument is presented, the author included images that help grasp topics, though a richer use of figures would help. The presence of scripts and code snippets for almost every topic discussed in the book helps understand the theory and provides the reader with a boilerplate that can be utilized to get started and tinker with the tangible application of each concept. Furthermore, the author included complete projects, which create a framework that help realize how all the pieces come together.","consistency_rating":5,"consistency_review":"The book has good internal consistency overall, and its organization and content are in line with other books about Javascript, and programming languages, in general. This makes it easy to adopt the book even with a basic knowledge of programming, or to use it as an additional learning material, in combination with other resources. Concepts that are often referred to with multiple terms are clearly defined, and the presence of jargon is appropriately addressed using explanations that are consistent with other programming languages. As a result, the book can be utilized by readers who are already familiar with software development, as well as by individuals who are just starting.","modularity_rating":5,"modularity_review":"The modular organization of the book makes it easy to jump to a specific chapter and topic when needed, as topics have very little dependencies. Despite requiring knowledge of the basic aspects, every concept is designed as self-contained and, simultaneously, it is well-link to other arguments. As a result, the book is a great resource for the novice as well as for expert programmers.","organization_rating":5,"organization_review":"The structure of the book is consistent with the way programming languages are typically taught, and the organization of the chapters helps the reader absorb concepts and use them as building blocks. Numerous internal references help readers navigate the content and jump to definitions, when needed.","interface_rating":3,"interface_review":"The text is free of significant interface issues, including navigation problems, distortion of images/charts, and any other display features that may distract or confuse the reader.\r\nThe book structure is clear and easy to navigate, and the text does not contain any interface issues or elements that might distract the reader. Images are relevant, clear, and well organized, though they could be organized better.\r\nThe source code lacks syntax highlighting, which could improve code readability and, thus, increase the overall usability of the book. However, this is a minor flaw considering the abundance of online resources associated with the book.\r\n","grammatical_rating":5,"grammatical_review":"I didn’t find any grammatical errors or typos in the book.","cultural_rating":5,"cultural_review":"The book is written in English. Moreover, the website (http://eloquentjavascript.net) contains translations in Bulgarian, Portuguese, and Russian. Its content and examples are relevant and generally applicable regardless of any specific cultural background.","overall_rating":9,"overall_review":null,"created_at":"2018-11-04T21:49:13.000-06:00","updated_at":"2018-11-04T21:49:13.000-06:00"},{"id":4395,"first_name":"Anthony","last_name":"Marasco","position":"Assistant Professor","institution_name":"University of Texas Rio Grande Valley","comprehensiveness_rating":5,"comprehensiveness_review":"Eloquent JavaScript provides a thorough walkthrough of the core aspects of JavaScript as a coding language. Divided into three sections, the book sets a goal for each section to give the reader an understanding of what material, skills, and examples will be featured in each section. This helps to cover as much ground within a select subject as possible without becoming repetitive and diverting off into topics that are interesting but may not be essential for learning core coding procedures.","accuracy_rating":5,"accuracy_review":"This book—both in the explanatory, text portions and in the code examples—portrays accurate approaches to developing web applications and common computer science concepts through JavaScript. There are no errors that I noticed in either content or grammar throughout the book.","relevance_rating":5,"relevance_review":"This book provides what can sorely be missing from programming textbooks: a focus on the up-to-date, contemporary syntax for JavaScript. While many techniques for achieving goals through programming do not go out of date, the new advances of ES6 are covered in this book, allowing brand-new web developers to hit the ground running with a modern resource to work with.\r\n\r\nThe book is also available as an interactive webpage, a format that would allow the author to make edits and updates as new JavaScript conventions become standardized.","clarity_rating":5,"clarity_review":"This book is well written with both beginners and intermediary programmers in mind. It does not assume any previous computer science or programming experience and gradually builds on core concepts with each new chapter. New concepts and skillsets are introduced through references to the real world, which is crucial for beginning coders. Any sections that focus on terms or \"jargon\" are left for the later units, and chapters in those sections still make an effort to draw connections back to previous subjects and examples.","consistency_rating":5,"consistency_review":"The book does an excellent job of tying together examples and concepts across all units in the text.","modularity_rating":4,"modularity_review":"This book does a great job of making it easy to dive into one self-contained concept at a time, as it is well structured into large units focusing on the Language of JavaScript, how the Web Browser reacts to and translates JavaScript, and finally how networked web apps can communicate and share data using Node.js and client-server architecture. While the book makes it easy to choose which unit an instructor may want to tackle first in their class (say, covering the Web Browser unit before covering the in-depth aspects of the JavaScript language in Unit 1), the inter-unit chapters are organized in a more progressive liner manner. It would be difficult (but not impossible, due to the beginning \"recap\" text in each chapter) to cover the concepts of Objects and Classes in JavaScript without having covered the chapters on Data Types and Program Structure first. This issue has more to do with the intricacies of learning any new language than it does with the formatting of this textbook, but it does impact the pure modularity of the resource.","organization_rating":5,"organization_review":"The organization of material, concepts, and larger units are well thought out and presented.","interface_rating":5,"interface_review":"The textbook, particularly the interactive web version, is well designed and includes interactive code blocks where readers can edit and run the code directly inline with the text.","grammatical_rating":5,"grammatical_review":"No grammatical issues were found in either the written text or the code examples.","cultural_rating":5,"cultural_review":"This book includes multiple translation options through its web version, providing a contemporary resource to web development for non-English speakers.","overall_rating":10,"overall_review":null,"created_at":"2020-11-19T14:53:06.000-06:00","updated_at":"2020-11-19T14:53:06.000-06:00"},{"id":4626,"first_name":"Christian","last_name":"James","position":"Web Application Librarian","institution_name":"The Catholic University of America","comprehensiveness_rating":4,"comprehensiveness_review":"As an introduction to JavaScript, this book hits all the basics: variables, functions, arrays/objects, classes, etc. In addition, there are chapters on regular expressions, error handling, and Node JS. (The latter is curious, though, because it only goes over Node commands strictly, and doesn't discuss NPM or popular frameworks beyond a fleeting mention.) The book goes through all these topics pretty efficiently without becoming too much of a thick 'door-stopper' manual.","accuracy_rating":5,"accuracy_review":"After repeated readings, I've found no inaccuracies or errors in Eloquent JavaScript, 3rd Edition.\r\n\r\nWith regard to syntax, the author prefers using arrow functions, which may be more challenging to introductory-level readers rather than misleading.","relevance_rating":5,"relevance_review":"The book is very up-to-date, and uses newer aspects of JavaScript such as arrow functions, fetch, and \"let\" (for assigning variables within a function scope, as opposed to \"var\" or \"const\").\r\n\r\nThe chapter on Node JS also adds timely relevance, but it could have gone farther to discuss the popular use of frameworks like Express, React, Vue, etc.\r\n\r\nOne omission is that the book doesn't address the concept of Ajax. While the \"fetch\" command is used to make HTTP requests, it could have gone farther to explain how it is related (or, depending on your view, synonymous with) Ajax.","clarity_rating":2,"clarity_review":"Clarity is a weak point for Eloquent JavaScript. While some of the chapters are more straightforward and easy to understand, many of them become quickly dense and difficult. Once readers have grasped a basic understanding of core concepts, Haverbeke ramps up the skill level at too quick a pace. For example, in Chapter 11, we have barely understood the concepts of callbacks and promises when we get the advanced concepts of network flooding and message routing.\r\n\r\nThe examples, exercises, and Project chapters are too densely written and challenging for beginner or even intermediate readers. (Advanced readers, readers with a computer science background, or readers with intermediate experience in other programming languages may have a slightly less frustrating experience.) These should be opportunities to use practical, real-life scenarios, but (in addition to being too cryptically written), they are impractical (creating your *own* pixel art application from scratch) or even fantastic (i.e. the 'crow grid,' or 'observing the \"wererabbit\"'). This is a lost opportunity, but instructors using the textbook can easily use their own imagination to come up with exercises of their own. Unfortunately, it does come at a cost to the flow of the text for readers.","consistency_rating":3,"consistency_review":"As stated earlier, this book is inconsistent in its skill level. Instructors can likely adapt to this (as I have) by picking and choosing which chapters or selections to assign to students.\r\n\r\nAnother strategy for managing the inconsistency is by paying attention to the short, useful chapter summaries at the end of each chapter.","modularity_rating":5,"modularity_review":"Each chapter is a consistent (and appropriate) length. Each chapter has consistent, well-organized subheadings. It's easy to assign chapters or sections to students.","organization_rating":4,"organization_review":"The organization of the text obeys its own internal logic, even if it is not the logical series of topics that I use in my class. The book starts with values, operators, and variables, then functions, etc. HTML, web browsers, and HTTP isn't discussed until halfway through the book. This differs from my course, where I discuss the web at the beginning.\r\n\r\nAs long as instructors are up-front about this editorial decision, it won't throw off students very much.","interface_rating":5,"interface_review":"The web and print version of this book are both beautiful. The web version is readable and even elegant. The example interface works like a true browser console (even better, in fact), and is a valuable tool. The print version is sturdy; the weight is perfect and the paper stock is smooth but durable.\r\n\r\nAs of this review, I have not seen the e-book version.","grammatical_rating":5,"grammatical_review":"I have not seen any grammatical errors in Eloquent JavaScript.","cultural_rating":4,"cultural_review":"There are no direct cultural issues with Eloquent JavaScript. However, I do fear that the inconsistent difficulty level inserts a barrier to entry with this resource. I emphasize to my students that JavaScript is a great first programming to learn because you don't need to buy and install special software on your computer (your browser already has it installed!) and there are already free videos and resources out there to help you. When Haverbeke uses jargon or arcane examples, or ramps up the difficulty level, this could make students feel that *they* are incapable of grasping concepts that should, in fact, be accessible and within reach.\r\n\r\nAgain, while this is not specifically a cultural issue, I do worry that it could affect women or minorities who are already at a disadvantage in a field dominated by white and Asian men.","overall_rating":8,"overall_review":"I have taught an introductory JavaScript course with this textbook twice. Regardless of price, I believe this is the best single book on the market to teach JS. It's the most up-to-date and the least gimmicky. I love that there are chapters on regular expressions and the DOM, too, as those are particular interests of mine.\r\n\r\nAs noted above, however, this book is not without major flaws. Some of the chapters (in addition to the basics, they include the chapters on HTML forms, events, and the Document Object Model) are strong or even great. Others are just simply too difficult. The chapters on classes, debugging, for example, are strong but needlessly complicated. Entire chapters are dedicated to project examples that are completely incomprehensible to novices.\r\n\r\nThis inconsistency can be managed, especially when complemented with other course readings. I find that the strengths outweigh the weaknesses. I might even have assigned this book even if it didn't have a free online version, but that simply seals the deal for me.\r\n\r\nHopefully the author (or other publishers) will receive similar feedback and resolve the current edition's problems in subsequent editions.","created_at":"2021-02-18T15:17:45.000-06:00","updated_at":"2021-02-18T15:17:45.000-06:00"},{"id":34423,"first_name":"Laurie","last_name":"Alfaro","position":"Associate Professor","institution_name":"City Colleges of Chicago","comprehensiveness_rating":4,"comprehensiveness_review":"The book is divided into three parts, with each part building upon the concepts covered in the previous one. The first part focuses on the basics of JavaScript, including variables, data types, and control structures. The second part covers JavaScript for web development, including the DOM and event handlers. The final part of the book covers Node.js and includes a project chapter for building a web site.","accuracy_rating":3,"accuracy_review":"The author used terms that are not commonly used in JavaScript (i.e., \"binding\" instead of the more commonly used \"variable\"). Also, the author often uses let statements where the cay keyword would have been a more appropriate choice.","relevance_rating":3,"relevance_review":"By their very nature, books about scripting and coding languages will necessarily be obsolete in a short time. This is because coding standards are always evolving.","clarity_rating":5,"clarity_review":"This book would be appropriate for a beginning coding class, as the author explains basic terms which may be unfamiliar to new developers.","consistency_rating":5,"consistency_review":"The book is certainly consistent in structure and voice.","modularity_rating":4,"modularity_review":"Chapters are an appropriate length—not too long—and are structured for easy navigation. However, they are not modular in the sense that they could be taught in a different order than presented by the author.","organization_rating":5,"organization_review":"The book is organized with each chapter building upon the previous ones. This approach allows readers to learn JavaScript in a logical and progressive manner.","interface_rating":5,"interface_review":"I appreciated the use of the monospace font and color-coding in the code examples. This helps to distinguish the code from the surrounding text.","grammatical_rating":5,"grammatical_review":"I did not notice any grammatical errors.","cultural_rating":5,"cultural_review":"I found nothing inappropriate in the text.","overall_rating":9,"overall_review":null,"created_at":"2023-02-24T07:56:06.000-06:00","updated_at":"2023-02-24T07:56:06.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/eloquent-javascript-a-modern-introduction-to-programming","updated_at":"2025-12-15T02:08:55.000-06:00"},{"id":620,"title":"How to Think Like a Computer Scientist: C Version","edition_statement":null,"volume":null,"copyright_year":1999,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"The goal of this book is to teach you to think like a computer scientist. I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating trade offs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.The single most important skill for a computer scientist is problem-solving. By that I mean the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called “The way of the program.”","contributors":[{"id":4696,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Allen","middle_name":"B.","last_name":"Downey","location":null,"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."},{"id":4697,"contribution":"Translator","primary":false,"corporate":false,"title":null,"first_name":"Thomas","middle_name":null,"last_name":"Scheffler","location":null,"background_text":"Prof Thomas Scheffler, translated the book \"How to Think Like a Computer Scientist: C++ Version\" to C."}],"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":598,"url":"https://greenteapress.com/wp/think-c/","year":null,"created_at":"2018-10-07T09:54:51.000-05:00","updated_at":"2020-05-05T11:37:45.000-05:00","name":"Green Tea Press"}],"formats":[{"id":1067,"type":"PDF","url":"https://github.com/tscheffl/ThinkC","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":2,"reviews":[{"id":3114,"first_name":"Ivo","last_name":"Georgiev","position":"Affiliate Faculty","institution_name":"Metropolitan State University of Denver","comprehensiveness_rating":5,"comprehensiveness_review":"The book is intended as a very first introduction into computer science and programming. As such, its content is well-balanced in comprehensiveness and conciseness. A programming book should not distract with verbose text and this book strikes a good middle ground between the mutually contradicting requirements to explain unintuitive new concepts to novices and keeping the path to experiential proficiency short. The topic of programming in the C language is vast, and the content selection represents a carefully selected minimal set of chapters which is both manageable for first-time programmers and a good basis for further growth. The topics and narrative are true to the title, with the author anticipating the usual suspects of tough concepts to teach the reader just in time. Importantly, the original book (The C++ Version) lacks exercises. The translator has added a very good set of exercises to the end of each chapter, an important contribution.","accuracy_rating":5,"accuracy_review":"The selected content is accurate. The depth of the content is chosen carefully to keep the narrative as short as possible yet informative enough to create a good grounding in the most important concepts in C programming, including short forays into the C Standard Library, a sine qua non resource for any C programmer. Despite the C language being the focus and main conduit for computer-science thinking in the book, the concepts are presented in as generic way as possible, allowing the student mind to generalize in the future when it encounters the second programming language in the student’s academic or professional career.","relevance_rating":3,"relevance_review":"The C programming language is one of the oldest languages still in active use. In fact, its popularity is still growing so that it is a very close second, after Java, on the Tiobe index (https://www.tiobe.com/tiobe-index/). The relevance of the material is, thus, mostly appropriate. As the book presents the C98 standard of the C language, there are minor parts that are outdated. Despite the omission of some important additions and updates that came with C99 (1999) and C01 (2001), the backward compatibility of the major C compilers ensure that the book remains relevant to this day. The C99/C01 changes in no way comprised a major evolution of the C language, so the book remains a great introduction to it and programming in general.","clarity_rating":4,"clarity_review":"The style of the author is refreshingly clear. Most of this comes from the conciseness and directness of presentation of the topics. The author is aware of the depth of each topic and abstains with discipline to keep the progression very gradual and not to throw the student in at the deep end, which is very easy when introducing a complete novice into such a complex topic. There are only 2-3 spots in the narrative the reviewer believes can be edited to reduce the conceptual change required of the student.","consistency_rating":5,"consistency_review":"The progression of topics is perfectly constructed to serve the dual goal of narrative conciseness and comprehensiveness of the material. This is usually a difficult task in programming-language books. The author “stays the course” firmly and resists the inevitable urge to throw in an extra detail. This keeps the cognitive load on the student at an appropriate level consistently throughout the narrative.","modularity_rating":5,"modularity_review":"The segregation of the content into chapters is very good. This is another problem with many programming language books, especially when there are language revisions and evolution. Each chapter presents a standalone set of new concepts well grounded in the previous chapters. The exercises at the end of the chapters extend just a step or two beyond the explicitly covered material, which is just enough to prod the student to apply their knowledge and “play”, a very important habit for a computer scientist.","organization_rating":5,"organization_review":"The topic progression is kept both minimal in terms of new material and unflinching of important details. This is to say that the student has just enough capacity to grasp the main computer science ideas and programming best practices while informed on time about important idiosyncrasies and deviations of the C language. In each case, these details are either explained briefly so as not to keep the student in a lurch, or are given prominent place in the very next chapter.","interface_rating":3,"interface_review":"From the very start, the book makes good use of code examples and figures. Most fortunately, the author has chosen to introduce state diagrams and call-stack sketches as an indispensable mental tool for the novice student. The abstractness of topic of programming and the unintuitiveness of some computer science concepts can be mitigated with visual aids, and the author employs them without fuss at the first appropriate occasion. This said, the book can be updated to modern-day interface standards by having a website with many hyperlinks to more in-depth material, language and library references, and additional explanations and exercises.","grammatical_rating":4,"grammatical_review":"There are just a handful of minor grammatical errors that do not detract from the narrative or obscure a topic.","cultural_rating":5,"cultural_review":"The topic of the book is sufficiently abstract that there are minimal cultural references and they are appropriately unbiased. The style of the book is friendly and accessible. The language of the book is English, which has so far been the worldwide standard for a first book on any programming language. A website might make it easier for the content to be translated into other languages for students who do not have sufficient knowledge of English.","overall_rating":9,"overall_review":"I am considering adopting this book for the Introduction to Computer Engineering course I am teaching. If I decide to do so, I will rework the content according to the review sections above (clarity, relevance, grammatical errors) and bring the interface up to modern expectations, all within the CC BY-NC license.","created_at":"2019-07-25T08:12:18.000-05:00","updated_at":"2019-07-25T08:12:18.000-05:00"},{"id":3605,"first_name":"Carter","last_name":"Tiernan","position":"Assoc. Prof. of Instruction","institution_name":"University of Texas at Arlington","comprehensiveness_rating":5,"comprehensiveness_review":"Very good coverage of all beginning topics in C.  I might have chosen to emphasize control structures a little more as they appear in the text but they are well integrated and used in a meaningful way.  ","accuracy_rating":4,"accuracy_review":"A little stale but still very usable","relevance_rating":4,"relevance_review":"A little stale but still very usable","clarity_rating":5,"clarity_review":"Excellent clarity with good examples in a simple style.","consistency_rating":5,"consistency_review":"Very well structured.  Content is brought in as needed and motivated by previous content.","modularity_rating":5,"modularity_review":"Well-designed sections cover each new topic.","organization_rating":5,"organization_review":"Nice flow through the book.  Topics arise organically from previous work.","interface_rating":5,"interface_review":"Simple pdf format is easy to use.  The text does not have hyperlinks or accompanying interactive work.","grammatical_rating":5,"grammatical_review":"The grammar is appropriate to the subject.  Clear, correct, and error free.","cultural_rating":5,"cultural_review":"The text makes very few assumptions about the user other than assuming that the user understands arithmetic rules and basic English grammar rules.  These concepts are then used in discussing the C programming language.","overall_rating":10,"overall_review":"This author writes simply and concisely.  I have suggested this book in the past as an additional class reference but now I will move to using this as the primary class text.","created_at":"2020-03-02T19:27:28.000-06:00","updated_at":"2020-03-02T19:27:28.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/how-to-think-like-a-computer-scientist-c-version-1999","updated_at":"2025-12-15T02:13:03.000-06:00"},{"id":619,"title":"How to Think Like a Computer Scientist: C++ Version","edition_statement":null,"volume":null,"copyright_year":2012,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"The goal of this book is to teach you to think like a computer scientist. I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians,computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating trade offs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.The single most important skill for a computer scientist is problem-solving. By that I mean the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called “The way of the program.”","contributors":[{"id":4695,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Allen","middle_name":"B.","last_name":"Downey","location":null,"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":597,"url":"http://www.greenteapress.com/thinkcpp/","year":null,"created_at":"2018-10-07T09:54:22.000-05:00","updated_at":"2018-10-07T09:54:22.000-05:00","name":"Green Tea Press"}],"formats":[{"id":1066,"type":"PDF","url":"https://greenteapress.com/wp/think-c/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1972,"type":"LaTeX","url":"https://github.com/AllenDowney/ThinkCPP/tree/master/book","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":1,"reviews":[{"id":5007,"first_name":"Charles","last_name":"Bisson","position":"Adjunct","institution_name":"Massasoit Community College","comprehensiveness_rating":4,"comprehensiveness_review":"Text starts with definitions of what a program is and how to proper syntax a program for creation but it should also supplement as to why everyone should learn to code.  That said, the flow of the language follows a common method used by many authors.","accuracy_rating":5,"accuracy_review":"Accuracy for C++ is a major concern, but reading through the text, I could not detect any inaccuracies in examples.","relevance_rating":5,"relevance_review":"The relevance to the student and the language is paramount.  I have interviewed many programming departments with many businesses to seek out what they want in a new hire.  C++ is one of the languages most prefer.","clarity_rating":5,"clarity_review":"The author used language for the common people; the clarity of the text is for everyone to easily understand.  But, maybe, some real-life jargon in terminology could be inserted.","consistency_rating":5,"consistency_review":"I did not detect any consistency issues within this text.","modularity_rating":5,"modularity_review":"The chapters are definitely modularized.  Each aspect of the language is presented in a separate chapter.  The modulated chapters follow a simple flow when first learning the language; very helpful for the student.","organization_rating":5,"organization_review":"The books' organization of topics follows the chapter modularity.  It is well formatted to allow learning from easy first program creation to complex programming.  This allows the student to grab the concepts in an orderly manner.","interface_rating":3,"interface_review":"The examples of code is hard to distinguish from the main text.  Maybe if the author had indented more and used a grey background the interface would be clearer.","grammatical_rating":5,"grammatical_review":"I did not detect grammatical errors within this text.","cultural_rating":5,"cultural_review":"As expected, I did not detect any cultural references within this text.","overall_rating":9,"overall_review":"I would prefer more emphases on I/O with file creation as most industrial programs would require file input and/or file output.\r\nAdditionally, some fun things like time pauses and countdowns, etc. could make it more enjoyable for the student,  Any professor can implement these fun things within there course.\r\nOverall, this seems to be a great book to introduce C++ in a curriculum.  Highly recommended.","created_at":"2021-05-30T12:03:51.000-05:00","updated_at":"2021-05-30T12:03:51.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/how-to-think-like-a-computer-scientist-c-version","updated_at":"2025-12-15T02:31:03.000-06:00"},{"id":907,"title":"Think Raku: How to Think Like a Computer Scientist","edition_statement":"2nd edition","volume":null,"copyright_year":2017,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"The title of this book was originally Think Perl 6, but since Perl 6 has been renamed Raku, we have also changed the title of the book. Think Raku is an introduction to computer science and programming intended for people with little or no experience. This aim of this book is not primarily to teach Raku, but instead to teach the art of programming, using the Raku language. After having completed this book, you should hopefully be able to write programs to solve relatively difficult problems in Raku, but my main aim is to teach computer science, software programming, and problem solving rather than solely to teach the Raku language itself. Think Raku is a free book available under a Creative Commons license. Readers are free to copy and distribute the text; they are also free to modify it, which allows them to adapt the book to different needs, and to help develop new material.","contributors":[{"id":5269,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Laurent","middle_name":null,"last_name":"Rosenfeld","location":null,"background_text":""},{"id":5270,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Allen","middle_name":"B.","last_name":"Downey","location":"Olin College","background_text":"Allen Downey, Professor of Computer Science at Olin College in Needham MA, and the author of Think Python, Think Bayes, Think Stats and other books related to computer science and data science."}],"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":886,"url":"https://greenteapress.com/wp/","year":null,"created_at":"2020-08-19T21:29:32.000-05:00","updated_at":"2020-08-19T21:29:32.000-05:00","name":"Green Tea Press"}],"formats":[{"id":1783,"type":"PDF","url":"https://greenteapress.com/wp/think-perl-6/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1784,"type":"Hardcopy","url":"https://www.amazon.com/Think-Perl-Like-Computer-Scientist-dp-1491980559/dp/1491980559/ref=mt_other?_encoding=UTF8\u0026me=\u0026qid=","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1788,"type":"LaTeX","url":"https://github.com/LaurentRosenfeld/think_raku/tree/master/book","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":1,"reviews":[{"id":34371,"first_name":"Mark","last_name":"Nelson","position":"Assistant Professor","institution_name":"American University","comprehensiveness_rating":5,"comprehensiveness_review":"This is a pretty complete, self-contained introduction to programming, using Raku as the programming language. It starts from the very basics, assuming no knowledge of programming (variables, control flow, etc.), and continues up through intermediate features like object oriented programming, ending with fairly advanced, Raku-specific features like the language-level grammar system. There are some case studies interspersed, which further dig into practical issues like how to select a data structure for your task (Chapter 11).","accuracy_rating":5,"accuracy_review":"It's written by an expert in the Raku language, and I didn't encounter any errors.","relevance_rating":4,"relevance_review":"To my understanding, Raku is now a fairly stable language, so the book shouldn't become obsolete very quickly. There's perhaps a larger question of the extent to which Raku itself remains relevant, given its fairly small user base, but that is beyond the scope of this book.","clarity_rating":5,"clarity_review":"Written in a friendly, conversational tone, and every chapter has a helpful glossary summarizing the technical terms introduced in that chapter.","consistency_rating":5,"consistency_review":"Did not notice any consistency problems.","modularity_rating":4,"modularity_review":"At the top level, the book is divided into two main sections: Part I is a comprehensive introduction to programming, using Raku, while Part II focuses on some more advanced features, many of them specific to Raku. The second part could be used on its own by someone already familiar with programming, to learn more about Raku-specific features, although I don't believe that is a primary intent of the book. Within Part I, the book is nicely modular but does have a \"cumulative\" style, where chapters will build on previous material, so is best read in order rather than picking and choosing chapters.","organization_rating":4,"organization_review":"Generally well organized, no real complaints. Part II is a little more of a grab-bag of material, but that is difficult to avoid.","interface_rating":5,"interface_review":"The book is nicely typeset in LaTeX, with clear conventions for displaying code snippets, etc. Also good use PDF hyperlinking for references and the index.","grammatical_rating":5,"grammatical_review":"No grammatical issues.","cultural_rating":4,"cultural_review":"No cultural insensitivity or anything of that sort. The examples are perhaps slightly dry (a lot of basic mathematical operations), but not unusually so for an intro programming book.","overall_rating":9,"overall_review":"This is a somewhat unusual book: An introduction to programming for novice programmers, but using a language, Raku, that is an uncommon choice for introductory programming classes. Most CS-101 classes as of this writing (2023) use Python, and indeed this book started as an adaptation of a similarly titled open-access textbook, \"Think Python\", but using Raku as the language instead. So what one thinks of this book will largely depend on what one thinks of that choice. Given the choice, however, it's a very well written book! The use of Raku does allow for some fairly advanced material to be encountered without too much ceremony, since Raku tends towards being concise, with a lot of built-in functionality and less boilerplate than many languages. A potential classroom user might want to compare it with \"Think Python\" and consider the similarities and differences between the presentation of intro programming in the two languages.","created_at":"2023-01-14T15:34:54.000-06:00","updated_at":"2023-01-14T15:34:54.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/think-raku-how-to-think-like-a-computer-scientist-2nd-edition","updated_at":"2025-12-15T02:29:16.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":497,"title":"Introduction to MIPS Assembly Language Programming","edition_statement":null,"volume":null,"copyright_year":2016,"isbn10":null,"isbn13":null,"license":"Attribution","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"This book was written to introduce students to assembly language programming in MIPS. As with all assemblylanguage programming texts, it covers basic operators and instructions, subprogram calling, loading andstoring memory, program control, and the conversion of the assembly language program into machine code. However this book was not written simply as a book on assembly language programming. The larger purposeof this text is to show how concepts in Higher Level Languages (HLL), such as Java or C/C++, arerepresented in assembly. By showing how program constructs from these HLL map into assembly, theconcepts will be easier to understand and use when the programmer implements programs in languages likeJava or C/C++. Concepts such as references and variables, registers, binary and Boolean operations, subprogram execution, memory types (heap, stack, and static), and array processing are covered to clarify thedecisions made when implementing HLL. Program control is presented using a mapping from structuredprograms in pseudo code to help students understand structured programming, and why it exists. Memoryaccess in assembly is presented to high light the difference between references (pointers) and values, and howthese impact HLL. This book has numerous code examples, and many problems at the end of each chapter, and it is appropriate for a class in Assembly Language, or as a extra resource for a class in Computer Organization.","contributors":[{"id":4308,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Charles","middle_name":null,"last_name":"Kann","location":"Gettysburg College","background_text":"Charles Kann is an Adjunct Professor in the Computer Science department at Gettysburg College, Gettysburg, PA"}],"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":437,"url":"http://cupola.gettysburg.edu/cgi/viewcontent.cgi?article=1001\u0026context=oer","year":null,"created_at":"2018-09-07T12:22:39.000-05:00","updated_at":"2020-01-02T23:31:16.000-06:00","name":"Charles W. Kann III"}],"formats":[{"id":749,"type":"PDF","url":"https://cupola.gettysburg.edu/oer/2/","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":2,"reviews":[{"id":2000,"first_name":"MD TAMJIDUL ","last_name":"HOQUE","position":"Assistant Professor","institution_name":"University of New Orleans","comprehensiveness_rating":5,"comprehensiveness_review":"Starting from basic information needed for MIPS assembly language programming using MARS IDE, the text covers MIPS arithmetic and logical operators, memory model of MIPS, control structures, recursion, and array, and so on in grater details.","accuracy_rating":5,"accuracy_review":"I could not spot errors - it seems that the proof read was done very well.","relevance_rating":4,"relevance_review":"There was a lacking for a sharable and good programming guide for students for MIPS programming using MARS IDE. This book fulfills the need.","clarity_rating":5,"clarity_review":"The book is well written - specially, in hierarchical manner in terms of difficulty; i.e., it starts showing the basic steps and problem and then gradually dives deeper. This will help students engaged longer while reading the text.","consistency_rating":5,"consistency_review":"The book is organized in a consistent manner chapter-wise as well as within the chapter, concept-wise.","modularity_rating":5,"modularity_review":"The book is easy to read because it is presenting the text in a hierarchical manner in terms of difficulty. Also, for complex cases, illustrations have been provided.","organization_rating":5,"organization_review":"The topic and the text are organizes in a logical and consistent manner. ","interface_rating":5,"interface_review":"I don't find any interface issues including the navigation problem.","grammatical_rating":5,"grammatical_review":"I did not spot any grammatical error.","cultural_rating":5,"cultural_review":"The book has perhaps nothing to do with culture, thus it is non-applicable for this book. It is a good book, thus I am scoring accordingly.","overall_rating":10,"overall_review":"The illustrations or the drawing could be made looking nicer. I understand it is time consuming - but sometimes simpler figure may provide a bad feeling to the naive students. Perhaps, 3D drawing components in power-point, word or visio could be easily used.","created_at":"2018-05-21T19:00:00.000-05:00","updated_at":"2018-05-21T19:00:00.000-05:00"},{"id":4349,"first_name":"Ranjidha","last_name":"Rajan","position":"Affiliate Faculty","institution_name":"Metropolitan State University of Denver","comprehensiveness_rating":5,"comprehensiveness_review":"The book covers both theoretical concepts and step by step assembly language programming using MARS Simulator. It covers topics  like Number representations, MARS IDE,MIPS architecture, Programming using arithmetic and logical operators to assembly programming to arrays, Instruction representations and MIPS memory .","accuracy_rating":5,"accuracy_review":"The information I read was accurate.","relevance_rating":4,"relevance_review":"Considering new CPU are designed every year there are room for updates. For undergraduate students this is a great book for MIPS programming using MARS IDE.","clarity_rating":5,"clarity_review":"The book does seem to provide a good amount of context, programmes and picture demos.","consistency_rating":4,"consistency_review":"The book topics are consistent and easy to follow.","modularity_rating":5,"modularity_review":"The Author did a great job of dividing concepts and information into required sections.","organization_rating":5,"organization_review":"Well organized ,starting from simple topics and scaffolding to complex ones.","interface_rating":4,"interface_review":"There is no issues in navigation. The code examples are nicely presented. Few IDE images are hard to read, I think this is the only way we can include the whole image of the IDE.","grammatical_rating":5,"grammatical_review":"No errors.","cultural_rating":5,"cultural_review":"The language used for explaining theory is English which is used in most academic books worldwide. There is no accessible issues found. The main constructs are focused on Assembly programming which has no cultural references. Examples taken also have no cultural references as the book is dealing with language of computer processors.","overall_rating":9,"overall_review":"Adding interactive components, practice questions and test bank will help the students to get better learning experience.","created_at":"2020-09-01T16:14:18.000-05:00","updated_at":"2020-09-01T16:14:18.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/introduction-to-mips-assembly-language-programming","updated_at":"2025-12-15T02:10:05.000-06:00"},{"id":735,"title":"Introduction to Programming using Fortran 95/2003/2008","edition_statement":null,"volume":null,"copyright_year":2018,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":null,"accessibility_features":["unknown"],"description":"Computers are everywhere in our daily lives. Between the desktop, laptop, phone, bank, and vehicle, it is difficult to completely get away from computers. It only makes sense to learn a little about how a computer really works.This text provides an introduction to programming and problem solving using the Fortran 95/2003/2008 programming language. This introduction is geared for non-computer science majors. The primary focus is on an introduction to problem solving and algorithm development. As such, many details of the Fortran 95/2003/2008 language are omitted.","contributors":[{"id":4910,"contribution":"Author","primary":false,"corporate":false,"title":null,"first_name":"Ed","middle_name":null,"last_name":"Jorgensen","location":"University of Nevada","background_text":"Ed Jorgensen"}],"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":714,"url":"http://www.egr.unlv.edu/~ed","year":null,"created_at":"2019-06-29T10:09:02.000-05:00","updated_at":"2020-08-30T15:21:34.000-05:00","name":"Ed Jorgensen"}],"formats":[{"id":1252,"type":"PDF","url":"http://www.egr.unlv.edu/~ed/fortranv3.pdf","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4","textbook_reviews_count":1,"reviews":[{"id":33445,"first_name":"Patrick","last_name":"Slattery","position":"Adjunct Professor","institution_name":"New York City College of Technology","comprehensiveness_rating":4,"comprehensiveness_review":"With respect to legacy Fortran programming the book does an excellent job of covering the ideas of the subject appropriately and provides an effective index.  If the book is intended to be focused on novice programmers or those simply interested in programming the structure of the material may result in a steep learning curve as the content does not build from simple premises (e.g. \"Hello World\") on upwards.  As a refresher for those who were familiar with Fortran long ago, the structure of the material is effective.","accuracy_rating":5,"accuracy_review":"I found the content to be accurate and error-free.  Some concepts could be presented more clearly, succinctly, or effectively for novice readers.","relevance_rating":3,"relevance_review":"This is not an easy area to assess with respect to a book about Fortran programming.  After all, how relevant is Fortran programming?  In some fields and environments, it may be a necessity but that is different from relevant.  Given the subject matter, the author tries to make the material relevant.  One example is the discussion of a free, open-source compiler available for Fortran users.  The challenge there is that the online resources provided by the group supporting the free compiler are obtuse and may present cybersecurity and other risks.  \r\n\r\nAnother area where the material could be more relevant is in the area of object-oriented programming which, as I understand it, has been a part of the language since Fortran 2003.  \r\n\r\nFinally, some forward-thinking with respect to the potential for Fortran in parallel processing, perhaps on GPUs, would be of interest.","clarity_rating":4,"clarity_review":"The writing style leans more toward academic than toward the instructional or advisory style which novice programmers would prefer.  There are some good examples used but they tend to be more typical, academic examples such as The Tower of Hanoi or Monte Carlo simulation.  There will be some young, modern readers with an interest in those examples, but not many. \r\n\r\nThe writing also includes some academic ornaments such as footnotes for simple terms, etc.  Those are likely to slow novice readers down and may reduce interest in continuing to read the material.","consistency_rating":5,"consistency_review":"Consistency is the book's forte.","modularity_rating":5,"modularity_review":"The modularity of the book makes it manageable to both read and use in instruction, though in some cases that modularity may present a challenge in developing concepts and bring novice readers along.","organization_rating":4,"organization_review":"Is the book presented in a logical, clear fashion?  Yes.\r\nDoes that work best for the target audience?  I am inclined to think that the structure could be improved to make the book more accessible, enjoyable, and effective for novice programmers.","interface_rating":3,"interface_review":"I read the book in both e-reader and .PDF format and while it was not confusing there were areas where the structure and style of the book could have worked better with it's interface.  Lists which span page breaks are challenges in many places.  The style of presenting sample code seemed lacking.  More and better graphics would also have been an improvement.\r\n\r\nI was not able to read a printed, bound copy of the book and cannot comment on that physical interface.","grammatical_rating":5,"grammatical_review":"There were no meaningful grammatical errors of note to me, though I did not keep detailed note of any if I found them.  There are areas where the structure of sentences could be more effective if it were direct in some cases, losing superfluous phrases, and more colorful or descriptive in other places.","cultural_rating":4,"cultural_review":"The text is not culturally insensitive, but it would certainly benefit from including more inclusive perspectives, examples, and anecdotes.","overall_rating":8,"overall_review":"I came to book Introduction to Programming Using Fortran 95/2003/2008 with pent-up interest, keen to dust off nearly half a century of the lost art.   Added to a misplaced sense of nostalgia was some curiosity about how Fortran might be experiencing a rebirth in areas such as parallel processing on Graphical Processing Units (GPUs) and the addition of object-oriented capabilities since Fortran 2003.  \r\nI wanted to read a Fortran book!\r\n\r\nStructurally, the material could use some feedback from a focus group of newbie programmers or those interested in programming.  I imagine too many novices dropping off before they make it through the first 20% of the book to reach a simple ‘Hello World’ example.  The current structure worked well for me as it seemed to group content by category and was an effective way to present a refresher.\r\n\r\nI found the book valuable and developed an interest in seeing Fortran evolve and become more accessible and useful to modern programmers.  I imagined a world where there could be such a thing as an online, browser-based platform for writing and running Fortran code – akin to a Google Colab.  Given all the activity in the cryptocurrency space, I still wonder if there isn’t room for some Fortran code in the parallel processing aspects of mining or as functions or services accessed by smart contracts.  \r\n\r\nI want more!","created_at":"2021-11-03T14:57:10.000-05:00","updated_at":"2021-11-03T14:57:10.000-05:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/introduction-to-programming-using-fortran-95-2003-2008","updated_at":"2025-12-15T02:16:29.000-06:00"},{"id":419,"title":"Introduction to Programming Using Java","edition_statement":"Eighth Edition","volume":null,"copyright_year":2015,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"Welcome to the Eighth Edition of Introduction to Programming Using Java, a free, on-line textbook on introductory programming, which uses Java as the language of instruction. This book is directed mainly towards beginning programmers, although it might also be useful for experienced programmers who want to learn something about Java. It is not meant to provide complete coverage of the Java language. The eighth edition requires Java 8 or later, and it uses JavaFX for GUI programming. Version 8.1 is a small update of Version 8.0. This version briefly covers some of the new features in Java 11 and makes it clearer how to use this book with Java 11 and later.","contributors":[{"id":4056,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"David","middle_name":"J.","last_name":"Eck","location":"Hobart and William Smith Colleges","background_text":"David J. Eck Ph.D. is a Professor at Department of Mathematics and Computer Science at the Hobart and William Smith Colleges."}],"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":317,"url":"http://math.hws.edu/javanotes/","year":null,"created_at":"2018-09-07T12:22:38.000-05:00","updated_at":"2020-01-02T22:30:43.000-06:00","name":"David J. Eck"}],"formats":[{"id":503,"type":"PDF","url":"http://math.hws.edu/javanotes/#:~:text=Downloading%20And%20Other%20Links","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":505,"type":"eBook","url":"http://math.hws.edu/javanotes/#:~:text=Downloading%20And%20Other%20Links","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":506,"type":"Online","url":"http://math.hws.edu/javanotes/#:~:text=Downloading%20And%20Other%20Links","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1262,"type":"Hardcopy","url":"http://www.lulu.com/shop/david-eck/introduction-to-programming-using-java/paperback/product-24154166.html","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4.5","textbook_reviews_count":6,"reviews":[{"id":1362,"first_name":"Ian","last_name":"Finlayson","position":"Assistant Professor","institution_name":"The University of Mary Washington","comprehensiveness_rating":5,"comprehensiveness_review":"This textbook is remarkably comprehensive.  It covers a tremendous amount of material, including nearly every facet of the Java programming language (such as anonymous inner classes, lambdas, variable arity methods etc.).  It also includes a chapter covering basic data structures such as lists, stacks, queues and binary trees, as well as chapters on multi-threading and networking, in addition to its thorough and integrated coverage of graphical user interfaces.  When using this text for a one semester CS 1 course, I use roughly half of the content.  I would probably not use it for a non-major's CS 0 course, as it could be an overwhelming amount of material for students.\n\nThe book is excellent for self-study - many students love having all the extra material available even if we don't cover it in class.\n\nOne area where I would have like to have seen more content is in the books coverage of recursion.  There is one section in chapter nine dealing with recursion which contains four examples.  Recursion is also used for implementing lists and trees, but it would be nice to have a slightly longer treatment as it is a confusing topic for many beginning students.\n\nThe text does not include an index.  The book itself also does not contain a glossary, but there is one on the companion web site.  The text includes quizzes at the end of each chapter, as well as programming exercises.","accuracy_rating":5,"accuracy_review":"I did not notice any technical errors or inaccuracies in the book.","relevance_rating":4,"relevance_review":"The book mostly covers Java 7, with some treatment of Java 8 features, so as of now, the book is perfectly up to date.  Future changes to Java likely won't necessitate major changes to the text, and the author has updated the text several times (currently on version 7).\n\nThe one area of slight concern is with the Swing library used to build GUI applications.  Oracle has replaced Swing with JavaFX, which is the new preferred way of writing GUIs in Java.  Still, Swing is widely used and a fine thing to use for introductory courses.  Moreover, Swing will be a supported part of Java for a long time as it is still so widely used.","clarity_rating":5,"clarity_review":"I think the clarity of writing is the best feature of this text.  The author uses an easy to read, conversational writing style.  The text is also very thorough in its explanations.","consistency_rating":5,"consistency_review":"The author does a good job using consistent terminology.  He explains new terms which are introduced and is very careful about phrasing in general.  For instance when talking about objects he has this to say:\n\n\"It is certainly not at all true to say that the object is 'stored in the variable std.' The proper terminology is that 'the variable std refers to or points to the object\".\n\nActually speaking about the terminology explicitly like this is really helpful.\n\nThe text does use the term \"subroutine\".  While it is internally consistent about this, it is not really consistent with other sources which nearly always refer to them as \"methods\" in the context of Java.  It is not a big point, but students may be confused because they are not called subroutines in other resources they may consult.","modularity_rating":4,"modularity_review":"The text is as modular as any other introductory programming text book I have seen.  It wouldn't be possible to make sense of the example programs in later chapters without a solid mastery of the material in earlier chapters, but that's expected with this type of text.  That said, the book does a good job of being as modular as it can.  For instance, several of the later sections in a chapter can be skipped over, and, as I describe below, I re-arrange the material slightly to fit my course.\n\nOne caveat to this is that many of the examples in later chapters make use of the GUI programming from chapter six.  When considering this text, you should be aware that its use of graphics is pretty fundamental and not something you could easily skip over.  I see this as a positive as it adds some interest to the example programs which are graphical.","organization_rating":5,"organization_review":"I like the organization of the book quite a lot.  It does not use the \"objects first\" approach.  Objects and classes are covered in chapter five, after the basic programming building blocks such as control structures and methods.  I did find that some of the later sections within a chapter were things I didn't want to introduce to students at that point.  For instance I skip the section on exceptions at the end of chapter three, and the sections on interfaces and nested classes at the end of chapter five.\n\nI do think that the putting off arrays until chapter seven is a mistake, mostly because it is just hard to give good assignments that don't use arrays.  When teaching with this book, I cover chapter seven after chapter four.\n\nOverall though, the book does a fine job of transitioning from one topic to the next as it covers not only the particulars of the Java programming language, but the art of programming itself.","interface_rating":5,"interface_review":"I did not find any interface issues at all.  The text includes helpful PDF links in the table of contents, and also when the text makes a reference to another section.  When discussing the example programs, the author also includes links to the full code on the book's web site, which is helpful.  Figures are easy to read and high resolution.  One suggestion I would have to improve the interface would be to include syntax highlighting for code listings.","grammatical_rating":5,"grammatical_review":"The text is remarkably well edited for its length.  I only noticed a handful of spelling or grammatical errors in the book.","cultural_rating":5,"cultural_review":"I didn't notice any instances of the text being culturally insensitive.  The text did not refer to people very often at all.  In the few times it mentions the user or programmer, the author uses male and female pronouns equally.  For instance at one point the text will mention a guess the number program telling the user \"he lost\", and later on saying a blackjack program should quit when the user wants to or when \"she runs out of money\".","overall_rating":10,"overall_review":"I think this book is superior to other introductory programming texts that I have used, even without considering the fact that it is open and free.  It is very detailed and provides clear expositions and great examples on everything that can be included in an introductory course (and then some).  The few criticisms I have for the book can be easily worked around.","created_at":"2017-06-20T19:00:00.000-05:00","updated_at":"2017-06-20T19:00:00.000-05:00"},{"id":1970,"first_name":"John","last_name":"McManus","position":"Assistant Professor","institution_name":"Randolph-Macon College","comprehensiveness_rating":5,"comprehensiveness_review":"This textbook is comprehensive. It covers a significant amount of material in a well-thought out and logical manner. The text starts with basic programming concepts introducing variables, types and input and output.  The author covers the basics of a variety of programming environments including Eclipse, NetBeans, and the command line environment. The next section introduces control structures, exception handling, and introduces arrays and GUI programming. The early introduction of arrays and GUI program is a nice feature, allow students to add address slightly more complex problems.  The book introduces objects and classes late, allowing introductory students to focus on syntax and basic problem solving before adding objects.  I believe the text is well suited to a two-semester introductory sequence, or an upper level Software Design Course.  The text includes quizzes at the end of each chapter, as well as programming exercises.","accuracy_rating":5,"accuracy_review":"I did not see any technical errors or inaccuracies in the book.","relevance_rating":4,"relevance_review":"The book uses the Swing library used to build GUI applications. Swing has been replaced with JavaFX. Swing is still widely used and okay for an introductory courses; the text should be updated to cover JavaFX.","clarity_rating":5,"clarity_review":"The author uses an easy to read, conversational writing style and provides very thorough explanations.  The flow is very logical, with sections building on the prior section.","consistency_rating":5,"consistency_review":"The author uses consistent, and for the most part, modern terminology.  The use of “subroutine” can be a confusing to students.  The more correct term “methods” is also used and it’s not clear why “subroutines” is introduced.  I appreciate the use of JavaDoc.","modularity_rating":5,"modularity_review":"The text is as modular, and the order that the modules are introduced in is very logical.  It is possible to re-order the modules to match your preferences for introducing specific topics.","organization_rating":4,"organization_review":"I like the organization of the book for an introductory course, and for a course on software design. approach. Objects and classes are covered in chapter five, after the basic programming building blocks such as control structures and methods have been covered.  This allows you to choose the depth that you cover topics, going slower in an introductory class, but faster in a course on  Software design. I would recommend moving some sections around.  I like to introduce arrays early, and I defer exceptions until a bit later.","interface_rating":5,"interface_review":"I did not find any interface issues. The text includes PDF links in the table of contents, and also when the text makes a reference to another section. The author also includes links to the full code examples on the book's web site. Figures are easy to read and high resolution.","grammatical_rating":5,"grammatical_review":"The text is well edited. I found a very small number of spelling or grammatical errors in the book.  The book is “cleaner” that many professional edited textbooks.","cultural_rating":5,"cultural_review":"I didn't notice any instances of the text being culturally insensitive. It is difficult to always find neutral examples or references.  The sample problems are appropriate.","overall_rating":10,"overall_review":"This is one of the best Java programming texts that I have reviewed.  I am currently using a different text and plan to switch to this text next semester.  It is very detailed.  The author provides explanations of the core concepts and provides great examples.  The modular approach allows it to be used in an introductory CS class, with Java as a first language; and in a software design class focusing on object-oriented design.","created_at":"2018-03-27T19:00:00.000-05:00","updated_at":"2018-03-27T19:00:00.000-05:00"},{"id":3429,"first_name":"Joey","last_name":"Cho","position":"Professor","institution_name":"Colorado State University - Pueblo","comprehensiveness_rating":5,"comprehensiveness_review":"The book covers all important and necessary topics for beginners in 13 chapters.","accuracy_rating":5,"accuracy_review":"The content is very accurate but here's minor things:\r\n1. On page 14, the word \"but\" was typed twice (...but but has recently been removed...)\r\n2. In section 10.1.4, the abbreviation for Java Collection Framework should be JCF not JFC.","relevance_rating":5,"relevance_review":"Content is very fresh with a full of good examples and exercises. The previous version describes Swing libraries for the graphical user interface but the current version describes the up-to-date JavaFX.","clarity_rating":5,"clarity_review":"The text was written with very easy words and explains concepts clearly with appropriate examples and pictures.","consistency_rating":5,"consistency_review":"The text has a very good flow with a consistent jargon and framework. For example, in section 3.8, the concept of Arrays is introduced and explained later in detail in chapter 7. Also, the GUI programming is introduced in section 3.9 as an appetizer and described fully in chapter 6 and 13 with consistency.","modularity_rating":5,"modularity_review":"The text is consisted of 13 chapters and many sub sections to facilitate any instructor/user to reconstruct/reorganize the content without any difficulties.","organization_rating":5,"organization_review":"The essential topics of Java programming are organized in a way for beginners to read and study easily.","interface_rating":5,"interface_review":"Any interface issues are found. The PDF file that can be downloaded from the open book site provides bookmark links to specific topics of interest, and the table of contents are hyperlinked. Also, all of the name of example code listed in the text have a link to actual code.","grammatical_rating":5,"grammatical_review":"No grammatical errors are found.","cultural_rating":5,"cultural_review":"The text is full of good examples and exercises without having any bias culturally and ethnically.","overall_rating":10,"overall_review":"The introduction to the Conway’s Game of Life and the Checkers in chapter 7, and the Towers of Hanoi and the Blob Counting in chapter 8 are very useful examples for students who are interested in game programming. Also, 3 network programming examples (a simple chat room, a networked Tic-tac-toe game, and a networked Poker game) in section 12.5 could attract a lot of student's attention.\r\n\r\nIn section 6.1.3, when a BorderPane is explained, it would be good to show a picture of a BorderPane of the 5 section as shown in section 6.5.2 or place a link to that section.","created_at":"2019-12-24T09:56:49.000-06:00","updated_at":"2019-12-24T09:56:49.000-06:00"},{"id":4785,"first_name":"Eric","last_name":"Jiang","position":"Professor","institution_name":"University of San Diego","comprehensiveness_rating":5,"comprehensiveness_review":"This book is quite comprehensive and it provides all foundational topics for beginners to learn the Java programming language. In addition, it offers a nice overview of Java programming environments and includes chapters on graphical user interfaces and programming with multi-threading. The book is suitable for a typical first programming course in Java and some of the book’s material can also be used for a subsequent programming course.","accuracy_rating":5,"accuracy_review":"I did not find any technical errors or inaccuracies in the book.","relevance_rating":5,"relevance_review":"The current 8th edition of the book is based on Java 8 and it uses JavaFX for GUI programming, so the book’s content is quite up-to-date. Of course, as more features are periodically added to the Java language, the book will need to be revised accordingly.","clarity_rating":5,"clarity_review":"The book is extremely well-written and easy to follow. In fact, the author uses a conversational writing style and provides clear explanations of concepts and principles throughout the book. All of these make it a good text book for beginners.","consistency_rating":5,"consistency_review":"The author uses consistent terminology internally. But the term “subroutine” introduced in the book would not be consistent with other Java sources including Oracle’s Java Documentation where the term “method” is used. This external term inconsistency may cause some confusions to readers.","modularity_rating":4,"modularity_review":"The book is generally modular. One could cluster and rearrange some of its chapters or sections to fit an intro to Java class. However, the book’s modularity could be further enhanced by re-organizing its coverage of some topics. For instance, it would be good to separate the section on recursion from linked data structures and to consider expanding it to a chapter because the recursion concept and recursive algorithms are usually difficult to comprehend for many beginners.","organization_rating":4,"organization_review":"The author does a good job presenting the material in a logical manner. The book starts basic language constructs and then covers methods, program design, classes, arrays and some more advanced topics. At the end of each chapter, it also includes programming exercises and quizzes. One suggestion I have for book’s organization is to delay the coverage of some class related topics including inheritance, polymorphism and interfaces to a later chapter. In addition, the coverage on data structures (stacks, queues and binary trees) may be expanded so the book could also be used in a second programming course in Java.","interface_rating":4,"interface_review":"The book’s interface is good and it is quite easy to navigate all book components. However, I feel the interface could be improved by adding a glossary and also an index.","grammatical_rating":5,"grammatical_review":"This is a very well-edited book.","cultural_rating":5,"cultural_review":"All examples and exercises from the book are very good and they are not culturally insensitive.","overall_rating":9,"overall_review":"Overall, this is a great book for introducing Java programming. It has a very decent coverage of all important foundational topics and provides clear explanations and nice examples and exercises. Plus, it is freely accessible. \r\n\r\nI will definitely consider using the book in some of my future classes.","created_at":"2021-04-18T00:17:10.000-05:00","updated_at":"2021-04-18T00:17:10.000-05:00"},{"id":5107,"first_name":"Zhenguang","last_name":"Gao","position":"Professor","institution_name":"Framingham State University","comprehensiveness_rating":5,"comprehensiveness_review":"The book covers all parts needed for a freshman course. It is can be used as one semester or one year book for Java programming.","accuracy_rating":5,"accuracy_review":"The syntax explanations are precise. The Java examples are error free.","relevance_rating":4,"relevance_review":"The book doesn't use the most recent version of Java Environment. However, I do not think that is a problem. Beginners do not need the up-to-date new syntax to do well in a problem solving course.","clarity_rating":5,"clarity_review":"The book is very concise, and easy to follow.","consistency_rating":5,"consistency_review":"The book is very well organized in style. Similar formats are used from the beginning to the end.","modularity_rating":4,"modularity_review":"The book follows the standard modularity for a first programming course. It begins with an introduction to computation, then followed by Java basics. It is a great book for a fast paced course. However, for some schools with a slow paced programming course, covering more basic programming skills and more examples could improve the learning experience.","organization_rating":4,"organization_review":"I feel the book should cover the basics in more details and more examples. The order of the some topics are not conventional.  For example, \"if\" structure is covered after the looping structures; and programming environment is in the last section of Chapter 2, not in the first section.","interface_rating":5,"interface_review":"The book is very easy to use. The website offers online, PDF, and other ways to navigate.","grammatical_rating":5,"grammatical_review":"I do not see any grammatical errors.","cultural_rating":4,"cultural_review":"The book doesn't not make use of a lot of examples relevant to races, ethnicity, or diversity. However, I did not see any culturally insensitive, or offensive content.","overall_rating":9,"overall_review":"I'd recommend the book for any one looking for a first year programming course.","created_at":"2021-06-15T15:24:22.000-05:00","updated_at":"2021-06-15T15:24:22.000-05:00"},{"id":34879,"first_name":"Tanvir Irfan","last_name":"Chowdhury","position":"Assistant Professor","institution_name":"Marshall University","comprehensiveness_rating":5,"comprehensiveness_review":"This book covers all the essential topics in Java development. It is not just for beginners; experienced programmers can also review the chapters for a quick reference. It can be used both as an introductory programming class using Java and also as upper level class that covers GUI programming using Java.","accuracy_rating":5,"accuracy_review":"I haven't seen any example with an obvious error. Having the source code available online for practice is a nice feature.","relevance_rating":5,"relevance_review":"Java is updated regularly. Although it is hard to keep up with the updates, I still think the book is using a fairly new version of Java. The reader will not miss much with the used version and if they want to learn the latest version, they can do it easily.","clarity_rating":4,"clarity_review":"The book is easy to follow and flows naturally from beginning to end. It introduces various concepts not generally seen in a programming language book, such as section 8.5, Analysis of Algorithms. While I appreciate the author's initiative, the example used in the first paragraph is rather exaggerated/dramatic (\"..correct answer after ten thousand years...\").","consistency_rating":5,"consistency_review":"The book uses consistent terminology throughout. All the codes/code segments were formatted using the same style. While the authors provided an explanation for using the term \"subroutine\" in chapter 4, I personally still think using the name \"method\" would be more beneficial for the reader.","modularity_rating":5,"modularity_review":"The book's modularity enables instructors of introductory Java programming courses to teach with ease. Instructors have the flexibility to select essential chapters while reserving more advanced topics for students at higher levels of proficiency.","organization_rating":5,"organization_review":"The book is organized in a logical fashion.","interface_rating":5,"interface_review":"Navigating the book is incredibly straightforward. The website provides various options such as online access, PDF downloads, and other convenient methods to explore its contents.","grammatical_rating":5,"grammatical_review":"I did not notice any obvious grammatical errors in my reading.","cultural_rating":5,"cultural_review":"While, I do not see examples of the inclusion of various races, ethnicities, and backgrounds. The most important thing is I also did not see any insensitive, or offensive content either. For the subject matter, I believe the book is perfectly fine.","overall_rating":10,"overall_review":null,"created_at":"2024-02-01T21:53:54.000-06:00","updated_at":"2024-02-01T21:53:54.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/introduction-to-programming-using-java-seventh-edition","updated_at":"2025-12-15T02:16:34.000-06:00"},{"id":285,"title":"Think Java: How To Think Like a Computer Scientist","edition_statement":"2e","volume":null,"copyright_year":2020,"isbn10":null,"isbn13":null,"license":"Attribution-NonCommercial-ShareAlike","language":"eng","accessibility_statement":"","accessibility_features":[],"description":"Think Java is a hands-on introduction to computer science and programming used by many universities and high schools around the world. Its conciseness, emphasis on vocabulary, and informal tone make it particularly appealing for readers with little or no experience. The book starts with the most basic programming concepts and gradually works its way to advanced object-oriented techniques. In this fully updated and expanded edition, authors Allen Downey and Chris Mayfield introduce programming as a means for solving interesting problems. Each chapter presents material for one week of a college course and includes exercises to help you practice what you’ve learned. Along the way, you’ll see nearly every topic required for the AP Computer Science A exam and Java SE Programmer I certification.","contributors":[{"id":3310,"contribution":"Author","primary":true,"corporate":false,"title":null,"first_name":"Chris","middle_name":null,"last_name":"Mayfield","location":"James Madison University","background_text":"Chris Mayfield, PhD, is an Assistant Professor of Computer Science at James Madison University. His research focuses on CS education and professional development, particularly in K-12 schools. Over the past several years, he has taught introductory CS courses using POGIL and the flipped classroom."},{"id":3311,"contribution":"Author","primary":false,"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"},{"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":174,"url":"http://greenteapress.com/wp/think-java/","year":2020,"created_at":"2018-09-07T12:22:37.000-05:00","updated_at":"2020-07-19T18:29:52.000-05:00","name":"Green Tea Press"}],"formats":[{"id":331,"type":"PDF","url":"https://greenteapress.com/wp/think-java-2e/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":332,"type":"Online","url":"https://greenteapress.com/wp/think-java-2e/","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1574,"type":"Hardcopy","url":"https://www.amazon.com/gp/product/1492072508/ref=as_li_qf_asin_il_tl?ie=UTF8\u0026tag=greenteapre01-20\u0026creative=9325\u0026linkCode=as2\u0026creativeASIN=1492072508\u0026linkId=838839cc6d1027f2f69f523efe760fe9","price":{"cents":0,"currency_iso":"USD"},"isbn":null},{"id":1964,"type":"LaTeX","url":"https://github.com/ChrisMayfield/ThinkJava2","price":{"cents":0,"currency_iso":"USD"},"isbn":null}],"rating":"4","textbook_reviews_count":8,"reviews":[{"id":453,"first_name":"Bradford","last_name":"Armitage","position":"Adjunct Professor","institution_name":"Metropolitan State University","comprehensiveness_rating":5,"comprehensiveness_review":"The book does a great job on providing fundamental programming concepts in a manner that will make \nit easy for Students to grasp.  Materials are organized in a reasonable manner, although the chapter \non loops could be presented sooner.  Each chapter ends with Glossary to further help explain the terms \nused in the chapter.  Each chapter had a good amount of exercises at the end.  Overall, the book is \nvery well done, and one that I would use in the classroom.","accuracy_rating":5,"accuracy_review":"I did not find any errors.  I reviewed about 80% of the presented code, and could not find any issues.","relevance_rating":4,"relevance_review":"The book’s concepts on programming fundamentals will be long lasting.  Java may change with new \nVersions, but the code/syntax presented in this book is standard stuff, so it also should be long lasting\n(at least as long as Java is in use).","clarity_rating":5,"clarity_review":"The author is very deliberate in his explanations of using Java in solving problems and in the overall programming concepts.  The author \ndoes a very good job with presenting examples and explaining in detail each part of the example.  Also there is a consistency in how each \nexample, or programming concept is presented.","consistency_rating":5,"consistency_review":"As stated in the clarity part of the review, the author is very consistent in how he presents examples and concepts. \nThis is one of the strong points of the book, along with the easy simplistic way things are presented.  Very easy for \nStudents to see the concept being presented and to understand how it is coded in Java.  Some text books over complicate\nthe example, that is not the case in this book.","modularity_rating":4,"modularity_review":"The text contains 16 chapters and four appendixes.  All the chapters were fairly short in size, so that a Student would not get \nover whelmed with anyone concept.  Each chapter was broken down into concise parts, so that an instructor could easily assign \nthe whole chapter or sub-sections.  The chapters are arranged in an order, such that the Student can easily flow from one concept \nto  the next, if reading the book in sequence.  The one issue, the chapter on Loops should be presented earlier.","organization_rating":4,"organization_review":"Please refer to the comments in the modularity section.  \nOverall, book is very well organized and structured to the point a Student \nshould have no issue going through the book and following the concepts \nfrom one to the other.","interface_rating":4,"interface_review":"The text was very clean and loaded with links to relevant material. \nThe book would benefit if there were some links with in the text to \nassist in navigation.  So one concept or example could be linked to \nanother.","grammatical_rating":5,"grammatical_review":"Did not find any grammar errors.  Assume the text has been scanned multiple times by now.","cultural_rating":5,"cultural_review":"The text deals with programming fundamentals, Java syntax, and logic.  Not much in the way of cultural relevance in this topic, so it should not be offensive to any group.","overall_rating":9,"overall_review":"Overall very impressed with the book and definitely one I would use in my classroom.","created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":456,"first_name":"Siva","last_name":"Jasthi","position":"Adjunct Faculty","institution_name":"Metropolitan State University","comprehensiveness_rating":4,"comprehensiveness_review":"It has covered the topics that are expected to be covered in a beginning programming course. However, the structure and arrangement of the material is not smooth.  Consistency in presentation is missing.","accuracy_rating":5,"accuracy_review":"It is accurate, error-free and unbiased.","relevance_rating":3,"relevance_review":"The links to the java documentation are provided with explicit URLs. It is unavoidable to update these when a new version of Java is released.\n\nThe life of programming text books is directly related to the evolution of the programming languages.  For example, the latest version of Java is Java 8 and this text book is referring to Version 6.","clarity_rating":4,"clarity_review":"Abstraction (giving and seeing big picture) is very important concept in Java. Some treatment with real world examples would be useful.\n\nSome sub-sections in the individual chapters are out of place. For example \"(8.5) Reading Documentation\" is applicable to any chapter. It is best to cover and provide details on how to search and navigate java documentation in general in the first chapter itself.\n\n\nIt would be good to cover \"Chapter 15. Object oriented programming\" prior to chapters 12,13, 14.","consistency_rating":2,"consistency_review":"This book lacks consistency.\nMany chapters jump directly into the material while some chapters start with an introduction (example: 12 Arrays)","modularity_rating":4,"modularity_review":"The text is well divided into chapters, sections and sub-sections","organization_rating":2,"organization_review":"It is expected that each chapter starts with the goals of that chapter. \"What is covered? What will I learn? Why should I read this chapter?\"  -- these questions should be addressed in the first few paragraphs of each chapter. \n\nMany chapter directly jump to the topic and only a couple of chapters have this introduction.","interface_rating":3,"interface_review":"Here are some issues I have found\n\nWhile navigating the PDF, I can jump to a topic by clicking on the page number in the INDEX. However, you can not do the same thing from TABLE OF CONTENTS.  It is very limiting to manually nagivate using  \"page down\" or \"search\"","grammatical_rating":5,"grammatical_review":"Didn't find any issues.","cultural_rating":5,"cultural_review":"There are no offensive or insensitive references.","overall_rating":7,"overall_review":"Chapters (3) and (6) can be combined into \"methods\".    All the concepts explained in these two chapters are same with one distinguishing feature - one type returns nothing. Another type returns something. Rest of the concepts are same.","created_at":"2016-08-21T19:00:00.000-05:00","updated_at":"2016-08-21T19:00:00.000-05:00"},{"id":937,"first_name":"Debra","last_name":"Duke","position":"Instructor","institution_name":"Virginia Commonwealth University","comprehensiveness_rating":5,"comprehensiveness_review":"The textbook covers all of topics for a post-secondary introduction to programming course in Java (CS1). The topics are presented in a \"late objects\" order. Each chapter includes a Vocabulary section that is a glossary of the terms introduced in that chapter. A comprehensive index is provided, as well.","accuracy_rating":5,"accuracy_review":"The content is completely accurate, error-free, and unbiased.","relevance_rating":4,"relevance_review":"The computer science concepts are up-to-date, generally. The only error that I found was with a link to the development tool, Checkstyle, in Appendix A. The project has moved from sourceforge.net to github at https://github.com/checkstyle/checkstyle. Because this was located in the Development Tools appendix, it should be easy to update in a future release.","clarity_rating":5,"clarity_review":"One of the strengths of Think Java is how easily understood the writing is. Keeping the language clear is critical in explaining complex computer science concepts and this book does an excellent job.","consistency_rating":4,"consistency_review":"I found it to be very consistent.","modularity_rating":5,"modularity_review":"Reading sections are broken up into sections that are clearly distinguished in the table of contents. This is helpful if you choose to skip, for example, sections 5.8 Recursive methods and 5.9 Recursive stack diagrams because you don't teach recursion until the following semester. ","organization_rating":5,"organization_review":"Think Java is very well organized. It covers the core computer science topics using the Java programming language, while gently introducing more advanced concepts, such as the description of Java as a Turing complete programming language in section 6.7.","interface_rating":5,"interface_review":"I read the book with iBook reader on my iPad and MacBook. In both cases it was very easy to navigate and all of the figures appeared correctly. I tested it briefly in Acrobat Reader and had no issues with navigating to the various sections.","grammatical_rating":5,"grammatical_review":"I found no grammatical errors.","cultural_rating":4,"cultural_review":"I found the tone culturally neutral. The examples are mathematics based or with familiar objects, such as a deck of cards.","overall_rating":9,"overall_review":null,"created_at":"2017-02-08T18:00:00.000-06:00","updated_at":"2017-02-08T18:00:00.000-06:00"},{"id":1826,"first_name":"Vijayalakshmi","last_name":"Ramasamy","position":"Visiting Assistant Professor","institution_name":"Miami University","comprehensiveness_rating":4,"comprehensiveness_review":"“Think Java” intends to provide all the topics needed for the beginners to learn Java programming. The vocabulary, comprehensive index, a variety of practice exercises at the end of each chapter, and the links to related material stimulate the interest to learn. However, the text does not include a precise introduction and a concluding summary in many chapters. A sorted list of the vocabulary of all the terms can be presented as a glossary before the index. ","accuracy_rating":4,"accuracy_review":"The content is correct, easy to follow. \nIn the online version, the text for the following hyperlink shows ?? in Section 1.10. http://greenteapress.com/thinkjava6/html/thinkjava6001.html#code","relevance_rating":5,"relevance_review":"Any textbook on programming concepts needs to reflect the evolution in the field by updating it periodically. It is essential to keep the users updated by extending a reference to the current Java 9 API documentation. ","clarity_rating":5,"clarity_review":"The author employs a clear and readable writing style with easy-to-follow illustrations. ","consistency_rating":4,"consistency_review":"The vocabulary section at the end of each chapter is neither sorted nor precise in some definitions. The definition of the term 'void method' is included in the vocabulary section of the value methods chapter. ","modularity_rating":4,"modularity_review":"The textbook consists of organized and manageable sections and sub-sections. Still, the void and value methods may be merged into a single chapter to enable readability and ensure continuity. ","organization_rating":4,"organization_review":"The text presents all the relevant information needed for a beginner progressively with a few structural issues. \nThe sections in some chapters are not organized with smoothly flowing content. For instance, Chapter 2 entitled \"Variables and Operators\" does not introduces all the most basic data types. A list of all the operators in Java is not presented in the same chapter. The modulus, relational, and unary increment and decrement operators are introduced in Chapters 3, 5, and 7 respectively. ","interface_rating":5,"interface_review":"The text flows clean and includes a useful collection of web-links for relevant reading material. The online version enhances both readability and interest by linking one concept to another.  ","grammatical_rating":5,"grammatical_review":"No grammatical errors found. ","cultural_rating":5,"cultural_review":"The textbook is culturally unbiased.","overall_rating":9,"overall_review":"Overall, the availability of the text in pdf, online and printed forms makes it a useful resource for the post-secondary learners.  ","created_at":"2018-02-01T18:00:00.000-06:00","updated_at":"2018-02-01T18:00:00.000-06:00"},{"id":1940,"first_name":"Isabela","last_name":"Hidalgo","position":"Instructor I","institution_name":"University of South Florida","comprehensiveness_rating":5,"comprehensiveness_review":"Concepts are presented individually, in a fundamentals-first approach, with examples that are simple for students who are learning to program for the first time. It does not assume any previous knowledge of programming or college-level math. It presents the concepts well, without overwhelming the reader with long and complicated examples. It covers the topics for a fundamentals of programming course and even a good introduction to Object-Oriented Programming. \n\nAll the code is available on GitHub and instructions to use GitHub are provided in the book. It is a good way to give students some experience using code repositories. The exercises are at the right difficulty level to give students some practice. \n\nThe vocabulary section at the end of each chapter is useful.The index and table of contents are complete.","accuracy_rating":5,"accuracy_review":"I have not found any conceptual errors in the book.","relevance_rating":5,"relevance_review":"The basic programming concepts in the book will continue to be relevant. The code, tested in Java 8 (in book’s edition 6.1.3), should continue to work with new Java releases. New developments in the programming language can be added in newer editions.","clarity_rating":5,"clarity_review":"The explanations and examples are clear and easy to follow. The exercise objectives and instructions are easy to understand, not confusing or intimidating. The terms are well-defined and the examples are familiar. The vocabulary section in each chapter is a valuable resource for students who need to review the terminology.","consistency_rating":5,"consistency_review":"It is great that the author updated the textbook in response to the previous reviews.  The book is very consistent now, with introductions in every chapter, as well as exercises and vocabulary. The introduction to OOP was moved to chapter 10 and the section on Java documentation was also moved to an earlier chapter. The terminology used is consistent throughout the book too.","modularity_rating":5,"modularity_review":"The book is now divided in 14 chapters and 3 appendices. The size and section breakdown is good for a semester-long CS1 course. Some advanced topics can be skipped without disruption. The book is not overly verbose which gives students more time to work on their programs. Every chapter has well-defined exercises and students are encouraged to work on all of them. ","organization_rating":5,"organization_review":"The book is well organized and the topics flow in a logical fashion. Some of the issues from previous editions have been fixed. Introductions to every chapter are now available. My suggestion is to add a clear list of student outcomes for each chapter. That would be useful for students and instructors alike.","interface_rating":5,"interface_review":"I reviewed the PDF version and it looks good. The links in the table of contents are working. There are clickable links within the text to different sections, such as appendices, and external websites. Having the code printed in color is very helpful. I also like that when a Java keyword is mentioned in the explanations, the font (face and color) of the keyword matches the font in the code samples.","grammatical_rating":5,"grammatical_review":"I have not found any grammatical errors.","cultural_rating":5,"cultural_review":"The text is neutral. The examples are current and unbiased. I have not found any insensitive references.","overall_rating":10,"overall_review":"I found the book to be very accessible to the first-time programmer. It presents programming logic with simple, short examples. I intend to use it in my introduction course.","created_at":"2018-03-27T19:00:00.000-05:00","updated_at":"2018-03-27T19:00:00.000-05:00"},{"id":2878,"first_name":"George","last_name":"Foster","position":"Adjunct Instructor","institution_name":"University of Mary Washington","comprehensiveness_rating":5,"comprehensiveness_review":"I have used \"Think Java\" previously as a supplement to my notes in my sections of an introductory programming and problem solving CS1 level course in Java, and intend to do so again, but to emphasize use of the textbook more. The textbook covers all of the material required in CS1 except for File I/O. The text takes a \"late objects\" approach, mentioning just the minimum required about classes to explain how to write the first program. Search, sort, and recursion are covered. The table of contents and index provide a good road map to find topics of interest. Each chapter includes both a vocabulary list and a sample problem section.","accuracy_rating":5,"accuracy_review":"Errors I had noticed in prior versions of the text have been corrected. Vocabulary is used in industry-standard fashion. All mentions of specific Java IDEs and tools are informational and relatively free of judgement.","relevance_rating":5,"relevance_review":"While the field of computer science is constantly evolving, the approach taken by this text to teach the fundamentals is likely to survive. The newer features of the language in Java 9 and above are topics I would expect to see in the next course (CS2) beyond this textbook. That said, the inclusion of the Java2D features in the appendix may become dated if JavaFx truly takes off.","clarity_rating":5,"clarity_review":"My primary reason for choosing this textbook is the conciseness and the clarity. The language used is straight-forward and direct, and the examples are very helpful. The vocabulary is defined both in context and in a separate vocabulary section. I can't say enough about the benefits of a concise textbook when a student is searching for one critical piece of information to cement his or her understanding of a concept. The only section where I have any issue with clarity is the discussion of higher-order, machine language, and byte code in section 1.3.","consistency_rating":5,"consistency_review":"The textbook is highly consistent in both terminology and structure. The vocabulary sections ensure that all sections of the text access the concepts with the same terminology.","modularity_rating":5,"modularity_review":"The textbook is about as modular as can be given the need for fundamental programming topics to build upon each other. The chapters are sufficiently small and further subdivided into bite-sized chunks. However, some of the authors' choices in topic order are locked in. For example, the authors choose to cover loops before arrays, and as a result use loops all through the material in the chapter on arrays, even though there may be other options to teach arrays that do not require the use of loops. Some of the more advanced material near the end and especially the appendices can be skipped without disruption.","organization_rating":5,"organization_review":"The organization of the text is logical and flows well from section to section. The structure of each chapter makes it easy to navigate the text and find the required information.","interface_rating":4,"interface_review":"I've used both the PDF and web versions of the text with no problems. The addition of even just a fancier cover would help with providing a more professional textbook appearance that the quality of the textbook deserves.","grammatical_rating":5,"grammatical_review":"The textbook has been thoroughly edited.","cultural_rating":5,"cultural_review":"The examples used are cross-cultural, although a surprising number of students in recent years are unfamiliar with standard card games.","overall_rating":10,"overall_review":"\"Think Java\" covers the material for a CS1 class with just the right depth. The concise writing style, clear vocabulary definitions, and helpful examples make this text the right fit for my class.","created_at":"2019-04-30T23:36:19.000-05:00","updated_at":"2019-04-30T23:36:19.000-05:00"},{"id":4107,"first_name":"Peter","last_name":"Morgan","position":"Adjunct Professor","institution_name":"Bunker Hill Community College","comprehensiveness_rating":4,"comprehensiveness_review":"The book is appropriate for a first semester Computer Science course, although it does not present every detail that a Computer Science professor may wish to cover in a first semester programming course.  The instructor should plan to fill in small details in lecture or with supplementary reading, if those details are needed for whatever programming projects they wish to assign to the students.","accuracy_rating":5,"accuracy_review":"Having taught using this book for two semesters, I cannot think of any inaccuracies.","relevance_rating":5,"relevance_review":"The book begins by walking the reader through the mechanics of writing a very simple Java program.  Throughout the book, the focus is on key concepts that a beginning Computer Science student needs to understand. The text also refers the reader to online reference materials, such as the Java Tutorial (https://docs.oracle.com/javase/tutorial/), where the student can find more detailed information.","clarity_rating":5,"clarity_review":"I have had student feedback indicating that they found the book clear and easy to read.","consistency_rating":5,"consistency_review":"I cannot think of ANY inconsistency.","modularity_rating":4,"modularity_review":"The chapters are fairly short, making each one approximately appropriate for one week of classes.","organization_rating":4,"organization_review":"Each chapter concludes with a summary of the vocabulary introduced in the chapter, as well as a number of exercises. There are several useful Appendices, and the sample programs that appear in the text are available for free download.\r\nThe book introduces a few concepts, such as recursion and inheritance, that some Computer Science departments may choose to defer to a follow-on (second semester) course.  These are easy enough to de-emphasize, without sacrificing any continuity.  It is also possible that a brief mention of a more advanced topic will encourage the students’ curiosity about Computer Science in general.","interface_rating":5,"interface_review":"No issues found.   As far as I know, all of the URLs to other resources are up to date.","grammatical_rating":5,"grammatical_review":"No problems observed.","cultural_rating":5,"cultural_review":"No problems found.","overall_rating":9,"overall_review":"Java is an evolving language, so it would be impossible for any introductory textbook to cover every topic that a Java programmer is likely to encounter.  However, this book provides a reader-friendly starting point, with helpful of links to more comprehensive resources.","created_at":"2020-06-27T14:06:34.000-05:00","updated_at":"2020-06-27T14:06:34.000-05:00"},{"id":33660,"first_name":"Jeffrey","last_name":"LaMarche","position":"Special Purpose Instructor","institution_name":"Radford University","comprehensiveness_rating":4,"comprehensiveness_review":"The book covers most topics that I would expect in a CS1 level course. One topic that is strangely missing is working with text files, which is something that can lead to more interesting beginning programs. The chapters themselves are fairly short and do not always cover all of the information that might be expected. This also means that there are a limited number of examples available for the students to look at. Some information is also not covered where it might be expected either. For example, the increment and decrement operators are not covered until chapter six, which is about loops.","accuracy_rating":4,"accuracy_review":"The book is very accurate. I do not remember encountering any specific errors in the text or code provided. There might be some bias, which is because most programmers are biased about the way that they do things (e.g., Java programmers tend to go about coding differently than C++ programmers, etc.). I know that I disagreed with a few things in the book, and it was also very minor in the grand scheme of everything.","relevance_rating":3,"relevance_review":"I think that this book will stay relevant for a while. The problems are with updating and modularity (see below). Adding in new features, such as Java Records, could take extensive work. (I do not think Records are really needed and some of my colleagues disagree.)","clarity_rating":4,"clarity_review":"The book is very easy to read and follow. I would say that additional examples might be helpful in some areas, since only providing a single context is not always effective for reaching a large amount of students.","consistency_rating":5,"consistency_review":"The book adheres to a consistent excellent style and grammatical framework.","modularity_rating":3,"modularity_review":"This book, like most computer programming books, has modularity issues. Some chapters heavily rely on other chapters, so reordering the readings is challenging. Reordering or omitting chapters can also be problematic, because that content might be referenced later.","organization_rating":4,"organization_review":"The book has great organization throughout. Sometimes I would have introduced things in a different order within a section or moved topics to different sections that made more sense to me.","interface_rating":4,"interface_review":"The score for the interface varies a little depending on which version of the textbook is being used. The HTML version viewable from Green Tea Press has an alert that not all mathematical symbols might display correctly. The HTML Trinket version does not have this alert, however it does not have as good of a table of contents with direct links right to the sections like the Green Tea Press version. The actual mathematical operator symbols are not listed in the index, which might be confusing to some students if they wanted to refer to them.","grammatical_rating":5,"grammatical_review":"I do not remember there being any grammatical errors during my reading of the book.","cultural_rating":5,"cultural_review":"I do not recall there being anything insensitive or offensive in the book. It is possible that the example contexts could be expanded to be more inclusive of more backgrounds. This could be as simple as changing from using playing cards as an example and switching to using dice instead.","overall_rating":8,"overall_review":"The book mentions using Dr. Java in the appendix, which is something that I thought about bringing up in the relevance area. I used to use Dr. Java for my CS1 courses and I liked it greatly. Eventually, I could no longer get it to work on Mac OS X, so I stopped using it. The last update to Dr. Java was also in 2019, which means that development on it might no longer be active.","created_at":"2022-01-13T16:10:53.000-06:00","updated_at":"2022-01-13T16:10:53.000-06:00"}],"url":"https://staging.open.umn.edu/opentextbooks/textbooks/think-java-how-to-think-like-a-computer-scientist","updated_at":"2025-12-15T02:31:01.000-06:00"}],"links":{"self":"https://staging.open.umn.edu/opentextbooks/subjects/programming-languages.json?page=1","total_pages":3,"total_count":28,"next":"https://staging.open.umn.edu/opentextbooks/subjects/programming-languages.json?page=2"}}
