Foundations of Computer Science: A Rigorous, Non-Programming Introduction
Author(s): Roy M Turner , Elise H. Turner
Edition: 1
Copyright: 2022
Foundations of Computer Science: A Rigorous, Non-Programming Introduction provides a non-programming, yet rigorous, introduction to computer science. Although programming is an essential skill for a computer scientist, there are a plethora of good programming textbooks, and the field is much broader, and much more intellectually rich and exciting, than just programming. Instead, this book focuses on introducing the full breadth of the foundational areas of the field. Instead of just being a "breadth-first" introduction to the field, however, coverage of each area includes deep dives into the actual subject matter that a junior or senior majoring in CS will encounter. For example, instead of just mentioning the highlights of operating systems, the book includes chapters on the details of process synchronization mechanisms, virtual memory, files, and handling deadlocks. This gives the beginning student a feel for the kinds of problems computer scientists study and for how computer scientists think, and exercises are designed to teach students to begin thinking like computer scientists. The book and the course it came from were designed in part to address retention and recruitment in computer science programs. It hopefully will pique the non-major's interest in the field (and increase the CS major's interest) and while allowing both major and non-major students to assess at an early stage whether the field is actually for them. Versions of the textbook have been used successfully at the authors' instituation for a required first-year computer science course for many years, teaching hundreds of students.
Part I—Introduction
Chapter 1—What Is Computer Science?
Chapter 2—What Are computers?
Chapter 3—A Brief history
Part II—Digital Logic
Chapter 4—Digital Logic
Chapter 5—Language of Digital Logic: Boolean Algebra
Chapter 6—Logic Circuits and Minimization
Part III—Introduction
Chapter 7—Computer Architecture
Chapter 8—Data Representation
Chapter 9—Hardware Arithmetic
Chapter 10—Registers
Chapter 11—The CPU
Chapter 12—Secondary Storage
Chapter 13—Buses
Part IV—Introduction
Chapter 14—Programming Languages
Chapter 15—Statements and Control Structures
Chapter 16—Variables and Data Types
Chapter 17—Grammars and Parsing
Part V—Introduction
Chapter 18—Operating Systems
Chapter 19—Processes and Process Synchronization
Chapter 20—Memory Management & Virtual Memory
Chapter 21—Files and File Systems
Chapter 22—Resources and Deadlocks
Part VI—Introduction
Chapter 23—Networks
Chapter 24—Error Detection and Correction
Chapter 25—LAN Protocols
Chapter 26—Transport and Internet Layer Protocols
Part VII—Introduction
Chapter 27—Computers, Ethics, and Society
Chapter 28—Conclusions and the Future
Foundations of Computer Science: A Rigorous, Non-Programming Introduction provides a non-programming, yet rigorous, introduction to computer science. Although programming is an essential skill for a computer scientist, there are a plethora of good programming textbooks, and the field is much broader, and much more intellectually rich and exciting, than just programming. Instead, this book focuses on introducing the full breadth of the foundational areas of the field. Instead of just being a "breadth-first" introduction to the field, however, coverage of each area includes deep dives into the actual subject matter that a junior or senior majoring in CS will encounter. For example, instead of just mentioning the highlights of operating systems, the book includes chapters on the details of process synchronization mechanisms, virtual memory, files, and handling deadlocks. This gives the beginning student a feel for the kinds of problems computer scientists study and for how computer scientists think, and exercises are designed to teach students to begin thinking like computer scientists. The book and the course it came from were designed in part to address retention and recruitment in computer science programs. It hopefully will pique the non-major's interest in the field (and increase the CS major's interest) and while allowing both major and non-major students to assess at an early stage whether the field is actually for them. Versions of the textbook have been used successfully at the authors' instituation for a required first-year computer science course for many years, teaching hundreds of students.
Part I—Introduction
Chapter 1—What Is Computer Science?
Chapter 2—What Are computers?
Chapter 3—A Brief history
Part II—Digital Logic
Chapter 4—Digital Logic
Chapter 5—Language of Digital Logic: Boolean Algebra
Chapter 6—Logic Circuits and Minimization
Part III—Introduction
Chapter 7—Computer Architecture
Chapter 8—Data Representation
Chapter 9—Hardware Arithmetic
Chapter 10—Registers
Chapter 11—The CPU
Chapter 12—Secondary Storage
Chapter 13—Buses
Part IV—Introduction
Chapter 14—Programming Languages
Chapter 15—Statements and Control Structures
Chapter 16—Variables and Data Types
Chapter 17—Grammars and Parsing
Part V—Introduction
Chapter 18—Operating Systems
Chapter 19—Processes and Process Synchronization
Chapter 20—Memory Management & Virtual Memory
Chapter 21—Files and File Systems
Chapter 22—Resources and Deadlocks
Part VI—Introduction
Chapter 23—Networks
Chapter 24—Error Detection and Correction
Chapter 25—LAN Protocols
Chapter 26—Transport and Internet Layer Protocols
Part VII—Introduction
Chapter 27—Computers, Ethics, and Society
Chapter 28—Conclusions and the Future