Best practices in teaching introductory programming

advertisement

BEST PRACTICES IN TEACHING

INTRODUCTORY

PROGRAMMING

Beth Simon, Computer Science and Engineering

UC, San Diego

What versus How

Content 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

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

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

During an average 50-minute lecture how many minutes do

YOU spend speaking or working/analyzing problems?

What we know about how people learn

Transmissionist Model

Scientifically Outdated,

Culturally a Known Failure

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

Let’s have a learning experience…

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

So, you learned, right?

Let ’ s check your learning

What ’ s this number?

So, you learned, right?

Let ’ s check your learning

What ’ s this number?

1

4

7

2

5

8

3

6

9

So, you learned, right?

Let ’ s check your learning

What ’ s this number?

1

4

2

5

3

6

7 8 9

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

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)

Remember This!

You can’t do the learning for the student!

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

On to Introductory Programming…

Best Practices 

Introductory Programming

Learning a new “language”

Flow not even the same int x = 30; for (int i = 0; i < 100; i = i + i%x)

{

//Now here’s the repeated stuff

}

Lens: Manage Cognitive Load

Amount of “stuff” you have to keep active while learning

Manage Cognitive Load: System

Separate syntax and semantics

Remove syntax error possibilities

Manage Cognitive Load: System

“Novice” IDE

Manage Cognitive Load: System

Visualization of “mental model” of program state

Use contextualized programming environments

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

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

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

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

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?

Questions?

Ask me about the 2 minute pause study…

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)

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

Download