2006 Whittington Workshop - DePaul Introductory Programming Active Learning Activities Keith J....

Preview:

Citation preview

2006 Whittington Workshop - DePaul

Introductory Programming Active Learning Activities

Keith J. WhittingtonRochester Institute of Technology

kjw@it.rit.edu

This material is partially based upon work supported by the National Science Foundation under Award No. DUE-0442987

2006 Whittington Workshop - DePaul

Active Learning Theory

• If you get students:– Talking, listening, and writing about the

subject– Sharing answers– Teaching each other– Solving problems collectively

• It helps them think critically, and• Deepens their knowledge

2006 Whittington Workshop - DePaul

My Basic Premises

• Active learning is good

• Active learning exercises supplement the lecture, not replace it

• Speak less, do more

2006 Whittington Workshop - DePaul

Active Learning Goals

• Reflect on current knowledge

• Deepen understanding

• Critical thinking

• Build confidence

2006 Whittington Workshop - DePaul

Reflective Learning

• Use activities to promote student critical reflection on their knowledge

• Ask WHY not how

2006 Whittington Workshop - DePaul

Lecture

In-class ActivityHW Assignment

Reflective Activity

Design for Significant Learning

2006 Whittington Workshop - DePaul

Every Main Topic

• Lecture (What)– basic information

• In-class activity (How)– immediate practice

• HW (Practice) – harder application of topic

• Reflection (Why) – critical thinking & deepen knowledge

2006 Whittington Workshop - DePaul

Getting Started

• Start with “low-risk” activities

• Reject activities that are uncomfortable

• Build your toolbox and confidence

• Don’t give up

• Some things will work, some won’t

2006 Whittington Workshop - DePaul

Activities - Low to High Risk

• Icebreakers• Paired Programming• Group Questions• Code Analysis / Debugging• Think-Pair-Share• Rapid Programming• Group code• Role Playing• Classroom Code

2006 Whittington Workshop - DePaul

Activity Steps

• Define your objective

• Design the activity

• Tell students what to do

• Explain why you are doing it

• Display the steps to the class

• Get student feedback

• Modify the exercise for next time

2006 Whittington Workshop - DePaul

Try Activity

Get FeedbackRevise

Try and Try Again

2006 Whittington Workshop - DePaul

Icebreakers

• Purpose– Get students talking and sharing – Sets the tone for the entire quarter

• Examples– Interview– Lies

2006 Whittington Workshop - DePaul

Paired Programming

• Each person has a different role:– Driver – writes the code– Navigator – helps debug, find errors, make

suggestions, etc

• Switch roles at EVERY numbered step– Keeps them engaged

• Answer questions throughout the exercise– Can emulate “real” programming techniques such as

compile and run often

2006 Whittington Workshop - DePaul

Paired Programming

• In-class activity

• Purpose:– Code more efficiently– Naturally discuss questions before asking for help– Questions become deeper– Help recognize errors quicker– Teach each other

• Must switch roles frequently

2006 Whittington Workshop - DePaul

Group Questions

• Forces students to: – Talk to each other– Share ideas– Work cooperatively on a difficult question– Teach each other– Learn from each other

• Benefits– Lessens feelings of intimidation– Deepens understanding– Critically think

2006 Whittington Workshop - DePaul

Group Questions – Enhancing

• One person write a sentence • Next person write a sentence

– Add/improve previous statements

• Rules:– All members need to write a statement– Vocalize your answer to the group– Discuss the team’s answers when finished

• One person will explain answer to the class

2006 Whittington Workshop - DePaul

What is the purpose of a constructor?

2006 Whittington Workshop - DePaul

What is the purpose of a mutator?

2006 Whittington Workshop - DePaul

Why are attributes defined as private?

2006 Whittington Workshop - DePaul

Types of Questions

• Ask questions that require thought

• Ask “why” (conceptual knowledge)

• Cover “how” questions in lecture

• Done after practice with topics

