Computer Science Textbooks
Filters
How to Think Like a Computer Scientist: C Version
Copyright Year: 1999
Contributors: Downey and Scheffler
Publisher: Green Tea Press
License: CC BY-NC
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.”
(2 reviews)
How to Think Like a Computer Scientist: C++ Version
Copyright Year: 2012
Contributor: Downey
Publisher: Green Tea Press
License: CC BY-NC
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.”
(1 review)
Object-Oriented Reengineering Patterns
Copyright Year: 2008
Contributors: Demeyer, Ducasse, and Nierstrasz
Publisher: Stéphane Ducasse
License: CC BY-SA
The documentation is missing or obsolete, and the original developers have departed. Your team has limited understanding of the system, and unit tests are missing for many, if not all, of the components. When you fix a bug in one place, another bug pops up somewhere else in the system. Long rebuild times make any change difficult. All of these are signs of software that is close to the breaking point.
No ratings
(0 reviews)
Implementing a One Address CPU in Logisim
Copyright Year: 2016
Contributor: Kann
Publisher: A.T. Still University
License: CC BY
Most computer users have an incorrect, but useful, cognitive metaphor for computers in which the user says (or types or clicks) something and a mystical, almost intelligent or magical, behavior happens. It is not a stretch to describe computer users as believing computers follow the laws of magic, where some magic incantation is entered, and the computer responds with an expected, but magical, behavior. This magic computer does not actually exist. In reality computer are machines, and every action a computer performs reduces to a set of mechanical operations. In fact the first complete definition of a working computer was a mechanical machine designed by Charles Babbage in 1834, and would have run on steam power. Probably the biggest success of Computer Science (CS) in the 20th century was the development of abstractions that hide the mechanical nature of computers. The fact that average people use computers without ever considering that they are mechanistic is a triumph of CS designers. This purpose of this monograph is to break the abstract understanding of a computer, and to explain a computer's behavior in completely in mechanistic terms. It will deal specifically with the Central Processing Unit (CPU) of the computer, as this is where the magic happens. All other parts of a computer can be seen as just providing information for the CPU to operate on. This monograph will deal with a specific type of CPU, a one-address CPU, and will explain this CPU using only standard gates, specifically AND, OR, NOT, NAND and XOR gates, and 4 basic Integrated Circuits (ICs), the Decoder, Multiplexer, Adder, and Flip Flop. All of these gates and components can be described as mechanical transformations of input data to output data, and the overall CPU can then be seen as a mechanical device.
(1 review)
Embedded Controllers Using C and Arduino - 2e
Copyright Year: 2018
Contributor: Fiore
Publisher: dissidents
License: CC BY-NC-SA
This text is designed to introduce and expand upon material related to the C programming language and embedded controllers, and specifically, the Arduino development system and associated Atmel ATmega microcontrollers. It is intended to fit the time constraints of a typical 3 to 4 credit hour course for electrical engineering technology and computer engineering technology programs, although it could also fit the needs of a hardware-oriented course in computer science. As such, the text does not attempt to cover every aspect of the C language, the Arduino system or Atmel AVR microcontrollers. The first section deals with the C language itself. It is assumed that the student is a relative newcomer to the C language but has some experience with another high level language, for example, Python. This means concepts such as conditionals and iteration are already familiar and the student can get up and running fairly quickly. From there, the Arduino development environment is examined. Unlike the myriad Arduino books now available, this text does not simply rely on the Arduino libraries. As convenient as the libraries may be, there are other, sometimes far more efficient, ways of programming the boards. Many of the chapters examine library source code to see “what's under the hood”. This more generic approach means it will be easier for the student to use other processors and development systems instead of being tightly tied to one platform.
(2 reviews)
A Byte of Python
Copyright Year: 2013
Contributor: H
Publisher: Swaroop C H
License: CC BY-SA
"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.
(13 reviews)
High Performance Computing
Copyright Year: 2010
Contributors: Severance and Dowd
Publisher: OpenStax CNX
License: CC BY
The purpose of this book is to teach new programmers and scientists about the basics of High Performance Computing. Too many parallel and high performance computing books focus on the architecture, theory and computer science surrounding HPC. This book speaks to the practicing chemistry student, physicist, or biologist who need to write and run their programs as part of their research.
(1 review)
Microprocesadores Fundamentos y Aplicaciones
Copyright Year: 2018
Contributors: Valdivieso and Solís
Publisher: LATIn Project
License: CC BY-SA
Este trabajo ha sido desarrollado gracias a la interacción como docente universitario en la enseñanza teórica y práctica de la materia de microprocesadores con diversos grupos de estudiantes por alrededor de 15 años. Es con sus exigencias, cuestionamientos y colaboraciones con sus proyectos prácticos implementados en los cursos dictados, que se ha podido construir una guía comprensiva, que trate de responder de una forma adecuada las múltiples dudas de los estudiantes en su proceso de aprendizaje. La disponibilidad de tiempo en el aula de clase muchas veces no es suficiente para responder las inquietudes de los estudiantes; así que, se espera que con este trabajo se contribuya a proporcionar al lector un cúmulo de información que le ayuden de una manera práctica y escalonada a comprender la base teórica de los microprocesadores de Intel y sus derivados (capítulos 1 al 15), con implementaciones prácticas básicas (capítulo 16). Al final se citan libros de referencia que pueden consultarse para profundizar los temas tratados.
No ratings
(0 reviews)
Aprendiendo a Programar en Python con mi Computador: Primeros pasos rumbo a cómputos de gran escala en las Ciencias e Ingenierías
Copyright Year: 2016
Contributors: Rojas, Fernández, and Ruiz
Publisher: LATIn Project
License: CC BY-NC-SA
Este libro está dirigido, principalmente, a Estudiantes y Docentes que quieren aprender a programarcomo forma de fortalecer sus capacidades cognoscitivas y así obtener un beneficio adicional de su computador para lograr un mejor provecho de sus estudios. Dada la orientación del libro respecto a programar para resolver problemas asociados a las Ciencias e Ingenierías, el requisito mínimo de matemáticas que hemos elegido para presentar el contenido del mismo se cubre, normalmente, en el tercer año del bachillerato. No obstante, el requisito no es obligatorio para leer el libro en su totalidad y adquirir los conocimientos de programación obviando el contenido matemático.
(1 review)
Temas de Diseño en Interacción Humano-Computadora
Copyright Year: 2014
Contributors: Arteaga, Hernández, and Amador
Publisher: LATIn Project
License: CC BY-SA
El nivel académico que pretende abordar el libro es en las diferentes licenciaturas e ingenierías que consideren tópicos en el área de interacción humano computadora, así como los posgrados relacionados con la temática. El libro describe diferentes tipos de interacción que pueden ofrecer las aplicaciones interactivas donde a través de la interfaz gráfica es posible guiar y hacer fácil la tarea del usuario. Así pues, el lector puede encontrar diferentes trabajos que especifican desde los requerimientos del usuario hasta el diseño, programación y evaluación de distintas aplicaciones interactivas.
No ratings
(0 reviews)