Prerequisites: Self-Assessment Diagnostic

This book assumes no prior programming experience, but it does assume a baseline of computer literacy and mathematical comfort. The diagnostic quiz below will help you assess your readiness and identify any gaps to fill before you begin.

Instructions: Answer each question honestly. There are no trick questions and no grades. The purpose is to help you determine where you stand and what (if anything) you should brush up on before starting Chapter 1.

After each question, you will find guidance on what to do if your answer is "no" or "I'm not sure."


Section A: Basic Computer Skills

These skills are essential. If you cannot answer "yes" to all of them, spend a few hours getting comfortable before starting the book.

Question 1: Can you install software on your computer?

Can you download a program from a website, run an installer, and follow the prompts to completion? This includes choosing an installation directory, accepting license agreements, and finding the installed program afterward.

If no: You will need this skill in Chapter 2 when you install Free Pascal and (optionally) the Lazarus IDE. Ask a friend or family member to walk you through installing any free program — the process is the same regardless of what you install. On Windows, you typically download a .exe or .msi file and double-click it. On macOS, you download a .dmg file and drag the application to your Applications folder. On Linux, you use your distribution's package manager (apt, dnf, pacman, etc.).

Question 2: Do you understand files and folders (directories)?

Can you create a new folder, move files between folders, rename files, and navigate to a specific location in your file system? Do you understand the concept of a file path — for example, C:\Users\YourName\Documents\pascal\hello.pas on Windows or /home/yourname/pascal/hello.pas on Linux?

If no: This is critical — all of your Pascal source code will be saved as files in directories, and the compiler needs to find those files. Spend 30 minutes practicing: create a folder called pascal-practice, create a subfolder inside it, create a text file, move it between folders, and note the full path to each location. Chapter 2 will guide you through setting up a project directory structure.

Question 3: Can you use a text editor?

Not a word processor (like Microsoft Word) — a text editor that works with plain text files. Examples include Notepad (Windows), TextEdit in plain text mode (macOS), gedit or nano (Linux), or cross-platform editors like VS Code, Sublime Text, or Notepad++. Can you open a file, type text, save it with a specific filename and extension (like .pas), and find it again?

If no: You will write Pascal source code in a text editor (or in the Lazarus IDE, which has a built-in editor). Download and install Notepad++ (Windows) or VS Code (any platform) before starting Chapter 2. Practice creating and saving a plain text file with a .txt extension.

Question 4: Can you type reasonably well?

Programming involves a lot of typing. You do not need to be fast, but you need to be accurate — a single mistyped character can prevent a program from compiling. Can you type without looking at the keyboard most of the time? Can you find and type special characters like { } [ ] ( ) ; : ' . , < > = + - * / without searching for them?

If no: Consider spending a week with a free typing tutor (like TypingClub or Keybr) before starting the book. Focus especially on the symbol keys — programming uses them constantly. You do not need to type fast; you need to type accurately. 30 words per minute with good accuracy is more than sufficient.


Section B: Command Line Basics

These skills are helpful but not strictly required — Chapter 2 teaches the minimum you need. If you can already do these things, you will have a smoother start.

Question 5: Have you ever used a command line / terminal?

On Windows: Command Prompt (cmd) or PowerShell. On macOS: Terminal. On Linux: any terminal emulator. Can you open a terminal, type a command, and read the output?

If no: Do not worry — Chapter 2 includes a "command line survival guide" that teaches you the five commands you need to compile and run Pascal programs. But if you want a head start, try this: open a terminal and type dir (Windows) or ls (macOS/Linux) to list the files in the current directory. Then type cd Documents (or another folder name) to change into that directory. That is 80% of what you need.

Question 6: Do you understand the concept of a "path" on the command line?

If someone says "navigate to C:\pascal\projects\ and run fpc hello.pas," do you know what that means? Do you understand the difference between an absolute path (C:\Users\You\pascal\hello.pas) and a relative path (pascal\hello.pas)?

If no: Chapter 2 covers this explicitly. The short version: an absolute path starts from the root of your file system and specifies the complete location. A relative path specifies a location relative to where you currently are. When you compile Pascal programs, you will use both. This becomes second nature quickly.


Section C: Mathematical Foundations

Pascal is not a math-heavy language, and this is not a math-heavy book. But programming uses mathematical concepts as metaphors, and you need basic algebra to follow the examples.

Question 7: Can you evaluate simple algebraic expressions?

If x = 5 and y = 3, what is x + y * 2? (Answer: 11 — multiplication before addition.) Can you solve 2x + 6 = 20 for x? (Answer: x = 7.)

If no: You need comfort with basic arithmetic operations (+, -, *, /), the order of operations (multiplication and division before addition and subtraction, parentheses first), and the concept of a variable as a named value that can change. Khan Academy's Pre-Algebra course covers everything you need in a few hours. Pay special attention to "order of operations" and "variables and expressions."

Question 8: Do you understand the concept of a variable as a named container?

In algebra, the letter x can stand for a number. In programming, a variable is a named container that holds a value — but unlike algebra, you can change what is in the container. Does the sentence "set age to 25, then later change age to 26" make intuitive sense to you?

If no: This is the single most important concept in programming, and Chapter 3 is devoted entirely to it. If the sentence above makes sense even vaguely, you are ready. If not, try this analogy: a variable is a labeled box. The label is the name (age). You put something in the box (25). Later you can take that out and put something else in (26). The box is still called age — only its contents changed.

