Programming skills are a crucial part of our education as computational linguists, yet so
many programming classes leave s...
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...
What went wrong?
● Bad class materials?
● Boring examples for complex concepts?
● Not enough explanations?
● No connection...
How can we design a great programming
class?
● There is no objectively great programming
class!
● Where you have to start ...
Morphological Box
● The morphological box is a way of thinking
about products one aspect at a time.
● You identify core at...
Attribute A: Assumptions about students’
knowledge
● Pretend nobody knows anything about
computers or logic.
● Compare the...
Attribute B: Object Orientation (in Python)
● Pretend there’s no such thing as classes.
● Teach imperative style for a cou...
Attribute C: IDE
● Use a simple, wooden interpreter/shell/editor
with no syntax highlighting etc.
● Use an IDE like IDLE, ...
Attribute D: Depth vs. Breadth
● Use a book, focus on showing how to solve
given problems.
● Explain basic concepts and bu...
Attribute E: Exams? Homework?
● Give programming assignments throughout
the semester.
● Start each class by asking a coupl...
Morphological Box
A:
Prerequisites
Zero prerequisites Build on existing
knowledge
Help students
help themselves
Strict
pre...
Morphological Box: Opinion Time!
A:
Prerequisites
Zero prerequisites Build on existing
knowledge
Help students
help themse...
Other questions
● Covered: Prerequisites, Object Orientation,
IDE, Depth vs Breadth, Exams
● Other questions:
o Which prog...
Nächste SlideShare
Wird geladen in …5
×

How not to fail at programming education

732 Aufrufe

Veröffentlicht am

Talk given at TaCoS 25, 15./16.05.2015, Munich. Aimed at computational linguists who have participated in beginners' programming classes or even given one themselves.

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
732
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
6
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

How not to fail at programming education

  1. 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. 2. How not to fail at programming education Esther Seyffarth - TaCOS 25
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 ❤

×