Updating search results...

Computer Science (Faculty Reviewed)

Course materials in this collection have been mapped to high enrollment Computer Science courses at select Virginia higher education institutions and reviewed by Virginia faculty. All faculty reviewed OER will include a seal of approval in the item record. Scroll through Course Alignments to see what courses and institutions the materials may be suitable for use in the classroom.

32 affiliated resources

Search Resources

View
Selected filters:
Object Oriented Programming
Conditional Remix & Share Permitted
CC BY-NC
Rating
0.0 stars

Students write a program that reads data based on a provided banking scenario, work on inputs, and generate a report after the data is processed.

Subject:
Applied Science
Computer Science
Material Type:
Homework/Assignment
Provider:
CUNY Academic Works
Provider Set:
LaGuardia Community College
Author:
Praveen Khethavath
Date Added:
12/11/2020
Object-Oriented Reengineering Patterns
Conditional Remix & Share Permitted
CC BY-SA
Rating
0.0 stars

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.

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Author:
Oscar Nierstrasz
Serge Demeyer
Stéphane Ducasse
Date Added:
12/05/2019
An Open Guide to Data Structures and Algorithms
Unrestricted Use
CC BY
Rating
0.0 stars

This textbook serves as a gentle introduction for undergraduates to theoretical concepts in data structures and algorithms in computer science while providing coverage of practical implementation (coding) issues. The field of computer science (CS) supports a multitude of essential technologies in science, engineering, and communication as a social medium. The varied and interconnected nature of computer technology permeates countless career paths making CS a popular and growing major program. Mastery of the science behind computer science relies on an understanding of the theory of algorithms and data structures. These concepts underlie the fundamental tradeoffs that dictate performance in terms of speed, memory usage, and programming complexity that separate novice programmers from professional practitioners.

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Provider:
PALNI Press
Author:
Lucas Moser
Date Added:
08/21/2024
Patterns for Beginning Programmers
Unrestricted Use
CC BY
Rating
0.0 stars

Programming patterns are solutions to problems that require the creation of a small fragment of code that will be part of a larger program. Hence, this book is about teaching you how to write such fragments of code. However, it is not about teaching you the syntax of the statements in the fragments, it assumes that you already know the syntax. Instead, it is about finding solutions to problems that arise when first learning to program.

Table of Contents
I. Patterns Requiring Knowledge of Types, Variables, and Arithmetic Operators
II. Patterns Requiring Knowledge of Logical and Relational Operators, Conditions, and Methods
III. Patterns Requiring Knowledge of Loops, Arrays, and I/O
IV. Patterns Requiring Advanced Knowledge of Arrays and Arrays of Arrays
V. Patterns Requiring Knowledge of String Objects
VI. Patterns Requiring Knowledge of References

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Author:
David Bernstein
Date Added:
05/23/2022
Programming Fundamentals - A Modular Structured Approach using C++
Unrestricted Use
CC BY
Rating
0.0 stars

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.

Subject:
Applied Science
Computer Science
Material Type:
Full Course
Provider:
Rice University
Provider Set:
OpenStax CNX
Author:
Kenneth Leroy Busbee
Date Added:
01/10/2013
A Quick Steep Climb Up Linear Algebra
Conditional Remix & Share Permitted
CC BY-SA
Rating
0.0 stars

A Quick Steep Climb Up Lienar Algebra - and its companion site "allthemath" - are completely-and-forever-free-and-open-source educational materials dedicated to the mathematics that budding computer science practitioners actually need to know.

Table of Contents:
Stretching our legs
Vectors
Linear independence
Matrices
Linear transformations
Matrix mulitplication
Applications
Eigenanalysis
Eigenapplications

Subject:
Algebra
Applied Science
Computer Science
Mathematics
Material Type:
Textbook
Author:
Stephen Davies
Date Added:
10/04/2023
Spiral Workbook for Discrete Mathematics
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating
0.0 stars

