Digital library
Textbooks, references and open learning resources.

External
Java, Java, Java: Object-Oriented Problem Solving
Ralph Morelli; Ralph Walde · Ralph Morelli, Ralph Walde · 2016
We have designed this third edition of Java, Java, Java to be suitable for a typical Introduction to Computer Science (CS1) course or for a slightly more advanced Java as a Second Language course. This edition retains the “objects first” approach to programming and problem solving that was characteristic of the first two editions. Throughout the text we emphasize careful coverage of Java language features, introductory programming concepts, and object-oriented design principles. The third edition retains many of the features of the first two editions, including: Early Introduction of Objects Emphasis on Object Oriented Design (OOD) Unified Modeling Language (UML) Diagrams Self-study Exercises with Answers Programming, Debugging, and Design Tips. From the Java Library Sections Object-Oriented Design Sections End-of-Chapter Exercises Companion Web Site, with Power Points and other Resources The In the Laboratory sections from the first two editions have been moved onto the book's Companion Web Site. Table 1 shows the Table of Contents for the third edition.

External
The Missing Link: An Introduction to Web Development and Programming
Michael Mendez · Open SUNY · 2014
Web development is an evolving amalgamation of languages that work in concert to receive, modify, and deliver information between parties using the Internet as a mechanism of delivery. While it is easy to describe conceptually, implementation is accompanied by an overwhelming variety of languages, platforms, templates, frameworks, guidelines, and standards. Navigating a project from concept to completion often requires more than mastery of one or two complementing languages, meaning today's developers need both breadth, and depth, of knowledge to be effective. This text provides the developer with an understanding of the various elements of web development by focusing on the concepts and fundamentals through the examples within, providing a foundation that allows easier transition to other languages and a better understanding of how to approach their work. The reader will be introduced to topics in a manner that follows most project development methods, from initial conceptualization and design through front end development, back end development, and introducing additional concepts like accessibility and security, while focusing on responsive design techniques. Each section of the text includes opportunities to practice the material and assess increased knowledge after examining the topics.

External
Open Data Structures: An Introduction
Pat Morin · Athabasca University Press · 2013
Offered as an introduction to the field of data structures and algorithms, Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues, unordered dictionaries, ordered dictionaries, and graphs. Focusing on a mathematically rigorous approach that is fast, practical, and efficient, Morin clearly and briskly presents instruction along with source code. Analyzed and implemented in Java, the data structures presented in the book include stacks, queues, deques, and lists implemented as arrays and linked-lists; space-efficient implementations of lists; skip lists; hash tables and hash codes; binary search trees including treaps, scapegoat trees, and red-black trees; integer searching structures including binary tries, x-fast tries, and y-fast tries; heaps, including implicit binary heaps and randomized meldable heaps; graphs, including adjacency matrix and adjacency list representations; and B-trees. A modern treatment of an essential computer science topic, Open Data Structures is a measured balance between classical topics and state-of-the art structures that will serve the needs of all undergraduate students or self-directed learners.

External
Foundations of Computation
Carol Critchlow; David Eck · Carol Crichlow and David Eck · 2011
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.

External
Operating Systems and Middleware: Supporting Controlled Interaction
Max Hailperin · Max Hailperin · 2015
In this book, you will learn about all three kinds of interaction. In all three cases, interesting software techniques are needed in order to bring the computations into contact, yet keep them suffciently at arm's length that they don't compromise each other's reliability. The exciting challenge, then, is supporting controlled interaction. This includes support for computations that share a single computer and interact with one another, as your email and word processing programs do. It also includes support for data storage and network communication. This book describes how all these kinds of support are provided both by operating systems and by additional software layered on top of operating systems, which is known as middleware. Chapter 1 provides an overview of the text as a whole, explaining what an operating system is, what middleware is, and what sorts of support these systems provide for controlled interaction. The next nine chapters work through the varieties of controlled interac- tion that are exemplified by the scenario at the beginning of the preface: in- teraction between concurrent computations on the same system (as between your email program and your word processor), interaction across time (as between your word processor before your trip and your word processor after your trip), and interaction across space (as between your email program and your service provider's email server). The first of these three topics is controlled interaction between computa- tions operating at one time on a particular computer. Before such interaction can make sense, you need to understand how it is that a single computer can be running more than one program, such as an email program in one window and a word processing program in another. Therefore, Chapter 2 explains the fundamental mechanism for dividing a computer's attention between concurrent computations, known as threads. Chapter 3 continues with the related topic of scheduling. That is, if the computer is dividin

