Teaching Strategies
(Things I have found that work
well.)
Although a mathematics educator, I have taught Computer Programming for
over 20 years using a variety of programming languages. At the high
school level, the courses I taught were part of a two year program aimed
at the AB level of the Advanced Placement (AP) Examination in Computer
Science. In its conception, this two year program started beginning
programmers with a one year course using some form of BASIC, followed by
a one year course in Pascal at the Advanced Placement level. When the
College Board changed the AP language to C++, this format was changed to
utilize the C++ language across the entire program. It was found
that C++ "can" be successfully introduced in a foundation course as a
beginning language for even the most novice programmers. In 2003,
the College Board announced an upcoming change in the AP language
and the foundation course language became Java. The success of
using Java with beginning programmers surpassed the success of using
C++.
This Beginning Java course is designed to be an engaging first
course to programming in the Java language, and to foster an interest in
the field of computer science. The objective of this course is to
immerse the learner in the fundamentals of good programming style and
problem solving techniques without overwhelming the novice programmer.
These materials are appropriate for learners from grade 7 to adult. The
decision was made to offer exposure to graphics and GUI interfaces in
this foundation course, thus leaving most of the object oriented
programming (OOP) aspects of the language to a follow-up course.
Class Format:
After trying several different presentation
styles for beginning courses, I settled on the following procedures
which I find to work well. This method of presentation has been used in
classes ranging from 45 minutes to 90 minutes in duration (both
face-to-face and distance learning), and works equally well in all
formats.
Lessons:
Classes start with the "Lesson" - discussion of concepts, sample
programs, activities, - whatever the lesson entails.
When the physical environment allows, lessons are taught
with students not sitting at a computer. I find this
separation of student and computer during discussions to be
most beneficial. When seated at a computer during a
lesson, beginning students can be over confident and eager
to begin programming, often missing many of the nuances of
the lesson.
|
Lab Work: Following the lesson,
students work at a computer on the concepts presented.
Several small programming assignments are used to illustrate
the concepts of the lesson and expose students to different
problem solving situations. These smaller assignments prove
very beneficial in establishing a student's understanding
and application of the language and the programming
process. The more programming situations they encounter,
the better able students are to analyze new situations.
|
Checking Completed Work: While
the concept of using many smaller programming assignments is
beneficial, it can also be a bookkeeping nightmare. The
following "grading" process works well for me. Students
submit hard copies of every program. As programs are
finished, students can submit their hardcopies while I
continue to circulate the lab room answering questions. The
hardcopies of the daily smaller programming assignments are
checked for correctness and submission credit, but are not
numerically graded. Students receive a quiz grade per unit
(or per section in longer units) based upon the number of
daily programs submitted correctly. I maintain a check
sheet so students can quickly see which assignments they
might still owe. Unit projects, on the other hand, are
numerically graded and often require that I also "see" the
output on the student's screen.
|
Internet Access: Having long
ago developed my own web site to better communicate with my
students, I was even more interested in the "web site"
concept when my high school computers gained internet
access. Not only could my students now access materials
from home, but these materials could also be used in the
classroom. My web-based lessons for computer programming
took on new meaning. Using a projection device, I often
project the web pages onto a whiteboard during a lesson and
add additional notes or examples around the projected image
(oh, if I only had access to a SmartBoard). When students
begin working at their computers, they can open the web
pages to use as reference. This greatly saves on the amount
of "paper" I hand out. In addition, the web pages allow
24-7 access to the materials, which proves especially
helpful for students who are absent.
|
Computers: I have taught programming in a
multitude of environments: students working on stand-alone
machines; students working in networked computer labs from
accounts on a server; students working on laptops in a
wire-less environment; and students working independently in
an on-line virtual school environment. All environments,
while presenting different challenges, are workable. When
working in a networked setting, I find that issuing students
personalized business cards with their log-in information at
the beginning of the course works well. It gives an air of
sophistication to the course. Happy programming!
|
|