Phu Xuan University Library

Digital library

Textbooks, references and open learning resources.

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
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
Enterprise Pharo a Web Perspective

External

Enterprise Pharo a Web Perspective

Square Bracket Associates · 2016

Enterprise Pharo is the third volume of the series, following Pharo by Example and Deep into Pharo. It covers enterprise libraries and frameworks, and in particular those useful for doing web development. The book is structured in five parts. The first part talks about simple web applications, starting with a minimal web application in chapter 1 on Teapot and then a tutorial on building a more complete web application in chapter 2. Part two deals with HTTP support in Pharo, talking about character encoding in chapter 3, about using Pharo as an HTTP Client (chapter 4) and server (chapter 5), and about using WebSockets (chapter 6).In the third part we discuss the handling of data for the application. Firstly we treat data that is in the form of comma-separated values (CSV) in chapter 7. Secondly and thirdly, we treat JSON (chapter 8) and its Smalltalk counterpart STON (chapter 9). Fourthly, serialization and deserialization of object graphs with Fuel is treated in chapter 10. Lastly, we discuss the Voyage persistence framework and persisting to MongoDB databases in chapter 11. Part four deals with the presentation layer. Chapter 12 shows how to use Mustache templates in Pharo, and chapter 13 talks about programmatic generationof CSS files. The documentation of applications could be written in Pillar, which is presented in chapter 14. How to generate PDF files from the application with Artefact is shown in chapter 15. The fifth part deals with deploying the web application. This is explained in chapter 16 that talks not only about how to build and run the application, but also other important topics like monitoring.

CC BY-SAComputer Science 0 views
Relational Databases and Microsoft Access 365

External

Relational Databases and Microsoft Access 365

Ron McFadyen · Ron McFadyen · 2021

This text is a free introductory text that introduces MS Access and relational database design. The motivation is to support an introductory database system course 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.

CC BY-NC-SAComputer ScienceDatabases 0 views
Database Design

External

Database Design

Adrienne Watt · BCcampus · 2014

This second edition of Database Design book covers the concepts used in database systems and the database design process. Topics include: The history of databases Characteristics and benefits of databases Data models Data modelling Classification of database management systems Integrity rules and constraints Functional dependencies Normalization Database development process New to this edition are more examples, highlighted and defined key terms, both throughout and at the end of each chapter, and end-of-chapter review exercises. Two new chapters have been added on SQL, along with appendices that include a data model example, sample ERD exercises and SQL lab with solutions.

CC BYComputer ScienceDatabases 0 views
Python for Everybody: Exploring Data Using Python 3

External

Python for Everybody: Exploring Data Using Python 3

Charles Severance · Charles Severance · 2016

I never seemed to find the perfect data-oriented Python book for my course, so I set out to write just such a book. Luckily at a faculty meeting three weeks before I was about to start my new book from scratch over the holiday break, Dr. Atul Prakash showed me the Think Python book which he had used to teach his Python course that semester. It is a well-written Computer Science text with a focus on short, direct explanations and ease of learning.The overall book structure has been changed to get to doing data analysis problems as quickly as possible and have a series of running examples and exercises about data analysis from the very beginning. Chapters 2–10 are similar to the Think Python book, but there have been major changes. Number-oriented examples and exercises have been replaced with data- oriented exercises. Topics are presented in the order needed to build increasingly sophisticated data analysis solutions. Some topics like try and except are pulled forward and presented as part of the chapter on conditionals. Functions are given very light treatment until they are needed to handle program complexity rather than introduced as an early lesson in abstraction. Nearly all user-defined functions have been removed from the example code and exercises outside of Chapter 4. The word “recursion”1 does not appear in the book at all. In chapters 1 and 11–16, all of the material is brand new, focusing on real-world uses and simple examples of Python for data analysis including regular expressions for searching and parsing, automating tasks on your computer, retrieving data across the network, scraping web pages for data, object-oriented programming, using web services, parsing XML and JSON data, creating and using databases using Structured Query Language, and visualizing data. The ultimate goal of all of these changes is a shift from a Computer Science to an Informatics focus is to only include topics into a first technology class that can be useful even if one choose

CC BY-NC-SAComputer ScienceProgramming Languages 0 views
Signal Computing: Digital Signals in the Software Domain

External

Signal Computing: Digital Signals in the Software Domain

Michael Stiber; Bilin Stiber; Eric Larson · Michael Stiber, Eric Larson · 2020

