Computer Science (Faculty Reviewed)

Course materials in this collection have been mapped to VCCS Computer Science Transfer Courses and reviewed by Virginia faculty. Filter by Course Alignments to find OER specific to your course.

22 affiliated resources

Search Resources

View
Selected filters:
Applied Discrete Structures
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating

The wide range of examples in the text are meant to augment the "favorite examples" that most instructors have for teaching the topcs in discrete mathematics.

To provide diagnostic help and encouragement, we have included solutions and/or hints to the odd-numbered exercises. These solutions include detailed answers whenever warranted and complete proofs, not just terse outlines of proofs.

Our use of standard terminology and notation makes Applied Discrete Structures a valuable reference book for future courses. Although many advanced books have a short review of elementary topics, they cannot be complete.

The text is divided into lecture-length sections, facilitating the organization of an instructor's presentation.Topics are presented in such a way that students' understanding can be monitored through thought-provoking exercises. The exercises require an understanding of the topics and how they are interrelated, not just a familiarity with the key words.

An Instructor's Guide is available to any instructor who uses the text.

Subject:
Mathematics
Material Type:
Textbook
Author:
Al Doerr
Ken Levasseurr
Date Added:
01/01/2017
Blueprints: Creating, Describing, and Implementing Designs for Larger-Scale Software Projects
Conditional Remix & Share Permitted
CC BY-SA
Rating

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.

Table of Contents
1 Getting off the ground
2 The “software crisis”
3 Classes and objects
4 Memory matters
5 Exceptions
6 UML class diagrams
7 The Singleton pattern
8 Java odds ’n’ ends
9 UML sequence diagrams
10 Persistence and hydration
11 Inheritance (1 of 2)
12 Inheritance (2 of 2)
13 The Factory pattern
14 Team software development
15 Doing design (1 of 2)
16 Doing design (2 of 2)
17 Use cases
18 Documenting an API

Subject:
Computer Science
Material Type:
Textbook
Author:
Stephen Davies
Date Added:
09/08/2021
Blueprints: Creating, Describing, and Implementing Designs for Larger-Scale Software Projects - version 2.3
Conditional Remix & Share Permitted
CC BY-SA
Rating

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.

Subject:
Computer Science
Material Type:
Textbook
Author:
Stephen Davies
Date Added:
11/18/2021
Computer Science I - Version 1.3.7
Conditional Remix & Share Permitted
CC BY-SA
Rating

This textbook covers the traditional introductory Computer Science I topics but takes a unique approach. Topics are covered in a language-agnostic manner in the first part with supplemental parts that cover the same concepts in a specific language. The current version covers C, Java, and PHP. This textbook as been used in several Computer Science I sections over multiple years at the University of Nebraska-Lincoln.

Table of Contents
I. The C Programming Language
II. The Java Programming Language
III. The PHP Programming Language

Subject:
Computer Science
Material Type:
Textbook
Author:
Chris Bourke
Date Added:
09/08/2021
A Cool Brisk Walk Through Discrete Mathematics
Conditional Remix & Share Permitted
CC BY-SA
Rating

A Cool, Brisk Walk Through Discrete Mathematics, an innovative and non-traditional approach to learning Discrete Math, is available for low cost from Blurb or via free download.

Subject:
Mathematics
Material Type:
Textbook
Author:
Stephen Davies
Date Added:
11/18/2021
Discrete Mathematics: An Open Introduction
Conditional Remix & Share Permitted
CC BY-SA
Rating

Discrete Mathematics: An Open Introduction is a free, open source textbook appropriate for a first or second year undergraduate course for math majors, especially those who will go on to teach. The textbook has been developed while teaching the Discrete Mathematics course at the University of Northern Colorado. Primitive versions were used as the primary textbook for that course since Spring 2013, and have been used by other instructors as a free additional resource. Since then it has been used as the primary text for this course at UNC, as well as at other institutions.

Subject:
Mathematics
Material Type:
Textbook
Author:
Oscar Levin
Date Added:
12/05/2019
Discrete Mathematics, Vol. 1
Conditional Remix & Share Permitted
CC BY-SA
Rating