External
Algorithms and Data Structures With Applications to Graphics and Geometry
Jurg Nievergelt; Klaus Hinrichs · Global Text Project · 2011
An introductory coverage of algorithms and data structures with application to graphics and geometry.

External
Programming Fundamentals - A Modular Structured Approach using C++
Kenneth Busbee · OpenStax CNX · 2013
Programming Fundamentals - A Modular Structured Approach using C++ is written by Kenneth Leroy Busbee, a faculty member at Houston Community College in Houston, Texas. The materials used in this textbook/collection were developed by the author and others as independent modules for publication within the Connexions environment. Programming fundamentals are often divided into three college courses: Modular/Structured, Object Oriented and Data Structures. This textbook/collection covers the first of those three courses. The learning modules of this textbook/collection were written as standalone modules. Students using a collection of modules as a textbook will usually view it contents by reading the modules sequentially as presented by the author of the collection. The learning modules of this textbook/collection were, for the most part, written without consideration of a speci??c programming language. In many cases the C++ language is discussed as part of the explanation of the concept. Often the examples used for C++ are exactly the same for the Java programming language. However, some modules were written speci??cally for the C++ programming language. This could not beavoided as the C++ language is used in conjunction with this textbook/collection by the author in teaching college courses.

External
The Little Book of Semaphores
Allen Downey · Green Tea Press · 2016
The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming. In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including "Readers-writers," "Producer-consumer", and "Dining Philosophers." In addition, it collects a number of not-so-classical problems, some written by the author and some by other teachers and textbook writers. Readers are invited to create and submit new problems.

External
Physical Modeling in MATLAB
Allen Downey · Green Tea Press · 2021
Modeling and simulation are powerful tools for explaining the world, making predictions, designing things that work, and making them work better. Learning to use these tools can be difficult; this book is my attempt to make the experience as enjoyable and productive as possible. By reading this book — and working on the exercises — you will learn some programming, some modeling, and some simulation: With basic programming skills, you can create models for a wide range of physical systems. My goal is to help you develop these skills in a way you can apply immediately to real-world problems. This book presents the entire modeling process, including model selection, analysis, simulation, and validation. I explain this process in Chapter 1, and there are examples throughout the book. Simulation is an approach to modeling that uses computer programs to implement models and generate predictions. This book shows how simulations are used to run experiments, answer questions, and guide decision-making.

External
How to Think Like a Computer Scientist: Learning with Python
Allen Downey; Jeff Elkner; Chris Meyers · Green Tea Press · 2008
How to Think Like a Computer Scientist: Learning with Python is an introduction to programming using Python.

External
Essentials of Geographic Information Systems
Jonathan Campbell; MIchael Shin · Saylor Foundation · 2011
Essentials of Geographic Information Systems integrates key concepts behind the technology with practical concerns and real-world applications. Recognizing that many potential GIS users are nonspecialists or may only need a few maps, this book is designed to be accessible, pragmatic, and concise. Essentials of Geographic Information Systems also illustrates how GIS is used to ask questions, inform choices, and guide policy. From the melting of the polar ice caps to privacy issues associated with mapping, this book provides a gentle, yet substantive, introduction to the use and application of digital maps, mapping, and GIS. In today's world, learning involves knowing how and where to search for information. In some respects, knowing where to look for answers and information is arguably just as important as the knowledge itself. Because Essentials of Geographic Information Systems is concise, focused, and directed, readers are encouraged to search for supplementary information and to follow up on specific topics of interest on their own when necessary. Essentials of Geographic Information Systems provides the foundations for learning GIS, but readers are encouraged to construct their own individual frameworks of GIS knowledge. The benefits of this approach are two-fold. First, it promotes active learning through research. Second, it facilitates flexible and selective learning—that is, what is learned is a function of individual needs and interest. Since GIS and related geospatial and navigation technology change so rapidly, a flexible and dynamic text is necessary in order to stay current and relevant. Though essential concepts in GIS tend to remain constant, the situations, applications, and examples of GIS are fluid and dynamic. Though this book is intended for use in introductory GIS courses, Essentials of Geographic Information Systems will also appeal to the large number of certificate, professional, extension, and online programs in GIS that are available today.