2006 Whittington Workshop - DePaul

Focus

• Emphasize “Why”, instead of “How“

• Do after they have sufficient practice on the topic

2006 Whittington Workshop - DePaul

Group Questions – Round Robin

• Take turns doing the following:– Write one answer to the question– Tell group your answer – Pass paper to next person

• Continue until you run out of ideas

• You can “pass”

2006 Whittington Workshop - DePaul

List the steps required to create a java application.

Do not use any java syntax, just use common words to describe each

required process.

2006 Whittington Workshop - DePaul

List the steps required to create a GUI application that

displays a button.

2006 Whittington Workshop - DePaul

List the steps required to have your program react to a button being

pressed.

2006 Whittington Workshop - DePaul

Types of Questions

• Questions that have multiple answers

• Use for programming techniques that require multiple steps

• Done after practice with topics

2006 Whittington Workshop - DePaul

Purpose

• Quickly dump ideas

• Reflect on required steps

• Build self-confidence

• Demonstrates that:– No one remembers everything – Groups usually remember everything

2006 Whittington Workshop - DePaul

Think-Pair-Share

• Listen to the question

• Think about your answer

• Share your answer to the person next to you

• Be prepared to answer question when called upon

2006 Whittington Workshop - DePaul

Benefits (Shown to Students)

• Learn from each other

• The answer doesn’t have to be yours

• Verbalizing enhances learning

• Forces me to wait longer

• Gives you a chance to think about the question

• Participating has to be less boring

2006 Whittington Workshop - DePaul

Tell Students

• If peer has best answer, claim it as your own

• If your answer is “dumb”, blame your partner

• Not knowing an answer is okay

2006 Whittington Workshop - DePaul

Think-Pair-Share

• Purpose– Encourage class participation for all students– Provide students with time to think– Minimize competitive environment– Minimize student embarrassment– Students sharing/teaching students– Leads into next topic

• Displaying questions is very beneficial

2006 Whittington Workshop - DePaul

What are user actions called in GUI programs?

2006 Whittington Workshop - DePaul

What is an event?

2006 Whittington Workshop - DePaul

What type of event is created when a button

is pressed?

2006 Whittington Workshop - DePaul

What are the 3 objects used to react to an

event?

2006 Whittington Workshop - DePaul

What is a source object?

2006 Whittington Workshop - DePaul

What is a listener object?

2006 Whittington Workshop - DePaul

Group Code Analysis

• Wait until the specific code is shown in class

• Describe the following about the error message:– What line does the error occur– What is the problem– How do you fix it

• Make sure each of you understand

• Prepare to explain this to the class

2006 Whittington Workshop - DePaul

Example 1public class Example1{

public class method1(){

System.out.println("Hi");}

}

Example1.java:3: '{' expectedpublic class method1()

^Example1.java:7: '}' expected} ^• 2 errors

2006 Whittington Workshop - DePaul

Example 9public class Example9{

public static void main(String[] args){

int a;int b;b = a + 12;System.out.println("b = " + b);

}}

Example9.java:8: variable a might not have been initializedb = a + 12;

^1 error

2006 Whittington Workshop - DePaul

Purpose

• Force students to look at compiler errors

• Learn what compiler errors mean

• Show that the compiler gets confused

• Develop troubleshooting skills

• Demonstrate that the compiler helps you

• Working together on complex problems

2006 Whittington Workshop - DePaul

Rapid Programming

• Roles– Functional class writer– Test class writer– Spokesperson

• Change roles for each problem

2006 Whittington Workshop - DePaul

Procedure

• Split into groups of 3 and hand out templates• Each card has a role that rotates on every turn

– Functional class writer– Test class writer– Spokesperson

• Show description of requirements– # and types of parameters– Return value

• Put templates on board• Choose a group• Have spokesperson tell the answer

2006 Whittington Workshop - DePaul

Problem 1

