How not to fail at programming education

Programming skills are a crucial part of our education as computational linguists, yet so
many programming classes leave students uninformed, confused, and often unable to
solve problems that differ too much from those that were discussed in class. How can we
offer better programming courses that motivate and enable students to grok all basic
concepts, rather than merely learn a number of functions by heart, without understanding
why things work the way they do?
In the first part of this session, I will give an overview of some questions that I think
should be considered when a programming class for computational linguists is being
designed.
In the second part of the session, you are welcome to discuss these questions with me
and share your own opinions and experiences. If you've participated in a programming
class before, either as a student or a teacher/TA, or if you're going to do so soon, your
input is valuable for the discussion!
How not to fail at programming education
How not to fail at
programming
education
Esther Seyffarth - TaCOS 25
Any feelings about programming courses?
● Raise your hand if you’ve participated in a
programming class.
● Raise your hand if you’ve contributed to a
programming class (as a teacher or TA).
● Raise your hand if you’ve learned a
programming language by yourself.
● Raise your hand if you don’t know how to
code.
What went wrong?
● Bad class materials?
● Boring examples for complex concepts?
● Not enough explanations?
● No connection to your other classes?
● Too much homework? Too little homework?
● Obligatory class with no intrinsic pull?
How can we design a great programming
class?
● There is no objectively great programming
class!
● Where you have to start depends on where
the students are.
● Which aspects of a programming class
matter most?
● How should each aspect look in your specific
case?
Morphological Box
● The morphological box is a way of thinking
about products one aspect at a time.
● You identify core attributes and find a
reasonable number of different values.
● Compare possibilities and decide which
combination of values you prefer.
Attribute A: Assumptions about students’
knowledge
● Pretend nobody knows anything about
computers or logic.
● Compare the language in question to
languages students might already know.
● Assume students have worked with the
language, but give opportunities for
struggling students to keep up.
● Publish strict course prerequisites early on.
Attribute B: Object Orientation (in Python)
● Pretend there’s no such thing as classes.
● Teach imperative style for a couple of
weeks, then switch to OO.
● Teach imperative for a semester, talk about
OO in last 2 weeks.
● Force students to understand Object
Orientation before they write their first line of
code.
Attribute C: IDE
● Use a simple, wooden interpreter/shell/editor
with no syntax highlighting etc.
● Use an IDE like IDLE, with syntax
highlighting, but no remarkable qualities.
● Use an IDE that has integrated Version
Control, code completion, error detection…
● Use IPython Notebook ❤
Attribute D: Depth vs. Breadth
● Use a book, focus on showing how to solve
given problems.
● Explain basic concepts and build more and
more complex projects together.
● Give a broad overview of a range of topics,
show students where to look for help.
● Provide an opportunity for students to
develop their own projects.
Attribute E: Exams? Homework?
● Give programming assignments throughout
the semester.
● Start each class by asking a couple of
questions about the learnings so far.
● Have a big, intimidating exam in the last
week.
● Plan supervised practice sessions with
small, optional tasks.
Morphological Box
A:
Prerequisites
Zero prerequisites Build on existing
knowledge
Help students
help themselves
Strict
prerequisites
B:
Object
Orientation
Pretend objects
don’t exist
Introduce after
first 2 weeks
Introduce in last 2
weeks
Pretend
everything’s an
object
C:
IDE
B/W shell IDLE Most Intelligent
Python IDE
IP[y]:
D:
Depth vs.
Breadth
Narrow focus on
individual
examples
Develop complex
projects together
Broad overview,
show good
resources
Let students
develop ideas
E:
Exams?
Homework?
Homework
programming
assignments
Continuous
repetition of key
concepts
Final exam Supervised
practice sessions
Morphological Box: Opinion Time!
A:
Prerequisites
Zero prerequisites Build on existing
knowledge
Help students
help themselves
Strict
prerequisites
B:
Object
Orientation
Pretend objects
don’t exist
Introduce after
first 2 weeks
Introduce in last 2
weeks
Pretend
everything’s an
object
C:
IDE
B/W shell IDLE Most Intelligent
Python IDE
IP[y]:
D:
Depth vs.
Breadth
Narrow focus on
individual
examples
Develop complex
projects together
Broad overview,
show good
resources
Let students
develop ideas
E:
Exams?
Homework?
Homework
programming
assignments
Continuous
repetition of key
concepts
Final exam Supervised
practice sessions
Other questions
● Covered: Prerequisites, Object Orientation,
IDE, Depth vs Breadth, Exams
● Other questions:
o Which programming language?
o Cooperation with other courses?
o Materials: Books? Slides? Websites?
o Extracurricular projects, e.g. NaNoGenMo ❤
1 von 14

Más contenido relacionado