Question 9: Are you comfortable with the idea of true/false (Boolean) logic?

Consider these statements: "It is raining AND I have an umbrella." "It is Saturday OR it is Sunday." "It is NOT Tuesday." Do you understand how AND, OR, and NOT combine true/false conditions?

If no: Chapter 5 teaches Boolean logic from scratch with many examples. All you need coming in is the intuitive understanding from everyday language. "I will go to the park if it is sunny AND warm" — you already use Boolean logic; you just have not called it that.


Section D: Prior Programming Experience (Optional)

These questions are for readers who have programmed before in another language. They help you calibrate which learning path (Fast Track, Standard, or Deep Dive) is right for you. If you have never programmed before, skip this section entirely and follow the Standard path.

Question 10: Have you written programs in any programming language?

This includes Python, JavaScript, Java, C, C++, C#, Ruby, PHP, Scratch, or anything else. "Written programs" means more than "copy-pasted a code snippet once" — you have written original code to solve a problem.

If yes: You are a candidate for the Fast Track learning path. Continue with the remaining questions to assess your level.

If no: Follow the Standard path starting from Chapter 1. The book assumes no prior experience and will teach you everything from scratch.

Question 11: Can you explain the difference between a variable, a function, and a loop in your current language?

Can you write (or describe) a function that takes a number and returns its square? Can you write a loop that prints the numbers 1 through 10? Can you explain what a variable declaration does?

If yes to all three: You have solid fundamentals. Skim Part I (Chapters 1–8) to learn the Pascal syntax for concepts you already know, paying special attention to Pascal's strong typing (Chapter 3) and the begin..end block structure. Then proceed at full speed from Part II onward.

If yes to some: Follow the Standard path but feel free to move quickly through the early chapters. Slow down whenever Pascal does something differently from what you expect.

Question 12: Have you worked with statically typed, compiled languages (C, C++, Java, C#, Go, Rust)?

Do you understand the difference between compile-time and run-time errors? Do you know what it means to declare a variable's type? Have you used a compiler (as opposed to an interpreter)?

If yes: Many Pascal concepts will feel familiar. Focus on the syntax differences and on the features unique to Pascal: sets, enumerated types, variant records, the unit system, and the begin..end block structure. The :door: "Coming From C/C++" sidebars will be especially useful. You can likely follow the Fast Track path.

If no (you know Python, JavaScript, Ruby, or similar): Pascal's static typing and compilation will be the biggest adjustment. Chapter 3 (Variables, Types, and Expressions) is the most important chapter for you — read it thoroughly even if you plan to skim other early chapters. The compiler will feel strict at first. This is a feature, not a bug.

Question 13: Have you used an IDE (Integrated Development Environment) before?

Examples: Visual Studio, IntelliJ IDEA, PyCharm, Eclipse, VS Code, Xcode. Do you understand concepts like projects, build configurations, breakpoints, and the debugger?

If yes: You will feel at home in the Lazarus IDE (Part V). Skim Chapter 27's IDE orientation and focus on the Lazarus-specific features: the Form Designer, the Object Inspector, the Component Palette, and the .lfm file format.

If no: No problem. Parts I–IV use only a text editor and the command-line compiler. Chapter 27 introduces Lazarus gently, assuming you have never used an IDE before.

Question 14: Have you ever used Object Pascal, Delphi, or Turbo Pascal?

Even briefly, even years ago. Do you remember begin..end, WriteLn, procedure, record, or uses?

If yes: Welcome back. The core language has not changed as much as you might think. Read Chapter 1 (especially the "Pascal Since You Last Saw It" sections), install Free Pascal (Chapter 2), and then skip ahead to wherever you left off. Part III (Object Pascal) is likely where the new material starts for you — generics, interfaces, and anonymous functions were not in Turbo Pascal. Part V (Lazarus) shows you the modern, free equivalent of Delphi's RAD environment.

If no: Start from Chapter 1 and enjoy discovering a language that has been quietly powering software for over fifty years.


Your Readiness Score

Count your "yes" answers to Sections A–C (Questions 1–9):

Score Readiness Recommendation
9/9 Fully ready Start Chapter 1 immediately
7–8 Nearly ready Fill the one or two gaps noted above, then start Chapter 1
5–6 Some prep needed Spend a few days on the items flagged above before starting
Below 5 Significant prep needed Work through the linked resources for each "no" answer; consider starting with a basic computer skills course first

For Section D (Questions 10–14), use your answers to choose your learning path:

Profile Recommended Path
No prior programming (Q10 = no) Standard :book:
Some programming, dynamic language (Q10–11 = yes, Q12 = no) Standard :book: with faster pacing in Part I
Solid programming, compiled language (Q10–12 = yes) Fast Track :running:
Former Pascal/Delphi user (Q14 = yes) Fast Track :running: starting from Part III

One Last Thing

If you scored lower than you hoped on this diagnostic, do not be discouraged. Every programmer started somewhere, and most started with less preparation than you have right now. The book is designed to teach you everything you need — the questions above just help you identify areas where a little advance preparation will make the journey smoother.

Pascal was designed to teach programming to beginners. It is very good at its job. Trust the process, type every example, and do not skip the exercises.

See you in Chapter 1.