This is a text that covers the standard topics in a sophomore-level course in discrete mathematics: logic, sets, proof techniques, basic number theory, functions, relations, and elementary combinatorics, with an emphasis on motivation. It explains and clarifies the unwritten conventions in mathematics, and guides the students through a detailed discussion on how a proof is revised from its draft to a final polished form. Hands-on exercises help students understand a concept soon after learning it. The text adopts a spiral approach: many topics are revisited multiple times, sometimes from a different perspective or at a higher level of complexity. The goal is to slowly develop students’ problem-solving and writing skills.

Subject:
Functions
Mathematics
Numbers and Operations
Material Type:
Textbook
Provider:
State University of New York
Provider Set:
Milne Open Textbooks
Author:
Harris Kwong, SUNY Fredonia
Date Added:
11/06/2015
Think Data Structures: Algorithms and Information Retrieval in Java
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating
0.0 stars

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.

I have made difficult decisions about what to leave out, but I have made some compromises. I include a few topics that most readers will never use, but that they might be expected to know, possibly in a technical interview. For these topics, I present both the conventional wisdom as well as my reasons to be skeptical.

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 science and related fields, as well as professional software engineers, people training in software engineering, and people preparing for technical interviews.

I assume that the reader knows Java at an intermediate level, but I explain some Java features along the way, and provide pointers to supplementary material.

People who have read Think Java or Head First Java are prepared for this book.

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Provider:
Green Tea Press
Author:
Allen Downey
Date Added:
01/01/2016
Think Java, 2nd edition
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating
0.0 stars

Think Java is an introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.

Table of Contents:
Preface
Chapter 1: Computer Programming
Chapter 2: Variables and Operators
Chapter 3: Input and Output
Chapter 4: Methods and Testing
Chapter 5: Conditionals and Logic
Chapter 6: Loops and Strings
Chapter 7: Arrays and References
Chapter 8: Recursive Methods
Chapter 9: Immutable Objects
Chapter 10: Mutable Objects
Chapter 11: Designing Classes
Chapter 12: Arrays of Objects
Chapter 13: Objects of Arrays
Chapter 14: Extending Classes
Chapter 15: Arrays of Arrays
Chapter 16: Reusing Classes
Chapter 17: Advanced Topics
Appendix A: Tools
Appendix B: Javadoc
Appendix C: Graphics
Appendix D: Debugging
Index

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Author:
Allen Downey
Chris Mayfield
Date Added:
02/04/2022
Think Java: How to Think Like a Computer Scientist
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating
0.0 stars

Think Java is an introduction to Java programming for beginners. It is tailored for students preparing for the Computer Science Advanced Placement (AP) Exam, but it is for anyone who wants to learn Java.

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Provider:
Green Tea Press
Author:
Allen B. Downey
Chris Mayfield
Date Added:
01/01/2012
Think Python 2nd Edition
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating
0.0 stars

The goal of this book is to teach you to think like a computer scientist. This way of thinking combines 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 tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.

Subject:
Applied Science
Computer Science
Material Type:
Primary Source
Textbook
Provider:
Green Tea Press
Author:
Allen B. Downey
Date Added:
12/05/2019
Think Raku: How to Think Like a Computer Scientist - 2nd edition
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating
0.0 stars

Think Raku is an introduction to computer science and programming intended for people with little or no experience.

This aim of this book is not primarily to teach Raku, but instead to teach the art of programming, using the Raku language. After having completed this book, you should hopefully be able to write programs to solve relatively difficult problems in Raku, but my main aim is to teach computer science, software programming, and problem solving rather than solely to teach the Raku language itself.

Think Raku is a free book available under a Creative Commons license. Readers are free to copy and distribute the text; they are also free to modify it, which allows them to adapt the book to different needs, and to help develop new material.

Subject:
Applied Science
Computer Science
Material Type:
Textbook
Provider:
Green Tea Press
Author:
Allen B. Downey
Laurent Rosenfeld
Date Added:
09/08/2021