Phu Xuan University Library

Digital library

Textbooks, references and open learning resources.

Understanding Document Accessibility

External

Understanding Document Accessibility

The Chang School Digital Education Strategies · Ryerson University · 2020

With much of the world gone digital, learning to create documents that are accessible to everyone is becoming a necessary skill. Intended for a general audience, this free resource reviews a wide range of document authoring applications, including the tools they contain for creating accessible documents, and tests them to ensure they do not contain potential barriers. Learn how to create accessible word processed documents, spreadsheets, presentation slides, and PDF documents, among others, so they are accessible to everyone.

CC BY-SAComputer Science 0 views
AF

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

CC BYComputer ScienceElectrical Engineering 0 views
Blueprints: Creating, Describing, and Implementing Designs for Larger-scale Software Projects

External

Blueprints: Creating, Describing, and Implementing Designs for Larger-scale Software Projects

Stephen Davies · University of Mary Washington · 2024

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.

CC BY-SAComputer Science 0 views
Computer Networks: A Systems Approach

External

Computer Networks: A Systems Approach

Larry Peterson; Bruce Davie · Larry Peterson and Bruce Davie · 2019

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.

CC BYComputer Science 0 views
Introduction to Programming using Fortran 95/2003/2008

External

Introduction to Programming using Fortran 95/2003/2008

Ed Jorgensen · Ed Jorgensen · 2018

Computers are everywhere in our daily lives. Between the desktop, laptop, phone, bank, and vehicle, it is difficult to completely get away from computers. It only makes sense to learn a little about how a computer really works.This text provides an introduction to programming and problem solving using the Fortran 95/2003/2008 programming language. This introduction is geared for non-computer science majors. The primary focus is on an introduction to problem solving and algorithm development. As such, many details of the Fortran 95/2003/2008 language are omitted.

CC BY-NC-SAComputer ScienceProgramming Languages 0 views
MIPS Assembly Language Programming using QtSpim

External

MIPS Assembly Language Programming using QtSpim

Ed Jorgensen · Ed Jorgensen · 2017

There are a number of excellent, comprehensive, and in-depth texts on MIPS assembly language programming. This is not one of them.The purpose of this text is to provide a simple and free reference for university level programming and architecture units that include a brief section covering MIPS assembly language programming. The text assumes usage of the QtSpim simulator. An appendix is included that covers the download, installation, and basic use of the QtSpim simulator.The scope of this text addresses basic MIPS assembly language programming including instruction set usage, stacks, procedure/function calls, QtSpim simulator system services, multiple dimension arrays, and basic recursion.

CC BY-NC-SAComputer ScienceProgramming Languages 0 views
x86-64 Assembly Language Programming with Ubuntu

External

x86-64 Assembly Language Programming with Ubuntu

Ed Jorgensen · Ed Jorgensen · 2019

The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14.04 LTS (64-bit). The x86-64 is a Complex Instruction Set Computing (CISC) CPU design. This refers to the internal processor design philosophy. CISC processors typically include a wide variety of instructions (sometimes overlapping), varying instructions sizes, and a wide range of addressing modes. The term was retroactively coined in contrast to Reduced Instruction Set Computer (RISC3).

CC BY-NC-SAComputer ScienceProgramming Languages 0 views
Agent-Based Evolutionary Game Dynamics

External

Agent-Based Evolutionary Game Dynamics

Luis Izquierdo; Segismundo Izquierdo; William Sandholm · University of Wisconsin - Madison · 2024

This book is a guide to implement and analyze simple agent-based evolutionary models using NetLogo. All the models we implement are agent-based, i.e. individual agents and their interactions are explicitly represented in the models. To formalise agents’ interactions we use the basic framework of Evolutionary Game Theory. NetLogo is a multi-agent programmable modeling environment used by hundreds of thousands of students, teachers and researchers all around the globe. No coding experience is necessary to fully understand the contents of this book.

CC BYComputer Science 0 views
Professional Web Accessibility Auditing Made Easy

External

Professional Web Accessibility Auditing Made Easy

Digital Education Strategies · Ryerson University · 2018

Digital accessibility skills are in high demand, as the world becomes more aware of barriers in digital content that prevent some people from participating in a digital society. These are essential skills for web developers, and essential knowledge for organizations that want to ensure their web content is reaching the broadest audience possible.

CC BY-SAComputer Science 0 views
Web Accessibility for Developers

External

Web Accessibility for Developers

Digital Education Strategies · Ryerson University · 2019

Web Accessibility for Developers is a technical book aimed primarily at programmers. Learn how to develop accessible interactivity on the Web and gain expertise using WAI-ARIA, a W3C specification that enables optimal use of assistive technologies, like screen readers, when navigating the Web.

CC BYComputer Science 0 views
Making Games with Python & Pygame

External

Making Games with Python & Pygame

Al Sweigart · Albert Sweigart · 2012