• Create a class with a method that:– Accepts 1 integer parameter– Adds 20 to the parameter– Returns the result of the calculation

• Create a test class that prints the result of the calculation

2006 Whittington Workshop - DePaul

Problem 4

• Create a class with a method that:– Accepts 1 double and 2 integer parameters– Adds the 2 integer parameters then divides

the sum by the double parameter– Returns the result of the calculation

• Create a test class that prints the result of the calculation

2006 Whittington Workshop - DePaul

Purpose

• Deepen understanding through repetition• Break the problem into smaller pieces• Spokesperson

– overall understanding

• Test class coder– process return values and send values

• Functional class writer– get parameters and return values

• Rotating gets all involved in different areas

2006 Whittington Workshop - DePaul

Role Playing

• Act out a HW assignment

• Class determines the objects

• Each group becomes an object

• Discuss role with each individual team

• Run through the program

2006 Whittington Workshop - DePaul

Classroom Procedure

• User class group starts– Create an object– Get user input for each attribute– Set the attribute in the object– Add object to collection– Get each object out of the collection– Get attributes

• Ask class what went wrong

2006 Whittington Workshop - DePaul

Purpose

• Easier to visualize objects

• Shows areas of misunderstanding

• Errors naturally occur that they solve

• Demonstrate reasons for OOP concepts

2006 Whittington Workshop - DePaul

Results

• Some students said it was the single most important activity, and that they now understood OOP

• Some students felt it was the most insulting and demeaning activity they’ve ever done

2006 Whittington Workshop - DePaul

Group Code

• Used for difficult concepts

• Difficult for one person to do alone

• Used after extensive practice with topic

• Brainstorm a solution

2006 Whittington Workshop - DePaul

Procedure

• Each group given a different problem

• Each group works on different aspect of a common code design

• Each group writes solution on the board

• Group rep. comes to board and explains solution

2006 Whittington Workshop - DePaul

Group Code - Inheritance

Person

Employee

Hourly Employee Salary Employee

2006 Whittington Workshop - DePaul

Group Code - Exercise

• Given the method signature:

– public Employee aMethod(Person p);

• Show all possible ways that this method can be called and how you can return the object that is passed to the method.

2006 Whittington Workshop - DePaul

public Employee aMethod(Person p);

Person p;Employee e;SalaryEmployee se;HourlyEmployee he;

aMethod(p) aMethod(e)aMethod(se)aMethod(he)

if(p instanceof Employee)return (Employee)p;

Person

Employee

Hourly Employee

Salary Employee

2006 Whittington Workshop - DePaul

Results

• Observe students learn

• Subsequent groups come armed with an erasure

2006 Whittington Workshop - DePaul

Classroom Code - Inheritance

• Each group given specifications for their class

• Each person assigned a role

• Have to interact with other groups

• Code inherits from other groups

2006 Whittington Workshop - DePaul

Student Procedure

• Create code that inherits from another group

• Each member has unique role:– Get inherited values– Code attributes, accessors, and mutators– Code constructors (multi-arg and default)

2006 Whittington Workshop - DePaul

Classroom Code - Details

• Multi-arg constructors get values for all attributes (including inherited)

• Super class constructor called with inherited values• Instructor has the ultimate super class• Student send code to instructor• Compile all files• Have teams correct errors and resubmit• At some point draw a UML diagram to show its

purpose (ask students who they inherit from)• Run a test program that creates an object of each

class and displays the values of all attributes

2006 Whittington Workshop - DePaul

Sample

• Class Name: – Team2

• Inherit from: – Team1

• Variables: – int iT2– String sT2

2006 Whittington Workshop - DePaul

Multiple Inheritance

Group 1

Group 2

Group 4

Group 7

Group 5

Group 3

Group 6

Group 8

Group 9

2006 Whittington Workshop - DePaul

Results

• Groups communicate with groups

• Discover inheritance complexity

• Students suggest drawing UML diagram

• Entire class engaged debugging the code