AP Computer Science A Syllabus

advertisement
AP Computer Science A
Syllabus
Course Overview
This is an entry level college course, and will be conducted as such. I hope this is an
exciting prospect, since it frees us to focus with intensity on the course material,
challenging as it is, exploring as a group the many creative opportunities the subject offers
for imaginative and practical expression. It also demands the mutual respect and
responsible behavior befitting professionals working together to achieve a common
purpose. Certainly, the standing expectation is that all participants will conduct themselves
accordingly. Those who do exceptionally well may earn college credit.
We will explore software as an art form. We will explore software as one of the most
powerfully practical and influential technologies ever devised. And we will explore the
social consequences of our activities with an attempt to provide an appropriate awareness
of the balance that must be struck between what is possible, what is practical, and what is
appropriate.
The course will be divided into three concurrent activities:
1. class instruction and supporting homework exercises of technical concepts as
outlined by the course syllabus
2. individual research and group discussions relating to the workplace and social
implications of computer science
3. individual and group projects
We will run our class as a small, software company; organizing ourselves and our activities
in a manner that a contract development company might adopt in performing its
professional services for its customers. Expectations of each member of such a company
are usually quite high, expectations of oneself as well as expectations of one another, since
the success of their endeavor invariably depends on the success of the entire group
operating as a team.
Plan to work hard, learn a lot, and have fun.
Texts and Resources
Teukolsky, Roselyn. Barron's AP Computer Science A, 5th Edition. Hauppauge, New York,
Barron's Educational Series, Inc., 2010.
GridWorld AP Computer Science Case Study. The College Board, 2007.
Parlante, Nick, Stanford University. CodingBat Java, http://codingbat.com.
McGann, L. Brian, Pacific Collegiate School, Santa Cruz, CA. PumaJ Java Educational
Framework, http://pacificcollegiate.com/ourpages/auto/2010/8/20/53433896/
PumaJDistribution101208.zip.
Course Planner
Fall Semester
Week
1
2
Topic
Introduction to Online
Programming Resources
Programming Projects /
Essays
Introduction to CodingBat.
Methods
Writing Methods: CodingBat
Exercises
Hardware and Software
Components of a Computer
System
Hardware and Software
Components of a Computer
System
Methods
Writing Methods with Strings:
CodingBat Exercises
The String Class
Tests/Large
Scale Projects
Quiz 1 Methods
Quiz 2 Strings
[8]
Week
3
4
5
6
Topic
Programming Projects /
Essays
Tests/Large
Scale Projects
String and Object Classes
Barron's Chapter 4, The String
Class
Social Impacts
Essay: Social Networks and
Personal Privacy
[9]
Introduction to Integrated
Development Environments
Writing and Debugging
Classes with BlueJ
Quiz 3 Conditionals
Conditionals
Barron's Chapter 1, Java
Introduction
[4,5]
Iterations
Writing Methods with
Quiz 4 Iterations: CodingBat Exercises Iterations
Arrays
Writing Methods with Arrays:
CodingBat Exercises
Arrays
[4,5]
Barron's Chapter 4, Built-In
Classes
First PumaJ Project
7
8
Arrays
Standard Classes
Standard Classes
Barron's Chapter 4, Built-In
Classes
Quiz 5 Arrays
PumaJ Practice with Shapes
[3,4,5]
Barron's Chapter 2, Classes
and Objects
PumaJ Shapes in Random
Locations and Colors[1]
9
Standard Classes
[3,4,5]
Barron's Chapter 2, Classes
and Objects
PumaJ Shapes in Random
Separate Locations
[3,4,5]
Week
10
11
Topic
Classes and Objects
Classes and Objects
Programming Projects /
Essays
Tests/Large
Scale Projects
Barron's Chapter 2, Classes
and Objects
Quiz 6 PumaJ Shapes
PumaJ Resizing Shapes
[3,4,5]
Barron's Chapter 2, Classes
and Objects
Quiz 7 Classes and
Objects
PumaJ Moving Shapes and
Bouncing Shapes
12
Classes and Objects
Barron's Chapter 2, Classes
and Objects
PumaJ Managing Many
Bouncing Shapes
13
Inheritance and
Polymorphism
Barron's Chapter 3,
Inheritance and Polymorphism
PumaJ Bouncing Shapes with
Obstructions
14
Inheritance and
Polymorphism
Inheritance and
Polymorphism
[3,4,5]
Quiz 8 Inheritance and
Polymorphism
[3,4,5]
Barron's Chapter 3,
Inheritance and Polymorphism
PumaJ Bouncing Separate
Shapes Against All Sides
15
[3,4,5]
Barron's Chapter 3,
Inheritance and Polymorphism
[3,4,5]
Quiz 9 Inheritance and
Polymorphism
PumaJ Bouncing Separate
Shapes Against Everything
16
Simple Multimedia
PumaJ Bouncing Sounds
GUI Interactivity/IO
PumaJ Clicking Shapes
PumaJ Product
Development Contract
PumaJ Product Development
Contract
[3,4,5]
[3,4,5]
Week
17
Topic
PumaJ Product
Development Contract
Finals
Programming Projects /
Essays
Tests/Large
Scale Projects
PumaJ Product
Demonstrations
Product
Demonstrations
Semester Final Exam
Cumulative
Spring Semester
Week
1
Topic
Arrays Review
Programming Projects /
Essays
Tests/Large
Scale Projects
Writing Methods with Arrays:
CodingBat Exercises
Barron's Chapter 6, Arrays and
Array Lists
2
3
4
GridWorld Case Study
GridWorld Case Study, Part 1
[4,7]
Arrays Review
Writing Methods with Arrays
and Array Lists: CodingBat
Exercises
Quiz 11 Arrays
GridWorld Case Study
GridWorld Case Study, Part 2
[7]
Career Awareness
Artificial Intelligence Speaker
Corporation Research
Oracle Corporation Report
GridWorld Case Study
GridWorld Case Study, Part 2
[7,9]
Career Awareness Field Trip
Field Trip to Oracle
GridWorld Case Study
GridWorld Case Study, Part 3
Quiz 12 GridWorld Case
Study
[7]
Week
5
Topic
GridWorld Case Study
Programming Projects /
Essays
GridWorld Case Study, Part 3
Creating A Bug You Can Call
Your Own
6
GridWorld Case Study
Tests/Large
Scale Projects
GridWorld Case Study, Part 4
[7]
Creating A World You Can Call
Your Own
Quiz 13 GridWorld Case
Study
[7]
7
Work on Final Performance
Work on Final Performance
[3,4,5,6]
8
Recursion
Barron's Chapter 7, Recursion
Work on Final Performance
Work on Final Performance
Quiz 14 Recursion
[3,4,5,6]
9
Work on Final Performance
Work on Final Performance
[3,4,5,6]
10
Work on Final Performance
Work on Final Performance
[3,4,5,6]
11
Sorting and Searching
Barron's Chapter 8, Sorting
and Searching
Work on Final Performance
Work on Final Performance
[3,4,5,6]
Sorting and Searching
Barron's Chapter 8, Sorting
and Searching
Quiz 15 Recursion
Work on Final Performance
Work on Final Performance
[3,4,5,6]
13
Work on Final Performance
Work on Final Performance
[3,4,5,6]
14
Work on Final Performance
Work on Final Performance
[3,4,5,6]
15
Review for AP Exam
Review for AP Exam
Quiz 16 AP Practice
16
Review for AP Exam
Review for AP Exam
Quiz 17 AP Practice
17
AP Exam
AP Exam
AP Exam
Work on Final Performance
Work on Final Performance
[3,4,5,6]
12
Week
18
Topic
Programming Projects /
Essays
Tests/Large
Scale Projects
AP Exam
AP Exam
AP Exam
Work on Final Performance
Work on Final Performance
[3,4,5,6]
19
Work on Final Performance
Work on Final Performance
[3,4,5,6]
20
Work on Final Performance
Work on Final Performance
[3,4,5,6]
21
Final Performance
Final Performance
Final
Performance
[3] The course teaches students to design and implement computer-based solutions to problems in a variety
of application areas.
[4] The course teaches students to use and implement commonly used algorithms and data structures.
[5] The course teaches students to develop and select appropriate algorithms and data structures to solve
problems.
[6] The course teaches students to code fluently in an object-oriented paradigm using the programming
language Java. The course teaches students to use standard Java library classes from the AP Java subset
delineated in Appendixes A and B of the AP Computer Science Course Description. (Note: Students who
study a language other than Java in AP Computer Science must also be taught to use Java, as specified in
the AP Java subset.)
[7] The course teaches students to read and understand a large program consisting of several classes and
interacting objects, and enables students to read and understand the current AP Computer Science Case
Study posted on AP Central.
[8] The course teaches students to identify the major hardware and software components of a computer
system, their relationship to one another, and the roles of these components within the system.
[9] The course teaches students to recognize the ethical and social implications of computer use.
Examples of Teaching Strategies
Lab Component
Students work in the lab nearly every class period, typically individually, but sometimes with
one or more partners. Lab work is extremely important for a number of reasons. First,
learning Java is like learning any other language, complete with new vocabulary, grammar,
and syntactical meaning. Mastering the language requires an enormous amount of
practice, the effectiveness of which I have found to be greatly enhanced by intense and
repetitive interaction both between individual students and myself, and between individual
students and the others in the class. Further, working individually among others mimics
many typical workplaces, providing the benefit of the potential for spontaneous
collaboration among peers and a taste for what it is often like in a professional setting. The
bond that inevitably forms among the members of such a team often fosters ad hoc
collaborative reinforcement of concepts and techniques among members of the class that
complements the benefits derived from my working with individuals one-on-one.
Throughout all the lab work, students are introduced to the AP Java subset delineated in
Appendices A and B of the AP Computer Science Course Description.
Product Development Projects and the Final Performance
Our class is modeled after a small software development company, with "development
contracts" coming our way from time to time. Fulfilling these contracts requires the class
to organize in such a way that the the corresponding products can be adequately defined,
constructed, tested, and delivered. In so doing, students learn far more than the
programming language itself, but in addition, many of the processes and procedures that
are required to successfully build a real software product; they learn the importance of
craftsmanship in addition to the art of effective expression.
Our final product development project of the course is our "Final Performance". This is a
relatively large product development effort that the class chooses itself. It typically involves
a variety of computer systems working in concert to perform some sort of multimedia
experience. It is complex enough that it requires decomposition into a number of
component parts, with the class dividing into teams to design and build each one of them.
Once completed, the teams work together to integrate and test the competed assembly. If
the class judges the result to be of sufficient quality, a "performance" of the product is
offered to be experienced by the school as a whole.
Download