OERC Reviewed Textbooks
Higher education textbooks on a range of subjects that have been vetted by our curation experts. These texts are published by individual higher education faculty as well high quality open textbook providers such as OpenStax, BCCampus, OpenSUNY, and many others.
This is a textbook for first year Computer Science. Algorithms and Data Structures With Applications to Graphics and Geometry.
If you've ever spent hours renaming files or updating hundreds of spreadsheet cells, you know how tedious tasks like these can be. But what if you could have your computer do them for you?
In Automate the Boring Stuff with Python, you'll learn how to use Python to write programs that do in minutes what would take you hours to do by hand-no prior programming experience required. Once you've mastered the basics of programming, you'll create Python programs that effortlessly perform useful and impressive feats of automation to:
Search for text in a file or across multiple files
Create, update, move, and rename files and folders
Search the Web and download online content
Update and format data in Excel spreadsheets of any size
Split, merge, watermark, and encrypt PDFs
Send reminder emails and text notifications
Fill out online forms
Step-by-step instructions walk you through each program, and practice projects at the end of each chapter challenge you to improve those programs and use your newfound skills to automate similar tasks.
Don't spend your time doing work a well-trained monkey could do. Even if you've never written a line of code, you can make your computer do the grunt work. Learn how in Automate the Boring Stuff with Python.
This textbook was written for a community college introductory course in spreadsheets utilizing Microsoft Excel. While the figures shown utilize Excel 2016, the textbook was written to be applicable to other versions of Excel as well. The book introduces new users to the basics of spreadsheets and is appropriate for students in any major who have not used Excel before.
Blueprints is a concise yet comprehensive coverage of Object-Oriented Analysis and Design concepts, suitable for a second programming course in Computer Science. It introduces and teaches application development in a command-line environment, and assumes basic expertise with the Java programming language.
A Brief Introduction to Engineering Computation with MATLAB is specifically designed for students with no programming experience. However, students are expected to be proficient in First Year Mathematics and Sciences and access to good reference books are highly recommended. Students are assumed to have a working knowledge of the Mac OS X or Microsoft Windows operating systems. The strategic goal of the course and book is to provide learners with an appreciation for the role computation plays in solving engineering problems. MATLAB specific skills that students are expected to be proficient at are: write scripts to solve engineering problems including interpolation, numerical integration and regression analysis, plot graphs to visualize, analyze and present numerical data, and publish reports.
"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. There are many translations of the book available in different human languages.
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.
Suppose you want to build a computer network, one that has the potential to grow to global proportions and to support applications as diverse as teleconferencing, video on demand, electronic commerce, distributed computing, and digital libraries. What available technologies would serve as the underlying building blocks, and what kind of software architecture would you design to integrate these building blocks into an effective communication service? Answering this question is the overriding goal of this book—to describe the available building materials and then to show how they can be used to construct a network from the ground up.
This textbook covers the traditional introductory Computer Science I topics but takes a unique approach. Topics are covered in a language-agnostic manner in the first part with supplemental parts that cover the same concepts in a specific language. The current version covers C, Java, and PHP. This textbook as been used in several Computer Science I sections over multiple years at the University of Nebraska-Lincoln.
Database Design - 2nd Edition covers database systems and database design concepts. New to this edition are SQL info, additional examples, key terms and review exercises at the end of each chapter.
Defend Dissent is an introduction to cryptography paired with the social impacts of surveillance and the protective potential of encryption, with a focus on US social movements. Each chapter ends with a story that brings social context to the material—from surveillance used against contemporary US protests to the African National Congress’s use of partially manual encryption in fighting apartheid in South Africa in the 80s.
This book can be read linearly, or you can pick and choose what you would like to learn about. Each chapter is prefaced with what you should read first (for background) and concludes with what you might want to read next.
The book offers a blend of theory and practice in guiding readers to apply design thinking principles to solving some of our world’s biggest problems. At the same time, readers are encouraged to become aware of new and emerging technologies that make prototyping and applying solutions a reality.
Pharo is a clean, innovative, open-source, live-programming environment.
Enterprise Pharo is the third volume of a series of book covering Pharo and its community. Whereas the first volume Pharo by Example is intended for newcomers and the second volume Deep into Pharo covers deep topics of Pharo, this third volume covers libraries and frameworks for enterprises, and in particular those doing web development.
- Computer Science
- Material Type:
- Attila Magyar
- Christophe Demarey
- Cyril Ferlicot Delbecque
- Damien Cassou
- Damien Pollet
- Esteban Lorenzano
- Gabriel Omar Cotelli
- Guillaume Larchevêque
- Johan Fabry
- Liudmyla Dolia
- Luc Fabresse
- Mariano Martinez-Peck
- Martín Dias
- Max Leske
- Norbert Hartl
- Olivier Auverlot
- Stéphane Ducasse
- Sven Van Caekenberghe
- Date Added:
The following set of materials is used in the Textbook Transformation Grants implementation of Ethical Hacking for Effective Defense:
TCP/IP Level Attacks
Footprinting and Social Engineering
Programming for Security Professionals
Operating System Vulnerabilities
Embedded System Security
Hacking Web Servers
Hacking Wireless Networks
Protecting Networks with Security Devices
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.
The book is based on “First semester in Numerical Analysis with Julia”, written by Giray Ökten. The contents of the original book are retained, while all the algorithms are implemented in Python (Version 3.8.0). Python is an open source (under OSI), interpreted, general-purpose programming language that has a large number of users around the world. Python is ranked the third in August 2020 by the TIOBE programming community index, a measure of popularity of programming languages, and is the top-ranked interpreted language. We hope this book will better serve readers who are interested in a first course in Numerical Analysis, but are more familiar with Python for the implementation of the algorithms.
The first chapter of the book has a self-contained tutorial for Python, including how to set up the computer environment. Anaconda, the open-source individual edition, is recommended for an easy installation of Python and effortless management of Python packages, and the Jupyter environment, a web-based interactive development environment for Python as well as many other programming languages, was used throughout the book and is recommended to the readers for easy code development, graph visualization and reproducibility.
Foundations of Computation is a free textbook for a one-semester course in theoretical computer science. It has been used for several years in a course at Hobart and William Smith Colleges. The course has no prerequisites other than introductory computer programming. The first half of the course covers material on logic, sets, and functions that would often be taught in a course in discrete mathematics. The second part covers material on automata, formal languages, and grammar that would ordinarily be encountered in an upper level course in theoretical computer science.