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:
 Ch. 0: On The Road to Computation
 Ch. 1: Computational Thinking and Information Theory
 Ch. 2: Computational Problem Solving
This excellent video series is created by Brit Cruise and Art of the Problem.
AutoGraded Problem Sets to Complement Part II
Autograded 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:
 Ch. 3: Computational Thinking and Structured Programming
 Lesson 1: Input, print and numbers
 Ch. 4: Data Types and Variables
 Lesson 2: Integer and float numbers
 Ch. 5: Control Structures
 Lesson 3: Conditions: if, then, else
 Lesson 4: For loop with range
 Lesson 6: While loop
 Ch. 6: Data Structures
 Lesson 5: Strings
 Lesson 7: Lists
 Lesson 9: Twodimensional lists (arrays)
 Lesson 10: Sets
 Lesson 11: Dictionaries
 Ch. 7: Procedural Programming
 Lesson 8: Functions and recursion
Book's Table of Contents
Part I: Theory: What is Computer Science?

On The Road to Computation
 What is Knowledge?
 Declarative vs Imperative Knowledge
 The Key to Science
 Computer Science: The Study of Computation
 A Review of Functions
 Computable Functions
 Talking in Tongues: Programming Languages

Computational Thinking and Information Theory
 What is Thinking?
 Deductive vs Inductive Thinking
 Thinking About Probabilities
 Logical Thinking
 Thinking about Computational Solutions
 Two Fundamental Models of Programming
 Pseudocode
 Functional and Imperative Models of Computation
 Information Theory
 Shannon's Information Entropy

Computational Problem Solving
 What is a Model?
 Data Representations
 Number Representations
 Digital Representations
 Boolean Algebra
 What is Information Processing?
 What is Computer Information Systems (CIS)?
 Programming Languages
 Computational Thinking
 Problem Space and System State
 Computational Thinking in Action

Computational Thinking and Structured Programming
 Review of Computation
 Computational Thinking Basics
 Minimal Instruction Set
 Getting Started with Python
 Syntax, Semantic, or Logic Errors
 State of a Computational System
 Natural vs Formal Languages
 Translating your programs
 Playing with Python
 An example using Computational Thinking

Data Types and Variables
 Data = Values + Operations
 Different Types of Data
 Variables and Expressions
 Input/Output
 An Example Using Computational Thinking

Control Structures
 Algorithms and Control Structures
 Sequence
 Selection
 Repetition
 An Example Using Computational Thinking

Data Structures
 Abstract Data Types
 A NonTechnical Abstract Type
 Advantages of ADTs
 Data Structures
 Strings
 Lists and Tuples
 An Example Using Computational Thinking

Procedural Programming
 Functions Redux
 Functions in Python
 Subroutines with parameters and values
 Namespaces and Variable Scope
 Exception Handling
 File I/O
 An Example Using Computational Thinking

ObjectOriented Programming
 OOPs!... A History Again
 Objects and ObjectOriented Programming
 Introduction to Java
 Data Abstraction and Information Hiding
 Encapsulation and Composition
 Inheritance
 Polymorphism
 Data Structures in Java
 File I/O and Exception Handling in Java
 An Example Using Computational Thinking

Computational Complexity
 Big O Notation
 Searching and Sorting Algorithms
 P vs NP

Databases and MDM
 Master Data Management
 Data Modeling and SQL
 Relational Database Components and Normalization

Data Science
 Business Informatics and Data Analysis
 Data Science
 Machine Learning
Part II: Basics: Imperative Programming
Part III: Advanced: Data and Computation (not in Preliminary Edition)
Bibliography
Index
Profile

 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.
CV
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 physicsbased, machine learning models  Social Computing
Virtual communities & group collaboration for science learning  Data Science
Multimedia analysis and reproducibility via semantic workflows
 Computer Vision/Multimedia