best practices in teaching introductory programming - beth simon

27
BEST PRACTICES IN TEACHING INTRODUCTORY PROGRAMMING Beth Simon, Computer Science and Engineering UC, San Diego

Upload: ekitani6817

Post on 16-May-2017

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Best Practices in Teaching Introductory Programming - Beth Simon

BEST PRACTICES IN TEACHING INTRODUCTORY PROGRAMMINGBeth Simon, Computer Science and EngineeringUC, San Diego

Page 2: Best Practices in Teaching Introductory Programming - Beth Simon

What versus HowContent versus Pedagogy

Pedagogy – applies to teaching any course

Course design: Learning goals of the course How students should be different at end of

course What students should be able to do at end

of course Homework, Projects, Reading, Lecture

Page 3: Best Practices in Teaching Introductory Programming - Beth Simon

During an average 50 minute “lecture” period, how much time do students spend speaking?

A) <5 minutes B) 5-10 minutes C) 10-20 minutes D) More than 20 minutes

Page 4: Best Practices in Teaching Introductory Programming - Beth Simon

During an average 50 minute “lecture” period, how much time do students spend working/analyzing problems?

A) < 5 minutes B) 5-10 minutes C) 10-20 minutes D) More than 20 minutes

Page 5: Best Practices in Teaching Introductory Programming - Beth Simon

During an average 50-minute lecturehow many minutes do

YOUspend speaking or

working/analyzing problems?

Page 6: Best Practices in Teaching Introductory Programming - Beth Simon

What we know about how people learn

Transmissionist Model

Page 7: Best Practices in Teaching Introductory Programming - Beth Simon

Scientifically Outdated, Culturally a Known Failure

Page 8: Best Practices in Teaching Introductory Programming - Beth Simon

How People Learn [1] People actively construct their own

knowledge Individual, based in pre-existing

understanding Tied to language

Technology allowing us to observe learning as it happens

Furthering understanding of the biological processes and changes the occur during learning

[1] How People Learn: Brain, Mind, Experience and School Expanded Edition. Ed. Bransford

Page 9: Best Practices in Teaching Introductory Programming - Beth Simon

Let’s have a learning experience…

Page 10: Best Practices in Teaching Introductory Programming - Beth Simon

Here is an important new number system. Please learn it.

Page 11: Best Practices in Teaching Introductory Programming - Beth Simon

So, you learned, right?Let’s check your learning

What’s this number?

Page 12: Best Practices in Teaching Introductory Programming - Beth Simon

So, you learned, right?Let’s check your learning

What’s this number?

1 324 657 98

Page 13: Best Practices in Teaching Introductory Programming - Beth Simon

So, you learned, right?Let’s check your learning

What’s this number?

1 324 657 98

[2] Teaching Teaching and Understanding Understanding, Aarhus University. Video (on web)

Page 14: Best Practices in Teaching Introductory Programming - Beth Simon

Constructivism All new learning is

based in pre-existing knowledge that you hold.

You store things in long term memory through a set of connections that are made with previous existing memories.

“Creating memories” (aka learning) involves having neurons fire (and neurons link up in networks or patterns)

Page 15: Best Practices in Teaching Introductory Programming - Beth Simon

Remember This!

Don’t think about lecture in terms of what “you will do” What will students, do, think, explain?

Move from “Sage on the Stage” to “Guide on the Side” Provide materials for students before lecture

(videos, reading) Spend lecture time with the most difficult concepts

You can’t do the learning for the student!

On to Introductory Programming…

Page 16: Best Practices in Teaching Introductory Programming - Beth Simon

Best Practices Introductory Programming Learning a new “language”

Flow not even the same

Lens: Manage Cognitive Load Amount of “stuff” you have to keep active while

learning

int x = 30;for (int i = 0; i < 100; i = i + i%x){ //Now here’s the repeated stuff }

Page 17: Best Practices in Teaching Introductory Programming - Beth Simon

Manage Cognitive Load: System

Separate syntax and semantics Remove syntax error possibilities

Page 18: Best Practices in Teaching Introductory Programming - Beth Simon

Manage Cognitive Load: System

“Novice” IDE

Page 19: Best Practices in Teaching Introductory Programming - Beth Simon

Manage Cognitive Load: System

Visualization of “mental model” of program state

Use contextualized programming environments

Page 20: Best Practices in Teaching Introductory Programming - Beth Simon

Manage Cognitive Load: Stress Use Pair Programming for Homework

Assignments McDowell, UC Santa Cruz, Williams NCSU)

Use Peer Instruction in Lecture Also good for instructors who don’t

frequently teach introductory programming Simon, UC San Diego, Cutts Univ. of

Glasgow

Page 21: Best Practices in Teaching Introductory Programming - Beth Simon

Manage Cognitive Load: Stress Support Growth Mindsets: Carol Dweck

Encourage focus on learning “useful tool”, not earning grades

Cognitive Modeling – especially showing mistakes and how to recognize and think about them Videos of coding with reflecting commentary Peer Instruction

Page 22: Best Practices in Teaching Introductory Programming - Beth Simon

Does this work? UCSD - Within instructor comparison

2006-2007: Java, with “engaging” lecturer 76% retention in major 1 year later

2009-2010: Media Computation in Java, Peer Instruction 92% retention in major 1 year later

Page 23: Best Practices in Teaching Introductory Programming - Beth Simon

Before “Intro Programming” Recent efforts in US (also in Scotland) to define

“university-level general education computing” Deep understanding of core concepts Debugging and Analysis skills Confidence

Cognitive Load Remove Syntax Simple IDE (“Play” == Run) Visual, Contextual

Advanced Placement CS Principles (in US)Targets ALL College-Preparatory Students

Page 24: Best Practices in Teaching Introductory Programming - Beth Simon

Think-Pair-Share How does your current curriculum “rate”

in management of cognitive load? System Stress

Lecture Environment Programming/Homework Experiences

What is ONE THING you will bring up at your institution to promote adoption of best practices?

Page 25: Best Practices in Teaching Introductory Programming - Beth Simon

Questions?

Ask me about the 2 minute pause study…

Page 26: Best Practices in Teaching Introductory Programming - Beth Simon

Extra Resources Useful hands on materials

Carl Wieman Science Education Initiative (UBC) What all instructors should know What to do on the first day of class Clickers / Peer Instruction videos (~7) Handbook for using clickers/peer instruction

Fun and Interesting Video: Teaching Teaching and Understanding

Undersatnding (20 min) Google: Aarhus Video: Farewell Lecture Eric Mazur Harvard (60

min)

Page 27: Best Practices in Teaching Introductory Programming - Beth Simon

Take-Home Practices People can either take notes or THINK

Be sure your POINT is written on a slide (not merely spoken) So what is really important, so what I want you to know

Add LABELS to diagrams and images Tell students “what to see” or “how to look” at image

Give an agenda, return to it Tell students how they will be different at the end of

lecture Can explain, compare/contrast, describe why something is

important, identify when X needs to be used Don’t give a list of topics

Start from students’ pre-existing knowledge/comfort zone, not yours