|
|
 |
 |
 |
|
Computer Science A Java Course Perspective
|
|
|  |
by Joseph Kmoch Washington High School Milwaukee, Wisconsin
 |
|
|  |
About Computer Science A
History of the Course
The Switch to Java
Teaching the Course
Using the Case Study
In Conclusion
About Computer Science A
According to the U.S. Department of Labor career information, seven of the fastest growing careers through 2010 heavily involve computers. All of these careers require additional education beyond high school in either technical colleges or universities. These careers require that a prospective employee develop abilities such as problem analysis, organizing a solution, and knowledge of computer control. The AP Computer Science A course is a great opportunity for students to have more than just introductory experience in these areas. In general, students develop quality problem solving skills.
The AP CS course is one of the few places in the high school curriculum where students can develop high-level thinking skills. I often fall back on the four steps to solving a problem outlined many years ago by George Polya: understand the problem, plan the solution, implement the solution, and test the solution. The AP CS course is more a study about the process to solve a problem than it is about the solution itself. These steps are fundamental to AP CS, fundamental to any of the computer-related careers noted by the U.S. Department of Labor, and indeed, fundamental to real success in almost any career field. Many post-secondary institutions have recognized the importance of these skills as well, often requiring a course like AP CS to be part of diverse curricula that includes courses in information technology, engineering, psychology, and business management.
History of the Course
The AP Computer Science curriculum has encouraged students to develop these skills since its inception in the 1983-84 school year. The Pascal language was first chosen as the implementation language, but as the field developed, there was a clear need to move toward an implementation language that would allow students to develop these skills more fully. Also, a shift occurred in the programming paradigm away from top-down design and stepwise refinement to the richer object-oriented paradigm. Thus, before the turn of the century, C++ became the implementation language. After only a few years, the limitations of C++ (combined with the need for students to experience object-oriented programming more deeply and the need to work within a safer environment) prompted yet another change. Beginning in the 2003-04 school year Java will be adopted as the implementation language for the course.
Throughout these changes in implementation languages, many of the concepts explored in this course have remained unchanged: algorithm development, the ability to think deeply and clearly about problems, and the need to informally study program verification through the development and use of pre/post conditions. This course is truly a computer science course and not an AP-level Pascal, C++, or Java course.
The Switch to Java
Beginning with the 2004 exam, students must be able to read and code solutions to problems using Java and its paradigm, object-orientation, on the exam. This does not mean that Java has to be the only language used in the one-year course, nor does it mean that Java should be the only language a student studies. I spend the first few weeks using other smaller languages (such as Karel J. Robot) to help students focus on the core skills of solution design, algorithm development, testing, and even program verification (by writing pre/post conditions and assertions about their code).
In some schools the AP CS course is the first and only computer science course students will take, and most certainly AP CS A is designed to address that fact. However, some students will be more successful if AP CS A is preceded by introductory courses that help students develop the skills necessary to be more successful in the demanding AP curriculum. These courses might include the study of modern versions of BASIC, Scheme, JavaScript, and Pascal languages. All of these languages can help students develop their problem-solving skills while providing an introduction to portions of the object-oriented paradigm if the course is designed and implemented carefully.
The AP CS A course must emphasize the current paradigm: object-oriented design and programming. This course should be taught so that this paradigm is prominent from the beginning -- putting off the regular use of classes until halfway into the course is a disservice to the students. A well-designed and implemented course will serve students long into the future, since object-orientation has become the approach used in other related information technology areas such as database design and networking.
Teaching the Course
My school does not have the luxury of offering both an AP CS A and AB course. Each year I start off teaching the course as an AB course because just about all of the concepts included in the Topic Outline areas of object-oriented design, program implementation, and program analysis are common to both. These ideas form the basis for any good course that purports to develop the process of problem solving.
Only in the Topic Outline areas of program (algorithm) analysis, standard data structures, and standard algorithms do the courses differ to a large degree. This is where I split the students and have those who are more interested and more capable pursue the additional AB topics as I continue to help the CS A students develop their skills. Even so, I often include the AP CS A students in the discussion of the AB topics because this can help them learn how important developing their skills can be.
Using the Case Study
Since this course is at least as much about process as it is about product, a case study has been included in the curriculum for several years. Since about 20 percent of the exam questions are based on knowledge of this case study, significant time must be spent on the case study -- study of it should integrated throughout the course to help students learn significant ideas in computer science. It could replace other problems you may use at various times.
The advantages of the case study include the mentor-apprentice approach where the student studies how the master programmer has thought through the solution. The student is exposed to discussions of the tradeoffs made in the development procedure. This is very valuable as a teaching tool to further enhance the students' internalization of problem-solving techniques and algorithm development.
The case study also allows students to more easily explore a large, multi-class solution designed using modern object-oriented techniques with Java. As such, the sections of the case study should be used as a primary teaching and learning vehicle for many early and more advanced areas of the course such as class development, class interactions, testing, inheritance, and dynamic binding. In addition, the case study can act as a professional development tool for the teacher in preparation for teaching the course.
In Conclusion
AP CS is very exciting to teach and for my students to take, particularly now with the inclusion of the object-oriented paradigm and its embodiment in Java. Many of my former students tell me how even after many years, the concepts we explored in the course remain relevant to their college courses and careers. The course is definitely time well spent for students and teachers alike!
Joseph W. Kmoch has taught computer science for 32 years in urban high schools in Milwaukee, Wisconsin. He has taught AP Computer Science since 1983 and has been a Reader and Question Leader for 19 of the 20 years the exam has been administered. He has led many sessions, workshops, and courses focused on the teaching of computer science, and recently completed a four-year appointment to the AP Computer Science Development Committee.
|
|
|
|
|
|