Unit Big Picture
This unit is the foundation of programming. It explores how we translate human logic into precise, step-by-step instructions that a computer can execute. We will start with the basic building blocks—variables, data, and expressions—and assemble them into powerful algorithms using control structures like conditionals and loops. By the end, you will be able to design, implement, and analyze your own algorithms to solve problems, model real-world scenarios, and understand the fundamental limits of computation.
Core Threads
Thread 1: Abstraction
What it is: Abstraction is the process of hiding complex implementation details to focus on functionality. We use it to manage complexity at every level of programming.
Why it matters: Variables abstract memory locations, data structures like lists abstract the arrangement of data, and procedures abstract entire blocks of code into a single, reusable command. This allows us to build larger, more sophisticated programs without getting lost in the details.
Thread 2: Algorithmic Thinking
What it is: This is the skill of developing a methodical, step-by-step solution to a problem. It involves sequencing instructions, making decisions (selection), and repeating actions (iteration).
Why it matters: Algorithmic thinking is the core of computer science. It enables you to move from a problem description to a working computational solution and provides the tools to evaluate whether that solution is correct and efficient.
Key Concepts & Constructs
| Concept / Construct | What It Is (1-Sentence) | Why It Matters (1-Sentence) |
|---|---|---|
Variable | A named reference to a value stored in the computer's memory. | It is the fundamental way programs store and manipulate information. |
Algorithm | A finite, sequential set of unambiguous instructions to solve a problem. | It is the formal blueprint for any computational process. |
Control Structure | A block of code that analyzes variables and chooses a direction to go. | It allows programs to make decisions and repeat actions (e.g., conditionals, loops). |
Procedure | A named group of instructions that can be run (called) from elsewhere. | It enables code reuse and problem decomposition, which are key to abstraction. |
List | An ordered collection of elements, where each element is accessible by an index. | It is a primary data structure for storing and processing groups of related data. |
Algorithmic Efficiency | A measure of the amount of computing resources (time/memory) an algorithm uses. | It helps us compare algorithms and choose the most effective solution for a problem. |
Unit Concept & Logic Bank
Variable: A named storage location for a value. A variable is assigned a value using an operator like<-.age <- 17 name <- "Alex"Expression: A combination of values, variables, and operators that computes to a single new value.Boolean Value: A data type that can only beTRUEorFALSE, often used to control program flow.Conditional Statement: A control structure that executes a block of code only if a specified condition is true (e.g.,IF,ELSE).Iteration: A control structure that repeats a block of code until a condition is met (e.g., aREPEAT UNTILloop).Procedure: A reusable, named block of code that performs a specific task. It can take inputs (parameters) and return an output.List: A data structure that holds an ordered sequence of items. For example,myList <- [10, 20, 30].Library: A collection of pre-written and pre-compiled procedures that can be imported into a program to extend its functionality.Simulation: A computer model that imitates a real-world process or system to test hypotheses or explore outcomes.Undecidable Problem: A problem for which no algorithm can ever be created that will always provide a correct yes-or-no answer.
Topic Navigator
| Topic Title | What This Adds (<=10 words) |
|---|---|
| 3.1: Variables and Assignments | Storing information in named memory locations. |
| 3.2: Data Abstraction | Simplifying complex data into manageable parts. |
| 3.3: Mathematical Expressions | Using operators to compute new values. |
| 3.4: Strings | Manipulating and working with text data. |
| 3.5: Boolean Expressions | Evaluating expressions that result in TRUE or FALSE. |
| 3.6: Conditionals | Making decisions in code based on conditions. |
| 3.7: Nested Conditionals | Handling complex, multi-part decisions. |
| 3.8: Iteration | Repeating actions until a condition is met. |
| 3.9: Developing Algorithms | Creating formal, step-by-step solutions to problems. |
| 3.10: Lists | Storing and managing ordered collections of data. |
| 3.11: Binary Search | An efficient algorithm for searching a sorted list. |
| 3.12: Calling Procedures | Using pre-written code to perform a task. |
| 3.13: Developing Procedures | Creating your own reusable blocks of code. |
| 3.14: Libraries | Using collections of pre-written procedures from others. |
| 3.15: Random Values | Generating unpredictable numbers for programs and simulations. |
| 3.16: Simulations | Modeling real-world phenomena with code. |
| 3.17: Algorithmic Efficiency | Analyzing an algorithm's use of time and memory. |
| 3.18: Undecidable Problems | Understanding problems that computers cannot possibly solve. |
Exam Skills Focus
Algorithm Design: Developing step-by-step instructions in pseudocode to solve a given problem.
Logical Reasoning and Problem Decomposition: Breaking down complex problems and using control structures to implement solutions.
Code Analysis: Tracing the execution of an algorithm to determine its output and analyze its efficiency.
Common Misconceptions & Clarifications
Assignment vs. Equality: The assignment operator (
<-) stores a value in a variable's memory location. The equality operator (=) is a comparison used in Boolean expressions to check if two values are the same.Algorithms are Just Steps: An algorithm doesn't have to be a complex mathematical formula. It is simply any finite, unambiguous sequence of instructions that solves a problem, like a recipe for baking a cake.
Limits of Computation: A faster computer cannot solve all problems. Undecidable problems are theoretically impossible to solve with any algorithm, regardless of processing speed or time.
Summary
This unit builds your programming toolkit from the ground up. You began by learning to store and manipulate data using variables and expressions. You then learned to control the flow of a program with conditionals and loops, enabling you to translate complex logic into code. By organizing code into procedures and data into lists, you practiced abstraction to manage complexity. Finally, you moved beyond just writing code to analyzing it for efficiency and understanding the profound concept that some problems are computationally unsolvable.