A Cool Brisk Walk Through Discrete Mathematics - and its companion site "allthemath" - are completely-and-forever-free-and-open-source educational materials dedicated to the mathematics that emerging computer science practitioners actually need to know.

Subject:
Computer Science
Mathematics
Material Type:
Lecture
Textbook
Author:
Stephen Davies
Date Added:
06/29/2020
Eloquent JavaScript: A Modern Introduction to Programming
Conditional Remix & Share Permitted
CC BY-NC
Rating

This book contains roughly three parts. The first 11 chapters discussthe JavaScript language itself. The next eight chapters are about webbrowsers and the way JavaScript is used to program them. Finally,two chapters are devoted to Node.js, another environment to programJavaScript in.Throughout the book, there are five project chapters, which describelarger example programs to give you a taste of real programming. Inorder of appearance, we will work through building an artificial life simulation,a programming language, a platform game, a paint program,and a dynamic website.

Subject:
Computer Science
Material Type:
Textbook
Author:
Marijn Haverbeke.
Date Added:
12/05/2019
Exploratory Data Science
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating

This textbook provides a compact introduction to using the R programming language for data analysis. While there are good, freely available resources for learning these skills, they are generally not optimized for use in the classroom. Most fail to include a range of exercises, expect a high level of prior programming or mathematical experience, or only cover a specific niche aspect of data science. Moreover, the vast majority of these free sources do not include permissive licenses that make it easy to re-mix them and adapt it to a specific course. This textbook address these concerns by providing chapters designed to be covered in a single class period, a wide variety of exercises, and a Creative Commons license that allows others to make and republish their notes according to the needs of a specific curriculum.

Subject:
Computer Science
Mathematics
Material Type:
Textbook
Author:
Taylor Arnold
Date Added:
06/07/2022
Foundations of Computation
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating

Foundations of Computation is a free textbook for a one-semester course in theoretical computer science. It has been used for several years in a course at Hobart and William Smith Colleges. 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.

Subject:
Computer Science
Material Type:
Textbook
Provider:
Hobart and William Smith Colleges
Author:
Carol Critchlow, David Eck
Date Added:
12/05/2019
Introduction to Programming using Fortran 95/2003/2008
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating

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.

Subject:
Computer Science
Material Type:
Textbook
Author:
Ed Jorgensen
Date Added:
12/05/2019
Linear Algebra: Foundations to Frontiers
Rating

An e-book (PDF) that integrates the materials for the Spring 2017 offering of LAFF, including 270+ short videos, answers to exercises, browser-based activities, and programming exercises in M-script (the programming language of MATLAB). This artifact encompasses a full undergraduate introductory course on linear algebra and is used at the primary resource for such a course at UT-Austin.

Subject:
Computer Science
Material Type:
Activity/Lab
Homework/Assignment
Textbook
Author:
Margaret E. Myers
Pierce M. van de Geijn
Robert A. van de Geijn
Date Added:
02/15/2022
Object Oriented Programming
Unrestricted Use
CC BY
Rating

Object-oriented programming (OOP) has become exceedingly popular in the past few years. Software producers rush to release object oriented versions of their products. This module will introduce you to Introduction to object oriented programming , objects, classes, inheritance, interfaces, packages and Libraries and Handling of Exception. Each discussion focuses on how these concepts relate to the real world, while simultaneously providing an introduction to the syntax of the Java programming language.

Subject:
Computer Science
Material Type:
Module
Provider:
African Virtual University
Provider Set:
OER@AVU
Author:
Lucy Gitau
Date Added:
12/11/2020
Patterns for Beginning Programmers
Unrestricted Use
CC BY
Rating

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:
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

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:
Computer Science
Material Type:
Full Course
Provider:
Rice University
Provider Set:
OpenStax CNX
Author:
Kenneth Leroy Busbee
Date Added:
01/10/2013
Think Data Structures: Algorithms and Information Retrieval in Java
Conditional Remix & Share Permitted
CC BY-NC-SA
Rating

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:
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

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:
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

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:
Computer Science
Material Type:
Textbook
Provider:
Green Tea Press
Author:
Allen B. Downey
Chris Mayfield
Date Added:
01/01/2012