External
Think Python: How to Think Like a Computer Scientist
Allen Downey · Green Tea Press · 2012
Think Python is a concise introduction to software design using the Python programming language. Intended for people with no programming experience, this book starts with the most basic concepts and gradually adds new material. Some of the ideas students find most challenging, like recursion and object-oriented programming, are divided into a sequence of smaller steps and introduced over the course of several chapters. This textbook has been used in classes at Bard College, Olin College of Engineering, University of California, Santa Barbara, University of Maine, University of Northern Colorado.

External
Programming Languages: Application and Interpretation
Shriram Krishnamurthi · Brown University · 2007
Unlike some other textbooks, this one does not follow a top-down narrative. Rather it has the flow of a conversation, with backtracking. We will often build up programs incrementally, just as a pair of programmers would. We will include mistakes, not because I don't know the answer, but because this is the best way for you to learn. Including mistakes makes it impossible for you to read passively: you must instead engage with the material, because you can never be sure of the veracity of what you're reading. At the end, you'll always get to the right answer. However, this non-linear path is more frustrating in the short term (you will often be tempted to say, “Just tell me the answer, already!”), and it makes the book a poor reference guide (you can't open up to a random page and be sure what it says is correct). However, that feeling of frustration is the sensation of learning. I don't know of a way around it. At various points you will encounter this: ExerciseThis is an exercise. Do try it. This is a traditional textbook exercise. It's something you need to do on your own. If you're using this book as part of a course, this may very well have been assigned as homework. In contrast, you will also find exercise-like questions that look like this: Do Now!There's an activity here! Do you see it? When you get to one of these, stop. Read, think, and formulate an answer before you proceed. You must do this because this is actually an exercise, but the answer is already in the book—most often in the text immediately following (i.e., in the part you're reading right now)—or is something you can determine for yourself by running a program. If you just read on, you'll see the answer without having thought about it (or not see it at all, if the instructions are to run a program), so you will get to neither (a) test your knowledge, nor (b) improve your intuitions. In other words, these are additional, explicit attempts to encourage active learning. Ultimately, however, I can o

External
Information Systems - A Manager's Guide to Harnessing Technology
University of Minnesota Libraries Publishing · 2015
Information Systems: A Manager's Guide to Harnessing Technology is intended for use in undergraduate and/or graduate courses in Management Information Systems and Information Technology. The teaching approach in Information Systems: A Manager's Guide to Harnessing Technology can change this. The text offers a proven approach that has garnered student praise, increased IS enrollment, and engaged students to think deeper and more practically about the space where business and technology meet. Every topic is related to specific business examples, so students gain an immediate appreciation of its importance. Rather than lead with technical topics, the book starts with strategic thinking, focusing on big-picture issues that have confounded experts but will engage students. And while chapters introduce concepts, cases on approachable, exciting firms across industries further challenge students to apply what they've learned, asking questions like: Why was Netflix able to repel Blockbuster and WalMart? How did Harrah's Casino's become twice as profitable as comparably-sized Caesar's, enabling the former to acquire the latter? How does Spain's fashion giant Zara, a firm that shuns the sort of offshore manufacturing used by every other popular clothing chain, offer cheap fashions that fly off the shelves, all while achieving growth rates and profit margins that put Gap to shame? Why do technology markets often evolve into winner-take-all or winner take-most scenarios? And how can managers compete when these dynamics are present? Why is Google more profitable than Disney? How much is Facebook really worth? The teaching approach in this text encourages students to think deeper and more practically about the space where business and technology meet. Every topic is related to specific business examples, so students gain an immediate appreciation of its importance. Rather than starting with technical topics, the book starts with strategic thinking, focusing on big-picture issues t
External
Introduction to Python Programming
Udayan Das; Aubrey Lawson; Chris Mayfield; Narges Norouzi · OpenStax, Rice University
Introduction to Python Programming provides a comprehensive foundation in programming concepts and skills, and it is aligned to the scope of most introductory courses. A wide array of scenarios, contexts, and problems reflect programming applications in many disciplines and careers. The offering is suitable for a diverse learner audience, including those pursuing computer science, business, science, social science, statistics, data science, and related areas of study and employment. Introduction to Python Programming is an interactive offering that teaches basic programming concepts, problem-solving skills, and the Python language using hands-on activities. The resource includes a unique, integrated code runner through which students can immediately apply what they learn to check their understanding. Embedded videos, critical thinking exercises, and explorations of external programming tools and activities all contribute to a meaningful and supportive learning experience.
External
Foundations of Information Systems
Dr. Mahesh S. Raisinghani; Amal Alhosban; Dax Bradley; Wade Chumney · OpenStax, Rice University
Foundations of Information Systems aligns to the topics and objectives of most introductory information systems courses in computer science and information technology, as well as in other subject areas such as health and business information systems. The offering helps students understand foundational concepts including hardware, software, database management systems, and data networks. The instruction is based on the ACM/IEEE/AIS curriculum standards for information systems (IS2020) that allow institutions to use the content for the purposes of accreditation for ABET, AACSB, and ACBSP. The material focuses on developing and applying knowledge regarding the collection, processing, storage, distribution, and value of information. Students will also learn about the various interactions between information systems professionals and others in organizations, so that they understand how to collaborate with management, colleagues, customers, and suppliers. Foundations of Information Systems is designed to engage students through a combination of practical, real-world applications and thought-provoking scenarios that promote critical thinking and a deeper understanding of core concepts. The pedagogical approach is centered on making information systems relevant to students from an array of backgrounds and career interests. By connecting theory to practice and encouraging students to explore real-world issues, Foundations of Information Systems equips students with the knowledge and skills necessary for success in their academic and professional journeys.

External
Del ágora a la nube: El destino de las humanidades en la era de la IA
Karles Hoffmann-Jaramillo; Carlos Flores-Murillo; Eduardo Baidal-Bustamante · Editorial Grupo AEA · 2025
Explora la evolución del pensamiento crítico desde la Antigua Grecia hasta la era digital, analizando el impacto de la inteligencia artificial (IA) en la educación y la sociedad. Se inicia con una comparación entre el Ágora ateniense, donde se gestó el debate filosófico y la democracia, y los entornos digitales actuales, donde el acceso a la información ha cambiado la forma en que aprendemos. Se resalta cómo la enseñanza de Sócrates, Platón y Aristóteles, basada en el diálogo y la argumentación, sigue siendo relevante para desarrollar el pensamiento crítico en un mundo saturado de datos. En la era digital, la IA ha transformado la educación mediante herramientas que personalizan el aprendizaje y facilitan el acceso a información. Sin embargo, también plantea riesgos como la dependencia tecnológica, los sesgos algorítmicos y la pérdida de autonomía intelectual. El libro enfatiza la necesidad de equilibrar el uso de la tecnología con metodologías pedagógicas que fomenten la reflexión y el análisis crítico. Otro desafío clave es la desinformación, impulsada por la sobreabundancia de datos y la rapidez con la que circula la información en redes sociales. Ante esto, se propone fortalecer la capacidad de los estudiantes para evaluar fuentes, cuestionar datos y construir conocimientos con base en el análisis riguroso. Finalmente, la obra concluye que el futuro de la educación no debe estar centrado solo en la tecnología, sino en la formación de ciudadanos críticos y reflexivos. La IA puede ser una aliada en este proceso, pero es fundamental preservar la esencia humanista del aprendizaje, asegurando que la educación siga siendo un espacio de cuestionamiento, creatividad y pensamiento autónomo.

External
Gestión Inteligente Sinergias en las Tecnologías de la Información y Comunicación
Miguel Fabricio Boné-Andrade; Luis Alfonso Núñez-Freire; Ramiro Enrique Guamán-Chávez · Editorial Grupo AEA · 2024
El libro aborda los desafíos y oportunidades de la inclusión digital, especialmente en el contexto rural de América Latina. Los capítulos iniciales analizan la transformación digital y sus efectos en áreas rurales, destacando la importancia de las TIC para mejorar la calidad de vida y reducir la brecha digital. Posteriormente, se examina el analfabetismo digital como barrera para la inclusión social, con propuestas para políticas de alfabetización que respondan a las necesidades de comunidades vulnerables. Los capítulos centrales exploran la alfabetización digital en Ecuador, enfatizando la infraestructura y las competencias digitales como ejes esenciales. La obra también cubre el rol de la educación superior en la inclusión digital, mostrando ejemplos de vinculación comunitaria por parte de universidades. Los capítulos finales presentan casos de uso de tecnologías en pequeñas empresas para optimizar procesos y mejorar la competitividad, y se discute la relevancia de la ciberseguridad en la era digital. En conjunto, el libro ofrece una perspectiva práctica y teórica, orientada a fomentar la participación equitativa en el ámbito digital, proponiendo soluciones adaptadas a contextos locales.

External
Inteligencia Artificial Aplicada a Procesamiento de Lenguaje Natural (NLP) con Python y Machine Learning.
Lady Mariuxi Sangacha-Tapia; Ricardo Javier Celi; Ivan Leonel Acosta-Guzmán; Eleanor Alexandra Varela-Tapia · Editorial Grupo AEA · 2024
Este libro refleja el trabajo realizado bajo investigación entre docentes investigadores con el afán de que sea útil al lector, el uso de predicciones al momento de entrenar un algoritmo clasificado de texto en procesamiento de lenguaje natural (PLN) basado en machine learning. Conformado de 4 capítulos con la utilidad para el inicio al mundo de la IA de la rama de procesamiento de lenguaje natural con Python en machine learning. El Capítulo 1 menciona conceptos y la evolución de las diferentes ramas de conocimiento que abarca la inteligencia artificial (AI), el entendimiento del NLP, machine learning, tipos de aprendizaje para resolver problemas como el supervisado, no supervisado y refuerzo. Capítulo 2 se profundiza el NLP conociendo los contenidos básicos de clasificación como: Las técnicas y diseño de LSTM, tokeización, stopword, lematización, bag of Word (part of speech tagging). Capítulo 3 es la estructuración de este capítulo el conocer las definiciones de los modelos de aprendizaje supervisado que son útiles en NLP orientado a la clasificación de texto. Capítulo 4 un caso de predicción o grado de asertividad del modelamiento de un algoritmo, la intención es demostrar la utilización de un modelo y varias técnicas aplicando NLP basado en machine learning.

External
Inteligencia Artificial Aplicada con técnicas de Procesamiento de Lenguaje Natural y Machine Learning en el campo de la salud.
Eleanor Alexandra Varela-Tapia; Ivan Leonel Acosta-Guzmán; Jorge Alberto Oviedo-Peñafiel · Editorial Grupo AEA · 2024
La Inteligencia Artificial (IA), el Procesamiento del Lenguaje Natural (NLP) y el Aprendizaje Automático (ML) han jugado un papel crucial en la lucha contra la pandemia de Covid-19, proporcionando herramientas tecnológicas valiosas para el diagnóstico, seguimiento y control de la enfermedad, implementándose soluciones con IA para mitigar sus efectos. Se propone el diseño de un modelo de ML aplicando técnicas NLP en el preprocesamiento de texto para poder evaluar la eficacia del análisis de datos en conversaciones de personas contagiadas del coronavirus SARS-CoV-2. Se recopiló información de redes sociales como Twitter y Facebook, y encuestas a contagiados de Covid-19 en la Zona 8 de la provincia del Guayas. Con estos datos, se entrenó un sistema de clasificación textual utilizando los algoritmos de Soporte de Máquina Vectorial y Random Forest. El estudio resultó en una precisión del 96% en ambos modelos, demostrando su viabilidad para la creación e implementación de clasificadores de texto. Se logró mejorar el rendimiento del modelo, reduciendo las categorías con más de 200 ocurrencias, lo que resultó en una precisión más elevada sin diferencias significativas entre ambos modelos. Por último, se desarrolló un sitio web capaz de clasificar correctamente los síntomas y recomendaciones comentadas por los pacientes.