In this book, you will learn how digital signals are captured, represented, processed, communicated, and stored in computers. The specific topics we will cover include: physical properties of the source information (such as sound or images), devices for information capture (microphones, cameras), digitization, compression, digital signal representation (JPEG, MPEG), digital signal processing (DSP), signal analysis and feature extraction via re-representation as functions of frequency, and network communication. By the end of this book, you should understand the problems and solutions facing signal computing systems development in the areas of data structures and algorithms, data analytics, feature extraction, information retrieval, user interfaces, and communications.

CC BY-SAComputer Science 0 views
Think Stats: Probability and Statistics for Programmers

External

Think Stats: Probability and Statistics for Programmers

Allen Downey · Green Tea Press · 2014

Think Stats is an introduction to Probability and Statistics for Python programmers. Think Stats emphasizes simple techniques you can use to explore real data sets and answer interesting questions. The book presents a case study using data from the National Institutes of Health. Readers are encouraged to work on a project with real datasets. If you have basic skills in Python, you can use them to learn concepts in probability and statistics. Think Stats is based on a Python library for probability distributions (PMFs and CDFs). Many of the exercises use short programs to run experiments and help readers develop understanding.

CC BY-NCComputer Science 0 views
Spatial Thinking in Planning Practice: An Introduction to GIS

External

Spatial Thinking in Planning Practice: An Introduction to GIS

Yiping Fang; Vivek Shandas; Eugenio Cordero · Portland State University Library · 2014

The goals of this textbook are to help students acquire the technical skills of using software and managing a database, and develop research skills of collecting data, analyzing information and presenting results. We emphasize that the need to investigate the potential and practicality of GIS technologies in a typical planning setting and evaluate its possible applications. GIS may not be necessary (or useful) for every planning application, and we anticipate these readings to provide the necessary foundation for discerning its appropriate use. Therefore, this textbook attempts to facilitate spatial thinking focusing more on open-ended planning questions, which require judgment and exploration, while developing the analytical capacity for understanding a variety of local and regional planning challenges. While this textbook provides the background for understanding the concepts in GIS as applicable to urban and regional planning, it is best when accompanied by a hands-on tutorial, which will enable readers to develop an in-depth understanding of the specific planning applications of GIS. In the end of each chapter, we also provided several discussion questions, together with contextual applications through some web links.

CC BY-NCComputer Science 0 views
Open Data Structures: An Introduction

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.

CC BY-NC-NDComputer Science 0 views
Operating Systems and Middleware: Supporting Controlled Interaction

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

CC BY-SAComputer Science 0 views
Algorithms and Data Structures With Applications to Graphics and Geometry

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.

CC BYComputer SciencePure 0 views
Programming Fundamentals - A Modular Structured Approach using C++

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.

CC BYComputer ScienceProgramming Languages 0 views
Introduction to Python Programming

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.

CC BY-NC-SAComputer Science 0 views
Introduction to Computer Science

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.

CC BY-NC-SAComputer Science 0 views
Foundations of Information Systems

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.

CC BY-NC-SAComputer Science 0 views
Programming Fundamentals - A Modular Structured Approach, 2ed.

External

Programming Fundamentals - A Modular Structured Approach, 2ed.

Kenneth Leroy Busbee and Dave Braunschweig · LibreTexts

In the contents: 02: Data and Operators · 2.05: Practice- Data and Operators · 2.07: Data Types

CC BY-SAComputer ScienceEngineering 0 views
A Brief Introduction to Engineering Computation with MATLAB

External

A Brief Introduction to Engineering Computation with MATLAB

Serhat Beyenir · British Columbia Institute of Technology

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.

CC BYComputer ScienceEngineering 0 views
Programming Fundamentals - A Modular Structured Approach using C++

External

Programming Fundamentals - A Modular Structured Approach using C++

Kenneth Leroy Busbee · Houston Community College

In the contents: 3.03: Test Data · 04: Data and Operators · 4.01: Data Types in C

CC BYComputer ScienceEngineering 0 views
Object-Oriented Reengineering Patterns

External

Object-Oriented Reengineering Patterns

Serge Demeyer, Stéphane Ducasse, & Oscar Nierstrasz · LibreTexts

In the contents: 4.02: Analyze the Persistent Data · 9.02: Move Behavior Close to Data

CC BY-SAComputer ScienceEngineering 0 views