Java Main Page | | Terms of Use

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!

Java Main Page | | Terms of Use