Prerequisites and Self-Assessment
This book assumes no prior programming experience. None. If you have never written a line of code in your life, you are exactly the person this book was written for.
That said, you do bring skills and habits to this course that will affect how smoothly things go. This self-assessment helps you identify where you are strong and where you might need a little extra preparation. Answer honestly — this is for you, not for a grade.
Part 1: Basic Math Comfort
You do not need to be a math wizard. CS1 uses arithmetic, basic algebra, and logical reasoning. Calculus never appears. Here is your check:
Can you do the following?
- Calculate the average of five numbers: 85, 92, 78, 95, 88.
- Solve for x:
3x + 7 = 22 - Evaluate this expression:
(10 + 5) * 2 - 8 / 4 - It is raining. You do not have an umbrella. Is the condition "it is raining AND I have an umbrella" true or false?
- Convert a percentage to a decimal: What is 85% as a decimal?
Scoring:
- 5/5: You are completely ready. Math will not be a barrier.
- 3-4/5: You are fine. Brush up on order of operations (PEMDAS) and basic algebra if you want extra confidence. Chapter 3 shows how Python applies the order of operations, and Appendix C covers the few extra math ideas the book introduces along the way (binary numbers, Boolean logic, Big-O, and remainders).
- 0-2/5: Consider reviewing basic arithmetic and algebra before or alongside Chapter 3. Khan Academy's Pre-algebra course is free and excellent. This is not a dealbreaker — but shaky arithmetic will slow you down when you are trying to learn programming concepts at the same time.
Answers
1. (85 + 92 + 78 + 95 + 88) / 5 = 438 / 5 = **87.6** 2. 3x = 15, so **x = 5** 3. Parentheses first, then multiplication and division left to right, then subtraction: 15 * 2 - 8 / 4 = 30 - 2 = **28**. (Preview: type this into Python and you will see `28.0`, because Python's `/` always produces a decimal number. Chapter 3 explains why.) 4. **False.** An AND is true only when both parts are true. It is raining, but you do not have an umbrella, so the whole condition is false. You will write exactly this kind of check in Python in Chapter 4. 5. **0.85**Part 2: Computer Comfort
You do not need to be a "computer person," but you do need basic familiarity with using a computer. Programming is a hands-on activity that requires interacting with files, installing software, and typing commands.
Rate yourself on each skill (1 = never done it, 2 = could figure it out, 3 = comfortable):
| Skill | 1 | 2 | 3 |
|---|---|---|---|
| Creating, renaming, and organizing files into folders | |||
| Downloading and installing software from the internet | |||
| Typing at a reasonable speed (you do not need to be fast, but hunt-and-peck will be painful) | |||
| Using a web browser to search for information | |||
| Unzipping a compressed file (.zip) | |||
| Finding where a downloaded file was saved on your computer | |||
| Knowing the difference between saving a file and saving a file as a specific type |
Scoring:
- 18-21 (mostly 3s): You are ready to go. Chapter 2 will walk you through installation and setup.
- 12-17 (mostly 2s): You will be fine. Chapter 2 and Appendix B provide step-by-step setup instructions for Windows, macOS, and Linux. Just budget a little extra time for the setup chapter.
- 7-11 (mostly 1s): Consider spending an hour or two getting comfortable with file management on your computer before starting Chapter 2. Practice creating folders, moving files between them, and installing a free application. These skills are assumed throughout the book and are hard to teach alongside programming concepts.
Part 3: Mindset Check
This is the most important section. Technical prerequisites can be caught up on. Mindset determines whether you stick with it when things get hard — and they will get hard.
Read each statement and honestly assess whether it sounds like you:
-
"I am willing to be confused for a while." Learning to program involves sustained confusion. Concepts will not click immediately. Code will break for reasons you do not understand. This is normal and temporary, but it is uncomfortable. Students who expect instant understanding tend to conclude they are "not smart enough" and drop the course. The truth is simpler: they were not patient enough.
-
"I am willing to make mistakes — lots of them." Your code will have bugs. Every single program you write for the first several weeks will have bugs. Professional developers with 20 years of experience still write bugs every day. The difference is they have learned to expect them, find them, and fix them. If making mistakes feels like failure to you, programming will be a rough ride until you reframe it.
-
"I am willing to ask for help." There is a persistent myth in computer science that real programmers figure everything out alone. This is false. Professional developers search the web, read documentation, ask colleagues, and occasionally stare at code for an hour before realizing they misspelled a variable name. Asking for help is not weakness — it is a professional skill.
-
"I can commit regular time to practice." Programming is a skill, like playing an instrument or learning a language. You cannot cram it. Thirty minutes of coding every day beats a six-hour marathon on Sunday. If your schedule does not allow regular practice time, this course will be significantly harder.
-
"I am here because I want to be, or at least I am open to being surprised." The best outcome is genuine curiosity. The second-best outcome is showing up with an open mind. If you are only here because someone told you to be and you are determined to hate it — well, you might still be surprised. Many students who start skeptical end up fascinated. Give it a chance through at least Chapter 6, when functions click and you suddenly feel like a programmer for the first time.
Scoring:
There is no numeric score for this section. But if you read those five statements and thought, "Yeah, I can do that" — you are ready. That willingness matters more than any technical prerequisite.
What You Do NOT Need
Let's be explicit about what is not required:
- Prior programming experience. Not in Python, not in Scratch, not in anything. Chapter 1 starts from absolute zero.
- A powerful computer. Any computer made in the last eight years that runs Windows, macOS, or Linux will work fine. Python is lightweight. A Chromebook can work too: turn on its built-in Linux development environment (Settings > About ChromeOS > Developers), then follow the Linux (Ubuntu/Debian) instructions in Appendix B. School-managed Chromebooks sometimes have this switched off, so check with your administrator.
- Advanced math. No calculus, no statistics, no linear algebra. Basic arithmetic and simple algebra are all you need.
- A "computer science brain." The idea that people are born either able or unable to program (sometimes called the "geek gene") is folklore, not evidence. When researchers at the University of Toronto analyzed 778 sets of final CS course grades from a large university, only about 6% showed a split into a "gets it" group and a "doesn't" group; in a companion experiment, CS professors who believed in innate talent were more likely to "see" that split in ambiguous data (Patitsas et al., 2016). What predicts success is practice, persistence, and willingness to sit with discomfort.
Ready?
If you made it through this self-assessment and you are not running for the door, you are ready for Chapter 1. Everything else, this book will teach you.
Let's go.