This book will teach you how to make graphical computer games in the Python programming language using the Pygame library.This book assumes you know a little bit about Python or programming in general. If you don’t know how to program, you can learn by downloading the free book "Invent Your Own Computer Games with Python" from http://inventwithpython.com. Or you can jump right into this book and mostly pick it up along the way. This book is for the intermediate programmer who has learned what variables and loops are, but now wants to know, "What do actual game programs look like?" There was a long gap after I first learned programming but didn’t really know how to use that skill to make something cool. It’s my hope that the games in this book will give you enough ideas about how programs work to provide a foundation to implement your own games.

CC BY-NC-SAComputer Science 0 views
An Introduction to Matlab and Mathcad

External

An Introduction to Matlab and Mathcad

Troy Siemers · APEX Calculus · 2011

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.

CC BY-NCComputer Science 0 views
Delftse Foundations of Computation

External

Delftse Foundations of Computation

Stefan Hugtenburg; Neil Yorke-Smith · TU Delft Open · 2022

DELFTSE FOUNDATIONS OF COMPUTATION is a textbook for a one-quarter introductory course in theoretical computer science. It includes top-ics from propositional and predicate logic, proof techniques, discrete structures, 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. This book is derived from Foundations of Computation by Carol Critchlow and David Eck, Version 2.3 (Summer 2011), which is licensed under CC BYNC-SA 4.0. Critchlow and Eck are not associated with the TU Delft editions. This book also uses some material from Wikipedia (English) (en.wikipedia. org), which is licensed under CC BY-SA 3.0. The authors of the TU Delft editions are responsible for any errors, and welcome bug reports and suggestions by email or in person. Thanks to M. de Jong, T. Klos, I. van Kreveld, F. Mulder, H. Tonino, E. Walraven, and all students who reported bugs or provided exercise solutions. This work can be redistributed in unmodified form, or in modified form with proper attribution and under the same licence as the original, for noncommercial uses only, as specified by the Creative Commons Attribution-Noncommercial-ShareAlike 4.0 Licence (creativecommons.org/licenses/by-ncsa/4.0/).

CC BY-NC-SAComputer Science 0 views
The Unicode cookbook for linguists: Managing writing systems using orthography profiles

External

The Unicode cookbook for linguists: Managing writing systems using orthography profiles

Steven Moran; Michael Cysouw · Language Science Press · 2018

This text is a practical guide for linguists, and programmers, who work with data in multilingual computational environments. We introduce the basic concepts needed to understand how writing systems and character encodings function, and how they work together at the intersection between the Unicode Standard and the International Phonetic Alphabet. Although these standards are often met with frustration by users, they nevertheless provide language researchers and programmers with a consistent computational architecture needed to process, publish and analyze lexical data from the world's languages. Thus we bring to light common, but not always transparent, pitfalls which researchers face when working with Unicode and IPA. Having identified and overcome these pitfalls involved in making writing systems and character encodings syntactically and semantically interoperable (to the extent that they can be), we created a suite of open-source Python and R tools to work with languages using orthography profiles that describe author- or document-specific orthographic conventions. In this cookbook we describe a formal specification of orthography profiles and provide recipes using open source tools to show how users can segment text, analyze it, identify errors, and to transform it into different written forms for comparative linguistics research.

CC BYComputer ScienceLinguistics 0 views
Think Data Structures: Algorithms and Information Retrieval in Java

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

CC BY-NC-SAComputer Science 0 views
How to Think Like a Computer Scientist: C Version

External

How to Think Like a Computer Scientist: C Version

Allen Downey; Thomas Scheffler · Green Tea Press · 1999

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.”

CC BY-NCComputer ScienceProgramming Languages 0 views
How to Think Like a Computer Scientist: C++ Version

External

How to Think Like a Computer Scientist: C++ Version

Allen Downey · Green Tea Press · 2012

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.”

CC BY-NCComputer ScienceProgramming Languages 0 views
Object-Oriented Reengineering Patterns

External

Object-Oriented Reengineering Patterns

Serge Demeyer; Stéphane Ducasse; Oscar Nierstrasz · Stéphane Ducasse · 2008

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. Many systems can be upgraded or simply thrown away if they no longer serve their purpose. Legacy software, however, is crucial for operations and needs to be continually available and upgraded. How can you reduce the complexity of a legacy system sufficiently so that it can continue to be used and adapted at acceptable cost? Based on the authors' industrial experiences, this book is a guide on how to reverse engineer legacy systems to understand their problems, and then reengineer those systems to meet new demands. Patterns are used to clarify and explain the process of understanding large code bases, hence transforming them to meet new requirements. The key insight is that the right design and organization of your system is not something that can be evident from the initial requirements alone, but rather as a consequence of understanding how these requirements evolve.

CC BY-SAComputer Science 0 views
Implementing a One Address CPU in Logisim

External

Implementing a One Address CPU in Logisim

Charles Kann · A.T. Still University · 2016

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.

CC BYComputer Science 0 views
A Byte of Python

External

A Byte of Python

Swaroop H · Swaroop C H · 2013

"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.

CC BY-SAComputer ScienceProgramming Languages 0 views