NDC

National Deaf Center
on Postsecondary Outcomes

Student Led IEPs

The image shows a person in the foreground holding a tablet, wearing a light pink and white striped shirt, standing confidently. Their expression is neutral as they face the camera. In the background, four other individuals are engaged in conversation and interacting with a laptop. The room has a modern feel with a blue wall and minimalist lighting fixtures visible at the top of the image.

Strategies for Student Led IEP for Deaf Students

Students know themselves better than anyone else in that Individualized Education Program (IEP) meeting room. But most sit through their meetings without saying a word.

Student-led IEPs are built on a different idea: that students should present their own strengths, needs, and goals and ask for what they need. Approaches vary by age and ability. Research links them to stronger self-determination, greater knowledge of one’s disability and accommodations, sharper self-advocacy skills, and better post-school outcomes including higher rates of employment and goal attainment. The barriers are real — teacher time, student readiness, system constraints.

This resource gives you practical strategies to work through all three.

Before the IEP Meeting: Prepare

Build self‑awareness well before the meeting

  • Encourage the student to identify their strengths, areas of challenge, learning preferences, what helps & what doesn’t.
  • Use simple “About me” documents, One‑Pager templates, or Activity Kit summarizing the student’s interests, preferences, and needs.
  • Reflect: “What has worked this year?”, “What hasn’t?”, “What do I want to do next year?”

Practice communication & self‑advocacy skills

  • Role‑play parts of the IEP meeting: the student presenting their strengths, the student asking for an accommodation, the student answering a question. See sample deaf student led mock IEP meeting here.
  • Work with the student to develop visuals or assistive supports if needed (e.g. picture cards, a slide show, video clip).

Help the student prepare a personal “script” or agenda

  • Student creates a simple slide‑deck or poster:
    • Slide 1: “About Me / My Strengths”
    • Slide 2: “What’s Working / What’s Hard”
    • Slide 3: “My Goals for Next Year”
    • Slide 4: “What Helps Me & What I Need”
  • Student reviews their current IEP: What were past goals, what progress did they make, what accommodations did they use? (See PAVE student guide)
  • Student prepares 1‑3 questions to ask at the meeting: e.g., “How will we know if I am reaching my goal?”, “What supports will I get in class?”, “How many minutes of special instruction will I have?”

During the IEP Meeting: Take Ownership

The student….

  • introduces themselves and the meeting agenda.
  • presents their slide/poster: shares their strengths, their perspective on progress, what they want next, using language that clearly shows what they will explore, research, or learn.
  • engages with others by asking clarifying questions, sharing preferences, etc.
  • keeps the focus on their goals and supports: e.g., “Here’s what helps me… to make this goal realistic, I’ll need … ”
  •  collaborates with the team to decide next year’s goals, review accommodations, and discuss transition to next grade/post‑school.

See an example student led IEP meeting here.

After the IEP Meeting: Reflect and Follow Up

  • Debrief: What went well? What could be better next time?
  • Student writes a short reflection (e.g., “I shared my strengths, and I need more support in…”)
  • Student keeps track of their IEP, goals, accommodations, so they can monitor their progress.
  • Administrators keeps track of the fidelity of implementation of the IEP plan.

Tips for Educators and Parents to Support the Student

