tag:open.umn.edu,2005:/opentextbooks/subjects/3?page=10Open Textbook Library - Computer Science Textbooks2018-09-07T17:21:57Zhttps://open.umn.edu/assets/common/favicon/favicon-1594c2156c95ca22b1a0d803d547e5892bb0e351f682be842d64927ecda092e7.icohttps://open.umn.edu/assets/library/otl_logo-f9161d5c999f5852b38260727d49b4e7d7142fc707ec9596a5256a778f957ffc.png3542018-09-07T17:21:57Z2024-03-26T15:58:37ZDatabase Design - 2nd Edition<img alt="Read more about Database Design - 2nd Edition" title="Database Design - 2nd Edition cover image" class="cover " width="350" height="453" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MTQyNCwicHVyIjoiYmxvYl9pZCJ9fQ==--5ae3bf9271b5d6a9ec9975fbbd7d3a334cac473c/datbase.jpg" />This second edition of Database Design book covers the concepts used in database systems and the database design process. Topics include: The history of databases Characteristics and benefits of databases Data models Data modelling Classification of database management systems Integrity rules and constraints Functional dependencies Normalization Database development process New to this edition are more examples, highlighted and defined key terms, both throughout and at the end of each chapter, and end-of-chapter review exercises. Two new chapters have been added on SQL, along with appendices that include a data model example, sample ERD exercises and SQL lab with solutions.3362018-09-07T17:21:56Z2024-03-04T14:06:19ZPython for Everybody: Exploring Data Using Python 3<img alt="Read more about Python for Everybody: Exploring Data Using Python 3" title="Python for Everybody: Exploring Data Using Python 3 cover image" class="cover " width="579" height="840" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6Mjc2LCJwdXIiOiJibG9iX2lkIn19--3da6740b2a9593fdbe0bec9ac81ad9478fb71dc6/9781530051120.png" />I never seemed to find the perfect data-oriented Python book for my course, so I set out to write just such a book. Luckily at a faculty meeting three weeks before I was about to start my new book from scratch over the holiday break, Dr. Atul Prakash showed me the Think Python book which he had used to teach his Python course that semester. It is a well-written Computer Science text with a focus on short, direct explanations and ease of learning.The overall book structure has been changed to get to doing data analysis problems as quickly as possible and have a series of running examples and exercises about data analysis from the very beginning. Chapters 2–10 are similar to the Think Python book, but there have been major changes. Number-oriented examples and exercises have been replaced with data- oriented exercises. Topics are presented in the order needed to build increasingly sophisticated data analysis solutions. Some topics like try and except are pulled forward and presented as part of the chapter on conditionals. Functions are given very light treatment until they are needed to handle program complexity rather than introduced as an early lesson in abstraction. Nearly all user-defined functions have been removed from the example code and exercises outside of Chapter 4. The word “recursion”1 does not appear in the book at all. In chapters 1 and 11–16, all of the material is brand new, focusing on real-world uses and simple examples of Python for data analysis including regular expressions for searching and parsing, automating tasks on your computer, retrieving data across the network, scraping web pages for data, object-oriented programming, using web services, parsing XML and JSON data, creating and using databases using Structured Query Language, and visualizing data. The ultimate goal of all of these changes is a shift from a Computer Science to an Informatics focus is to only include topics into a first technology class that can be useful even if one chooses not to become a professional programmer.3442018-09-07T17:21:56Z2024-01-22T14:52:10ZGraphic Design and Print Production Fundamentals<img alt="Read more about Graphic Design and Print Production Fundamentals" title="Graphic Design and Print Production Fundamentals cover image" class="cover " width="1275" height="1650" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjgzLCJwdXIiOiJibG9iX2lkIn19--d6565578cb171c57f8e11d96a6d7862f50447ce4/0000GraphicDe.png" />This textbook -- written by a group of select experts with a focus on different aspects of the design process, from creation to production -- addresses the many steps of creating and then producing physical, printed, or other imaged products that people interact with on a daily basis. It covers the concept that, while most modern graphic design is created on computers using design software, the ideas and concepts don't stay on the computer. The ideas need to be completed in the computer software, then progress to an imaging (traditionally referred to as printing) process. Keywords are highlighted throughout and summarized in a Glossary at the end of the book, and each chapter includes exercises and suggested readings.3522018-09-07T17:21:56Z2024-01-22T18:50:48ZComputer Networking : Principles, Protocols and Practice<img alt="Read more about Computer Networking : Principles, Protocols and Practice" title="Computer Networking : Principles, Protocols and Practice cover image" class="cover " width="679" height="953" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjkxLCJwdXIiOiJibG9iX2lkIn19--c4ecac785eeef9fb97363b2acb68c21f2fb449e1/0000ComNetwor.png" />This open textbook aims to fill the gap between the open-source implementations and the open-source network specifications by providing a detailed but pedagogical description of the key principles that guide the operation of the Internet.3382018-09-07T17:21:56Z2024-01-22T19:01:57ZA First Course in Electrical and Computer Engineering<img alt="Read more about A First Course in Electrical and Computer Engineering" title="textbook cover placeholder image" class="cover fallback " width="247" height="326" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" />This book was written for an experimental freshman course at the University of Colorado. The course is now an elective that the majority of our electrical and computer engineering students take in the second semester of their freshman year, just before their first circuits course. Our department decided to offer this course for several reasons: we wanted to pique student' interest in engineering by acquainting them with engineering teachers early in their university careers and by providing with exposure to the types of problems that electrical and computer engineers are asked to solve; we wanted students entering the electrical and computer engineering programs to be prepared in complex analysis, phasors, and linear algebra, topics that are of fundamental importance in our discipline; we wanted students to have an introduction to a software application tool, such as MATLAB, to complete their preparation for practical and efficient computing in their subsequent courses and in their professional careers; we wanted students to make early contact with advanced topics like vector graphics, filtering, and binary coding so that they would gain a more rounded picture of modern electrical and computer engineering. In order to introduce this course, we had to sacrifice a second semester of Pascal programming. We concluded that the sacrifice was worth making because we found that most of our students were prepared for high-level language computing after just one semester of programming. We believe engineering educators elsewhere are reaching similar conclusions about their own students and curriculums. We hope this book helps create a much needed dialogue about curriculum revision and that it leads to the development of similar introductory courses that encourage students to enter and practice our craft.Students electing to take this course have completed one semester of calculus, computer programming, chemistry, and humanities. Concurrently with this course, students take physics and a second semester of calculus, as well as a second semester in the humanities. By omitting the advanced topics marked by asterisks, we are able to cover Complex Numbers through Linear Algebra, plus two of the three remaining chapters. The book is organized so that the instructor can select any two of the three. If every chapter of this book is covered, including the advanced topics, then enough material exists for a two-semester course. The first three chapters of this book provide a fairly complete coverage of complex numbers, the functions e^x and e^jand phasors. Our department philosophy is that these topics must be understood if a student is to succeed in electrical and computer engineering. These three chapters may also be used as a supplement to a circuits course. A measured pace of presentation, taking between sixteen and eighteen lectures, is sufficient to cover all but the advanced sections in Complex Numbers through Phasors. The chapter on "linear algebra" is prerequisite for all subsequent chapters. We use eight to ten lectures to cover it. We devote twelve to sixteen lectures to cover topics from Vector Graphics through Binary Codes. (We assume a semester consisting of 42 lectures and three exams.) The chapter on vector graphics applies the linear algebra learned in the previous chapter to the problem of translating, scaling, and rotating images. "Filtering" introduces the student to basic ideas in averaging and filtering. The chapter on "Binary Codes" covers the rudiments of binary coding, including Huffman codes and Hamming codes. If the users of this book find "Vector Graphics" through "Binary Codes" too confining, we encourage them to supplement the essential material in "Complex Numbers" through "Linear Algebra" with their own course notes on additional topics. Within electrical and computer engineering there are endless possibilities. Practically any set of topics that can be taught with conviction and enthusiasm will whet the student's appetite. We encourage you to write to us or to our editor, Tom Robbins, about your ideas for additional topics. We would like to think that our book and its subsequent editions will have an open architecture that enables us to accommodate a wide range of student and faculty interests. Throughout this book we have used MATLAB programs to illustrate key ideas. MATLAB is an interactive, matrix-oriented language that is ideally suited to circuit analysis, linear systems, control theory, communications, linear algebra, and numerical analysis. MATLAB is rapidly becoming a standard software tool in universities and engineering companies. (For more information about MATLAB, return the attached card in the back of this book to The MathWorks, Inc.) MATLAB programs are designed to develop the student's ability to solve meaningful problems, compute, and plot in a high-level applications language. Our students get started in MATLAB by working through “An Introduction to MATLAB,” while seated at an IBM PC (or look-alike) or an Apple Macintosh. We also have them run through the demonstration programs in "Complex Numbers". Each week we give three classroom lectures and conduct a one-hour computer lab session. Students use this lab session to hone MATLAB skills, to write programs, or to conduct the numerical experiments that are given at the end of each chapter. We require that these experiments be carried out and then reported in a short lab report that contains (i) introduction, (ii) analytical computations, (iii) computer code, (iv) experimental results, and (v) conclusions. The quality of the numerical results and the computer graphics astonishes students. Solutions to the chapter problems are available from the publisher for instructors who adopt this text for classroom use. We wish to acknowledge our late colleague Richard Roberts, who encouraged us to publish this book, and Michael Lightner and Ruth Ravenel, who taught "Linear Algebra" and "Vector Graphics" and offered helpful suggestions on the manuscript. We thank C. T. Mullis for allowing us to use his notes on binary codes to guide our writing of "Binary Codes". We thank Cédric Demeure and Peter Massey for their contributions to the writing of "An Introduction to MATLAB" and "The Edix Editor". We thank Tom Robbins, our editor at Addison-Wesley, for his encouragement, patience, and many suggestions. We are especially grateful to Julie Fredlund, who composed this text through many drafts and improved it in many ways. We thank her for preparing an excellent manuscript for production.3282018-09-07T17:21:55Z2024-01-22T14:51:53ZSignal Computing: Digital Signals in the Software Domain<img alt="Read more about Signal Computing: Digital Signals in the Software Domain" title="Signal Computing: Digital Signals in the Software Domain cover image" class="cover " width="1190" height="1422" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjY4LCJwdXIiOiJibG9iX2lkIn19--8973917fc0bd824aaa41bfe4154ae63951c4c636/0000SignalCom.png" />In this book, you will learn how digital signals are captured, represented, processed, communicated, and stored in computers. The specific topics we will cover include: physical properties of the source information (such as sound or images), devices for information cap- ture (microphones, cameras), digitization, compression, digital signal representation (JPEG, MPEG), digital signal processing (DSP), and network communication. By the end of this book, you should understand the problems and solutions facing signal computing systems development in the areas of user interfaces, information retrieval, data structures and algo- rithms, and communications.3132018-09-07T17:21:54Z2024-01-22T14:52:22ZSqueak by Example<img alt="Read more about Squeak by Example" title="Squeak by Example cover image" class="cover " width="212" height="320" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjUzLCJwdXIiOiJibG9iX2lkIn19--36209ea513ea54183c42535ead9d8f7335538a0e/9783952334102.png" />Squeak is a modern open-source development environment for the classic Smalltalk-80 programming language. Despite being the first purely object-oriented language and environment, Smalltalk is in many ways still far ahead of its successors in promoting a vision of an environment where everything is an object, and anything can change at run-time. Squeak by Example, intended for both students and developers, will guide you gently through the Squeak language and environment by means of a series of examples and exercises. The book helps you get started with A Quick Tour of Squeak and guides you through A First Application. The Smalltalk language is introduced in three chapters on Syntax in a Nutshell, Understanding Message Syntax and The Smalltalk Object Model. Development with Squeak is covered in The Squeak Programming Environment and SUnit. Several of the key classes are presented in chapters on Basic Classes, Collections, Streams and Morphic. The first edition of the book concludes with chapters on Classes and Metaclasses and Frequently Asked Questions.3142018-09-07T17:21:54Z2024-01-22T14:51:57ZPharo by Example 5.0<img alt="Read more about Pharo by Example 5.0" title="Pharo by Example 5.0 cover image" class="cover " width="212" height="320" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjU0LCJwdXIiOiJibG9iX2lkIn19--9554736475f215063999450ff9e209fec291a928/9781365654596.png" />Pharo is an open-source, elegant and pure object-oriented language that supports truly immersive and life programming experience. Pharo offers excellent tools such as hot-debuggers and on the fly code update that change the programming experience. More at http://www.pharo.org.Pharo is a powerful language and IDE that companies use to deliver complex business-effective applications. More at: http://www.pharo.org/success In Pharo everything is an object, and anything can change at run-time under your fingers. Pharo is written in itself you can explore a complete world. You can feel and talk to objects. But Pharo does not stop there, with Pharo you can improve your object-oriented skills by rediscovering the essence of object-oriented programming. Pharo by Example 50, intended for both students and developers, will guide you gently through the Pharo language and environment by means of a series of examples and exercises. This book is available under the Creative Commons Attribution-ShareAlike 3.0 license.3152018-09-07T17:21:54Z2024-01-22T14:51:57ZDeep into Pharo<img alt="Read more about Deep into Pharo" title="Deep into Pharo cover image" class="cover " width="212" height="320" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjU1LCJwdXIiOiJibG9iX2lkIn19--a7424ca2d6be04e4f8ee1487d5b8bcb792313d86/9783952334164.png" />Pharo is a clean, innovative, open-source, live-programming environment. Deep into Pharois the second volume of a series of books covering Pharo. Whereas the first volume is intended for newcomers, this second volume covers deeper topics.You will learn about Pharo frameworks and libraries such as Glamour, PetitParser, Roassal, FileSystem, Regex, and Socket. You will explore the language with chapters on exceptions, blocks, small integers, and floats. You will discover tools such as profilers, Metacello and Gofer.3162018-09-07T17:21:54Z2024-01-22T14:51:54ZIntroduction to Autonomous Robots<img alt="Read more about Introduction to Autonomous Robots" title="Introduction to Autonomous Robots cover image" class="cover " width="333" height="500" data-controller="common--cover" data-placeholder="/assets/common/placeholder-0e0607cbc50663ddb9e8fd188058bcd2630c730ef6ee322801278607b7d5af8e.png" src="/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6MjU2LCJwdXIiOiJibG9iX2lkIn19--ba2d9dec3174a8f833dd9bd037d88ce46b61461b/9781493773077.png" />This book introduces concepts in mobile, autonomous robotics to 3rd-4th year students in Computer Science or a related discipline. The book covers principles of robot motion, forward and inverse kinematics of robotic arms and simple wheeled platforms, perception, error propagation, localization and simultaneous localization and mapping. The cover picture shows a wind-up toy that is smart enough to not fall off a table just using intelligent mechanism design and illustrate the importance of the mechanism in designing intelligent, autonomous systems. This book is open source, open to contributions, and released under a creative common license.
https://open.umn.edu/opentextbooks/subjects/3?page=9
https://open.umn.edu/opentextbooks/subjects/3?page=11