AP Computer Science

For a printer-friendly version of this syllabus, view this Course Syllabus document.

Advanced Placement Computer Science is a 2 semester course in the Business/Marketing/Technology Department. Students will earn 1/2 credit in Occupational Education for each semester successfully completed.


This course is an introductory study of the theory and practice of computer science and software engineering.

It covers fundamental concepts of programming, including data structures, algorithms, and procedures, as well as object-oriented methodologies. Students will learn problem-solving techniques, software design and documentation skills, and development and debugging strategies, all using the Java programming language. This Advanced Placement course is the equivalent of a first-year college course in computer science, and is based on the University of Washington’s curriculum for its introductory computer science course (CSE 142/143). It prepares students to take the AP Computer Science A exam in the spring.


Students taking this course should have:

  • Successfully completed Algebra 1 (A/B) or its equivalent.
  • Fluent use of computers and software applications.
  • Strong reading comprehension and writing skills.


Upon successful completion of this course, students should be prepared for the AP CS A exam and for a second-semester college programming course. They should also:

  • Be able to identify and discuss the major hardware and software components of a computer system.
  • Be able to recognize the ethical and social implications of computer use and software creation.
  • Understand how to design, implement and debug computer-based solutions to problems in diverse application areas.
  • Know how to use, implement and analyze common algorithms, data structures and software methods.
  • Have a solid understanding of the theory, concepts, and practice of the Java programming language.
  • Be able to write clear and efficient code using good Java syntax and programming style.
  • Grasp and correctly utilize fundamental Java classes and standard system libraries.
  • Be able to read, understand and contribute to large Java programs consisting of several classes.


A summary of the units of study and topics for the course is listed below. Detailed information about assignments and assessments may be found on other pages of this site.

Unit Topics Duration
Fall Semester
Introduction to Java Basics & Environment
Strings & Printing
Procedural Decomposition
2 weeks
Primitive Data & Definite Loops Data Types
For Loops
3 weeks
Parameters & Objects Parameters
Return Values
String Objects
4 weeks
Conditional Execution If/Else Statements
Relational Operators
Cumulative Algorithms
Text Processing
3 weeks
Indefinite Loops While Loops
Boolean Logic
Fencepost Algorithms
2 weeks
File Processing Scanner Objects
Token Processing
2 weeks
Arrays Arrays Class
Array Traversal
Reference Semantics
2-D Arrays
2 weeks
Spring Semester
Classes Object-Oriented Programming
2 weeks
Inheritance Hierarchical Objects
3 weeks
ArrayLists ArrayList Objects
Comparable Interface
2 weeks
GridWorld Case Study Critters 3 weeks
AP Exam Practice Multiple Choice Questions
Free Response Problems
2 weeks
Advanced Topics Complexity
Search & Sort
2 weeks
Final Project Java Applications 4 weeks
After the AP Exam !


We will use the same textbook that the UW uses in its introductory CSE 142/143 programming course sequence:

Reges, Stuart, and Marty Stepp. Building Java Programs: A Back to Basics Approach. 2nd ed. (Boston: Addison-Wesley, 2011).

Students will be issued a school copy of this text at the beginning of the fall semester.

Most of the teaching materials (handouts, presentation slides, resource lists, assignments, etc.) will be found online, either on a website that I have developed specifically for this course (see below), or other public website resources. In addition, there are many other resources available in conjunction with the textbook, and from the College Board for exam preparation.

Please be sure to have a composition book for the class (as well as writing instruments, of course), as you will need it for notes and keeping a journal. If you intend to work on your projects outside of school, you will need a flash drive to transport digital files back and forth.

We will be using many different software tools in the course. All of them are installed on the computers in the lab. Most of the software is “open source,” which means it is free and available for anyone to download and use on their own computers. So you can also work at home or anywhere else you have access to another computer.


You have obviously found the course website online, since you are reading this text.

I intend to use the website, with its announcements blog, as the main source of all assignments, reference materials, and communications. Grades will be posted on the Source, but I won’t be posting detailed information about assignments there.


This course is based primarily on the philosophy that you learn complex concepts and practices best by applying them in programming assignments. There will be weekly or bi-weekly assignments that require you to use the computer science knowledge and programming techniques covered in lectures to solve computing problems in a variety of domains.

The techniques used in these larger assignments will be reinforced in a series of smaller exercises and worksheets, typically done as part of daily classwork.

There will also be short weekly quizzes to provide frequent feedback on the depth of your understanding of the material. A larger midterm exam and comprehensive final exam each semester will provide practice for the AP exam near the end of the course.

Finally, a component of all Career and Technical Education (CTE) courses is a demonstration of professionalism. Students are expected to actively participate in class, show leadership, and exhibit responsible behavior in preparation for life beyond high school. There will be activities and tasks in the classroom that emphasize these skills.


Grades will be based on the components as shown below.

Assignments 45%
Tests 35%
Classwork 10%
Professionalism 10%

Grades will be posted on the Source, generally within two weeks of the due date of the assignment.


This course is structured so that you can accomplish most of the required work during class sessions. But it is up to you to budget your time, and you may need to work on the programming assignments outside of class time, as homework.

And since so much of the work depends on the prior work, you will need to keep up with it in order to succeed. But things always come up, from absences to illness to just needing extra time. So for the programming assignments, you will have a total of 6 late days, which you can use during each semester, with a maximum of 3 for any one assignment. Otherwise each day an assignment is late will be marked down 10%. Unused late days can be converted to extra credit at the end of the semester. (Special arrangements can be made for excused absences, but you must discuss them with me.)


A complete list of general course policies can be found on the “Course Policies” page of this site.


I will be available most days during lunch periods and after school for extra lab time or individual help. Email (ahdavidson@seattleschools.org) is also a great way to get in touch with me for questions or problems.