How to Teach Present Perfect with Gamified Exercises

The Present Perfect is one of the trickiest tenses to teach — particularly for learners whose native language has no direct equivalent (Spanish, French, Italian). The gap between I went and I have gone feels abstract. Gamified exercises close that gap by creating stakes and immediate feedback.

Why it is hard

Learners confuse Present Perfect with Simple Past because both describe past events. The key distinction — Present Perfect links the past to a present result or experience — is conceptual, not just grammatical. Drilling conjugation alone will not fix this; learners need to feel the difference in context.

Exercise types that work

Multiple choice — context discrimination

Present a mini scenario ("She is not hungry. She ___.") and offer four options mixing Simple Past and Present Perfect. Students earn XP only when they choose the correct tense and explain why. This builds meta-awareness, not just pattern matching.

Fill-in-the-blank — production under pressure

Give a sentence with a clear time marker (just, already, yet, ever, since, for) removed. Students must supply the correct form. Start with sentences where the adverb is a strong cue, then gradually remove scaffolding as they progress up the module path.

True / False — error spotting

Show a sentence that may contain a tense error ("Yesterday I have seen that film.") and ask whether it is correct. This is fast to create and powerful for building instinct. Award streak bonuses for five correct in a row to keep pace high.

How to structure the path in Teacher & Me

  1. Recognition module

    Multiple-choice only. Keep it easy — the goal is spotting the tense in context, not producing it. 8–10 exercises.

  2. Time markers module

    Fill-in-the-blank with just / already / yet / since / for visible in the sentence. 10 exercises with immediate XP feedback.

  3. Error detection module

    True / False with a mix of correct and incorrect sentences. Increase the proportion of subtle errors (wrong auxiliary, missing past participle) as the module progresses.

  4. Mixed challenge module

    All three types, randomised. Students must maintain a 5-exercise streak to unlock the final badge. This is where long-term retention forms.

Tips from the field

  • Use real-life contexts your student cares about (travel, food, films) — abstract grammar sentences disengage.
  • Assign the path as homework the day after introducing Present Perfect in a live session, so the concepts are still warm.
  • Review the per-exercise analytics before the next session. Exercises with below-50% accuracy reveal exactly which distinctions need more live practice.
  • For B1+ learners, add a for vs. since mini-module once the core tense is stable.

Creating a full learning path from a single YAML file

Instead of building a path lesson-by-lesson through the UI, you can author an entire path — with all its lessons and exercises — in one YAML file and import it via POST /paths/import. This is useful for tutors who prefer writing content in a text editor, for bulk authoring, or for version-controlling course content in Git.

Top-level structure

Field Type Required Description
title string required Name of the path shown to students.
description string required Short summary displayed on the path card.
tags string[] optional Free-form tags used for filtering (e.g. "B1", "Grammar").
lessons Lesson[] required Ordered list of lessons. At least one lesson required.

Lesson fields

FieldTypeRequiredDescription
titlestringrequiredDisplayed as the lesson heading.
descriptionstringoptionalShort intro shown before the first exercise.
typelesson | exam | bookingoptionalDefaults to lesson.
exercisesExercise[]requiredAt least one exercise required.

Exercise fields

FieldTypeRequiredDescription
titlestringrequiredShort label (not shown to the student).
typesee belowrequiredOne of the 7 exercise types.
questionstringrequiredThe prompt shown to the student.
optionsstring[]optional**Required for multiple-choice, match-pairs, reconstruct-sentence.
correctAnswerstringrequiredSee format rules per type below.
explanationstringoptionalShown to the student after answering.
xpinteger ≥ 0optionalDefaults to 10.
youtubeUrlstring (URI)optionalEmbedded video hint.

Exercise types & correctAnswer format

multiple-choice

options required. correctAnswer must exactly match one of the option strings.

type-sentence

question is the prompt shown to the student. correctAnswer is the full sentence they must type.

true-false

correctAnswer must be exactly true or false (lowercase string).

match-pairs

options contains the items on both sides, interleaved: [left1, right1, left2, right2, …]. correctAnswer is ignored (pairs are derived from the options order).

reconstruct-sentence

options contains the shuffled word tokens. correctAnswer is the correctly ordered sentence.

complete-sentence

correctAnswer is pipe-separated accepted tokens, e.g. variable|unknown.

pronounce-sentence

correctAnswer is the target sentence (used for display/reference, not automated grading).

Full annotated example

Copy this template, fill in your content, and POST it to /paths/import with the header Content-Type: application/yaml. Every one of the 7 exercise types is demonstrated below.

path-import.yaml

# ── Top level ──────────────────────────────────────────────────────────
title: Present Perfect — All Exercise Types
description: A complete demo path covering every exercise type.
tags:
  - English
  - B1
  - Grammar

