Skip to content
Computer Science · 11th Grade · Algorithmic Thinking and Complexity · Weeks 1-9

Introduction to Algorithmic Problem Solving

Students will analyze simple problems and propose multiple algorithmic solutions, discussing initial efficiency.

Common Core State StandardsCSTA: 3B-AP-08

About This Topic

Algorithmic problem solving is the cornerstone of 11th-grade computer science, establishing the habits of mind students need for everything from AP Computer Science A to software engineering careers. CSTA standard 3B-AP-08 asks students to systematically design and evaluate multiple algorithmic approaches before writing a single line of code, which mirrors professional practice. At this level, students move beyond single correct answers and start recognizing that multiple valid solutions can exist, each with different trade-offs.

In the US K-12 context, this topic bridges middle school computational thinking and the more rigorous algorithmic analysis that follows later in the unit. Students often arrive with problem-solving habits rooted in trial-and-error; this topic formalizes those instincts into structured analysis. Connecting this work to real-world decisions like how a GPS app chooses between multiple routes helps students see immediate relevance.

Active learning is especially valuable here because students need to argue for and evaluate solutions, not just produce them. Structured discussion formats like Structured Academic Controversy or problem design reviews give students practice defending design choices with evidence, building the metacognitive skills that algorithm courses demand.

Key Questions

  1. Compare different approaches to solving a basic computational problem.
  2. Evaluate the initial efficiency of various algorithms for a given task.
  3. Explain why some solutions are inherently better than others for specific problems.

Learning Objectives

  • Compare at least two distinct algorithmic approaches for solving a given problem, such as finding the largest number in a list.
  • Evaluate the initial time efficiency of two proposed algorithms by tracing their execution steps with sample inputs.
  • Explain why one algorithm might be more suitable than another for a specific problem based on its characteristics, like input size or data structure.
  • Design a flowchart or pseudocode for a simple algorithm to solve a problem, considering alternative methods.
  • Identify potential edge cases or constraints that could affect the performance of an algorithm.

Before You Start

Introduction to Computational Thinking

Why: Students need foundational concepts like decomposition, pattern recognition, and abstraction to break down problems before designing algorithms.

Basic Programming Constructs (Variables, Loops, Conditionals)

Why: Familiarity with these programming building blocks is helpful for expressing algorithmic steps, even in pseudocode or flowcharts.

Key Vocabulary

AlgorithmA step-by-step procedure or set of rules for solving a problem or accomplishing a task. It must be unambiguous and finite.
EfficiencyA measure of how well an algorithm uses resources, typically time (how long it takes to run) and space (how much memory it uses). Initial efficiency refers to a qualitative assessment before formal analysis.
PseudocodeAn informal, high-level description of the operating principle of a computer program or other algorithm. It uses the conventions of ordinary language rather than a specific programming language.
FlowchartA diagram that represents a workflow or process. It uses different shapes to represent steps, decisions, and start/end points.
Trade-offA situation where improving one aspect of an algorithm, such as speed, may negatively impact another aspect, such as memory usage.

Watch Out for These Misconceptions

Common MisconceptionThere is one correct algorithm for every problem.

What to Teach Instead

Most problems have multiple valid algorithmic solutions with different trade-offs in speed, memory, and readability. Gallery walk and debate activities make this concrete by putting multiple valid solutions side by side.

Common MisconceptionA working solution is always a good solution.

What to Teach Instead

Correctness and efficiency are separate qualities. An algorithm can produce correct output while being completely impractical for real-world data sizes. Active critique activities help students develop the habit of asking not just whether something works but whether it scales.

Common MisconceptionMore complex algorithms are always better.

What to Teach Instead

Simplicity is a genuine engineering virtue. A simple O(n) solution is often preferable to an O(log n) solution when the dataset is small and the simpler code is easier to maintain. Case-based discussions help students reason about this context-dependence.

Active Learning Ideas

See all activities

Real-World Connections

  • Ride-sharing apps like Uber and Lyft use algorithms to match drivers with passengers and determine the most efficient routes, considering factors like traffic and distance.
  • Search engines, such as Google, employ complex algorithms to rank web pages and deliver the most relevant results to user queries in fractions of a second.
  • Logistics companies, like FedEx or UPS, use algorithms to plan delivery routes for their fleets, optimizing for time, fuel consumption, and delivery windows.

Assessment Ideas

Quick Check

Present students with a simple problem, like sorting a small list of numbers (e.g., [5, 2, 8]). Ask them to write down two different step-by-step methods (algorithms) to solve it. Then, have them briefly describe which method they think would be faster and why.

Discussion Prompt

Pose the question: 'Imagine you need to find the shortest path between two cities on a map. What are two different ways you could approach this problem? What information would you need for each approach, and what might make one approach better than the other?' Facilitate a class discussion comparing their proposed methods.

Exit Ticket

Give students a scenario: 'You have a list of 100 student names and need to find a specific student's name.' Ask them to write down one algorithm for this task and one potential issue or limitation of their chosen algorithm.

Frequently Asked Questions

What is algorithmic problem solving in computer science?
Algorithmic problem solving is the process of analyzing a problem, identifying multiple solution strategies, and selecting the most appropriate approach based on factors like efficiency, correctness, and readability. It requires breaking problems into clear steps and evaluating those steps before writing code, rather than jumping straight to implementation.
How does algorithmic thinking apply to real-world programming?
Professional developers rarely write novel algorithms from scratch; they choose among known approaches based on the problem context. Understanding algorithmic thinking helps developers recognize when a problem matches a known pattern, estimate computational costs, and explain design decisions to teammates or in code reviews.
What is the difference between an algorithm and a program?
An algorithm is a step-by-step procedure for solving a problem, independent of any specific programming language. A program is one implementation of an algorithm in a particular language. The same algorithm can be coded in Python, Java, or pseudocode; the underlying logic remains the same.
How does active learning help students understand algorithmic problem solving?
Algorithmic problem solving is a reasoning skill, not a content fact, so passive instruction has limited effect. Activities like structured debates, design reviews, and collaborative comparison tasks require students to generate, defend, and critique solutions, which builds the evaluative judgment that algorithm courses require.