Title: Introductory Programming Active Learning Activities
1Introductory Programming Active Learning
Activities
- Keith J. Whittington
- Rochester Institute of Technology
- kjw_at_it.rit.edu
- This material is partially based upon work
supported by the National Science Foundation
under Award No. DUE-0442987
2Active 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
3My Basic Premises
- Active learning is good
- Active learning exercises supplement the lecture,
not replace it - Speak less, do more
4Active Learning Goals
- Reflect on current knowledge
- Deepen understanding
- Critical thinking
- Build confidence
5Reflective Learning
- Use activities to promote student critical
reflection on their knowledge - Ask WHY not how
6Design for Significant Learning
Lecture
Reflective Activity
In-class Activity
HW Assignment
7Every Main Topic
- Lecture (What) basic information
- In-class activity (How) immediate practice
- HW (Practice) harder application of topic
- Reflection (Why) critical thinking deepen
knowledge
8Getting Started
- Start with low-risk activities
- Reject activities that are uncomfortable
- Build your toolbox and confidence
- Dont give up
- Some things will work, some wont
9Activities - Low to High Risk
- Icebreakers
- Paired Programming
- Group Questions
- Code Analysis / Debugging
- Think-Pair-Share
- Rapid Programming
- Group code
- Role Playing
- Classroom Code
10Activity 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
11Try and Try Again
Try Activity
Get Feedback
Revise
12Icebreakers
- Purpose
- Get students talking and sharing
- Sets the tone for the entire quarter
- Examples
- Interview
- Lies
13Paired 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
14Paired 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
15Group 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
16Group 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 teams answers when finished
- One person will explain answer to the class
17What is the purpose of a constructor?
18What is the purpose of a mutator?
19Why are attributes defined as private?
20Types of Questions
- Ask questions that require thought
- Ask why (conceptual knowledge)
- Cover how questions in lecture
- Done after practice with topics
21Focus
- Emphasize Why, instead of How
- Do after they have sufficient practice on the
topic
22Group 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
23- List the steps required to create a java
application. - Do not use any java syntax, just use common words
to describe each required process.
24- List the steps required to create a GUI
application that displays a button.
25- List the steps required to have your program
react to a button being pressed.
26Types of Questions
- Questions that have multiple answers
- Use for programming techniques that require
multiple steps - Done after practice with topics
27Purpose
- Quickly dump ideas
- Reflect on required steps
- Build self-confidence
- Demonstrates that
- No one remembers everything
- Groups usually remember everything
28Think-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
29Benefits (Shown to Students)
- Learn from each other
- The answer doesnt 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
30Tell 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
31Think-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
32What are user actions called in GUI programs?
33What is an event?
34What type of event is created when a button is
pressed?
35What are the 3 objects used to react to an event?
36What is a source object?
37What is a listener object?
38Group 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
39Example 1
- public class Example1
-
- public class method1()
-
- System.out.println("Hi")
-
-
- Example1.java3 '' expected
- public class method1()
-
- Example1.java7 '' expected
-
-
- 2 errors
40Example 9
- public class Example9
-
- public static void main(String args)
-
- int a
- int b
- b a 12
- System.out.println("b " b)
-
-
- Example9.java8 variable a might not have been
initialized - b a 12
-
- 1 error
41Purpose
- 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
42Rapid Programming
- Roles
- Functional class writer
- Test class writer
- Spokesperson
- Change roles for each problem
43Procedure
- 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
44Problem 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
45Problem 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
46Purpose
- 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
47Role 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
48Classroom 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
49Purpose
- Easier to visualize objects
- Shows areas of misunderstanding
- Errors naturally occur that they solve
- Demonstrate reasons for OOP concepts
50Results
- 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 theyve ever done
51Group Code
- Used for difficult concepts
- Difficult for one person to do alone
- Used after extensive practice with topic
- Brainstorm a solution
52Procedure
- 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
53Group Code - Inheritance
54Group 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.
55public 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
56Results
- Observe students learn
- Subsequent groups come armed with an erasure
57Classroom 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
58Student 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)
59Classroom 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
60Sample
- Class Name
- Team2
- Inherit from
- Team1
- Variables
- int iT2
- String sT2
61Multiple Inheritance
62Results
- Groups communicate with groups
- Discover inheritance complexity
- Students suggest drawing UML diagram
- Entire class engaged debugging the code