lessons:

  # ══════════════════════════════════════════════════════════════════════
  # 1. multiple-choice
  #    options: list of choices (required)
  #    correctAnswer: must exactly match one option string
  # ══════════════════════════════════════════════════════════════════════
  - title: Recognition
    type: lesson
    exercises:
      - title: Spot the correct sentence
        type: multiple-choice
        question: Which sentence uses Present Perfect correctly?
        options:
          - I have seen that film yesterday.
          - She has lived here for ten years.
          - We have went to Paris last summer.
        correctAnswer: She has lived here for ten years.
        explanation: No past-time adverb and correct past participle "lived".
        xp: 10

  # ══════════════════════════════════════════════════════════════════════
  # 2. type-sentence
  #    question: use ___ (three underscores) to mark the blank
  #    correctAnswer: the missing word or phrase
  # ══════════════════════════════════════════════════════════════════════
  - title: Time markers
    type: lesson
    exercises:
      - title: just / already / yet
        type: type-sentence
        question: I have ___ finished my homework.
        correctAnswer: just
        explanation: "Just" indicates a recently completed action.
        xp: 10

  # ══════════════════════════════════════════════════════════════════════
  # 3. true-false
  #    correctAnswer: exactly "true" or "false" (lowercase string)
  # ══════════════════════════════════════════════════════════════════════
  - title: Error detection
    type: lesson
    exercises:
      - title: Correct or not?
        type: true-false
        question: Is this sentence correct? "She has finished the report yesterday."
        correctAnswer: "false"
        explanation: Present Perfect cannot be used with a specific past time (yesterday).
        xp: 10

  # ══════════════════════════════════════════════════════════════════════
  # 4. match-pairs
  #    options: interleaved [left1, right1, left2, right2, ...]
  #    correctAnswer: ignored — pairs are derived from the options order
  # ══════════════════════════════════════════════════════════════════════
  - title: Vocabulary pairs
    type: lesson
    exercises:
      - title: Match verb to past participle
        type: match-pairs
        question: Match each verb to its past participle.
        options:
          - go       # left  1
          - gone     # right 1
          - see      # left  2
          - seen     # right 2
          - eat      # left  3
          - eaten    # right 3
          - write    # left  4
          - written  # right 4
        correctAnswer: ""  # unused for match-pairs
        xp: 15

  # ══════════════════════════════════════════════════════════════════════
  # 5. reconstruct-sentence
  #    options: shuffled word tokens (the app will shuffle them again)
  #    correctAnswer: the correctly ordered sentence
  # ══════════════════════════════════════════════════════════════════════
  - title: Word order
    type: lesson
    exercises:
      - title: Rebuild the sentence
        type: reconstruct-sentence
        question: Arrange these words into a correct sentence.
        options:
          - never
          - I
          - sushi
          - have
          - tried
        correctAnswer: I have never tried sushi.
        explanation: Adverbs like "never" go between the auxiliary and the past participle.
        xp: 15

  # ══════════════════════════════════════════════════════════════════════
  # 6. complete-sentence
  #    question: the partial sentence (student selects or types missing words)
  #    correctAnswer: pipe-separated accepted answers, e.g. "word1|word2"
  #    options: (optional) word bank to choose from
  # ══════════════════════════════════════════════════════════════════════
  - title: Complete the gap
    type: lesson
    exercises:
      - title: for vs. since
        type: complete-sentence
        question: She has worked here ___ 2019.
        options:
          - for
          - since
          - during
          - from
        correctAnswer: since   # pipe-separate if multiple forms accepted: "since|Since"
        explanation: Use "since" with a point in time, "for" with a duration.
        xp: 10

  # ══════════════════════════════════════════════════════════════════════
  # 7. pronounce-sentence
  #    correctAnswer: the target sentence (display/reference only —
  #                   pronunciation is not graded automatically)
  # ══════════════════════════════════════════════════════════════════════
  - title: Speaking practice
    type: lesson
    exercises:
      - title: Say it aloud
        type: pronounce-sentence
        question: Record yourself saying this sentence naturally.
        correctAnswer: I have already visited the Eiffel Tower twice.
        explanation: Pay attention to the weak form of "have" — it sounds like "I've".
        youtubeUrl: https://www.youtube.com/watch?v=dQw4w9WgXcQ
        xp: 20

How to import

Terminal — curl

# Replace TOKEN with your access token from POST /auth/login
curl -X POST https://content.teacher-and-me.com/paths/import \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/yaml" \
  --data-binary @path-import.yaml

The response is the created Path object with all server-assigned UUIDs. You can immediately copy the id and use it to invite students via POST /paths/{pathId}/invite.

Tip — version-control your paths

Store your YAML files in a Git repository alongside your teaching notes. When you update a path, re-import it with a PATCH /paths/{pathId} or delete-and-reimport. This gives you a full history of every course revision.

Ready to build this path?

Teacher & Me is free for up to 5 students. No credit card required.

Get started free