Save This
Please login to bookmark Close
National Deaf Center
' ); idoc.close(); var triggered = false; function doPrint() { if (triggered) return; triggered = true; try { iframe.contentWindow.focus(); iframe.contentWindow.print(); } catch (e) { window.print(); } setTimeout(function () { if (iframe.parentNode) iframe.parentNode.removeChild(iframe); }, 1500); } iframe.onload = function () { setTimeout(doPrint, 350); }; setTimeout(doPrint, 1200); } /* ========================================================== IEP CHECKLIST ("College Transition Checklist") ========================================================== */ // Checklist content — edit here to add/remove months or tasks var CHECKLIST = [ { month: "September", tasks: [ "Meet with transition team to develop plan", "Meet with VR counselor", "Explore college options", "Develop a pro/con list of college options", "Explore requirements for entrance at each college", "Tour the colleges you think are the best fit", "Talk to people in the area of study you are interested in", "Write a draft college essay", "Decide what (if any) standardized tests you need to take and register for them" ] }, { month: "October", tasks: [ "Meet with transition team to check in", "Finalize list of schools you will apply to", "Research costs, financial aid, and application timelines for each college" ] } ]; function initChecklist(root) { if (!root || root.dataset.checklistInit === 'true') return; root.dataset.checklistInit = 'true'; var container = root.querySelector('.checklist-container'); var bar = root.querySelector('.progress-bar-inner'); var countEl = root.querySelector('.progress-count'); var banner = root.querySelector('.completion-banner'); var printBtn = root.querySelector('.btn-print'); if (!container) return; var total = 0; var checked = 0; var today = new Date().toISOString().split('T')[0]; function updateProgress() { var pct = total === 0 ? 0 : Math.round((checked / total) * 100); if (bar) { bar.style.width = pct + '%'; bar.classList.toggle('all-done', pct === 100); } if (countEl) countEl.textContent = checked + ' of ' + total; if (banner) banner.classList.toggle('visible', checked === total && total > 0); } function updateTally(sectionEl) { var boxes = sectionEl.querySelectorAll('.task-cb'); var done = 0; for (var i = 0; i < boxes.length; i++) { if (boxes[i].checked) done++; } var tally = sectionEl.querySelector('.month-tally'); if (tally) tally.textContent = done + ' of ' + boxes.length + ' done'; } CHECKLIST.forEach(function (section, mi) { total += section.tasks.length; var wrap = document.createElement('div'); wrap.className = 'month-section'; wrap.innerHTML = '
' + '' + section.month + '' + '' + '0 of ' + section.tasks.length + ' done' + '
'; section.tasks.forEach(function (taskText, ti) { var cbId = 'ndc-cb-' + mi + '-' + ti; var dateId = 'ndc-dt-' + mi + '-' + ti; var card = document.createElement('div'); card.className = 'task-card'; card.innerHTML = '' + '
' + '' + '' + '
'; card.querySelector('.task-text').textContent = taskText; var cb = card.querySelector('.task-cb'); cb.addEventListener('change', function () { if (this.checked) { card.classList.add('completed'); checked++; } else { card.classList.remove('completed'); checked--; } updateProgress(); updateTally(wrap); }); // Stop the date input from toggling the checkbox label card.querySelector('input[type="date"]').addEventListener('click', function (e) { e.stopPropagation(); }); wrap.appendChild(card); }); container.appendChild(wrap); }); if (countEl) countEl.textContent = '0 of ' + total; if (printBtn) { printBtn.addEventListener('click', function () { printChecklist(root); }); } } // Render the checklist into a hidden iframe and print just that iframe. // This sidesteps WordPress/Elementor page chrome layout issues — the // iframe contains only the checklist, so the browser prints exactly that. function printChecklist(root) { var iframe = document.createElement('iframe'); iframe.setAttribute('aria-hidden', 'true'); iframe.style.cssText = 'position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;'; document.body.appendChild(iframe); var idoc = iframe.contentDocument || iframe.contentWindow.document; // Copy every and ' + '' + root.outerHTML + '' ); idoc.close(); var triggered = false; function doPrint() { if (triggered) return; triggered = true; try { iframe.contentWindow.focus(); iframe.contentWindow.print(); } catch (e) { // Last-ditch fallback if iframe print is blocked window.print(); } // Clean up after the print dialog has had time to open setTimeout(function () { if (iframe.parentNode) iframe.parentNode.removeChild(iframe); }, 1500); } // Most browsers: wait for the iframe to load iframe.onload = function () { setTimeout(doPrint, 350); }; // Safety net in case onload doesn't fire (already-loaded edge case) setTimeout(doPrint, 1200); } /* ========================================================== BOOT — runs after all declarations above are in place. Triggered on DOMContentLoaded, or immediately if the DOM is already loaded (e.g. script injected after page render). ========================================================== */ function boot() { document.querySelectorAll('.ndc-worksheet').forEach(initWorksheet); document.querySelectorAll('.ndc-checklist').forEach(initChecklist); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', boot); } else { boot(); } })();;