Was ist angesagt?(19)

ISTE 2017: Using Coding to Teach WritingISTE 2017: Using Coding to Teach Writing
ISTE 2017: Using Coding to Teach Writing
The Source for Learning, Inc.251 views
Rubric videoRubric video
Rubric video
Felix Bunagan9K views
Lesson plannerLesson planner
Lesson planner
Marco Jurado173 views
Cae speaking   part 3Cae speaking   part 3
Cae speaking part 3
Instituto Cultural Anglo-Uruguayo204 views
Power of PowerPointPower of PowerPoint
Power of PowerPoint
Peter Spencer223 views
NoRedInk Lesson IdeasNoRedInk Lesson Ideas
NoRedInk Lesson Ideas
Angela Sammarone672 views
Academic fastrack...Academic fastrack...
Academic fastrack...
Iffat Subhani82 views
Cae speaking   part 2Cae speaking   part 2
Cae speaking part 2
Instituto Cultural Anglo-Uruguayo168 views
Ucla CdhUcla Cdh
Ucla Cdh
zoepster406 views
Making Lesson PlansMaking Lesson Plans
Making Lesson Plans
Matthew Leingang1.8K views
Effective lecutreEffective lecutre
Effective lecutre
DrErnestFahim46 views

Destacado(20)

Elektriskie lādiņiElektriskie lādiņi
Elektriskie lādiņi
Zigeta Simanoviča2K views
Tik bab 2Tik bab 2
Tik bab 2
Amadea9c4842 views
service marketingservice marketing
service marketing
Tambu Monday462 views
One stop englishOne stop english
One stop english
Jazmin Ontiveros Ontiveros217 views
¿POR QUÉ?¿POR QUÉ?
¿POR QUÉ?
Felix231188 views
Competitive pricingCompetitive pricing
Competitive pricing
LucyErrington293 views
Competitive pricingCompetitive pricing
Competitive pricing
LucyErrington330 views
Presentation   janice s. dionisioPresentation   janice s. dionisio
Presentation janice s. dionisio
janicesdionisio138 views
Work Fat_by James DWork Fat_by James D
Work Fat_by James D
James Beers224 views
Bab 5Bab 5
Bab 5
Amadea9c4287 views
Scala Days 2014: Pitching TypesafeScala Days 2014: Pitching Typesafe
Scala Days 2014: Pitching Typesafe
BoldRadius Solutions2.1K views
Caleb clark's journalCaleb clark's journal
Caleb clark's journal
lucyjonas497 views
Article Inspiration - DevlinArticle Inspiration - Devlin
Article Inspiration - Devlin
conorg97212 views
REACH THEM by MATHEW OLASUPOREACH THEM by MATHEW OLASUPO
REACH THEM by MATHEW OLASUPO
Mathew Olasupo1.4K views
Banner locations of PragyanBanner locations of Pragyan
Banner locations of Pragyan
Vishnu Gopal218 views
Ferdigheter for en nav  veilederFerdigheter for en nav  veileder
Ferdigheter for en nav veileder
unnihelene50166 views

Similar a How not to fail at programming education(20)

Último(20)

NS3 Unit 2 Life processes of animals.pptxNS3 Unit 2 Life processes of animals.pptx
NS3 Unit 2 Life processes of animals.pptx
manuelaromero201389 views
Sociology KS5Sociology KS5
Sociology KS5
WestHatch50 views
Industry4wrd.pptxIndustry4wrd.pptx
Industry4wrd.pptx
BC Chew153 views
Plastic waste.pdfPlastic waste.pdf
Plastic waste.pdf
alqaseedae81 views
Universe revised.pdfUniverse revised.pdf
Universe revised.pdf
DrHafizKosar84 views
ICANNICANN
ICANN
RajaulKarim2057 views
Scope of Biochemistry.pptxScope of Biochemistry.pptx
Scope of Biochemistry.pptx
shoba shoba110 views
Azure DevOps Pipeline setup for Mule APIs #36Azure DevOps Pipeline setup for Mule APIs #36
Azure DevOps Pipeline setup for Mule APIs #36
MysoreMuleSoftMeetup75 views
Streaming Quiz 2023.pdfStreaming Quiz 2023.pdf
Streaming Quiz 2023.pdf
Quiz Club NITW87 views
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdf
Nithya Murugan142 views
STYP infopack.pdfSTYP infopack.pdf
STYP infopack.pdf
Fundacja Rozwoju Społeczeństwa Przedsiębiorczego143 views
231112 (WR) v1  ChatGPT OEB 2023.pdf231112 (WR) v1  ChatGPT OEB 2023.pdf
231112 (WR) v1 ChatGPT OEB 2023.pdf
WilfredRubens.com100 views
Narration lesson plan.docxNarration lesson plan.docx
Narration lesson plan.docx
Tariq KHAN90 views
BYSC infopack.pdfBYSC infopack.pdf
BYSC infopack.pdf
Fundacja Rozwoju Społeczeństwa Przedsiębiorczego144 views

