Maryland Mathematical Association of Two-Year Colleges (MMATYC) winter meetin...
2.3.tarek
1. An Active Learning Pedagogy for Teaching the
Programming Courses in a Community College Setting
AHMED TAREK
Cecil College
AFACCT ‘14 Conference
Prince George’s Community College
Session: 2.3 – January 09, 2014
11:40 A.M. – 12:50 P.M.
E-mail: atarek@cecil.edu
2. Presentation Outline (FOCUS: Community College Teaching
& Learning)
Content Layout in a basic Computer Science Course
Student Background in a Community College Programming
Course
Aligning Course Materials More Towards Student Learning – the
Issues Encountered on the Pathway
CECIL COLLEGE and Its Support in Implementing the Active
Learning Pedagogy – the Three Academic Monitoring Phases
(AMPs)
Active Learning Pedagogy Imbued to Student Learning
Outcomes of the Active Learning Approach
Comparison of Active Learning Pedagogy to Old-fashioned
Passive Style of Teaching Programming
3. Content Layout in A Programming-based CS Course
Most of the Computer Science courses involve Computer
Programming or Computer Software
For a Programming Oriented CS course, the community college
instructors are required to teach 4 basic components
How to create a computer program in an adopted programming
language from the scratch, then compile and execute it
The programming languages syntax for the adopted language
The programming language structures for the language adopted
Actual Computer Science core materials using the adopted
programming language
The focus of this discussion concentrates upon an effective, and
efficient teaching of the above four basic ingredients to the
community college learners coming from diverse backgrounds
4. 4 Basic Components Elaborated
Teaching how to create a computer program from the scratch,
then compile and run it
100% Interactive
The Instructor needs to show the entire process in the Classroom
Verify with each individual student to make sure they can perform the activity
Teaching the Syntactic Portion involves
Discussing the Syntax relating to the Core Computer Science concepts
Demonstrate programs involving the Syntax discussed
Verifying student perception on the discussed materials
All of these are required to be carried out when the class is in Session
Teaching the Programming Language Structures
This involves teaching the basic Control Structures in the programming language under use
Teaching different Selection Structures
Teaching Different Iterative Structures
Teaching other pertinent Control Structures (break, continue, etc.)
Discussion and Demonstrations are required to be done in-class
5. 4 Basic Components Elaborated Continued.
Teaching the Computer Science Core
Depending upon the nature of the course, the Instructor needs to
teach the core materials using the adopted Programming Language as
a Tool
This involves teaching Arrays, Lists, Stacks, etc.
Discuss applications for each one of the Items taught
Demonstrate applications as well as implementations of the Items
taught
Students learn the materials better in-class with hands-on activities
All of the above clearly articulate that a Hands-on Active
Learning Pedagogy is essential for the Student Learning of a
Computer Programming Oriented Course
Let’s Demonstrate these 4 basic Ingredients using an Example
6. Core Computer Science Problem Statement
Students will need to write a Java program that inputs 10 nonfractional numbers out of the keyboard into an Array and then add
those numbers in a loop. Finally, their program will need to display
the numbers as well the result of the addition.
In order for the students to successfully complete this assignment, they need to
know the following
What is an array
How to declare integer variables in Java
How to read keyboard inputs in Java
How to load values in an array
What is a loop
How to write loop control statements in Java
How to display values to the output console screen, etc.
For all of the above, students need to know Java Syntax for each one of them
Overall, they need to know how to write, edit, compile and execute their
6
Java program
7. Downloading & Installing Java Software
Though Java software is available for free from Oracle, the students need to know
The correct version to download
The System requirements, etc.
This demands knowledge on their
own computer
7
8. Downloading & Installing Java Software Continued.
Students need to visit the URL: http://www.java.com/en/download/index.jsp
Click on the button that says Free Java Download as follows:
Downloader shows the
recommended version
Students Agree & Free
Download starts as follows:
8
9. Downloading & Installing Java Software Continued.
Once Installing, the software notifies about the Status of Progress
Once Installed successfully, the confirmation screen appears as
follows:
9
10. jGRASP zip
jgrasp/jgra
jgrasp/jgra
The Installation Story is Not Done Yet!
Wait! You are not done with your software installation yet!
Need to Install a Java editor
An editor provides Interface for typing and editing Java programs
Instructs the Java compiler to compile programs and generate byte
code
Instructs the Java Virtual Machine (JVM) to execute the byte code
So, visit jGRASP editor home page at: http://www.jgrasp.org/ & click
on the Download link on the left pane
Find out the most suitable editor and click on the appropriate button
Editors are available for: Windows OS, Apple Mac OS X & Linux
Students follow the direction to download and install the jGRASP
editor on top of the already installed Java compiler
10
11. The Installation Story is Not Done Yet Continued.
Once
successfully
installed,
students receive notification
All these Installation activities
are 100% hands-on
They need Active Learning
Approach – as the installation
involves minute details
11
12. The Programming story Begins!
The programming story starts next
Students open the jGRASP editor and type in the World famous: “Hello
World!” program to begin their journey with the Java programming
So they learn about the basic skeleton of a Java program as follows:
class className {
public static void main (String args[]) {
Statements
}}
Towards this Endeavor, students learn the common Java output command:
System.out.println(“Output Message”);
Learn how to save a program with the class name that contains the method
main()
How to compile and execute Java programs
12
13. The Programming Story Continues!
Their fruit
follows:
of
the
loom
When they see an output from
their hard work – they feel
more confident and better
interested in programming
Thanks God! Everything that
they have learned so far are
hands-on & Active Learning
Oriented!
13
14. Teaching of Active Syntax to Novice Programmers
Student journey with the computer programming continues
Next the Instructor teaches Java Syntax
Teaches syntax for variable declaration, such as
dataType variable1, variable2; Example: int sum, no_elements;
Teaches syntax for Array declaration
dataType[] array_name = new dataType[array_size];
Example: int[] arr = new int[10];
Teaches syntax for comments that is ignored by the compiler
// or /* */ Example: // Java program for array calculations
Teaches syntax for keyboard data entry
Scanner Object_name = new Scanner(System.in);
dataType varname = Object_name.nextInt();
Example: Scanner keyin = new Scanner(System.in);
int val = Keyin.nextInt();
14
15. Teaching Active Syntax to the Novice Programmers Continued.
Teaches syntax for importing Java package & its significance
import java.packagename.class_name; Example: import java.util.*;
Teaches syntax for relational and arithmetic operations
<, <=, >, >=, ==, != *, +, -, /
Example:
if (i < 10) sum = sum + arr[i];
15
16. Teaching Language Structures
Next the Instructor teaches syntax to the Iterative for loop
for(initialization_expression; terminating_condition; update_expression)
{
Statements
}
Example follows: for(int i =0; i < 10; i++) {
sum = sum + arr[i];
}
Then the Instructor teaches syntax for String concatenation
String str2, str3;
String str1 = str2 + str3;
Example: System.out.println(“The sum of the array elements: “ + sum);
16
17. Teaching Computer Science Core concepts
Next, the Instructor teaches the concept pertaining to Prompt
Example: System.out.println(“Please input the next array element: “);
Following the Prompt & Prompting, the instructor teaches different core
concepts relating to the assignment
Example: Teaches array data structure and its implementation in Java.
int arr[10];
for(int i = 0; i < 10; i++)
{
arr[i] = i;
sum = sum + arr[i];
}
17
18. The Final Product
Students accumulate their various learning into a single output
product in Java as follows:
// This program reads in 10 integer elements from the
// keyboard to an array, and then adds those 10 array elements
import java.util.*;
class ArrayAddition {
public static void main(String args[])
{
Scanner keyin = new Scanner(System.in);
int sum = 0;
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
System.out.println("Please input the next array element: ");
arr[i] = keyin.nextInt();
sum = sum + arr[i];
}
System.out.println("The array elements are as follows: ");
for (int j = 0; j < 10; j++)
{
System.out.print(arr[j] + " ");
}
System.out.println();
System.out.println("The sum of the 10 array elements is: " + sum);
}}
18
20. Student Background Analysis
In a Community College setting, we have students coming to Programmingbased Computing courses with diverse skills & background
Some are inherently
programming
strong
and
skilled
in
computer
A few are a novice programmers and not so acquainted with
computers and computing
A good number of the students are bearing average skills of
computer programming
In such a diverse community, the instructional delivery needs to be
designed focusing the majority, keeping enough space for the relatively
weaker group as well
Also, enough encouragement is provided for the relatively stronger
population through bonus points and other incentives
20
21. Aligning Course Materials More Towards Student Learning
While hands-on active learning pedagogy helps align the course materials
more towards the student perceptions, but the relatively weaker group
remains as a concern for the Instructor
Therefore, the instructor needs to pay enough attention towards the student
skills in programming logic development as well
A possible approach is to help students gradually build up the strengths in
programming logic while learning the computing curricula through a
programming language as a tool
Following few slides articulate this pedagogical approach towards active
learning
21
22. Developing Skills of Programming Logic
In general, prior to coming to an Intro to Programming class, the
students are given the skills required to develop programming
logic at a lower level class
For instance, prior to CSC 109, students develop their logic based
skills in their CSC 106 Intro to Programming Logic class
These logic based skills are of paramount importance, since it
helps students
Think like a computer
Develop the computer problem solving skills
Develop the problem solving steps in a logical way
Visualize the control flow during the computation in a computer, while
the computer is solving the problems
Visualize how computer actually works and computes
22
23. Developing Skills of Programming Logic Continued.
Students coming to an Introductory programming class without
adequate knowledge or skills of programming logic face
Hard time in understanding computer programs
Hard time in writing codes
Hard time in analyzing the computational problems
Under these circumstances, the instructor needs to take a lead role
in remedying the students out of the situation
To help out this group of students
The instructor adopts an ACTIVE LEARNING APPROACH
Shows how to develop logic in solving a computer-based problem relating
to the day’s discussion
Shows each and every step in writing the code to solve the problem
Then assign the students with a similar problem
23
An Example follows:
24. Developing Skills of Programming Logic Continued.
Instructor shows the logic and code on how to write Java programs to work with
circles
Gives an in-class assignment to the students to write Java code to work with
rectangles
The details of the APPROACH / TECHNIQUE follows:
For circles, the instructor demonstrates how to write the Java Circle class as
follows:
class Circle
{
double radius; // Define radius of the circle
Circle() // Default Constructor
{ radius = 0.0; } // Set radius to 0.0
Circle(double r) // Regular Constructor
{ radius = r;}
// Class Methods
double get_radius()
// Return the radius of the circle
{ return radius; }
24
25. Developing Skills of Programming Logic Continued.
double get_area()
// Get the area of the circle. Use = 3.1416
{ return 3.1416*radius*radius; }
double get_circumference()
// Get the circumference of the circle
{ return 2.0*3.1416*radius; }
void set_radius(double rad) // Method to change the radius of the circle
{ radius = rad; }
} // The Closing Curly Brace to conclude the Circle class
Next the Instructor shows the students how to write another class called
UseCircle within the same Java file to use the above Circle class
The Instructor mentions them to include the public static void main(String
args[]) method (the driver method) within this UseCircle class
The Instructor wouldn’t forget to mention them to include all Java code that
would use the class Circle to put inside the public static void main
A possible implementation of the class UseCircle follows:
25
26. Developing Skills of Programming Logic Continued.
class UseCircle {
public static void main(String args[]) { Circle circ = new Circle(); // Using Default Const.
circ.radius = 10; // Set radius using data member within the Circle class through a Circle object
System.out.println( "The radius of the circle is : " + circ.get_radius() );
System.out.println( "The area of the circle is : " + circ.get_area() );
System.out.println( "The circumference of the circle is : " + circ.get_circumference() );
circ. set_radius(20.0); // Change radius of the circle to 20.
System.out.println("After changing the radius: ");
System.out.println( "The radius of the circle is : " + circ.get_radius() ); // Show new radius
System.out.println( "The area of the circle is : " + circ.get_area() ); // New area
System.out.println( "The circumference of the circle is : " + circ.get_circumference() );
// Calculate new circumference for the circle
} } // First curly brace closes the method main. The second one closes the class UseCircle
Following shows a screen shot of the output from the above Java program’s execution.
26
28. Developing Skills of Programming Logic Continued.
As an indicator of their perception to the learning of Programming Logic, next the
Instructor would ask them to write a class for Rectangle and would tell to write
another class that contains public static void main(String args[]) that would make use
of the rectangle class.
A possible implementation for this in-class, hands-on assignment follows:
// In-class Hands-on Assignment
class Rectangle
{
double width;
double length;
// Default Constructor
Rectangle()
{
width = 0.0;
length = 0.0;
}
// Regular Constructor
Rectangle(double w, double l)
{
width = w;
length = l;
}
28
29. Developing Skills of Programming Logic Continued.
// Class Methods
double get_width() // Get the width of the rectangle
{
return width;
}
double get_length() // Get the length of the rectangle
{
return length;
}
double area() // Get the area of the rectangle
{
return width*length;
}
double circumference() // Get circumference of the rectangle
{
return (width+length)*2;
}
}
void set_sides (double w, double l)
{
width = w;
length = l;
}
29
30. Developing Skills of Programming Logic Continued.
// Following class in the same Java file uses the Rectangle class.
class UseRectangle
{
public static void main(String [] args)
{
Rectangle rect = new Rectangle(20, 30);
System.out.println( "The width of the rectangle is : " + rect.get_width() );
System.out.println( "The length of the rectangle is : " + rect.get_length() );
System.out.println( "The area of the rectangle is : " + rect.area() );
rect.set_sides(40, 50);
System.out.println( "The width of the rectangle is : " + rect.get_width() );
System.out.println( "The length of the rectangle is : " + rect.get_length() );
System.out.println( "The area of the rectangle is : " + rect.area() );
}
}
30
31. Developing Skills of Programming Logic Continued.
Following is a screen capture of the output from this hands-on in-class
assignment
31
32. Active Learning at Cecil
Active Learning is always Welcomed at Cecil College as a rapidly advancing
institution
Active Learning Pedagogy (ALP) is reinforced by three Academic Monitoring
Phases (AMPs) at Cecil
AMPs help the College track down the student progress during different
stages of the regular semesters (spring and fall) in each of our classes and help
to alert the students who are distracted from their academic goals, help out
the relatively weaker groups as well as help to bring the deviated groups back
to track again
Towards the beginning of the semester, each instructor is sent a note to visit
his or her MyCecil Account (a website maintained by the college), and
complete the Academic Monitoring Phase I by tracking down student
attendance and academic progress
The response received from the faculty helps the Academic Advising contact
the identified student groups with academic and/or attendance concerns and
32
helps to follow-up with them
34. Active Learning Reinforcement at Cecil
Towards the middle of the semester, the Instructor receives the Notice for
Academic Monitoring Phase II and completes Phase II by tracking student
attendance and academic progress
This helps the college to identify students with constant concerns since the
beginning of the semester and take stronger actions to bring that group of
students to track
This also helps Academic Programs track student retention and success as
well as the outcomes of any previous follow-ups from the Academic Advising
At the same time, Academic Advising can measure the fruitfulness of their
follow-up procedures and may adopt the necessary corrective means
For instance, following is an excerpt from Academic Monitoring Phase II
notice to the faculty:
“! Over 300 phone calls and 350 letters were completed to students on
your behalf to support course success! Together our efforts will have an
impact…now onto Phase II!”
34
36. Active Learning Reinforced At Cecil
Towards three quarter of the semester, prior to the Final Course Withdrawal
deadline, faculty receives their Notice to complete Academic Monitoring
Phase III
This provides the college with the final opportunity of the semester to track
down the students with severe academic and attendance deficiency, and helps
the College to take the final corrective and follow-up measures
Also, the Phase III Notice incorporates a faculty participation statistics as well
as the statistics on the number of letters issued to the students who are
lagging behind from Monitoring Phases I and II.
These college issued letters try to impact students prior to their final Course
Withdrawal Date for the semester
Following is an excerpt from the most recent AMP III:
536 letters were mailed and many types of phone calls were made to
students on your behalf to support course success! Let’s continue to impact
students through Academic Monitoring III – before the withdrawal date of
November 5th, 2013 (full semester classes). Thank you faculty!
36
38. Active Learning Pedagogy Infused to Student Learning
With hands-on, students learn better
With computing, a hands-on student learning approach is imperative
Previous statistics shows that when the instructor pays more attention to the class
long lectures and heavy homework assignments, it has impacted students in the
following negative ways
Students pay less attention to the class lecture, since they usually do not have any obligation to
show the mastery of the learned or delivered class lecture materials
They are reluctant to completing their homework assignments. Quite often, either they do not
turn in the homework assignments or copy the assignment from a peer in the class
On the other hand, an hands-on active learning pedagogy has impacted the student
learning in the following positive ways:
Student pay more attention to the classroom discussion as they know they will be told to do
some activities following the discussion that will affect their grades
They remain under constant supervision of the Instructor in the classroom so that they have
less chance of cheating or copying the assignment
Student-Faculty interaction takes up the desired shape, since students have more opportunities
for a faculty interaction and the faculty support
The learnt materials stay with them for a longer time compared to the traditional way of
learning
38
39. Outcomes of the Active Learning Approach
Active Learning is a modern, scientific way of learning materials in a face-toface classroom environment as well
as for Online, Distance Learning Mode
Students learn the materials better
Students learn hands-on
Better Faculty-Student Interactions
Better clarifications for the students
Direct help and support available from the faculty to the students
Students are able to apply their learning better during their work life
Active Learning later helps with the Student’s Lifelong Learning efforts as
he/she has better perception and depth of the materials learned
39
41. Active Learning Vs. Passive Learning – A Comparison
Continued.
Active Learning helps retain the knowledge earned whereas
passive, all lecture style of learning drains out the knowledge
Active Learning Pedagogy is composed of all the good ingredients,
which are essential to learning Computing and the Computer
Science
Computing as a modern practice deserves an Active Learning
Infused Pedagogy by its very nature
When it comes to computing, the Active Learning Strategy
discussed infuses 3C’s of learning focused instructional delivery –
Cognitive Learning, Constructive Learning & Cooperative
Learning, experienced through the in-class idea exchange in
solving a Computer Science programming problem
These 3C’s are very hard to realize in a passive learning
environment as there is little to no chance of interactions
41
42. Conclusions
Research shows that students learn better with hands-on active
pedagogy when it comes to computer programming
So for teaching a Computer Programming oriented CS course
Instructor needs to teach the Computing materials
At the same time, needs to be careful about student use of Computer
Programs in mastering the materials
The best solution will be to adopt the following Strategic Steps in Teaching:
Discuss the Computing materials for a portion of the class time
Articulate a programming example that demonstrates an application of the concept
delivered
Assign students in the class with a similar computer programming problem that
solves a similar computing problem discussed during the class
Help out students in solving the assigned problem
This pedagogy helps students retain the class discussion materials in brain as well
as learn the computer programming in solving the related computational problems
The instructor can ensure that the students are actually involved in learning, and
are not doing something else - such as cheating code from somebody else
42
44. Conclusion Continued.
In Community Colleges, the Teaching & Learning is different, as
Community College Education is open to the public in general
As a result, the Community College Learning environment differs
significantly from that of a traditional 4-year institution
The Community College faculty needs to shift the teaching style
from the Outmoded Institutional Approach to a more Hands-on,
Student Centered Active Learning Pedagogy
The focus lies to a Generalized Teaching Strategy for people of
all ages, with diverse learning abilities, and students of all
flavors – both Traditional & Non-traditional
44