(Things I have found that work
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
to C++, this format was changed to utilize the C++ language across the
entire program. I found that C++ "can" be successfully
introduced in a foundation course as a beginning language for even the
most novice programmers.
This Introduction to
C++ course is designed to be an engaging first course to programming
in the C++ 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. While offering a solid programming foundation,
course should not prove overwhelming to the novice programmer.
These materials are appropriate for learners from grade 7 to adult.
(The object oriented programming (OOP) aspects of the C++ language
are left to a follow-up course.)
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
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
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
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
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.
Computer Science Main Page |
Resource CD |