Structure educational content using try-first-tell-later pedagogy where students predict, attempt, or reflect before receiving explanations. Creates active learning through cognitive engagement and variation theory's contrast patterns. Use when writing educational materials, designing exercises, creating lecture notes, structuring tutorials, writing teaching examples with LaTeX/Beamer, developing problem sets, or when user mentions try-first, predict-first, productive failure, Socratic method, question-before-answer, exercise-driven learning, or inquiry-based teaching.
This skill applies the pedagogical principle of engaging learners' thinking before presenting information, creating active learning through anticipation, prediction, and problem-solving attempts.
Ask students to think, predict, or attempt solutions BEFORE providing the answer or explanation.
This creates powerful learning through:
Marton identifies a fundamental tension in teaching:
"[T]he more the teacher does to enable the students to answer the questions asked, to solve the problems given, the fewer opportunities may be left for the students to learn to understand that which they are expected to learn to understand. The reason is that the more clearly the teacher tells the students what is to be done, the less chance the students get to make the necessary distinctions (for instance, between what is critical and what is not)." (NCOL, p. 13)
Implication: Try-first prompts should NOT reveal which aspects are critical. Students must discern this themselves.
Try-first prompts serve a dual purpose:
Key insight (Marton, NCOL p. 89):
"If we want to find out to what extent they have learned to do so, we should not point out those aspects for them but let the students discern them by themselves."
Use try-first prompts to diagnose:
BAD example (Swedish national physics exam):
"A ball falls and is affected by air braking force F = kv where k = 0.32 N·s/m. The ball's mass is 0.20 kg. What is the final velocity?"
Problem: All critical aspects are given. Students just calculate—no discernment needed.
GOOD example (Johansson, Marton, Svensson 1985):
"A car is driven at a high constant speed on a motorway. What forces act on the car?"
Why better: Students must discern:
Try-first prompts and variation theory work together:
See the variation-theory skill for designing appropriate patterns once diagnostic results are known.
Traditional "Tell-First" approach:
Python uses the def keyword to define functions. Here's the syntax:
def function_name(parameters):
# function body
return result
Try-First-Tell-Later approach:
\begin{exercise}
How would you create a reusable piece of code in Python that
takes inputs and returns a result? What keyword might make sense?
Think about it before continuing.
\end{exercise}
Python uses the def keyword to define functions...
[Then show syntax and compare with their thinking]
The second approach activates prior knowledge, creates cognitive engagement, and sets up contrast between their prediction and the actual syntax.
Use different prompt types to engage students before providing explanations:
For detailed implementation guidance, examples, and LaTeX/Beamer templates, see references/patterns.md.
Context → Prompt to Try/Predict → [Student thinking] →
Explanation → Explicit contrast → Highlight critical aspects
A powerful specific structure for organizing instructional sequences:
Structure:
Example from file handling:
% Step 1: Show problem example
\begin{frame}[fragile]
\begin{example}[Manual file handling]
\begin{minted}{python}
file = open("data.txt", "r")
content = file.read()
file.close()
\end{minted}
\end{example}
\end{frame}
% Step 2: Try-first question
\begin{frame}[fragile]
\begin{exercise}
What happens if an exception occurs between \mintinline{python}{open()}
and \mintinline{python}{close()}? How can we guarantee the file is closed?
\end{exercise}
\end{frame}
% Step 3: Show solution
\begin{frame}[fragile]
\begin{example}[with statement]
\begin{minted}{python}
with open("data.txt", "r") as file:
content = file.read()
# file automatically closed here
\end{minted}
\end{example}
\end{frame}
% Step 4: Discuss contrast
\begin{frame}
\begin{remark}
The \mintinline{python}{with} statement guarantees resource cleanup
even if exceptions occur. This implements the context manager protocol,
ensuring \mintinline{python}{close()} is always called.
\end{remark}
\end{frame}
Why this works:
with statement discernibleVariation pattern: The approach varies (manual vs with statement), the problem remains invariant, making resource management guarantees discernible.
Ideal situations:
Less suitable situations:
Before teaching a topic:
Analyzing student responses:
After teaching (post-test):
See references/patterns.md for detailed implementation guidance on diagnostic use.
Core principle: Questions should guide students to discover what you would otherwise tell them.
Question types by purpose:
Prediction questions: "What could go wrong if...?"
Comparison questions: "When would approach A be better than B?"
read() be better than line-by-line iteration? Consider memory."Design questions: "How should X be implemented? Function or method? Why?"
open() be implemented? What should it return?"Exploration questions: "What problems might arise with this approach?"
Quality criteria for discovery questions:
Avoid:
Multiple questions can build on each other to scaffold discovery:
Pattern: Recognition → Exploration → Implementation → Understanding
Example sequence for file operations:
% Layer 1: Identify the problem
\begin{exercise}
What extra steps are needed for files compared to \mintinline{python}{print()}
and \mintinline{python}{input()}? The terminal is always available, but files...?
\end{exercise}
% Layer 2: Explore solutions
\begin{exercise}
We need to "open" files. How can we guarantee they're closed properly,
even if errors occur during processing?
\end{exercise}
% Layer 3: Show implementation
\begin{example}[with statement]
with open("file.txt", "r") as f:
content = f.read()
\end{example}
% Layer 4: Discuss why it works
\begin{remark}
The \mintinline{python}{with} statement implements the context manager
protocol, automatically calling \mintinline{python}{close()} even if
exceptions occur.
\end{remark}
Benefits of layering:
exercise environment: Short conceptual questions requiring thought but not code execution
Characteristics:
Examples:
\begin{exercise}
Why might files require explicit open/close but terminal I/O doesn't?
\end{exercise}
\begin{exercise}
What advantages does validating file existence BEFORE opening provide
compared to catching exceptions AFTER?
\end{exercise}
activity environment: Hands-on tasks requiring actual coding or exploration
Characteristics:
Examples:
\begin{activity}[SCB Namnsök]
Visit SCB Namnsök, download the statistics file, and write a program
that implements the same functionality as the website.
What challenges did you encounter with the file format?
\end{activity}
\begin{activity}[Explore CSV module]
Try using Python's \mintinline{python}{csv} module to read and write
a file with your own data. Compare with manual string splitting.
\end{activity}
Guideline: Use exercise for quick discovery moments embedded in instruction, activity for deeper exploration requiring implementation.
Always:
Never:
This approach creates specific variation patterns:
Student Attempt → Expert Explanation
Prediction → Reality
Multiple Student Approaches → Canonical Solution
For detailed examples from actual teaching practice, including Python classes, operator overloading, and fraction arithmetic with LaTeX/Beamer code, see references/examples.md.
This skill includes detailed references in references/:
| File | Content | Search patterns |
|---|---|---|
patterns.md | Implementation guidance for all seven prompt types, LaTeX/Beamer templates | exercise, activity, \begin{exercise} |
examples.md | Real examples from Python programming courses | Python, class, fraction |
theoretical-background.md | Productive failure, retrieval practice, variation theory | Kapur, Socratic, research |