How not to fail at programming education

  • 1. Programming skills are a crucial part of our education as computational linguists, yet so many programming classes leave students uninformed, confused, and often unable to solve problems that differ too much from those that were discussed in class. How can we offer better programming courses that motivate and enable students to grok all basic concepts, rather than merely learn a number of functions by heart, without understanding why things work the way they do? In the first part of this session, I will give an overview of some questions that I think should be considered when a programming class for computational linguists is being designed. In the second part of the session, you are welcome to discuss these questions with me and share your own opinions and experiences. If you've participated in a programming class before, either as a student or a teacher/TA, or if you're going to do so soon, your input is valuable for the discussion! How not to fail at programming education
  • 2. How not to fail at programming education Esther Seyffarth - TaCOS 25
  • 3. Any feelings about programming courses? ● Raise your hand if you’ve participated in a programming class. ● Raise your hand if you’ve contributed to a programming class (as a teacher or TA). ● Raise your hand if you’ve learned a programming language by yourself. ● Raise your hand if you don’t know how to code.
  • 4. What went wrong? ● Bad class materials? ● Boring examples for complex concepts? ● Not enough explanations? ● No connection to your other classes? ● Too much homework? Too little homework? ● Obligatory class with no intrinsic pull?
  • 5. How can we design a great programming class? ● There is no objectively great programming class! ● Where you have to start depends on where the students are. ● Which aspects of a programming class matter most? ● How should each aspect look in your specific case?
  • 6. Morphological Box ● The morphological box is a way of thinking about products one aspect at a time. ● You identify core attributes and find a reasonable number of different values. ● Compare possibilities and decide which combination of values you prefer.
  • 7. Attribute A: Assumptions about students’ knowledge ● Pretend nobody knows anything about computers or logic. ● Compare the language in question to languages students might already know. ● Assume students have worked with the language, but give opportunities for struggling students to keep up. ● Publish strict course prerequisites early on.
  • 8. Attribute B: Object Orientation (in Python) ● Pretend there’s no such thing as classes. ● Teach imperative style for a couple of weeks, then switch to OO. ● Teach imperative for a semester, talk about OO in last 2 weeks. ● Force students to understand Object Orientation before they write their first line of code.
  • 9. Attribute C: IDE ● Use a simple, wooden interpreter/shell/editor with no syntax highlighting etc. ● Use an IDE like IDLE, with syntax highlighting, but no remarkable qualities. ● Use an IDE that has integrated Version Control, code completion, error detection… ● Use IPython Notebook ❤
  • 10. Attribute D: Depth vs. Breadth ● Use a book, focus on showing how to solve given problems. ● Explain basic concepts and build more and more complex projects together. ● Give a broad overview of a range of topics, show students where to look for help. ● Provide an opportunity for students to develop their own projects.
  • 11. Attribute E: Exams? Homework? ● Give programming assignments throughout the semester. ● Start each class by asking a couple of questions about the learnings so far. ● Have a big, intimidating exam in the last week. ● Plan supervised practice sessions with small, optional tasks.
  • 12. Morphological Box A: Prerequisites Zero prerequisites Build on existing knowledge Help students help themselves Strict prerequisites B: Object Orientation Pretend objects don’t exist Introduce after first 2 weeks Introduce in last 2 weeks Pretend everything’s an object C: IDE B/W shell IDLE Most Intelligent Python IDE IP[y]: D: Depth vs. Breadth Narrow focus on individual examples Develop complex projects together Broad overview, show good resources Let students develop ideas E: Exams? Homework? Homework programming assignments Continuous repetition of key concepts Final exam Supervised practice sessions
  • 13. Morphological Box: Opinion Time! A: Prerequisites Zero prerequisites Build on existing knowledge Help students help themselves Strict prerequisites B: Object Orientation Pretend objects don’t exist Introduce after first 2 weeks Introduce in last 2 weeks Pretend everything’s an object C: IDE B/W shell IDLE Most Intelligent Python IDE IP[y]: D: Depth vs. Breadth Narrow focus on individual examples Develop complex projects together Broad overview, show good resources Let students develop ideas E: Exams? Homework? Homework programming assignments Continuous repetition of key concepts Final exam Supervised practice sessions
  • 14. Other questions ● Covered: Prerequisites, Object Orientation, IDE, Depth vs Breadth, Exams ● Other questions: o Which programming language? o Cooperation with other courses? o Materials: Books? Slides? Websites? o Extracurricular projects, e.g. NaNoGenMo ❤