AP CS Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 182 [warning: Documents this large are best viewed by clicking the View PDF Link!]

Teacher’s Guide
connect to college success
www.collegeboard.com
Deborah Power Carter
Lancaster Country Day School
Lancaster, Pennsylvania
AP® Computer Science
AP® Computer Science
Teachers Guide
Deborah Power Carter
Lancaster Country Day School
Lancaster, Pennsylvania
ii
The College Board: Connecting Students to College
Success
The College Board is a not-for-profit membership association whose mission is to connect students to
college success and opportunity. Founded in 1900, the association is composed of more than 5,000 schools,
colleges, universities, and other educational organizations. Each year, the College Board serves seven
million students and their parents, 23,000 high schools, and 3,500 colleges through major programs and
services in college admissions, guidance, assessment, financial aid, enrollment, and teaching and learning.
Among its best-known programs are the SAT®, the PSAT/NMSQT®, and the Advanced Placement Program®
(AP®). The College Board is committed to the principles of excellence and equity, and that commitment is
embodied in all of its programs, services, activities, and concerns.
For further information, visit www.collegeboard.com.
© 2007 The College Board. All rights reserved. College Board, Advanced Placement Program, AP, AP
Central, AP Vertical Teams, Pre-AP, SAT, and the acorn logo are registered trademarks of the College
Board. AP Potential and connect to college success are trademarks owned by the College Board. PSAT/
NMSQT is a registered trademark of the College Board and National Merit Scholarship Corporation. All
other products and services may be trademarks of their respective owners. Visit the College Board on the
Web: www.collegeboard.com.
ii
iii
Contents
Welcome Letter from the College Board ............................................................. v
Equity and Access ....................................................................................................vii
Participating in the AP Course Audit .................................................................xi
Preface ..........................................................................................................................xii
Chapter 1. About AP Computer Science ................................................................... 1
Overview: Past, Present, Future ............................................................................................. 1
Course Description Essentials ................................................................................................ 2
Key Concepts and Skills ........................................................................................................... 3
Chapter 2. Advice for AP Computer Science Teachers ........................................... 9
Getting Started: Help from the College Board....................................................................... 9
Real Teachers, Real Advice ................................................................................................... 13
Chapter 3. Course Organization ...............................................................................22
Syllabus Development ............................................................................................................ 22
Six Sample Syllabi .................................................................................................................. 23
Sample Syllabus 1 (AP Computer Science A) ..................................................................... 25
Sample Syllabus 2 (AP Computer Science A) ..................................................................... 32
Sample Syllabus 3 (AP Computer Science A) ..................................................................... 39
Sample Syllabus 4 (AP Computer Science AB) ................................................................... 49
Sample Syllabus 5 (AP Computer Science AB) ................................................................... 56
Sample Syllabus 6 (AP Computer Science AB) ................................................................... 62
Chapter 4. The AP Exams in Computer Science ................................................... 73
All About the Exams ............................................................................................................. 73
Exam Preparation ................................................................................................................... 75
After the Exam ........................................................................................................................ 80
iv
Chapter 5. Resources for Teachers ...........................................................................82
How to Address Limited Resources ..................................................................................... 82
Resources ................................................................................................................................ 86
Professional Development ..................................................................................................... 97
Appendix A. GridWorld Case Study ...................................................................... 101
Incorporating the Case Study Throughout Your Course .................................................. 101
Appendix B. Supplemental Documents ................................................................. 108
Contents (by Syllabus Contributor) .................................................................................... 108
Contents
v
Welcome Letter from the College Board
Dear AP® Teacher:
Whether you are a new AP teacher, using this AP Teacher’s Guide to assist in developing a syllabus for the
first AP course you will ever teach, or an experienced AP teacher simply wanting to compare the teaching
strategies you use with those employed by other expert AP teachers, we are confident you will find this
resource valuable. We urge you to make good use of the ideas, advice, classroom strategies, and sample
syllabi contained in this Teacher’s Guide.
You deserve tremendous credit for all that you do to fortify students for college success. The nurturing
environment in which you help your students master a college-level curriculum—a much better atmosphere
for one’s first exposure to college-level expectations than the often large classes in which many first-year
college courses are taught—seems to translate directly into lasting benefits as students head off to college.
An array of research studies, from the classic 1999 U.S. Department of Education study Answers in the
Tool Box to new research from the University of Texas and the University of California, demonstrate
that when students enter high school with equivalent academic abilities and socioeconomic status, those
who develop the content knowledge to demonstrate college-level mastery of an AP Exam (a grade of 3
or higher) have much higher rates of college completion and have higher grades in college. The 2005
National Center for Educational Accountability (NCEA) study shows that students who take AP have
much higher college graduation rates than students with the same academic abilities who do not have
that valuable AP experience in high school. Furthermore, a Trends in International Mathematics and
Science Study (TIMSS, formerly known as the Third International Mathematics and Science Study) found
that even AP Calculus students who score a 1 on the AP Exam are significantly outperforming other
advanced mathematics students in the United States, and they compare favorably to students from the
top-performing nations in an international assessment of mathematics achievement. (Visit AP Central® at
apcentral.collegeboard.com for details about these and other AP-related studies.)
For these reasons, the AP teacher plays a significant role in a student’s academic journey. Your AP
classroom may be the only taste of college rigor your students will have before they enter higher education.
It is important to note that such benefits cannot be demonstrated among AP courses that are AP courses in
name only, rather than in quality of content. For AP courses to meaningfully prepare students for college
success, courses must meet standards that enable students to replicate the content of the comparable college
class. Using this AP Teacher’s Guide is one of the keys to ensuring that your AP course is as good as (or
even better than) the course the student would otherwise be taking in college. While the AP Program does
not mandate the use of any one syllabus or textbook and emphasizes that AP teachers should be granted
the creativity and flexibility to develop their own curriculum, it is beneficial for AP teachers to compare
their syllabi not just to the course outline in the official AP Course Description and in chapter 3 of this
guide, but also to the syllabi presented on AP Central, to ensure that each course labeled AP meets the
standards of a college-level course. Visit AP Central® at apcentral.collegeboard.com for details about the AP
Course Audit, course-specific Curricular Requirements, and how to submit your syllabus for AP Course
Audit authorization.
vi
Welcome Letter
As the Advanced Placement Program® continues to experience tremendous growth in the twenty-first
century, it is heartening to see that in every U.S. state and the District of Columbia, a growing proportion
of high school graduates have earned at least one grade of 3 or higher on an AP Exam. In some states, more
than 20 percent of graduating seniors have accomplished this goal. The incredible efforts of AP teachers
are paying off, producing ever greater numbers of college-bound seniors who are prepared to succeed in
college. Please accept my admiration and congratulations for all that you are doing and achieving.
Sincerely,
Marcia Wilbur
Director, Curriculum and Content Development
Advanced Placement Program
vii
Equity and Access
In the following section, the College Board describes its commitment to achieving equity in the AP
Program.
Why are equitable preparation and inclusion important?
Currently, 40 percent of students entering four-year colleges and universities and 63 percent of students at
two-year institutions require some remedial education. This is a significant concern because a student is
less likely to obtain a bachelors degree if he or she has taken one or more remedial courses.
Nationwide, secondary school educators are increasingly committed not just to helping students
complete high school but also to helping them develop the habits of mind necessary for managing the
rigors of college. As Educational Leadership reported in 2004:
The dramatic changes taking place in the U.S. economy jeopardize the economic future of students
who leave high school without the problem-solving and communication skills essential to success
in postsecondary education and in the growing number of high-paying jobs in the economy. To
back away from education reforms that help all students master these skills is to give up on the
commitment to equal opportunity for all.
Numerous research studies have shown that engaging a student in a rigorous high school curriculum such
as is found in AP courses is one of the best ways that educators can help that student persist and complete
a bachelor’s degree. However, while 57 percent of the class of 2004 in U.S. public high schools enrolled in
higher education in fall 2004, only 13 percent had been boosted with a successful AP experience in high
school. Although AP courses are not the only examples of rigorous curricula, there is still a significant
gap between students with college aspirations and students with adequate high school preparation to fulfill
those aspirations.
Strong correlations exist between AP success and college success. Educators attest that this is partly
because AP enables students to receive a taste of college while still in an environment that provides more
support and resources for students than do typical college courses. Effective AP teachers work closely
with their students, giving them the opportunity to reason, analyze, and understand for themselves. As a
result, AP students frequently find themselves developing new confidence in their academic abilities and
discovering their previously unknown capacities for college studies and academic success.
1. Andrea Venezia, Michael W. Kirst, and Anthony L. Antonio, Betraying the College Dream: How Disconnected K–12 and Postsecondary
Education Systems Undermine Student Aspirations (Palo Alto, Calif.: The Bridge Project, 2003), 8.
2. Frank Levy and Richard J. Murnane, “Education and the Changing Job Market.” Educational Leadership 62 (2) (October 2004): 83.
3. In addition to studies from University of California–Berkeley and the National Center for Educational Accountability (2005), see the
classic study on the subject of rigor and college persistence: Clifford Adelman, Answers in the Tool Box: Academic Intensity, Attendance
Patterns, and Bachelor’s Degree Attainment (Washington, D.C.: U.S. Department of Education, 1999).
4. Advanced Placement Report to the Nation (New York: College Board, 2005).
5. Wayne Camara, “College Persistence, Graduation, and Remediation,” College Board Research Notes (RN-19) (New York: College Board,
viii
Equity and Access
Which students should be encouraged to register for AP
courses?
Any student willing and ready to do the work should be considered for an AP course. The College Board
actively endorses the principles set forth in the following Equity Policy Statement and encourages schools
to support this policy.
The College Board and the Advanced Placement Program encourage teachers, AP Coordinators,
and school administrators to make equitable access a guiding principle for their AP programs. The
College Board is committed to the principle that all students deserve an opportunity to participate in
rigorous and academically challenging courses and programs. All students who are willing to accept
the challenge of a rigorous academic curriculum should be considered for admission to AP courses.
The Board encourages the elimination of barriers that restrict access to AP courses for students from
ethnic, racial, and socioeconomic groups that have been traditionally underrepresented in the AP
Program. Schools should make every effort to ensure that their AP classes reflect the diversity of their
student population.
The fundamental objective that schools should strive to accomplish is to create a stimulating AP program
that academically challenges students and has the same ethnic, gender, and socioeconomic demographics as
the overall student population in the school. African American and Native American students are severely
underrepresented in AP classrooms nationwide; Latino student participation has increased tremendously,
but in many AP courses Latino students remain underrepresented. To prevent a willing, motivated student
from having the opportunity to engage in AP courses is to deny that student the possibility of a better
future.
Knowing what we know about the impact a rigorous curriculum can have on a student’s future, it is
not enough for us simply to leave it to motivated students to seek out these courses. Instead, we must reach
out to students and encourage them to take on this challenge. With this in mind, there are two factors to
consider when counseling a student regarding an AP opportunity:
1. Student motivation
Many potentially successful AP students would never enroll if the decision were left to their own initiative.
They may not have peers who value rigorous academics, or they may have had prior academic experiences
that damaged their confidence or belief in their college potential. They may simply lack an understanding
of the benefits that such courses can offer them. Accordingly, it is essential that we not gauge a student’s
motivation to take AP until that student has had the opportunity to understand the advantages—not just
the challenges—of such course work.
Educators committed to equity provide all students in a school with an understanding of the benefits of
rigorous curricula. Such educators conduct student assemblies and/or presentations to parents that clearly
describe the advantages of taking an AP course and outline the work expected of students. Perhaps most
important, they have one-on-one conversations with the students in which advantages and expectations are
placed side by side. These educators realize that many students, lacking confidence in their abilities, will
be listening for any indication that they should not take an AP course. Accordingly, such educators, while
frankly describing the amount of homework to be anticipated, also offer words of encouragement and
support, assuring the students that if they are willing to do the work, they are wanted in the course.
The College Board has created a free online tool, AP Potential™, to help educators reach out to
students who previously might not have been considered for participation in an AP course. Drawing
upon data based on correlations between student performance on specific sections of the PSAT/NMSQT®
ix
Equity and Access
and performance on specific AP Exams, AP Potential generates rosters of students at your school who
have a strong likelihood of success in a particular AP course. Schools nationwide have successfully
enrolled many more students in AP than ever before by using these rosters to help students (and their
parents) see themselves as having potential to succeed in college-level studies. For more information, visit
http://appotential.collegeboard.com.
Actively recruiting students for AP and sustaining enrollment can also be enhanced by offering
incentives for both students and teachers. While the College Board does not formally endorse any one
incentive for boosting AP participation, we encourage school administrators to develop policies that will
best serve an overarching goal to expand participation and improve performance in AP courses. When
such incentives are implemented, educators should ensure that quality verification measures such as the AP
Exam are embedded in the program so that courses are rigorous enough to merit the added benefits.
Many schools offer the following incentives for students who enroll in AP:
Extra weighting of AP course grades when determining class rank
Full or partial payment of AP Exam fees
On-site exam administration
Additionally, some schools offer the following incentives for teachers to reward them for their efforts to
include and support traditionally underserved students:
Extra preparation periods
Reduced class size
Reduced duty periods
Additional classroom funds
Extra salary
2. Student preparation
Because AP courses should be the equivalent of courses taught in colleges and universities, it is important
that a student be prepared for such rigor. The types of preparation a student should have before entering
an AP course vary from course to course and are described in the official AP Course Description book for
each subject (available as a free download at apcentral.collegeboard.com).
Unfortunately, many schools have developed a set of gatekeeping or screening requirements that go far
beyond what is appropriate to ensure that an individual student has had sufficient preparation to succeed
in an AP course. Schools should make every effort to eliminate the gatekeeping process for AP enrollment.
Because research has not been able to establish meaningful correlations between gatekeeping devices and
actual success on an AP Exam, the College Board strongly discourages the use of the following factors as
thresholds or requirements for admission to an AP course:
Grade point average
Grade in a required prerequisite course
Recommendation from a teacher
x
Equity and Access
AP teacher’s discretion
Standardized test scores
Course-specific entrance exam or essay
Additionally, schools should be wary of the following concerns regarding the misuse of AP:
Creating “Pre-AP courses” to establish a limited, exclusive track for access to AP
Rushing to install AP courses without simultaneously implementing a plan to prepare students and
teachers in lower grades for the rigor of the program
How can I ensure that I am not watering down the quality of my course as I admit
more students?
Students in AP courses should take the AP Exam, which provides an external verification of the extent
to which college-level mastery of an AP course is taking place. While it is likely that the percentage
of students who receive a grade of 3 or higher may dip as more students take the exam, that is not an
indication that the quality of a course is being watered down. Instead of looking at percentages, educators
should be looking at raw numbers, since each number represents an individual student. If the raw number
of students receiving a grade of 3 or higher on the AP Exam is not decreasing as more students take the
exam, there is no indication that the quality of learning in your course has decreased as more students have
enrolled.
What are schools doing to expand access and improve AP performance?
Districts and schools that successfully improve both participation and performance in AP have
implemented a multipronged approach to expanding an AP program. These schools offer AP as capstone
courses, providing professional development for AP teachers and additional incentives and support for
the teachers and students participating at this top level of the curriculum. The high standards of the AP
courses are used as anchors that influence the 612 curriculum from the “top down.Simultaneously,
these educators are investing in the training of teachers in the pre-AP years and are building a vertically
articulated, sequential curriculum from middle school to high school that culminates in AP courses—a
broad pipeline that prepares students step-by-step for the rigors of AP so that they will have a fair shot at
success in an AP course once they reach that stage. An effective and demanding AP program necessitates
cooperation and communication between high schools and middle schools. Effective teaming among
members of all educational levels ensures rigorous standards for students across years and provides them
with the skills needed to succeed in AP. For more information about Pre-AP® professional development,
including workshops designed to facilitate the creation of AP Vertical Teams® of middle school and high
school teachers, visit AP Central.
xi
Participating in the AP Course Audit
Overview
The AP Course Audit is a collaborative effort among secondary schools, colleges, and universities, and the
College Board. For their part, schools deliver college-level instruction to students and complete and return
AP Course Audit materials. Colleges and universities work with the College Board to define elements
common to college courses in each AP subject, help develop materials to support AP teaching, and receive
a roster of schools and their authorized AP courses. The College Board fosters dialogue about the AP
Course Audit requirements and recommendations and reviews syllabi.
Starting in the 2007-08 academic year, all schools wishing to label a course “AP” on student transcripts,
course listings, or any school publications must complete and return the subject-specific AP Course Audit
form, along with the course syllabus, for all sections of their AP courses. Approximately two months after
submitting AP Course Audit materials, schools will receive a legal agreement authorizing the use of the
AP” trademark on qualifying courses. Colleges and universities will receive a roster of schools listing the
courses authorized to use the AP” trademark at each school.
Purpose
College Board member schools at both the secondary and college levels requested an annual AP Course
Audit in order to provide teachers and administrators with clear guidelines on curricular and resource
requirements that must be in place for AP courses and to help colleges and universities better interpret
secondary school courses marked “AP” on students’ transcripts.
The AP Course Audit form identifies common, essential elements of effective college courses, including
subject matter and classroom resources such as college-level textbooks and laboratory equipment. Schools
and individual teachers will continue to develop their own curricula for AP courses they offer—the AP
Course Audit will simply ask them to indicate inclusion of these elements in their AP syllabi or describe
how their courses nonetheless deliver college-level course content.
AP Exam performance is not factored into the AP Course Audit. A program that audited only those
schools with seemingly unsatisfactory exam performance might cause some schools to limit access to
AP courses and exams. In addition, because AP Exams are taken and exam grades reported after college
admissions decisions are already made, AP course participation has become a relevant factor in the college
admissions process. On the AP Course Audit form, teachers and administrators attest that their course
includes elements commonly taught in effective college courses. Colleges and universities reviewing
students’ transcripts can thus be reasonably assured that courses labeled “AP” provide an appropriate level
and range of college-level course content, along with the classroom resources to best deliver that content.
For more information
You should discuss the AP Course Audit with your department head and principal. For more information,
including a timeline, frequently asked questions, and downloadable AP Course Audit forms, visit
apcentral.collegeboard.com/courseaudit.
xii
Preface
Congratulations! Youre embarking on an exciting adventure, teaching AP Computer Science (AP CS), and
this Teacher’s Guide was designed to help you prepare for that challenge.
AP teachers have different backgrounds. Perhaps,
youre a first-time teacher or a seasoned veteran;
you’ve been teaching computer science for a while, or this is your first computer science course;
your background is in computer science, mathematics, business, or an entirely different field;
you have a degree in computer science, earned a living as a programmer, or studied computer
science on your own; or
you lobbied your school administration to offer AP Computer Science or have been drafted to
teach it.
Regardless of how you got to this point in your journey, youre sure to find an abundance of helpful advice
from teachers who have followed a similar path.
Chapter 1, About AP Computer Science, begins with an overview by Judith Hromcik from Arlington
High School in Arlington, Texas, a former member of the AP Computer Science Development Committee.
Then there is a review of the AP Computer Science Course Description, a separate publication that includes
curriculum outlines for both AP Computer Science A and AP Computer Science AB, along with a detailed
Commentary. The chapter continues with information on prerequisites for computer science students,
followed by a description of the major concepts of AP CS.
Chapter 2, Advice for AP Computer Science Teachers, provides instructions for preparing to teach
AP Computer Science. Youll find information about helpful College Board resources, as well as advice
from seasoned teachers on a wide range of subjects, from philosophical to practical. Even experienced
teachers are sure to find some helpful suggestions here.
Chapter 3, Course Organization, offers guidance for planning your course syllabus. This chapter includes
six complete syllabi from experienced computer science teachers: four high school AP Computer Science
teachers and two university instructors of introductory computer science courses. There are three syllabi
each for AP CS A and AP CS AB. In addition to the course planner, each syllabus contributor has included
strategies for teaching and evaluating, as well as a detailed list of resources.
Chapter 4, The AP Exams in Computer Science, has information on the format and content of the exams,
as well as scoring information, advice for preparing your students, and a list of sources for practice
questions. The chapter concludes with some challenging and fun activities to help keep students engaged in
the days or weeks after they have taken the exams.
Chapter 5, Resources for Teachers, begins with suggestions for making the most of limited resources,
including proven advice from AP Computer Science teachers. This chapter has several lists of teaching
resources, including textbooks, software, instructor materials, and videos/DVDs, plus a section on
professional development opportunities offered by the College Board.
xiii
Appendix A, GridWorld Case Study, provides a lot of tips for teaching your course with the case study,
including one teacher’s detailed suggestions for incorporating it throughout the course. A list of outside
resources for supplementing the case study and making it fun is included.
Appendix B, Supplemental Documents, includes copies of student activities from chapter 3’s syllabus
contributors. Youll find practice worksheets, review notes, and lab assignments, along with any required
source code.
Both new and experienced teachers are sure to find ideas and inspiration to help keep their courses fresh
and interesting. The journey ahead wont be easy, and you should immediately remove “complacent” from
your vocabulary, but I promise you an exciting and challenging adventure!
Debbie Carter
Preface
Dedication: To Bill, whose constant, loving support made this
book possible.
Debbie Carter teaches AP Computer Science at Lancaster
Country Day School in Lancaster, Pennsylvania, where she also
facilitates the use of technology by teachers and students. She
has served the AP Computer Science community as a workshop
consultant, AP Exam Reader, and Question Leader, as well as
through various professional development committees. She also
serves on the board of directors for the Computer Science Teachers
Association.
1
Chapter 1
About AP Computer Science
Overview: Past, Present, Future
When I began thinking about what I would write for this section of the Teachers Guide, I decided to find
a definition of “computer science.So, I went to Google and typed in: “What is computer science?” This is
the definition that I found:
Computer Science: The systematic study of computing systems and computation. The body of
knowledge resulting from this discipline contains theories for understanding computing systems and
methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of
analysis and verification; and knowledge representation and implementation.6
The College Board added computer science to the Advanced Placement Program in the 1983-84
academic year; as the discipline has evolved, the AP Computer Science course and exams have also
changed. One example is language. Pascal, which was created to introduce students to programming, was
the first language used in AP Computer Science. At the time, it was the best vehicle to teach the computer
science concepts of problem solving, algorithms, logic, and design. Pascal was a structured, modular
language that allowed recursion, pointers, and user-defined data types. It served AP CS well for 15 exam
cycles.
In the early 1990s it became clear that colleges were moving away from Pascal toward languages that
allowed the creation of abstract data types that could be written in separate modules and incorporated
into any program. Object-oriented programming was being taught in first- and second-year college-
level computer science courses. So, the AP Computer Science Development Committee chose C++ as
the language that would best keep the AP courses comparable to their college counterparts, and teachers
learned a new syntax as well as how to design and implement classes. The AP subset for C++ did not
include inheritance, however, so they were really teaching object-based programming instead of object-
oriented programming.
Between the time that the decision was made to switch to C++ and the first AP Exam in C++ in
1999, Java came onto the scene. Java is a safer language than C++ and has a clean way of implementing
inheritance. At the 1999 AP Reading, we were already hearing speculation that Java was on the way—and
indeed, Java became the new language for AP Computer Science in 2004. It was chosen because it was
judged to be one of the best available languages to teach the fundamental concepts that colleges require
beginning computer science students to know, and because a significant percentage of colleges are currently
using it as their introductory language, increasing the likelihood that AP students will receive college credit
for their work.
6. “Glossary,” High Performance Computing and Communications: Towards a National Information Infrastructure (National Coordination
Office for Information Technology and Development). www.hpcc.gov/pubs/blue94/section.6.html.
1
2
Look back at the definition of computer science. With all three languages, Pascal, C++, and Java, AP
CS instructors have taught and are teaching the concepts listed in this definition. The design methodology
has changed, and so has the knowledge representation and implementation, but we are still teaching these
essential principles.
What will happen in the future? Is there a new language on the horizon? I dont know. I do know that
computer science is a dynamic field. As it changes and grows, so will AP Computer Science.
Judith Hromcik
AP Computer Science Teacher
Arlington High School
Arlington, Texas
For more details about the transitions in the AP Computer Science program, see Susan Horwitz’s
article, “And On to Java,available on the Course Home Pages at apcentral.collegeboard.com/compscia or
apcentral.collegeboard.com/compsciab [AP Central > Computer Science A (or AB) Course Home Page]7
Course Description Essentials
The AP Computer Science Course Description serves as an AP teacher’s primary resource for information
on the courses and exams. The Course Description outlines course content, explains the kinds of skills that
students are expected to demonstrate, and gives valuable information about the exams. Throughout this
Teacher’s Guide, you will be referred back to the Course Description; it will be invaluable as you plan and
teach AP Computer Science, especially during your first year, but regularly thereafter.
The Course Description includes:
General AP Program information
Goals for the Computer Science courses
The all-important Topic Outline, which details concepts that will be covered on the AP CS Exams
A Commentary on the Topic Outline, with examples and some language-specific guidelines
Information about case studies
Sample multiple-choice questions, with answers
Sample free-response questions, with suggested solutions
The AP CS Java Subset (language features and standard library methods)
Implementation classes for linked list and tree nodes (for use when students implement their own
linked lists and binary trees)
The AP Computer Science Development Committee, a group of six teachers from secondary schools
and colleges in different parts of North America, is responsible for setting the direction of the program
and maintaining the Course Description. In consultation with the computer science Assessment Specialists
at ETS, the committee is also responsible for creating the exams. In addition, the Chief Reader, a college
7. Throughout this Teacher’s Guide, you’ll find references to content on AP Central. For easy recognition, navigation shortcuts will be
shown in brackets.
Chapter 1
3
faculty member who coordinates the scoring of the free-response questions at the annual AP Reading,
aids in the development process. The Chief Reader attends the meetings of the Development Committee
to ensure that the exams’ free-response questions can be scored reliably. (See chapter 4 for information on
how AP Computer Science Exams are scored.)
There are no computing prerequisites for either AP Computer Science course; each is designed to
serve as a first course in computer science for students with no prior computing experience. However, it
is essential that students have knowledge of basic algebra and experience in problem solving. In addition,
since documentation plays a central role in programming methodology, students should have acquired
facility in written communication before beginning a computer science course.
To be successful on the AP CS Exams, students need to be familiar with all of the key concepts and
skills defined in this chapter. As you review the various components of the Course Description, youll want
to identify any areas where you need to increase your understanding. Keep those areas in mind as you read
through this Teacher’s Guide, so that you can flag resources that will help you in this endeavor.
The Course Description can be downloaded for free from the Course Home Pages on AP Central:
apcentral.collegeboard.com/compscia or apcentral.collegeboard.com/compsciab. [AP Central > Course
Home Pages > AP Computer Science A or AB Course Description]
Key Concepts and Skills
This section describes some key concepts and skills with which AP Computer Science students need to
become familiar. The Commentary on the Topic Outline, contained in the AP Computer Science Course
Description and from which much of the information in this section is drawn, provides more detailed
descriptions for each of the following major concepts, including examples within other College Board
publications and expectations for students of AP Computer Science A and Computer Science AB courses.
(See the previous section of this chapter for a link to the online Course Description.) The following pages
provide an introductory overview of the major areas of emphasis.
I. Object-Oriented Program Design
The overall goal for designing a piece of software (a computer program) is to solve a given problem. The
design process should be based on a thorough understanding of the problem, and it should include the goal
of creating an understandable, adaptable solution.
Novice programmers should begin learning about the design process by studying well-designed
programs and modifying them. Later in the course, students should be able to work from a specification to
develop a design for a program or part of a program.
The fundamental component of an object-oriented program is an object, an entity that has state
(storage of some data) and behavior (operations that access or change its state and that may interact with
other objects). Objects are defined by classes; a class specifies the components and operations of an object,
and each object is an instance of a class. If you learned to program using FORTRAN and punched cards,
understanding object-oriented design may be more difficult for you than for your students!
A student should be able to understand the relationships among the different classes that comprise
a program. Two common relationships between classes are often referred to as “is-a” (inheritance) and
has-a” (composition) relationships.
About AP Computer Science
4
In an inheritance hierarchy, a subclass inherits characteristics from its superclass. For example, if we
have a class Dog, with a superclass Pet and subclasses Beagle and LhasaApso, we could say that a
Beagle is-aDog, a Dog is-aPet, etc.
The other common relationship among classes is composition. An object of one class has one or more
instances of another class or classes as its attributes. For example, a Kennel would have Pets, and a Dog
would have a Tail and two Ears. Ear, Tail, and Kennel would all be separate classes. We could say
that a Dog has-aTail, and a Kennelhas-a (some)” Pets.
Attempting to apply “is-a” and “has-a” to other relationships will often help identify cases where
inheritance and composition are not appropriate relationships. For example, we would not say that a Tail
is-aDog, so it would not be appropriate to define their relationship with inheritance (though it might be
technically possible). Likewise, we wouldn’t say that a Beagle has-aDog, so we would not define the
Beagle class as having a Dog component.
When designing programs to solve problems, students should also recognize the appropriate use
of components of existing libraries. The AP Java Subset, as defined in the appendixes of the Course
Description, specifies the Java classes and methods with which students must be familiar when taking the
AP CS Exam.
Note: In their free-response solutions, students will not be penalized for using methods from
standard Java classes that are not listed in the AP Java Subset. Chris Nevison, a former Chief Reader for
AP Computer Science, wrote, “The AP CS Development Committee tries to structure problems so that
students will not gain an advantage by knowing a ‘short-cut’ method that is out of the subset. So in most
cases, knowing additional methods outside the subset will not make things any easier, although it might
provide a different way of getting a solution.
Within a program solution, individual classes must be designed. Again, students should first learn
about class design by exploring well-designed classes, but they will progress to designing their own
classes, based on a description of the type of entity that each class represents. For classes that they design,
students should be able to define the instance variables (choosing appropriate data types) as well as method
declarations (the method identifiers, return types, and parameters).
Students should understand that an interface is a specification for a set of methods that a class must
implement. A class that implements the interface must implement each of the methods that the interface
specifies. An understanding of abstract classes and their appropriate use is also assumed within the AP
CS course.
Chapter 1
5
II. Program Implementation
To implement a program, a student must understand the fundamental programming constructs of the
language, as well as the design of the program.
Object-oriented development involves implementing the individual methods of each class in the design.
In this phase, we might also discover that additional classes are needed, from either the Java libraries or
another class that we develop. For example, we might decide that the Kennel class needs a Cage class
(with a size), rather than just a list of Pets, because different Pets need different Cages of different sizes.
Good program implementation adheres to the fundamental principles of encapsulation and
information hiding. Encapsulation is the process of organizing some information and the operations
on that information into one unit, a class. Information hiding is the technique of keeping the data
representation hidden from the client (external classes) by declaring it private.
Programming constructs are tools a programmer uses to implement a program. These are tied closely
to the language, though most object-oriented programming languages have similar constructs, so the skills
acquired by a Java programmer would carry over quite easily to another object-oriented programming
language.
An understanding of the following constructs is fundamental to programming in Java. A declaration
assigns an identifier to a construct and defines it as appropriate. A variable declaration specifies the type:
primitive (int, double, or boolean) or a class reference. A constant is declared in the same way, but it
may not change value; the keyword final indicates a constant. A method declaration consists of the access
modifier, the return type (void, if no value is returned), the method identifier, and the parameter list,
if any. Parameters are declared as part of a method declaration; these declarations are similar to variable
declarations. For example, a Radio class might have the following method:
public void changeStation ( double frequency )
where frequency is a double value that represents the station to which the Radio object should be
reset.
Declarations of classes and interfaces are usually accomplished during the design phase, as described in
section I above.
Program statements are executed sequentially, unless a control construct alters that sequence. Students
are expected to be familiar with the following types of control constructs:
A method call is among the most common control constructs. A call to a method transfers control to
the method, but control returns to the same location after the method has completed its execution. An
object method is part of a class and operates on an instance of that class. A method may simply return
information about the object (an accessor method) or may change the state of the object (a mutator or
modifier method). It is essential that students learn early to manipulate objects of both library classes and
user-defined classes.
About AP Computer Science
6
A conditional control structure causes different results, based on the evaluation of its condition. For
example, the following conditional
if (age < 6)
{
ageMsg = "Too young.";
}
else
{
ageMsg = "Old enough.";
}
sets a text message based on the value of age.
Another fundamental control construct is iteration, repeated execution of one or more statements,
which is accomplished by loop constructs such as the for loop and the while loop.
Recursion is another common means of producing repetitive behavior. A recursive method calls itself
(creating a new instance of the method with each call) with a different parameter value, eventually arriving
at a base case,” which stops the recursion. Valid recursion must have logic that makes successive recursive
calls progress toward the base case.
Modern programming languages have extensive libraries that supply many common classes and
methods. AP Computer Science students should learn about available Java libraries and their appropriate
use, consulting the library documentation (the Java API) for assistance.
III. Program Analysis
Persons working in the field of computer science analyze programs for correctness and to understand their
efficiency for solving problems.
Testing is the most obvious way to analyze correctness; although it does not prove correctness, it
can certainly disprove it! Data for testing must be selected to reflect a range of typical cases, including
boundary cases and erroneous cases, which should be handled with error messages or exceptions.
Debugging refers to the discovery and correction of errors in a program. These errors can be found
through testing or careful analysis. Students should be able to handle all three categories of errors:
runtime, compiler, and logic errors. Debugging techniques include hand-tracing of code, adding extra
output statements to trace the execution of a program, and using a debugger to trace execution and display
selected values as it runs and when it crashes. Students should be encouraged to experiment with available
debugging facilities, but they should also be able to rely on more primitive debugging methods, which will
serve them in whatever environment they encounter in the future.
In addition to writing their own programs, students should be able to read and modify code that was
written by another programmer. They should also be able to extend a class by declaring a new subclass that
inherits from it.
Exceptions provide valuable information about runtime errors, and students will need to recognize
common Java exceptions. AP Computer Science AB students will also need to handle errors by throwing
exceptions.
Chapter 1
7
Formal analysis allows us to verify correctness by proof and is preferable to tracing and testing,
especially for life-critical software. Formal analysis uses assertions, including preconditions and
postconditions as well as loop invariants.
The analysis of an algorithms efficiency is an important part of analyzing programs. Students need
to be able to make informal comparisons of running times and space requirements of different pieces of
code. AP Computer Science AB students also need to apply formal methods of analysis, such as asymptotic
(using Big-Oh notation), worst-case, and average-case analysis.
Programs are limited by the finite representations of numbers in any given system. Students should
have some understanding of binary representation of numbers as well as the practical consequences of their
limits.
IV. Standard Data Structures
A number of standard data structures are used in programming. Primitive data types (int, double, and
boolean) are used to hold one piece of information. Strings and arrays are common to most high-level
languages.
Classes enable us to define new types that encapsulate both data and operations (methods). A class may
be simply a container for related data or a more complex object with complex operations and interactions
with other objects.
The AP Computer Science AB course focuses on both abstract data types (ADTs) and data structures.
An ADT is described in terms of its operations, rather than any specific implementation. For example, a
List may be described as an ordered collection of items.
A number of data structures can be used to implement common ADTs. Some of the ADTs are
implemented by one or more Java library classes; students should be familiar with those classes, but they
should also be able to implement their own versions with appropriate data structures.
The Commentary on the Topic Outline in the Course Description provides an excellent, well-organized
presentation of the ADTs, data structures, and the associated Java library implementations with which
AP Computer Science AB students are expected to be familiar.
V. Standard Algorithms
Standard algorithms serve as good solutions to standard problems. These algorithms, many of which
are intertwined with data structures, provide excellent examples for the analysis of program efficiency.
Programs that implement standard algorithms also serve as good models for program design.
Many standard algorithms involve array operations: traversing an array, inserting and deleting an
element, and searching (both sequential and binary searches). Standard sorts also manipulate the elements
of arrays. (See chapter 2 for suggestions that involve visual representations of these algorithms.) Students
also need to analyze these standard algorithms, either informally (in the AP Computer Science A course)
or formally (in AP Computer Science AB).
As can be expected, the AP Computer Science AB course also deals with standard algorithms that are
associated with the additional data structures in its curriculum.
About AP Computer Science
8
VI. Computing in Context
A working knowledge of the major hardware and software components of computer systems is necessary
for the study of computer science. These topics need not be covered in detail, but they should be addressed
as appropriate throughout the course. Students will usually become familiar with some of these elements as
they use computers for programming and other applications.
Given the tremendous impact that computers and computing have on today’s society, teachers must
take care to encourage the development of intelligent and responsible attitudes and behavior regarding the
use of computers. References to responsible use of computer systems should be integrated into an AP CS
course wherever appropriate, rather than taught as a separate unit. Typical issues include privacy rights;
reliability, especially of life-critical applications; viruses and other malicious attacks on computer systems;
and intellectual property rights of artists, writers, musicians, and programmers.
Students should learn to take responsibility for the programs they write and for the consequences of
the use of their programs. Attitudes are acquired, not taught, and students will note their teacher’s attitudes
and behaviors, even if they profess to disagree with some of them.
Chapter 1
9
Chapter 2
Advice for AP Computer
Science Teachers
We have called in the experts to help you prepare for teaching AP Computer Science. The College Board
has developed numerous resources, and we’ll introduce you to them here. In addition, other AP CS
teachers will share some of their favorite teaching strategies, both philosophical and practical.
Getting Started: Help from the College Board
To best prepare to teach an AP Computer Science course, you should first:
1. Register at AP Central.
2. Join the electronic discussion group (EDG) for AP Computer Science.
3. Review the AP Computer Science Course Description.
4. Sign up for a professional development workshop.
5. Begin reviewing other materials that are available on AP Central.
AP Central
Your first stop should be AP Central (apcentral.collegeboard.com), the College Board Web site for AP
teachers. Registration is free, and the site contains everything you need to get started: the AP Computer
Science Course Description, case-study documents and code, teaching resource materials and lesson plans,
feature articles, and the Teachers’ Resources section. Teachers’ Resources is a database of over 4,500
original reviews of textbooks, software, videos, Web sites, and other teaching material, assessing each for its
suitability for the AP classroom.
When you register on AP Central, go to your Personal Profile to select the courses in which you are
interested. By making those selections, you will get personalized news and promotions on the AP Central
Home Page and also have the option of subscribing to e-mail newsletters that alert you at least twice a year
to additions to AP Central that relate to your selected courses.
Navigation Tips
Once you have selected your AP courses (for your Personal Profile), clicking on the My AP Central button
will streamline your navigation by presenting the most common choices (Course Description, Course
Home Page, Exam Questions, etc.) for those courses.
10
The Course Home Page gives a complete listing of resources (and links) for each course: course
guidelines, exam information, case-study materials, teaching strategies, feature articles, instructions
for subscribing to the electronic discussion group and e-newsletter, etc. The Course Home Page for AP
Computer Science A can be found at apcentral.collegeboard.com/compscia; the Course Home Page for AP
Computer Science AB can be found at apcentral.collegeboard.com/compsciab.
See chapter 5 for more detailed information about AP Central, including a two-page AP Central
Quickstart Guide and full Web addresses for resources.
Electronic Discussion Groups (EDGs)
The AP electronic discussion groups (EDGs) are moderated, Web-based groups that allow users to post
messages online to be viewed by the entire group. Messages can also be sent and received via e-mail. The
AP Computer Science EDG is especially active. Both new and experienced teachers post requests for help
and advice on specific issues, and other AP CS teachers, as well as some college instructors of introductory
computer science courses, usually respond quickly with suggestions. You may also search the EDG archives
for previously posted advice on a particular subject.
Visit either of the Course Home Pages to sign up for the EDG: apcentral.collegeboard.com/compscia
or apcentral.collegeboard.com/compsciab. [AP Central > Course Home Pages > Registration for Electronic
Discussion Groups]
Professional Development Workshops
It is strongly recommended that you attend an AP Summer Institute prior to teaching the course for the
first time and participate in one-day workshops and conferences available in your region throughout the
academic year.
If you are a new teacher of AP Computer Science, the primary advantages of a summer institute are the
hands-on lab experience and the chance to spend extended time with computer science colleagues. During
the academic year, workshops provide an opportunity to discuss issues (technical and/or pedagogical) that
have arisen during your teaching. Often new teachers dont even know the questions to ask until they have
tried things in their classrooms.
See the Professional Development section in chapter 5 for more information on summer institutes and
workshops.
The Java Engagement for Teacher Training Program (JETT) is a partnership between the Association
for Computing Machinery’s (ACM) K12 Task Force and the College Board. JETT provides quality
pedagogically oriented workshops and resources in Java for secondary school computer science teachers.
Hosted by universities, JETT workshops run for one or more days and typically include an equity
component, some hands-on sessions, and interaction with university faculty and student assistants. JETT
workshops are listed at AP Central, as well as at the JETT Web site: http://jett.acm.org.
Funding Assistance
The College Board Fellows Program is a competitive grant program that provides stipends for secondary
school teachers planning to teach AP courses in schools that serve minority and/or low-income students
who have been traditionally underrepresented in AP courses. The stipends help defray the cost of attending
an endorsed AP Summer Institute. To qualify, a school must have 50 percent or more underrepresented
Chapter 2
11
minority students or be located in an area where the average income level is equivalent to, or below,
the national annual average for a low-income family of four (approximately $36,000). Approximately
250 awards are distributed each year.
The College Board Pre-AP Fellows Program is a competitive grant program that provides funding to
AP Vertical Teams from schools in minority-dominant or economically disadvantaged areas with few or
no AP courses to receive training in the following areas: English, mathematics, music theory, social studies,
and studio art. Grants go toward funding the teams attendance at an endorsed Pre-AP Summer Institute.
Grants of $10,000 each are awarded to AP Vertical Teams that best satisfy the eligibility requirements.
Ten awards are available each grant year.
Although a computer science teacher is not a required member of a Vertical Team in mathematics,
Vertical Team training can better equip you to teach introductory programming courses or to help
integrate problem-solving and programming into mathematics courses students take before their AP
courses.
Application forms for both programs become available each September on AP Central. Visit
apcentral.collegeboard.com/apgrants or write to apequity@collegeboard.org for more information.
If you are not eligible for the College Board Fellows Program: Many school districts or individual
schools fund the professional development of their teachers. Check with your principal or district
supervisor about available funding.
Publications
In addition to this Teacher’s Guide, here are some other print or electronic publications that will be
useful to you. Unless otherwise noted, AP Central resources are available on the AP Computer Science
Home Page.
The AP Computer Science Course Description outlines course content, explains the kinds of skills
students are expected to demonstrate, and gives valuable information about the exams. Sample multiple-
choice questions with an answer key are included, as are sample free-response questions and suggested
solutions. Advice: Download a new copy of the Course Description whenever it is updated and check for
changes from the previous edition.
Case Study: AP Computer Science Exams include questions based on a case study. Text and code for
the case study can be downloaded from AP Central, along with related teachers’ resources.
Released Exams in each AP subject are published every four or five years, on a staggered schedule. The
AP Computer Science A and Computer Science AB Released Exams book contains complete copies of both
the A and AB exams, including multiple-choice questions and answers. Released Exams also include free-
response questions, along with a description of the scoring process, examples of students’ actual responses,
scoring standards, and commentary that explains why the responses received the scores they did. You can
purchase Released Exams at the College Board Store: http://store.collegeboard.com.
Note: The 2004 AP Computer Science A and Computer Science AB Released Exams book contains the
first Java versions of the exams.
Advice for AP Computer Science Teachers
12
Sample Syllabi for AP Computer Science are available on AP Central. Teachers in secondary
schools have written most of the syllabi, but since AP courses cover college-level material, syllabi from
college professors are also included. An additional collection of six syllabi is available for purchase at the
College Board Store.
AP Coordinator
Each participating school designates an AP Coordinator who takes primary responsibility for
organizing and administering that schools AP program. The AP Coordinator may be a full- or part-
time administrator, counselor, or faculty member. AP Coordinators manage the receipt, distribution,
administration, and return of AP Exam materials.
AP teachers and the AP Coordinator work closely together throughout the academic year. Early in the
spring, AP teachers consult with the Coordinator to help determine the correct number and type of exams
that need to be ordered. During the exam administration weeks, Coordinators may designate AP teachers
to serve as proctors for exams in a subject area other than the one they teach.
Coordinators are the bridge between AP teachers, students, and administrators and the AP Program.
Questions about exam fees, dates and deadlines, and exam-specific policies (such as the procedures
for accommodations and for handling conflicts and make-up exams) should be directed to the AP
Coordinator.
Regional Offices
The College Board maintains six regional and three State Services offices to serve students and educators.
Your questions and comments regarding College Board programs and services should be directed to these
offices. Each office provides information and features specific to its region of the country. Go to the inside
back cover of this Teacher’s Guide for contact information for your regional office.
Chapter 2
13
Real Teachers, Real Advice
Before the First Day of Class
Making the First Decisions
New teachers should start with the following activities. If you have inherited an AP Computer Science
program from another teacher, some or all of these steps may have been done for you.
Choose your textbook: There are many good computer science textbooks. Some were specifically
written for AP Computer Science courses; others may or may not be appropriate for your AP
classes. It is important to choose a textbook that presents and uses objects (not just the built-in Java
classes) in one of the first chapters. (In order to think in an object-oriented way, students need lots
of practice using and modifying classes, and the sooner they begin, the better.) Any textbook can be
supplemented for use with AP Computer Science, but the order of presentation is more critical than
an omitted topic or two. Chapter 5 lists several textbooks that are appropriate for an AP CS course;
most of those textbooks are reviewed on AP Central.
[AP Central > Teachers’ Resources tab > Choose Course and enter Title and/or Author’s Name to
find the review.]
Choose an IDE: An Interactive Development Environment (IDE) is software that facilitates
program development. Although it is not absolutely necessary for the AP course, you will probably
want to use an IDE with your students. This software allows users to type source code (often
providing some assistance like code completion), compile each class (with help locating errors),
group related classes into a project, and run the project, all from the same window. Some IDEs have
special features like on-screen diagrams that show the relationships of classes within a project or
access to the application program interface (API) from within the IDE.
You can provide more than one IDE; some are simpler than others, and you may wish to progress
from one to another during your course. You dont have to decide everything at the beginning of the
year, but it will save lab setup time if you can do it all at once. (See the section on Setting Up Your
Lab, below, for more timesaving suggestions.)
Chapter 5 has a list of several IDEs that are commonly used in AP CS classes. Each of the sample
syllabi in chapter 3 specifies which IDEs are used by the instructors of those courses.
Decide how to handle user input: While user input is not part of the AP Java subset (see the AP
Computer Science Java Subset appendix in the Course Description), and it will not be tested on the
AP Exam, your assignments will probably require the processing of input from users.
Because Javas console input mechanism is fairly complex, many textbook authors provide a
simplified console input class. (A few of these are listed in the Software section of chapter 5.)
Or you might prefer to use a pop-up (graphical) input box.
Advice for AP Computer Science Teachers
14
I start off by using JOptionPane.showInputDialog() in javax.swing, which is as simple an I/O (input/
output) as I need. It returns a String, and parsing the String appropriately is a generally useful exercise for
beginners. You do not have the overhead of the BufferedReader and Exceptions.
In the past, I used different simple I/O classes that came with the textbooks that were required for the course,
but I found they really did not simplify things for me because some explanation still was needed about what
was going on.
Using JOptionPane.showInputDialog() allows me to concentrate on the big ideas about input values
what they are and how to work with themwithout worrying about topics such as Streams and Exceptions
until later in the course. I do come back and talk about console I/O, generally at the same time as when
I discuss file I/O. (I also use the File Chooser Dialog box GUI, which removes the problems of where to put files
to be used by the application.)
You can mix the GUI dialog box with a console app with only the overhead of having to wait for the dialog box to
appear. Students are very familiar with using dialog boxes (more than they are with command line input, in my
experience).
Don Slater, Carnegie Mellon University, Pittsburgh, Pennsylvania,
writing to the AP Computer Science EDG
Setting Up Your Lab
Download and install the Java Development Kit (JDK) from Sun. (See Tech Support in chapter 5.)
Most IDEs require that Java be installed first.
Download the Java API, as well as Owen Astrachan’s AP version, which includes only the classes
and methods that will be tested on the AP Exam, along with some AP-specific commentary
(www.cs.duke.edu/csed/ap/subset/doc). The Java API can be accessed online, but many instructors
prefer to store a local copy on their lab computers, to reduce network traffic and minimize reliance
on Internet access.
Download and install the IDE.
Download and install the MBS case study. Some IDEs have specific requirements for setting up the
case-study project. Appendix A lists sources of instructions for setting up the case study in several
different environments.
Tip: Set up one lab computer with the software that you expect to use, and keep track of what you’ve done.
Test, test, test!
Using your IDE, create a simple project and run it.
Set up and run the case study.
Add shortcuts to the desktop or menu for the IDE, API(s), and any other resources that your
students will need regularly. My lab computers have shortcuts for two IDEs, the complete Java API,
the AP API, and the MBS API.
Once you are satisfied, repeat the steps for the remaining computers. If possible, use cloning
software to copy an image of the computer that you have set up, and send it to the other machines in
your lab, making them identical. Talk with your network administrator about this option.
Planning Your Course
Chapter 3 offers suggestions for organizing your AP Computer Science course, along with several syllabi
from teachers of AP CS or similar college courses. You will definitely want to have a big picture” plan
Chapter 2
15
before the first day of class, but reality dictates that you maintain the flexibility to adjust as you go,
depending on how much time your students need to master each topic and complete each assignment.
You have completed the first steps; now it’s time to think about some of the finer points of teaching.
Teaching Strategies
Help Students Develop a Good Programming Style
In addition to teaching our students how to design and program solutions that work, we can also help them
establish positive habits regarding the style of their code. Good programming style will make students’
work easier to debug and modify, not to mention easier to grade.
As a former math teacher who spent several years as a professional programmer and then returned
to the classroom to teach computer science, I was initially unsure of the extent to which I should impose
my own compulsive ideas about programming style on my students. Just as some students dont like to
“show their work” in mathematics classes, some computer science students resist indenting code, choosing
meaningful variable names, and other techniques that require extra typing but make their code easier
to decipher. I was reassured when I attended my first computer science educators’ conference and heard
seasoned teachers make assertions like, “I refuse to grade un-indented code.
Rules of style generally cover aspects of programming such as the following:
Indentation
Position of curly braces
Meaningful identifier names for classes, methods, and variables
Variable initialization and use of named constants
Comments (method preconditions and postconditions, general class comments)
Use of “white space” (spaces and blank lines). I often tell my students, “White space is free—use it
liberally!” (I use “paperless” grading—see chapter 5—so it truly is free.)
Youll probably want to develop your own rules for your students—even among professional
programmers, there are style issues that cause heated debates—but first you might want to read some
general thoughts on style, as well as specific guidelines from these authors and educators:
Fran Trees, whose syllabus appears in chapter 3, establishes Company Rules” for her students, in
much the same way that many employers do. (www.users.drew.edu/ftrees/Csci6/General_Information/
CompanyRules.htm)
In 17 Bits of Style,Maria Litvin and Gary Litvin state, “Style is a crucial component of
professionalism in software development. Clean code that follows stylistic conventions is easier to read,
maintain, and share with colleagues. Programmers who code in good style are less likely to have silly bugs
and will actually spend less time developing and debugging their code. Finally, good style in programs is a
concern because for us humans, style and aesthetics are a concern in everything we do.8
8. Maria Litvin and Gary Litvin, Java Methods: An Introduction to Object-Oriented Programming, Appendix B (Andover, Mass.: Skylight
Publishing, 2001). (“17 Bits of Style” is also separately available online at www.skylit.com/javamethods/appxb.pdf.)
Advice for AP Computer Science Teachers
16
Thornton Rose, a contract software developer, has written two articles about “Good Java Style”
(parts 1 and 2): www.developer.com/java/other/article.php/600581 and
www.developer.com/java/other/article.php/600651.
Use a Variety of Teaching Techniques to Engage Students
Students would rather write programs than listen to lectures, but we have to teach them before they can
write programs. Very few teachers can lecture for an entire class period without losing their students’
attention, so how can we keep students engaged in their learning?
Play with toys: Some of the most difficult computer science concepts can be illustrated using simple
toys. Stacking cups or nesting dolls can demonstrate recursion; those same stacking cups can be lined up
and sorted by size using various algorithms. Pop-it beads or carabiners can illustrate linked lists.
Be dramatic: Role-playing can help familiarize students with “object” concepts and method-calling
syntax, as well as complex interactions between objects of various classes.
Order your students around: Outline an array with masking tape on the floor and have students
(literally) step through the process of being sorted. Outline an extra “temp” box (for swapping) to the side.
(Suggestion: Write names or numbers on large nametags, rather than sorting by height. I once had three
students of nearly identical height in a demonstration, resulting in a lot of quibbling and confusion. Also,
some students are sensitive about their height.)
Be animated: Algorithm animation Web sites are terrific for classroom demonstrations; most allow the
user to control the process one step at a time. (Chapter 5 lists several algorithm animation Web sites.)
The following Web sites offer general suggestions as well as specific techniques for engaging students in
computer science classes:
Becker, Katrin. Making CS More Fun. University of Calgary, 2001.
http://pages.cpsc.ucalgary.ca/~becker/Main/MakeCSfun.html
Bergin, Joseph, and Myles McNally. Non-Programming Resources for an Introduction to CS. ITiCSE 2000.
http://csis.pace.edu/~bergin/iticse2000/
Levine, David, and Steven Andrianoff. Role Playing in an Object-Oriented World. St. Bonaventure
University, Department of Computer Science, 2003.
http://web.sbu.edu/cs/dlevine/RolePlay/roleplay.html
McConnell, Jeffrey. Active and Cooperative Learning. Canisius College Computer Science
Department, 2001.
www-cs.canisius.edu/~mcconnel/active_learning.html
Encourage Participation in Computer Science
If your roster is similar to those of most computer science teachers, there arent a lot of girls in your AP
Computer Science classes. You may also have found that other groups are underrepresented. The College
Board encourages open enrollment for all AP courses, as explained in the Equity and Access section in
chapter 1.
Chapter 2
17
Gender equity is a topic of much discussion among computer science educators; the challenge of
attracting females to the field is nearly universal. The percentage of girls in AP Computer Science is much
lower than in any other AP mathematics or science course. In fact, in 2004, among all students who
took AP Computer Science Exams, the percentage of females was lower than for any other AP subject
(16 percent for AP CS A and 11 percent for AP CS AB).9 Percentages were similar for prior years.
Considerable research has been conducted in an attempt to explain why so few girls take computer
science courses. It is certainly not due to differences in ability; research into the cognitive differences in
males and females suggests that boys and girls are equally capable of performing well in mathematics
and computation despite a difference in style of learning. Yet females often perceive themselves to be less
naturally inclined than males toward mathematics and computer science.10
How can we explain this difference in motivation between males and females? Is it because of lack of
information or misconceptions about computer science?
Perceptions about the field, both as a discipline of study and in the world of work, arent always
accurate. Below, Kelly Keenan analyzes some of the ways in which girls may differ from boys in their
interests, needs, and learning styles. Kelly is the director of Academic Computing and the Women in
Science and Engineering Program at Westover School in Middlebury, Connecticut. She has some terrific
advice for attracting and retaining girls in computer science classes—advice that could be used to attract
students from any underrepresented group.
******************************************************************************************************************
I teach at an all-girls’ school, so I have a lot of experience with girls. Most of my suggestions are based
on broad generalities about differences between girls and boys, in an effort to analyze why some
traditional methods of teaching computer science don’t work for most girls. However, we need to look
at children and teens individually, rather than as a group. We can make generalizations, but not all
girls are alike, any more than all boys are alike. Once we learn to teach to each individuals needs, we
will reach the entire class.
Background. Many girls dont have basic knowledge of how computers work. They use a computer to
write their history paper, or do their physics homework, or communicate with friends, but they don’t
“play” with it.
I offered a half-year course where students learned how to install Ethernet cards and memory, talk
computerese,shop for a computer, identify and discuss different operating systems, solve discrete
and boolean mathematical equations, and build their own Web pages. Girls came back from break
and told me things like, “I talked with the guy next to me on the plane about computer operating
systems,” “I helped my grandparents buy a new computer,and “I taught my friend about boolean
equations.
Offer an introductory programming class that uses a simple language—my students liked
Karel J Robot—because girls often think that doing math problems is boring if the problems dont
directly relate to something in the real world. If you cant have a full-term class, ask a math teacher to
give you a week for programming.
9. College Board, AP Program Summary Report 2004. Available at apcentral.collegeboard.com/document library, on the “Exam Data” page.
10. Phoenix Moorman and Elizabeth Johnson, “Still A Stranger Here: Attitudes Among Secondary School Students Towards Computer
Science,” presented at ITiCSE’03, June 30-July 2, 2003, Thessaloniki, Greece (ACM, 2003): 193-97. http://doi.acm.org/10.1145/961511.9615
64.
Advice for AP Computer Science Teachers
18
Keeping them engaged. If you can attract girls and keep them in your class, they will help recruit
more girls, by talking about computer science outside of class. How do you keep them interested?
1. “Cool” assignments.
Compile address books: You can do nifty sorting and searching routines with them.
Design quiz games: We used sample questions from AP Computer Science, history
courses, calculus—whatever other AP classes students were taking that year. The girls used
this tool to study for their upcoming exams, and we put the final product on the server so
that other students could use it, too.
Write an application that relates to another subject: One year everyone was in chemistry
and learning the periodic table, so we wrote an application that would help students find
the information they needed. If they see some real-world value in the program that they
are writing, both girls and boys will be more interested in it. Start with a very simplified
version, and increase its functionality as you go along. (Interdisciplinary projects earn big
points in many schools.)
Consider offering a choice of assignments that use the same concepts but in different contexts:
a mathematical function, a physics problem, or a social problem.
2. Group projects. Working in pairs helps build confidence. Let girls and boys partner
sometimes, but also have girls pair up with each other.
One of my favorite things to do is a whole-class project. We determine all the data types in
class and write the class declarations together. Then students pick which classes or methods
they want to implement. As the teacher, I am the project/engineering manager and make sure
that all the parts talk to each other. In the end, students learn how software is written in the
real world.
3. Sharing outside of class. The best way for girls to find out about the coolstuff you are
doing in class is to find a way to share it with the entire school. This works best for a whole-
class project if it is something of which the entire class can be proud. Girls from class can
show other girls what parts of the program they did.
4. Reduced risks. I always ask my girls, “How many of you have ever taken apart a computer?”
No one raises her hand. Then I ask, “How many of you have watched your brother or another
guy take apart a computer?” Almost every girl raises her hand. I think that girls often
dont want to take things apart because they are afraid of getting into trouble or breaking
something. Many boys dont think about the consequences until their parents are standing
over them, or they think about them but are willing to take the risk anyway.
When my students were installing cards, I taught them how to avoid static charges and what
would happen if they didn’t. At the same time, I was also telling them that if any of the
machines didn’t work afterwards, it was my responsibility and I would fix them. Sometimes
students write code that crashes the computer; they need to understand that they aren’t going
to get in trouble for this. I’ve found that girls are apt to blame themselves, while boys tend to
blame external factors.
5. Vocabulary. Girls may not have a lot of computer vocabulary when they get to your class.
Make the assumption that no one in the class understands the words you are saying.
With boys in the classroom, girls may not ask if they don’t understand something. They will
listen for the context and hope that they can figure out what you are talking about.
Chapter 2
19
Provide vocabulary lists with definitions of technical terms that you use in class. You may
find that students share them with students who are not in your class.
6. Role models. Invite successful young women in the field to give short talks to your students.
I think many classes are missing out not only on more girls, but on some of the boys who just need
a teacher or parent to say, “Why dont you try this and see if you like it? I know you can do it.Who
couldn’t use a little encouragement from time to time? I didn’t join the school band until the music
teacher came to me and said, “I hear you have study hall during band and that you can read music.
I need someone to play the chimes and xylophone. I expect to see you in the next class.” I went
because of the encouragement; I stayed because I was learning and it was fun.
******************************************************************************************************************
Kelly Keenan’s informal observations and advice align well with findings and suggestions made by
Jane Margolis, Allan Fisher, and Faye Miller, computer science faculty members at Carnegie Mellon
University, who interviewed both male and female students in an effort to determine whether women
approach the study of computer science differently from men. They found that while most of the male
students describe an early and persistent magnetic attraction between themselves and computers, women
much more frequently link their computer science interest to a larger societal framework. The authors
discuss the importance of “re-visioning” computer science, so that the answer to the question “What is
computer science?” incorporates and values womens perspectives as well as mens. They offer concrete
suggestions for developing a more contextual approach to computer science, including the creation of an
immigration course” for new students, to expose them to a wide variety of computer science issues and
applications; interdisciplinary work with multifaceted problems; and a CS in the Community” course that
engages students with nonprofit groups in the local community.11
How can you motivate students to find out more about computer science?
Prepare a flyer or presentation that describes computer science and your schools courses. You may
want to emphasize abilities and interests that suggest enjoyment and success in computer science
(logic puzzles, organizational skills, math ability) as well as career advantages, such as flexible
working conditions. You might also explain what skills aren’t prerequisites (hardware knowledge,
game expertise, etc.); many students assume that they would be at a disadvantage in a computer
science course because they don’t have certain skills or interests. Share your enthusiasm with
students in math classes and with parents and guardians at AP registration meetings or school open
houses.
Ask math teachers to identify students who have strong math ability, especially those from
underrepresented groups. Contact those students individually, in passing, or through a letter or
e-mail, encouraging them to consider taking a computer science course.
If students are currently having success in an introductory computer science course, ask them to
continue with the AP course; they may need extra encouragement.
Offer a “Girls’ Technology Day” or a summer workshop for girls, familiarizing them with tools that
might be especially motivating for girls (Web page development, cooperative activities, graphical
programming, and projects that involve communication).
11. Jane Margolis, Allan Fisher, and Faye Miller, “Caring About Connections: Gender and Computing” (Carnegie Mellon University, 1999).
www-2.cs.cmu.edu/~gendergap/papers/IEEE99.html
Advice for AP Computer Science Teachers
20
Grading StudentsProjects
Your students will spend considerable time completing their programming assignments, and you will
want to develop effective methods for evaluating their work and providing feedback. Learning to design
and write programs is a gradual process, and your comments will help students refine that process as they
proceed through your course. Effective project evaluations address more than just correctness; design, style
and documentation, and efficiency are also important. It’s important to praise the positive things when
offering feedback on students’ work; this will help instill confidence and encourage an upbeat attitude
in the class. Other suggestions for motivating and encouraging students can be found throughout this
Teacher’s Guide.
Correctness Program should conform to specifications stated in the problem statement.
Program should demonstrate correct handling of special cases and error
conditions. Test data should include typical values, out-of-range values, boundary
values, and special case values.
Design Each class should consist of small, coherent, independent methods. Classes should
be loosely coupled.
Style and Documentation Program should be easy to read and understand. (See section on programming
style, above, for details.)
Efficiency Algorithms should be chosen with regard to efficiency of both time and space.
Algorithms should be “elegantly” written rather than written with “brute force.
Many teachers develop scoring guidelines to address each of these areas, dividing the points among
the categories. Instructor materials found in some textbooks offer scoring guidelines for the assignments in
each chapter.
Clarifying your expectations can eliminate a lot of confusion about your scoring standards. As I
explain to my students, “But it works!” justifies only 25 percent of the total possible points.
After you have taught AP Computer Science for a few years, you might want to consider applying
to be an AP Exam Reader. (See chapter 5 for more information.) Participating in this process can give
tremendous insight into developing your own scoring guidelines, and the opportunity to share ideas with
other AP colleagues is invaluable.
Connecting with Other Teachers and Parents
You are very likely the only AP Computer Science teacher at your school (and possibly the only computer
science teacher), so you will need to make an effort to connect with other teachers in your field. After you
have joined the EDG on AP Central, it’s a good idea to read the messages on a regular basis. Youll find
answers to questions that you have been meaning to ask, as well as some that you didnt know you should
be asking. When you encounter a problem or need some suggestions for teaching a specific topic, first
check the archives—if you don’t find your answer there, dont hesitate to ask for help. There is a whole
community just waiting to respond.
Attend a conference: Information about some national organizations that offer conferences is in
chapter 5. Conferences enable you to make connections with other teachers, hear inspiring speakers, and
pick up great ideas all at the same time.
Chapter 2
21
At a school open house or in a mailing, tell your students’ parents or guardians about the AP Computer
Science course; many of them dont really understand what computer science is. Mention that you’d like
to let your students know about career opportunities in technology. Perhaps one of the adults works for a
company that would send a guest speaker or arrange for a field trip to its site.
Make the most of every single precious minute of class time. If your students have good attendance, you
may not need to give a lot of homework. Most of my students have a big course load in which homework is a
necessity—they also may have jobs and participate in sports or other activities. Assuming good attendance,
I can schedule time for labs, assignments, and tests, and they can spend a couple of hours a week at home
going through a test-prep book or studying for my next test.
Some students prefer to go at their own pace. Some need more handholding. On lab days, I generally will
walk a group of students through a lab at a slower pace and let the others fly. Along the way, I try to help
everyone become more autonomous.
Change gears if things aren’t working in your class. Abandon your plans, and meet the students’ needs.
Be flexible. Hold them accountable, but be realistic in your expectations. Smile. Have fun. You shouldn’t be
doing this unless you love it (most days, at least!).
Jill Kaminski, Chaparral High School,
Parker, Colorado
Advice for AP Computer Science Teachers
22
Chapter 3
Course Organization
Syllabus Development
You have read the advice—now it’s time to begin planning your own AP Computer Science course. While
you do not have to decide every last detail before the first day of school, you will certainly want to have an
outline and timeline for the topics to be covered in the course.
Here is some important advice from the “Teaching Tips and Strategies” article on the AP Computer
Science Home Page on AP Central:
Use your textbook as a guide to the study of computer science, but keep the AP Computer Science
Course Description, particularly the Topic Outline and the Java Subsets, in sight at all times. Regardless
of the textbook chosen, it will be necessary to modify the content and the order of presentation to meet the
complete AP CS course requirements. . . . Refer to the Topic Outline and Java Subsets regularly to ensure
that you are covering the testable material.
Textbook authors sometimes include a syllabus, pacing and lesson plan guide, scope and sequence,
and/or options for reordering or skipping chapters. A few are mapped to the AP curriculum. Explore the
teachers’ resources that accompanied your textbook, including any Web site that the author or publisher
provides for teachers who adopt the textbook.
Your course outline will depend in part on your students’ previous programming experience. Your
school’s programming/CS sequence probably looks like one of these:
Introductory Programming
(one or more courses) AP CS-A AP CS-AB
Introductory Programming
(one or more courses) AP CS-AB
(no programming prerequisite) AP CS-A AP CS-AB
(no programming prerequisite) AP CS-A
(no programming prerequisite) AP CS-AB
Depending on which AP CS topics (if any) your students have covered in previous courses, you may
be able to pass quickly through some of the earlier topics with a short review and quick assessment of their
mastery.
Here is more guidance from “Teaching Tips and Strategies”: Emphasize Object-Oriented
Programming (OOP) throughout the year in both [Computer Science] A and AB classes. Begin the course
by presenting students with mostly complete programs and allowing students to complete small portions of
23
Course Organization
them. As the student’s knowledge grows, increase the amount of work the student is required to complete
in the project. Within a relatively short time students will construct complete solutions on their own. By
modeling good OOP design in the early projects, you teach the students to create good solution structures
and prepare them for success in the field of computer science.
One approach some teachers have found successful is incorporating the case study throughout the
course.
I used to plan my course around a list of the AP CS Subset and topics: if statements, loops, methods, classes,
searching, sorting, case study, etc., etc. I found that when I used this approach, my students’ brains were like
shift registers. They could retain the content during the unit of study, but it seemed necessary to “shift” it out
in order to store new information. For the average student, overall retention of course concepts in May wasn’t
great. And the AP CS Exam isn’t the kind of test you can cram for.
I then followed the sage advice of former Chief Reader Chris Nevison: “Don’t teach the case study! Use the
case study to teach computer science.” This advice also appears in the case-study teacher’s manual: “The
case study and the accompanying teacher’s manual were designed in such a way that you can use these
materials throughout the course. You may, in fact, wish to teach many computer science concepts from the AP
CS curriculum through the case study itself.
So that’s what I do, beginning in early November. And it’s fun! I introduce the case study in a positive way,
and we continue to find creative things to do to bugs and other creatures. My students appreciate that this is
more of a “real” program and less of the kind of program usually written in beginning computer science classes
(e.g., a student class with a driver). It’s well-designed, there’s enough there to hold interest, and it’s particularly
effective for teaching inheritance and data structures.
Jill Kaminski, Chaparral High School,
Parker, Colorado.
For complete details of how Jill uses the case study in her course, refer to appendix A.
Six Sample Syllabi
The syllabi in this section were contributed by teachers from a variety of educational settings: high school
and college, public and private, with varying populations and budgets. You may find one or more that fit
your style and your students’ degree of preparation, or you may decide to mix elements of several syllabi.
You may also need to adjust the timing of the course to fit your schools calendar.
Be sure to read through all of the sample syllabi, even those that dont match your needs for timing
or content, because each teacher shares his or her general teaching philosophy and strategies, as well as
specific projects and resources.12 This chapter includes a rich collection of gems; mine it thoroughly!
12. Newer editions of many of the texts mentioned in the following syllabi are now available: see chapter 5, Resources for Teachers.
24
Chapter 3
Important Note: The AP Course Audit
The syllabi included in this Teachers Guide were developed prior to the initiation of the AP Course Audit
and the identification of the current AP Computer Science Curricular Requirements. These syllabi contain
rich resources and will be useful in generating ideas for your AP course. In addition to providing detailed
course planners, the syllabi contain descriptions of classroom activities and assignments, along with helpful
teaching strategies. However, they should not necessarily be used in their entirety as models that would
be authorized under the guidelines of the AP Course Audit. In particular, these syllabi were developed
while the Marine Biology Simulation was the current case study for AP Computer Science, so they do not
incorporate the most recent case study (GridWorld), which will come into use for the 2007-08 academic
year.
To view the current AP Curricular Requirements and examples of syllabi that have been developed
since the launch of the AP Course Audit and therefore meet all of the AP Computer Science Curricular
Requirements, please see AP Central.
http://apcentral.collegeboard.com/courseaudit/resources
25
Course Organization
Sample Syllabus 1 (AP Computer Science A)
Bekki George
James E. Taylor High School
Katy, Texas
rebeccageorge@katyisd.org
http://schools.katyisd.org/campus/ths/index.htm
School Profile
Location and Environment: James E. Taylor High School is located 25 miles west of downtown Houston
in a suburban area near Katy, Texas, a town with a population of 12,000. The Katy Independent School
District itself encompasses a large area consisting of approximately 65,000 households and 41,500 students.
The socioeconomic level is predominantly middle to upper-middle class.
Grades: 9–12
Type: Public school
Total Enrollment: 2,770
Ethnic Diversity: Asian American 10.0 percent
Hispanic/Latino 7.2 percent
African American 3.4 percent
Native American 0.1 percent
College Record: 71 percent attend four-year colleges
17 percent attend community colleges
Personal Philosophy
I want my students to enjoy computer science as much as I do. I get very excited when they understand
what I’m teaching. Every day, I hear All right!” or a squeal of delight when one of my kids gets something
difficult to work. Their enthusiasm is contagious. My reward comes when students can apply the
programming tools they have learned to real-life examples on their own. Computer science is more than
just programming. Students should leave my class with a clear understanding of Java and the ability
to adapt to any new programming language that they are taught in college. I want them to have the
confidence to tackle any problem-solving obstacles they encounter.
Class Profile
Five sections (27 students per section)
Classes meet for 50 minutes each school day.
Course Overview
AP Computer Science 1 (the official name for my course) is both a college-prep course for potential
computer science majors and a foundation course for students planning to study in other technical fields
such as engineering, physics, chemistry, and geology. The course emphasizes programming methodology,
procedural abstraction, and in-depth study of algorithms, data structures, and data abstractions, as well
as a detailed examination of a large case study program. Instruction includes preparation for the AP
Computer Science A Exam.
26
Chapter 3
Texts
Bergin, Joseph et al. Karel J Robot: A Gentle Introduction to the Art of Object-Oriented Programming
in Java. Redwood City, Calif.: Dreamsongs Press, 2005. http://csis.pace.edu/~bergin/KarelJava2ed/
Karel%2B%2BJavaEdition.html. Introduces objects and inheritance.
College Board. AP Marine Biology Simulation Case Study. New York: College Entrance Examination
Board, 2002. Download from the Course Home Pages: apcentral.collegeboard.com/compscia or
apcentral.collegeboard.com/compsciab.
Horstmann, Cay. Big Java. Hoboken, N.J.: Wiley, 2002.
Lambert, Ken, and Martin Osborne. Fundamentals of Java, Comprehensive Course. 2nd ed. Boston: Course
Technology, 2002.
Course Planner
The Resources listings include the following text references: Karel J Robot (KJR), Marine Biology Simulation
Case Study (MBS), Big Java (BJ), and Fundamentals of Java (FJ).
Unit (Weeks)
Title, Topics, and
Student Objectives Resources, Assessments, and Strategies
1 (0–3) Karel J Robot
Topics:
Objects
Classes
Looping
Conditionals
Objectives:
Write and use simple classes with
Karel J Robot
Learn the basics of conditionals
and looping
Resource:
KJR
Assessments:
Program-specific tasks for Karel
Create a SmartRobot Class to teach Karel
more commands: turnRight(), turnAround(),
climbStair().
Clear a field of beepers (using loops).
Redistribute a field of beepers (using loops and
conditionals).
Run a hurdle race:
o same height and equally spaced;
o same height and unequally spaced;
o different heights and unequally spaced.
2 (4) Java Basics
Topics:
Java basics
Using the compiler
Input and output
Objectives:
Understand terminology: compiler,
IDE, JVM
Edit, compile, and run a simple
program in Java
Understand the different compile
time errors, runtime errors, and logic
errors
Use BufferedReader for input
Use output with System.out and
format output to look nice
Resource:
FJ: lesson 3, Critical thinking
Assessments:
Labs: Triangle, Rectangle, Square: Area, and
perimeter program
Get input for the registrar’s office program.
Strategies:
Assign a lot of small programs that illustrate
different types of input and output—make sure
students have used every type of input and displayed
it in different ways.
27
Course Organization
Unit (Weeks)
Title, Topics, and
Student Objectives Resources, Assessments, and Strategies
3 (5) Defining Variables, Arithmetic
Expressions
Topics:
Using and understanding variables
Comments
Arithmetic expressions in Java
programs
Objectives:
Understand terminology: comments,
variables, constants, reserved words,
literals
Declare and initialize variables and
constants in Java
Understand mathematical
expressions in Java and their
precedence
Use casting to make their data more
accurate
Use the assignment operator correctly
Resource:
FJ: lesson 3, Projects
Assessments:
Labs:
Paycheck program; have employee information
entered and calculate pay.
Modify the paycheck program to also include
any overtime hours in the calculations.
Strategies:
Students need practice with how the different
types, double and int, relate when they are used
in mathematical operations.
Worksheets are helpful here.
Present a lot of small program examples in which
they have to find the errors.
4 (67) Introduction to Classes and OOP
Topics: Creating and using classes
Objectives:
Understand terminology: constructor,
accessor, mutator, instance variable,
and more
Understand the difference between
public and private access in a class
Use and comprehend the
DecimalFormat class and the
Random class
Write classes from scratch
Resource:
BJ: chapter 3
Assessments:
Labs: Purse class and StampMachine class
Strategies:
Go slowly and show as many examples as
possible.
Start with very simple examples.
Give students classes to complete.
5 (812) Conditionals and Looping
Topics: if, if-else, while, for
Objectives:
Understand terminology: control
statements, counter, infinite loop,
iteration, nested loops, logical
operators, truth tables
Construct syntactically correct loops
and conditional statements
Understand the different errors that
may occur with loops
Use logical operators to make
programs more robust
Construct truth tables
Resources:
FJ: lessons 4 and 6, Projects
Assessments:
Labs:
Approximate PI using Leibniz’s method
Base Conversion; convert from base 10 to base 2
Guess My Number game
Euclidean algorithm program
Perimeter and area of rectangles using all
combinations of certain range
Strategies:
This unit needs a lot of programs.
Students need practice writing different types of
loops and conditionals.
Worksheets that focus on the output of certain
statements are very helpful here.
28
Chapter 3
Unit (Weeks)
Title, Topics, and
Student Objectives Resources, Assessments, and Strategies
6 (13–14) The String Class
Topic:
String class
Objectives:
Instantiate String objects
Understand that Strings are
immutable
Use appropriate String methods to
solve problems
Resource:
FJ: lesson 10.1
Assessments:
FJ: exercise 10.1
Lab: LineEditor Class (AP CS Course Description)
Strategies:
Work several examples using the substring method.
7 (15–17) ArrayList
Topic:
Using ArrayList class
Objective:
Use the ArrayList methods
Resources:
FJ: lesson 10.7
BJ: 13.1 and 13.2
Assessments:
BJ: exercise p.13.1
WordList (2004 AP CS A Exam, Free-Response
Question 1, AP Central)
Strategies:
Stress the difference between add and set.
Draw pictures of the ArrayList after add, set, and
remove have been performed.
8 (18) Arrays
Topics:
Declaring and initializing arrays
Manipulating arrays with loops
Creating parallel arrays
Objectives:
Understand terminology: array,
element, index, logical size, physical
size, parallel arrays
Declare one-dimensional arrays in
Java
Use initializer lists when declaring
arrays
Manipulate arrays using loops and
array indices
Use the physical and logical size of
an array together to guarantee they
do not go beyond the bounds of their
array
Understand how parallel arrays can
be useful when processing certain
types of data
Work with arrays of primitive data
types as well as arrays of objects
Resource:
FJ: lesson 8, Projects
Assessments:
Lab: For one-dimensional arrays, read in numbers
and place each one in an even, odd, and/or negative
list.
Strategies:
Students need practice manipulating loops that
work with arrays.
Worksheets where they show the output from
sample programs are always helpful here.
Students also need to be reminded about the
indexing of arrays beginning at zero.
29
Course Organization
Unit (Weeks)
Title, Topics, and
Student Objectives Resources, Assessments, and Strategies
9 (19–21) Searching and Sorting Arrays
Topics:
Bubble, Selection, Insertion sorts
Sequential and Binary searches
Objectives:
Write a method for searching an
array
Perform insertions and deletions at
given positions in arrays
Trace through sorting and searching
algorithms
Understand the algorithms behind
each of the following searching and
sorting techniques: bubble, selection,
and insertion sorts; sequential search
and binary search
Understand the efficiency of each sort
and search and when it is desirable to
use each one
Resource:
FJ: lesson 10
Assessments:
Lab: Students make their own “utility” class that
includes all of these sorts and searches.
Strategies:
Students need practice tracing through sorts and
searches.
Worksheets: show the sort or search at a certain
“pass.
Students also do well with a worksheet that talks
about the efficiency of each of the strategies
they have learned, efficiency for a sorted versus
unsorted list, and best,” “worst,” and “average”
efficiency.
(See appendix B for lab and worksheets.)
10 (22–24) MBS (chapters 1–3)
Topics:
Experimenting with a large program
Using classes
Modifying classes
Objectives:
Run the case study and analyze
output
Experiment with the Simulation
Understand the Fish Class,
Simulation Class, and the
Environment Interface
Modify the Fish Class
Resource:
MBS: chapters 1–3
Assessments:
Exercises and analysis from the text
Strategies:
Read the manual thoroughly.
Be familiar with all the classes and interfaces
discussed.
11 (2527) More on Classes, Inheritance, Interfaces
Topics:
Classes
Inheritance
Abstract classes
Interfaces
Objectives:
Demonstrate inheritance by
extending a class
Understand polymorphism and know
when it is appropriate to override
methods in a super class
Create and extend an abstract class
Implement an interface
Resources:
BJ: chapter 11
FJ: lessons 9.5 and 9.6
Assessments:
Create an abstract Shape class.
Pet Parade (2004 AP CS A Exam: Free-Response
Question 2, on AP Central)
Strategies:
Draw pictures of the inheritance hierarchy.
Note: This unit could be moved to after unit 12 if
you wish to use the MBS to introduce inheritance.
30
Chapter 3
Unit (Weeks)
Title, Topics, and
Student Objectives Resources, Assessments, and Strategies
12 (2829) MBS (chapter 4)
Topic:
Inheritance
Objective:
Use inheritance to extend the
Fish Class
Resource:
MBS: chapter 4
Assessments:
Exercises and analysis from the text
Strategies:
Have fun with this chapter.
Allow the students to be creative after working
through the exercises and analysis.
Create different kinds of fish or other objects.
13 (30–31) Recursion (and Merge Sort)
Topics:
Recursion
Merge Sort
Objectives:
Create a recursive method to solve a
problem
Understand the difference between
recursive and iterative solutions to a
problem
Understand and use the Merge Sort.
Resources:
FJ: lesson 11.1
BJ: section 18.4
Assessments:
Factorial program
Rewrite loop programs with recursion.
Strategies:
Students need lots of practice on recursion.
Mathematical worksheets on recursion help
introduce this topic.
Do a lot of examples and ask, “What is returned
by this method?”
(See appendix B for worksheets and notes.)
14 (32–36) Review
Topics:
Review AP Computer Science A
topics
Objective:
Prepare for the AP CS A Exam
by reviewing material and taking
practice exams
Resources:
Previous free-response questions from
AP Central
Barrons test-prep book for the AP Exams
Assessments:
Practice exams
Strategies:
Give as many practice exams as possible.
Teaching Strategies
I try to create a learning environment that is comfortable for all students. Those who have never touched
a computer should be as at ease in my class as those who have taught themselves how to program. I aim
to foster critical thinking, a lifelong skill, and I accomplish this by giving challenging, yet not impossible,
assignments. When new topics are introduced, I like to use a hands-on approach of having students see
and run examples. While the novices ask questions, more experienced students can make changes to the
examples and experiment with different outcomes.
I measure the effectiveness of my teaching by monitoring student work and giving many short quizzes,
in order to gauge students’ knowledge before I test them on a topic. Experienced programmers help the
novices in a mentoring program after school. This promotes student leadership and propels in-class
learning.
31
Course Organization
Lab Component
The classroom contains 27 student desks in the middle of the room and 27 computers on tables around the
perimeter. For lectures, quizzes, and hands-on tests, students sit at the desks. I give at least two programs
per unit, and students work on programs about 70 percent of the time. They can also come in before or
after school for extra programming time and help. All computers have JCreator LE installed, and students
have access to information on how to download it at home.
Student Evaluation
Category Weight Comments
Daily/Homework 20% Most programming assignments fall into this category.
Quizzes 20%
Tests/Major 60%
Teacher Resources
College Board. AP Computer Science Course Description. New York: College Entrance Examination Board.
Download the latest version from the Course Home Pages: apcentral.collegeboard.com/compscia or
apcentral.collegeboard.com/compsciab.
College Board. AP Marine Biology Simulation Case Study Teacher’s Manual. New York: College Entrance
Examination Board, 2003. Download from the Course Home Pages: see URLs above.
College Board. Computer Science A: Exam Questions. AP Central. apcentral.collegeboard.com/
examquestions
Teukolsky, Roselyn. Barrons How to Prepare for the AP Computer Science Advanced Placement
Examination (Java Version). 2nd ed. Hauppauge, N.Y.: Barrons Educational Series, 2003.
Student Activities
The following activities are reproduced in appendix B:
Searching and Sorting (Unit 9):
Searching and Sorting Worksheet
Searching and Sorting Worksheet Key
Lab Assignment: Searching and Sorting Arrays
Recursion (Unit 13):
Recursion Worksheet 1
Recursion Worksheet 2
Recursion Notes and Worksheet Answers
32
Chapter 3
Sample Syllabus 2 (AP Computer Science A)
Michael Lew
Loyola High School
Los Angeles, California
mlew@loyolahs.edu
www.loyolahs.edu
School Profile
Location and Environment: Founded in 1865, Loyola High School is the oldest high school in Southern
California. It is located in the heart of Los Angeles, 6 miles west of the downtown area. Loyolas central
location draws students from a 50-mile radius representing 235 elementary schools. The student body
includes a wide range of ethnicities and socioeconomic levels.
Grades: 9–12
Type: Catholic—all boys
Total Enrollment: 1,210
Ethnic Diversity: Hispanic/Latino 20 percent
Asian American 15 percent
African American 8 percent
College Record: 97 percent attend four-year universities
2 percent attend community colleges and vocational colleges
Personal Philosophy
My philosophy in teaching AP Computer Science is to challenge my students to be active learners and
critical thinkers. I follow the “guide on the side, not the sage on the stage” approach, which gently
introduces the students to each new concept, encouraging student-driven learning via questioning and
experimentation.
I believe in hands-on learning. In addition to working on programs at home, students receive instant
feedback during in-class lab time once or twice a week. During lab classes, I can easily look at each
student’s code, informally tracking their progress and giving help accordingly (paying more attention to
the slower learners). I can talk to students about their programs, and they can ask specific questions about
problems they are having.
Class Profile
One section of AP Computer Science A is offered each year. Course enrollment is 14 students. I give
lectures on the first one or two days of the week, followed by two days of lab time.
Loyola has a rotating schedule with each class meeting for 55 minutes, four times a week. A typical
week is shown below:
Monday Tuesday Wednesday Thursday Friday
1 6 5 4 3
2 1 6 5 4
3 2 1 6 5
4 3 2 1 6
5 4 3 2
33
Course Organization
Testing days, in-service days, and religious retreats may decrease the number of class meetings per
week to three, and sometimes two, 55-minute periods per week. In addition, seniors have no classes
during the month of January, when they participate in a mandatory community service program; since
AP Computer Science is a senior-level course, this means there are no computer science classes in January.
During the year I identify students who pick up the material quickly and offer them the opportunity
to study the AP Computer Science AB curriculum and take the AB exam. It is, in effect, a directed study
where they complete the AB assignments on their own, with minimal intervention from the teacher.
Course Overview
The purpose of this class is to introduce the student to the object-oriented programming paradigm using
the Java language. Concepts such as classes, objects, inheritance, polymorphism, and code reusability are
covered. Individual hands-on laboratory work helps solidify each concept. Students complete a long-term
programming project that they must demonstrate in a formal presentation.
Course Objectives
The student will:
develop an understanding of the concept of a class and an object
develop an understanding of how objects model real-world objects
implement inheritance to construct an object hierarchy
implement polymorphism to process collections of objects
study, understand, and extend the Marine Biology Simulation Case Study project
design and implement a long-term programming project and formally present the project
to the class
Texts
College Board. AP Marine Biology Simulation Case Study. New York: College Entrance Examination Board,
2002. Download from the Course Home Pages: apcentral.collegeboard.com/compscia or apcentral.
collegeboard.com/compsciab.
Deitel, H. M., and P. J. Deitel. Java: How to Program. 5th ed. Upper Saddle River, N.J.: Prentice Hall, 2003.
Litvin, Maria. Be Prepared for the AP Computer Science Exam in Java. Andover, Mass.: Skylight Publishing,
2003.
Teukolsky, Roselyn. Barrons How to Prepare for the AP Computer Science Advanced Placement
Examination (Java Version). 2nd ed. Hauppauge, N.Y.: Barrons Educational Series, 2003.
Course Planner
Below are my course planners for the fall and spring semesters. I follow a bottom-up teaching model,
focusing on fundamentals first, and then progressing to objects, object interaction, inheritance, and
polymorphism.
34
Chapter 3
Beginning in week 10, students are assigned practice free-response questions for homework
assignments. These questions come from past AP CS Exams (AP Central) or from the AP Computer Science
Course Description. Introducing students early to actual AP Exam questions helps them to understand the
language and difficulty level that they should expect in my class and on the AP Exam.
Key to notations in Programming Projects column:
Page numbers and problem numbers are references to the Deitel text.
CSn problems: Examples:
CS1WordList 04A1 CS4—Ballot CD 0405
(ArrayList, Strings) (ArrayList /Iterators)
CS1: Computer Science Project 1
04A1: 2004 Computer Science A Exam, Question 1 (“WordList” problem)
CD 0405: AP Computer Science Course Description (May 2004, May 2005)
Note: Questions on the 2002 and 2003 AP Computer Science Exams were written in C++; I have
translated a few of those questions into Java to use with my students.
Fall Semester
Week Topic Programming Projects Tests/Large-Scale Projects
1 Introduction to Computer
Science
The Java Language and
Java Program Structure
Intro to Class
Intro to Computer Science
2 Input/Output
Arithmetic Operators
If, If-Else Statements
P. 80, 2.27 [ Odd/Even ]
P. 80, 2.28 [ Multiple ]
P. 80, 2.31 [ Cast Char ]
P. 81, 2.35 [ Neg / Pos / Zero ]
3 Control Statements
While Loops
P. 162, 4.11 [ Miles Per Gal ]
P. 162, 4.12 [ Credit Limit ]
P. 163, 4.13 [ Commission ]
P. 163, 4.14 [ Gross Pay ]
Test 1
Basic I/O, Arithmetic
Operators
4 More
Control Statements
For Loops
P. 212, 5.6 [ Smallest Int ]
P. 212, 5.7 [ Product Odd ]
P. 212, 5.8 [ Factorials ]
P. 212, 5.9 [ Interest ]
5 Methods
Arrays
P. 271, 6.8 [ Parking ]
P. 272, 6.14 [ Power ]
P. 273, 6.23 [ Celsius / Fahrenheit ]
P. 274, 6.28 [ GCD ]
P. 275, 6.32 [ Cai ]
P. 276, 6.36 [ Recursive Power ]
P. 278, 6.45 [ Recursive Error ]
Test 2
Control Statements
35
Course Organization
Week Topic Programming Projects Tests/Large-Scale Projects
6 . . . And More Control Statements P. 213, 5.12 [Mail Order ]
P. 213, 5.15 [ Bin, Oct, Hex, Dec ]
P. 213, 5.16 [ Pi ]
P. 166, 4.31 [ Encrypt ]
P. 167, 4.32 [ E ]
Read chapter 11, 11.111.4
7 Methods Solve the Quadratic Formula!!
8 ArrayLists / Iterators
Solve These Problems With
ArrayList / Iterators Only
P. 323, 7.12 [ Array Init ]
P. 323, 7.15 [ Roll Die ]
P. 324, 7.18 [ Airline Res. ]
P. 330, 7.29 [ Tortoise Hare ]
P. 332, 7.32 [ Palindrome ]
Test 3
Methods
9 Object Creation P. 396, 8.2 [ Complex ]
P. 396, 8.3 [ Rational ]
P. 397, 8.4 [ Tick ]
P. 397, 8.5 [ Date ]
P. 397, 8.6 [ Date / Time ]
10 Object Interaction Object Case Studies
————————————————-
CS1WordList 04A1
(ArrayList, Strings)
CS2—Company 03A2
(ArrayList)
Test 4
Object Creation
11 Object Interaction Object Case Studies
————————————————-
CS3—Plane 02A4
(ArrayList / Iterators)
CS4—Ballot CD 0405
(ArrayList / Iterators)
CS5—LineEditor CD 0405
(String)
12 Object Interaction Object Case Studies
————————————————-
CS6—College 03A1
(ArrayList / Iterators)
CS7GroceryStore 02A2
(ArrayList / Iterators)
13 Inheritance
Polymorphism
Interfaces
Abstract Classes
Inheritance Case Studies
————————————————-
CS8—Bank Account CD 0405
(Inheritance)
Test 5
Object Interaction
14 Inheritance
Polymorphism
Interfaces
Abstract Classes
Inheritance Case Studies
————————————————-
CS9—Pet 04A02
(Inheritance / Abstract Class)
15 Inheritance
Polymorphism
Interfaces
Abstract Classes
Inheritance Case Studies
————————————————-
CS10—Company 03A2 With Interface
(Inheritance / Interfaces)
16 ——————- Final Exam Cumulative
36
Chapter 3
Spring Semester
Week Topic Programming Projects Tests / Large-Scale Projects
1–3 Project Presentations Presentations
4 Strings
Exception Handling
String Project 1: Your Star Wars Name
String Project 2: Pig Latin
5 Searching / Sorting
Recursion / Big-Oh
——-
6 Searching / Sorting
Recursion / Big-Oh
Searching / Sorting
Efficiency Project
7 Marine Biology Simulation Case
Study (MBS)
MBS Role Play
Code Walk-Thru
8 MBS MBS Project 1—PondStocker 04A3
9 MBS MBS Project 2
Design Your Own Fish
10 MBS MBS Project 3
Design Your Own Obstacle
11 MBS Marine Biology Simulation
12–13 Review for AP Exam Review for AP Exam
14 AP Exam
Work on Final Projects
AP Exam
Work on Final Projects
15–18 Spring Final Project
Presentations
Spring Final Project Presentations
Teaching Strategies
Preparing Students for the AP Exam
Weeks 12, 13, and 14 of the second semester are set aside for review for the AP Exam. I use a selection of
multiple-choice and free-response questions from the Barron and Litvin review books and AP Central.
On alternating days, I assign in-class multiple-choice and free-response questions. On a “multiple-choice
question day,I allot 30 minutes of a 55-minute period for 18 multiple-choice questions, leaving 25 minutes
to go over each of the questions in detail. On a “free-response question day,I use 30 minutes of a
55-minute period for 1 free-response question, leaving 25 minutes to go over the answer to the question in
detail. The number of multiple-choice and free-response questions in the 30-minute period is roughly in
line with the time students will have on the actual AP Exam.
Student Presentations
As detailed below in the Student Activities section, students are required to do two full-period (55-minute)
PowerPoint presentations, one in February and one in June. These presentations detail the design and
implementation of a large-scale program that students have proposed, designed, and written. After each
presentation, time is allowed for questions from me and other students in the class.
As mind-boggling as the 55-minute time frame can seem to students, they ultimately take pride
in creating a complete and well-thought-out presentation. Most important, the process allows them to
practice conveying technical information in a clear and understandable manner. They learn that there
is a fine line between presenting too little and too much technical detail to an audience. I have found
that this alternative assessment method really gauges their understanding of the proper object-oriented
programming design principles and programming skills.
37
Course Organization
Lab Component
Students work independently in the lab one to two times a week. Lab work is extremely important for
two reasons. First, it allows me to see students coding in action. I casually walk from student to student,
looking at their progress on assigned programs and getting a very good idea of how each person is
progressing. I can check for understanding or check coding style (indentations, naming conventions for
variables, methods, classes, etc.). My instant feedback enables a student to make corrections “on the spot.
Second, students can ask specific questions about concepts with which they are having trouble, and I can
give personalized assistance. This is especially helpful during the first month of class when students are
new to programming, as well as during the weeks leading up to their first long-term project.
Student Evaluation
Student evaluation is based on homework assignments, tests, and a long-term project.
Category Weight
Homework 45%
Tests 25%
Long-term project 30%
Homework
On the first day of class, each student receives a Course Planner showing which concepts will be taught
each week, along with homework assignments, tests, and the due date for a long-term project. Students are
asked to work on homework assignments at home, developing the skeleton of each program. Lab time can
be used to complete programs. I check homework assignment problems on the computer; no printouts are
required of students. My classroom setup—four rows of four computers eachis conducive to checking
four students’ work at one time. (Class size is limited to 14, because invariably, one or two computers are
down for one reason or another, and having two spare computers ensures that each student has one to
use.) As an example, I direct the four students in row one to open all programs from chapter 2 of the text.
I ask them to compile and run the first program; then I check the output to determine if the program is
working. If this is successful, I ask students to show their source code, and I check for style, documentation,
and overall program organization. After all programs for chapter two are graded (each program is worth
25 points), I progress to the next row.
I emphasize that students must do their own work. Homework assignments are from the Deitel text
and from previous AP Exam questions.
Tests
Tests are given after each major topic is covered. Students are given a problem statement, similar to the
homework assignments, and are asked to write a working program. They have the entire 55-minute period
to design, code, and debug their program. At the end of the period, I collect each student’s disk so that
I can grade the work.
Long-Term Projects
See Student Activities section below.
38
Chapter 3
Teacher Resources
College Board. Computer Science A: Exam Questions. AP Central. apcentral.collegeboard.com/
examquestions
College Board. AP Computer Science Course Description. New York: College Entrance Examination Board.
Download the latest version from the Course Home Pages: apcentral.collegeboard.com/compscia or
apcentral.collegeboard.com/compsciab.
College Board. AP Marine Biology Simulation Case Study Teacher’s Manual. New York: College Entrance
Examination Board, 2003. Download from the Course Home Pages: see URLs above.
Horstmann, Cay. Object-Oriented Design & Patterns. Hoboken, N.J.: Wiley, 2003.
Levine, David, and Steven Andrianoff. AP Marine Biology Simulation Role Play (Java Version).
St. Bonaventure University, Department of Computer Science, 2003. http://web.sbu.edu/cs/dlevine/
RolePlay/roleplay.html
Student Activities
One of the most successful activities that I assign is a large-scale, multiclass project that students propose,
design, implement, and present to the class according to a strict set of guidelines. A project is assigned once
in the first semester before the Marine Biology Simulation Case Study is covered, and once again after the
MBS in the second semester. The requirements for the second project build on, but are slightly different
from, the first.
Students must make design decisions for the first project (which classes to create, which classes must or
should interact with other classes, and so forth). After a slightly successful attempt at writing a large-scale
project in the first semester, students study the MBS and learn the characteristics of a well-written, large-
scale project. They then propose and implement a second project (different from the first—no rewrites are
allowed) using the experience they have gained from writing their own first project and studying a well-
written project. This usually results in a well-designed and organized project completed in a fraction of the
time it took to write the first one.
The proposal for the second project is due just after we study the MBS. Students actually work on it as a
review for the AP Exam, with project presentations done after the exam. This has been a great way to keep
students (especially seniors) on task after the AP Exam.
Each student has one 55-minute period to present a project, subject to the guidelines listed in the
project assignment (see appendix B).
39
Course Organization
Sample Syllabus 3 (AP Computer Science A)
Frances P. Trees
Drew University
Madison, New Jersey
ftrees@drew.edu
www.drew.edu
University Profile
Location and Environment: Drew University was started as a Methodist seminary in 1867; today it is an
independent university with a continued focus on the liberal arts and the use of technology in support of
teaching and learning. Drew’s population is primarily residential, with most undergraduate students living
on campus. The school is located on approximately 200 wooded acres in the town of Madison in northern
New Jersey, 30 miles west of Manhattan.
About 70 percent of Drew’s undergraduate students have graduated in the top quarter of their
secondary school class; about half come from the top 10 percent of their class.
Professors at Drew place teaching and learning first. Full professors, deans, and the president of the
university teach courses. Drew prides itself on small classes, with 70 percent of lower-level courses (open
to first-year students) numbering 25 students or fewer; over 20 percent have no more than 10. Nearly
80 percent of upper-level courses total 20 or fewer students. The average student-to-faculty ratio is 11 to 1.
Students will have acquired a strong liberal arts background by the time they graduate. To facilitate
this, each student must complete a major and a minor. The major is declared at the end of the second year
and the minor by the end of the first semester of the junior year. In the 2002-03 academic year, the highest
numbers of degrees were awarded in political science, English, and psychology.
Type: Small, highly-selective four-year liberal arts university.
Total Enrollment: 2,400 students: 1,500 undergraduates; 900 in the graduate and theological schools
Ethnic Diversity:
Out of 1,629 undergraduates enrolled in the fall of 2002, 91 described themselves
as Hispanic; 90 as Asian or Pacific Islander; 63 as black, non-Hispanic; and 7 as
American Indian or Alaskan Native. Currently, undergraduates come from 42 states,
the District of Columbia, and about 12 countries other than the United States.
Gender Ratio: The male/female ratio is approximately 42:58.
Mathematics and Computer Science Department
Students in Drew’s Mathematics and Computer Science Department may major in computer science or in
mathematics (general or applied), or they may choose a joint major that includes core courses and electives
in both disciplines. Each year, the department graduates approximately 20 majors in computer science,
mathematics (general or applied), or a joint computer science–mathematics major.
The first-year computer science sequence is composed of four half-semester courses, each of which can
earn students 2 credits:
CSCI 6 and CSCI 9 provide an introduction to computer science through programming and cover
roughly the same material as the AP Computer Science A course. [CSCI is short for Computer
SCIence.] The courses are offered in the first and second halves of the fall semester, respectively.
40
Chapter 3
CSCI 12 and CSCI 13 include coverage of material on data structures and algorithms normally
covered in the AP Computer Science AB course. This sequence of courses is offered in the spring
semester.
CSCI 6 and 9 are required courses for a computer science major, a joint computer science–mathematics
major, and an applied mathematics major. CSCI 12 and 13 are required courses for a computer science
major and a joint computer science–mathematics major.
Philosophy of the Department
Precise abstraction and quantification play an increasingly important role in many areas of learning, from
the natural sciences and the social sciences to finance, humanities, and the arts. The study of mathematics
and computer science can provide a foundation that fosters rigor of thought and an analytical approach to
solving problems. Graduates with such a background find themselves in demand not only in mathematics
and computer science but also in such areas as law and business, where clear thinking and analysis are
indispensable.
Personal Philosophy
It is my goal to bring life and fun into the computer science classroom while challenging students to think
outside the box. I can achieve this goal only by actively involving each student in each lecture in any way
that I can, not always in the traditional question–answer format. I use play-acting, group work, partner
projects, role-playing, games, lectures, and challenges. In order for the students to enjoy learning, the
teacher has to enjoy teaching!
Introduction to Computer Science and Programming (CS1)
Class Profile
In recent years, the enrollment for CSCI 6 has averaged about 20 students, with a drop of 1 or 2 for each
succeeding course in the CSCI 6–9–12 sequence.
This syllabus focuses only on the first semester CSCI 6–CSCI 9 sequence. The class meets for three
65-minute lectures per week plus an additional 65-minute lab period. Since Drew gives each student a
personal computer with software and a printer, there is no formal lab” setting; students simply bring their
laptops to class on lab day. A wireless network provides Internet access if needed.
Course Overviews
CSCI 6: Introduction to Computer Science and Programming I
CSCI 6 is an introduction to computer science through programming. The focus is on designing and
implementing programs in an object-oriented language. Topics covered include basic data types and
variables, control structures, and defining and using classes and methods. This course is taught using the
Java programming language along with program development environments.
There are no prerequisites for CSCI 6. Some students come with some programming knowledge
(usually not Java), and others have never written any ty