Digital library
Textbooks, references and open learning resources.

External
Programming Fundamentals - A Modular Structured Approach, 2ed.
Kenneth Leroy Busbee and Dave Braunschweig · LibreTexts
The goal for this text is to make it programming-language neutral, so that it may serve as an introductory programming textbook for students using any of a variety of programming languages, including C++, C#, Java, JavaScript, Python, and Swift. Programming concepts are introduced generically, with logic demonstrated in pseudocode and flowchart form, followed by examples for different programming languages. Emphasis is placed on a modular, structured approaches.

External
Relational Databases and Microsoft Access
Ron McFadyen · University of Winnipeg
This text is a free introductory text that introduces MS Access and relational database design. The motivation is to support a second-year course on database systems which, to the student, is either a service course providing an introduction to database concepts, or, as a prerequisite for more advanced study in the field.

External
An Introduction to Matlab and Mathcad
Troy Siemers · Virginia Military Institute
This textbook, or really a “coursebook” for a college freshman-level class, has been updated for Spring 2014 and provides an introduction to programming and problem solving using both Matlab and Mathcad. We provide a balanced selection of introductory exercises and real-world problems (i.e. no “contrived” problems). We include many examples and screenshots to guide the reader. We assume no prior knowledge of Matlab or Mathcad.

External
Python Programming
OpenStax · LibreTexts
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.

External
Foundations of Computation
Carol Critchlow & David J. Eck · Hobart and William Smith Colleges
Foundations of Computation is a free textbook for a one-semester course in theoretical computer science. 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
Delftse Foundations of Computation
Stefan Hugtenburg & Neil Yorke-Smith · Delft University of Technology
Delftse Foundations of Computation is a textbook for a one quarter introductory course in theoretical computer science. It includes topics from propositional and predicate logic, proof techniques, set theory and the theory of computation, along with practical applications to computer science. It has no prerequisites other than a general familiarity with computer programming.

External
Spreadsheet software for engineering: an applied guide
Julio Terán & Phillip Chvosta · North Carolina State University
Spreadsheet Software for Engineering: An Applied Guide is a free, online textbook designed to provide engineering students with comprehensive, practical knowledge of spreadsheet applications in engineering contexts. The textbook was designed from the ground up to be interactive and engaging for the modern 21st century learner.

External
Laboratory Manual - Computer Programming with Python, Multisim and TINA/4E
James M. Fiore · Mohawk Valley Community College
This laboratory manual is intended for use in an introductory computer programming course for electrical engineering technology students. It begins with a basic explanation of schematic capture and simulation tools and proceeds to the Python programming language.

External
Process Improvement using Data
Kevin Dunn · Kevin Dunn · 2026
There is no other free, coherent text that covers what engineers and scientists actually do with process data (visualization, regression, designed experiments, process monitoring, and multivariate / latent-variable methods) in one volume. Most textbooks pick one of those topics and go deep. Practitioners need all of them, and need to see how they fit together, because real industrial problems don't respect chapter boundaries. Process Improvement using Data was written to fill that gap, and has been continuously refined in industry-facing classrooms and in industrial practice since 2010. It is suitable for upper-undergraduate or introductory-graduate courses, and for self-study by working engineers and data scientists with a basic statistics background.
External
A First Course in Electrical and Computer Engineering
Louis Scharf · OpenStax CNX · 2009
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 ph

External
Think Data Structures: Algorithms and Information Retrieval in Java
Allen Downey · Green Tea Press · 2016
Data structures and algorithms are among the most important inventions of the last 50 years, and they are fundamental tools software engineers need to know. But in my opinion, most of the books on these topics are too theoretical, too big, and too bottom-up: Too theoretical: Mathematical analysis of algorithms is based on simplifying assumptions that limit its usefulness in practice. Many presentations of this topic gloss over the simplifications and focus on the math. In this book I present the most practical subset of this material and eliminate the rest. Too big: Most books on these topics are at least 500 pages, and some are more than 1000. By focusing on the topics I think are most useful for software engineers, I kept this book under 250 pages. Too bottom-up: Many data structures books focus on how data structures work (the implementations), with less about how to use them (the interfaces). In this book, I go “top down”, starting with the interfaces. Readers learn to use the structures in the Java Collections Framework before getting into the details of how they work. Finally, many present this material out of context and without motivation: it’s just one damn data structure after another! I try to alleviate the boredom by organizing the topics around an application—web search—that uses data structures extensively, and is an interesting and important topic in its own right. This application also motivates some topics that are not usually covered in an introductory data structures class, including persistent data structures, with Redis, and streaming algorithms. This book also presents basic aspects of software engineering practice, including version control and unit testing. Each chapter ends with an exercise that allows readers to apply what they have learned. Each exercise includes automated tests that check the solution. And for most exercises, I present my solution at the beginning of the next chapter. This book is intended for college students in computer
External
Introduction to Computer Science
Dr. Jean-Claude Franchitti; Amal Alhosban; Mark Buckler; Joanna Gilberti · OpenStax, Rice University
Introduction to Computer Science provides a comprehensive foundation in core computer science concepts and principles, aligning with the scope and sequence of most introductory computer science courses. The offering serves as an engaging entry point for students pursuing diverse fields of study and employment, including computer science, business, engineering, data science, social sciences, and related disciplines. By addressing a broad learner audience—ranging from computer science majors to non-majors—the book offers a thorough introduction to computational thinking and its applications across multiple domains. Introduction to Computer Science is designed to be both interactive and practical, focusing on real-world applications that showcase how core computer science concepts can be used to solve complex problems. Students will explore foundational concepts, such as algorithms, data structures, computer systems organization, and software development, using an array of engaging, hands-on activities. Introduction to Computer Science also includes advanced topics such as machine learning, cybersecurity, and cloud computing, ensuring students have a solid foundation for continued study and future professional success. The offering integrates meaningful learning experiences through chapter-based scenarios, problem-solving exercises, embedded coding activities, and project-based assessments that encourage students to apply what they learn in authentic contexts. The material also includes an array of industry insights and explorations of emerging technology trends in order to provide a holistic approach to learning that extends beyond theory.

External
Java, Java, Java - Object-Oriented Programming
Ralph Morelli & Ralph Wade · Trinity College
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.

External
The Crystal Ball - Instruction Manual I: Introduction to Data Science
Stephen Davies · University of Mary Washington
A perfect introduction to the exploding field of Data Science for the curious, first-time student. The author brings his trademark conversational tone to the important pillars of the discipline: exploratory data analysis, choices for structuring data, causality, machine learning principles, and introductory Python programming using open-source Jupyter Notebooks.