Essential Computational Thinking

Essential Computational Thinking: Computer Science from Scratch (Preliminary Edition) is published and distributed by Cognella, Inc. Please feel free to download the first three chapters here.


Essential Computational Thinking
Computer Science from Scratch
by Ricky J. Sethi



Video Series to Complement Part I

Video series to complement Ch. 0 - 2 of Essential Computational Thinking:

This excellent video series is created by Brit Cruise and Art of the Problem.



Auto-Graded Problem Sets to Complement Part II

Auto-graded problem sets for Ch. 3 - 7 of Essential Computational Thinking can be found on Snakify's Lessons 1 - 11. In particular, please use the following guide:



Book's Table of Contents

Part I: Theory: What is Computer Science?

  1. On The Road to Computation
    1. What is Knowledge?
    2. Declarative vs Imperative Knowledge
    3. The Key to Science
    4. Computer Science: The Study of Computation
    5. A Review of Functions
    6. Computable Functions
    7. Talking in Tongues: Programming Languages
  2. Computational Thinking and Information Theory
    1. What is Thinking?
    2. Deductive vs Inductive Thinking
    3. Thinking About Probabilities
    4. Logical Thinking
    5. Thinking about Computational Solutions
    6. Two Fundamental Models of Programming
    7. Pseudocode
    8. Functional and Imperative Models of Computation
    9. Information Theory
    10. Shannon's Information Entropy
  3. Computational Problem Solving
    1. What is a Model?
    2. Data Representations
    3. Number Representations
    4. Digital Representations
    5. Boolean Algebra
    6. What is Information Processing?
    7. What is Computer Information Systems (CIS)?
    8. Programming Languages
    9. Computational Thinking
    10. Problem Space and System State
    11. Computational Thinking in Action
  4. Part II: Basics: Imperative Programming

  5. Computational Thinking and Structured Programming
    1. Review of Computation
    2. Computational Thinking Basics
    3. Minimal Instruction Set
    4. Getting Started with Python
    5. Syntax, Semantic, or Logic Errors
    6. State of a Computational System
    7. Natural vs Formal Languages
    8. Translating your programs
    9. Playing with Python
    10. An example using Computational Thinking
  6. Data Types and Variables
    1. Data = Values + Operations
    2. Different Types of Data
    3. Variables and Expressions
    4. Input/Output
    5. An Example Using Computational Thinking
  7. Control Structures
    1. Algorithms and Control Structures
    2. Sequence
    3. Selection
    4. Repetition
    5. An Example Using Computational Thinking
  8. Data Structures
    1. Abstract Data Types
    2. A Non-Technical Abstract Type
    3. Advantages of ADTs
    4. Data Structures
    5. Strings
    6. Lists and Tuples
    7. An Example Using Computational Thinking
  9. Procedural Programming
    1. Functions Redux
    2. Functions in Python
    3. Sub-routines with parameters and values
    4. Namespaces and Variable Scope
    5. Exception Handling
    6. File I/O
    7. An Example Using Computational Thinking
  10. Part III: Advanced: Data and Computation (not in Preliminary Edition)

  11. Object-Oriented Programming
    1. OOPs!... A History Again
    2. Objects and Object-Oriented Programming
    3. Introduction to Java
    4. Data Abstraction and Information Hiding
    5. Encapsulation and Composition
    6. Inheritance
    7. Polymorphism
    8. Data Structures in Java
    9. File I/O and Exception Handling in Java
    10. An Example Using Computational Thinking
  12. Computational Complexity
    1. Big O Notation
    2. Searching and Sorting Algorithms
    3. P vs NP
  13. Databases and MDM
    1. Master Data Management
    2. Data Modeling and SQL
    3. Relational Database Components and Normalization
  14. Data Science
    1. Business Informatics and Data Analysis
    2. Data Science
    3. Machine Learning



Ricky J. Sethi

    • Nota Bene: This picture is from my wedding many years (and even more pounds) ago. I don't look like this anymore but I've learned in life that, once you find a good picture, you hang on to it forever!

Ricky J. Sethi is currently an Associate Professor of Computer Science at Fitchburg State University, Director of Research for The Madsci Network, and Team Lead for SNHU Online.


Please feel free to download my Curriculum Vitae (PDF).

Profile Summary

  • Affiliations:
    • Fitchburg State University
    • The Madsci Network
    • Southern New Hampshire University
  • Education:
    • University of California, Berkeley
    • University of Southern California
    • University of California, Riverside
  • Field of Research:
    • Computer Vision/Multimedia
      Group analysis in video using physics-based, machine learning models
    • Social Computing
      Virtual communities & group collaboration for science learning
    • Data Science
      Multimedia analysis and reproducibility via semantic workflows