Preface
Introduction to Computer Science was originally authored by Jean-Claude Franchitti, and published by OpenStax, Rice University. It is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). The original work is available at openstax.org. This version has been adapted for use in the Universal Open Textbook Initiative.
About Introduction to Computer Science
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 textbook 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 topics, such as algorithms, data structures, computer systems organization, and software development, using an array of engaging, hands-on activities. The textbook integrates meaningful learning experiences through chapter-based scenarios, problem-solving exercises, and project-based assessments that encourage students to apply what they learn in authentic contexts.
Features such as embedded coding exercises, industry insights, and explorations of emerging technology trends provide a holistic approach to learning that extends beyond theory. With a forward-looking perspective, Introduction to Computer Science prepares students to engage with advanced topics in computer science, such as machine learning, cybersecurity, and cloud computing, ensuring they have a solid foundation for continued study and future professional success.
Coverage and Scope
The authors and contributors consulted with other educators and industry professionals from a range of institutions and organizations in order to ensure that Introduction to Computer Science meets the diverse needs of both computer science majors and non-majors. The book is structured into five main parts, each focusing on critical areas of the discipline:
- Part 1: Problem Solving and Algorithms This section introduces students to the foundations of computer science, focusing on computational thinking, problem-solving techniques, and algorithm design. Topics include data structures, formal properties of algorithms, and algorithmic paradigms. Through practical examples and exercises, students will develop the skills needed to construct and analyze algorithms and understand their applications across various domains.
- Part 2: Realizations of Algorithms In this part, students explore how algorithms are realized in hardware and software, starting with low-level programming languages and moving into hardware design and computer systems organization. Students will learn about models of computation, machine-level representation, processor architectures, and memory hierarchy. This foundational understanding enables students to see the connections between abstract algorithms and their physical implementations.
- Part 3: Designing and Developing Software Solutions This section covers the principles of software development, high-level programming languages, and data management. Students will learn the fundamentals of software engineering and gain hands-on experience with both relational and non-relational database systems. Emphasis is placed on designing robust software solutions and managing complex data structures, ensuring students are well-prepared for future roles in software development and engineering.
- Part 4: Building Modern End-to-End Solutions to Business and Social Problems Students apply their knowledge to design and build web and cloud-native applications. This part includes examples of modern web architectures, responsive design techniques, and cloud-based solutions using PaaS and FaaS technologies. Additionally, students will explore the development of hybrid multi-cloud digital solutions, providing them with experience in addressing complex business and social challenges using modern computing technologies.
- Part 5: Human-Centered Responsible Computing The final section delves into the ethical and societal implications of computing. Topics include cybersecurity, governance of cyber resources, and responsible computing practices. Students will learn to navigate the complexities of cybersecurity and governance while considering the broader impacts of technology on society.
Each core concept is designed to build on the previous one, ensuring a coherent learning experience that provides students with a clear view of the field. The book's approach enables students to not only understand the principles of computer science but also see how they can be applied to address practical, real-world problems.
Pedagogical Foundation and Features
The Introduction to Computer Science textbook 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 computer science relevant and accessible for students from diverse backgrounds, whether they are pursuing a degree in computer science or exploring how computational thinking can be applied to their respective fields. To support this vision, the textbook incorporates several key features:
- Concepts in Practice features present how computer science concepts are applied in real-world contexts by both professionals and non-professionals. Each box profiles personas and practical applications that demonstrate how core topics, such as algorithms, data management, and software engineering, are utilized across various industries. The purpose is to inspire students—particularly non-majors—by showing them the value of computer science in solving everyday challenges and to foster a greater appreciation for the discipline.
- Global Issues in Technology features help students think globally about the societal impact of technology. These boxes highlight how technology affects communities and economies around the world and may introduce topics such as digital equity, environmental sustainability, and global data security. Students are encouraged to consider the broader implications of technological advancements and to think critically about their potential to drive positive change or create new challenges in global contexts.
- Industry Spotlight boxes focus on specific industry challenges and how technology progress or application can help solve them. Industry Spotlight features introduce students to various sectors—such as healthcare, finance, education, and law—providing a glimpse into how computer science can drive innovation and efficiency. By connecting theoretical concepts to industry-specific problems, these features encourage students to explore the wide-ranging applications of computer science and understand its value across different fields.
- Link to Learning features provide a very brief introduction to online resources—videos, interactives, collections, maps, and other engaging resources that are pertinent to students' exploration of the topic at hand.
- Technology in Everyday Life features connect computer science principles to students' personal experiences and the world around them. These boxes explore how technology intersects with daily life or current events, making computer science concepts more relatable and relevant. Some features may prompt students to think creatively and propose their own ideas for applying computer science solutions to familiar scenarios.
- Think It Through scenarios present students with thought-provoking dilemmas or complex problems related to the use of technology. Students are asked to reflect on ethical questions, problem-solving strategies, and real-world decision-making processes. These features emphasize that not all problems have straightforward answers and encourage students to weigh the pros and cons of different approaches. By navigating these scenarios, students learn to develop judgment skills that are crucial in business and technology environments.
Overall, these features are integrated throughout the material to foster active learning, critical thinking, and an appreciation for the practical applications of computer science. By connecting theory to practice and encouraging students to explore real-world issues, Introduction to Computer Science provides a meaningful and supportive learning experience that equips students with the knowledge and skills necessary for success in their academic and professional journeys.
Answers to Questions in the Book
The end-of-chapter Review, Conceptual Questions, Practice Exercises, Problem Sets, Thought Provokers, and Labs are intended for homework assignments or classroom discussion; thus, student-facing answers are not provided in the book. Answers and sample answers are provided in the Instructor Answer Guide, for instructors to share with students at their discretion, as is standard for such resources.
About the Author
Senior Contributing Author
Dr. Jean-Claude Franchitti is a Clinical Associate Professor of Computer Science and the Associate Director of Graduate Studies for the CS Master's program in Information Systems at NYU Courant Institute. He earned his M.S. in Electrical Engineering (1985) and his M.S. and PhD. in Computer Science from the University of Colorado at Boulder (1988, 1993). He is the founder and CEO of Archemy, Inc., and has over 40 years of experience in a myriad of industries, and over 30 years of teaching and corporate training experience. He held executive positions in large US-based corporations and leading business technology consulting firms such as Computer Sciences Corporation. He has been involved in many large business technology strategy and modernization projects and has a proven record of delivering large scale business solutions. He was the original designer and developer of jcrew.com and the suite of products now known as IBM InfoSphere DataStage. He also created the Agile Enterprise Architecture Management (AEAM) methodology and a corresponding framework that are patented components of the Archemy business evolution platform.
Dr. Franchitti's teaching and research interests include machine learning, artificial intelligence, data management systems and software engineering with an emphasis on large-scale software architectures and business solutions. He has published articles in numerous refereed publications including the Proceedings of Third Int. Conf. on Cooperative Information Systems, Proceedings of the Sixth International Workshop on Persistent Object Systems, and the 16th International Conference on Software Engineering. Dr. Franchitti received an award for Outstanding Service from NYU's School of Continuing and Professional Studies.
Contributing Authors
Amal Alhosban, University of Michigan–Flint
Mark Buckler, Grand Canyon University
Joanna Gilberti, Archemy, Inc.
Scott Gray, Nashua Community College
Matthew Hertz, University at Buffalo
Andrew Hurd, Empire State University
Kevin Lin, University of Washington
Sai Mukkavilli, Georgia Southwestern State University
Phuc (Brian) Nguyen, UC Irvine
Shahab Tayeb, Fresno State
Zdeněk Troníček, Tarleton State University
Kevin Wortman, Cal State Fullerton
Mohamed Zahran, New York University
Reviewers
Reni Abraham, Houston Community College
Shakil Akhtar, Clayton State University
Kiavash Bahreini, Florida International University
Tammie Bolling, Pellissippi State Community College
Phillip Bradford, UConn
Quiana Bradshaw, Campbellsville University
Christopher Bunton, Austin Community College
Komal Chhibber, South Mountain Community College
Chen-Fu Chiang, SUNY Polytechnic Institute
Gabriel de la Cruz, North Idaho College
Gabriel Ferrer, Hendrix College
David Fogarty, New York University
Yuexing Hao, Massachusetts Institute of Technology
Nazli Hardy, Millersville University
Angela Heath, Baptist Health System
Rania Hodhod, Columbus State University
Benita Hubbard, Southern New Hampshire University
Sumit Jha, Florida International University
Mohamed E. Khalefa, SUNY Old Westbury
Steven Ko, Simon Fraser University
Jessica Kong, University of Washington
Alex Krasnok, Florida International University
Blaise Liffick, Millersville University
Sue McCrory, Missouri State University
Morgan McKie, Florida International University
Sandeep Mitra, SUNY Brockport
Mourya Narasareddygari, Rider University
Saty Raghavachary, University of Southern California
Muhammad Rahman, Clayton State University
Amir Rahmati, Stony Brook University
Caryl Rahn, Florida International University
Jerry Reed, Valencia College
Jordan Ringenberg, University of Findlay
Eman Saleh, University of Georgia
Vincent Sanchez, Florida International University
John Schriner, Queensborough Community College
Tiffanie R. Smith, Lincoln University
Hann So, De Anza College
Jayesh Soni, Florida International University
Derrick Stevens, Mohawk Valley Community College
Kathleen Tamerlano, Cuyahoga Community College
Chintan Thakkar, Rasmussen University
Jingnan Xie, Millersville University
Ning Xie, Florida International University
Additional Resources
Instructor resources for this book include an instructor's answer guide, test bank, and PowerPoint lecture slides. These are available through the OpenStax instructor resources page for this book. Instructors can also find and share community-created teaching materials at oercommons.org/hubs/OpenStax.