Syllabus

Advanced Placement® Computer Science is a fast-paced course equivalent to a college introductory programming class.  We will learn about the exciting kinds of problems tackled by computer science while exploring the field’s most important tool – programming.  Assignments covering a broad range of application areas will require approaching problems systematically to produce explicit sets of steps, called algorithms, to solve them.  We will also study common, reusable algorithms and learn to analyze them for correctness and speed.

This course will cover fundamentals of programming syntax and methodology using the Java programming language.  Java is just one example of a language used to create software and we will focus on gaining general problem-solving and programming skills that can be applied to other common languages.  No matter what field you choose to make your career in, this course will provide you with valuable insights into how to solve problems systematically, how computers work and how large projects are managed.

Expectations

Students in this course will be expected to:

  • ask for help as necessary significantly before deadlines
  • follow collaboration policies
  • turn in assignments before their deadlines
  • contribute to making the classroom an effective learning environment

Goals

Successful completion of this course and its projects will prepare students for the AP® exam and for a second-semester college programming course.  Students will be able to:

  • design, implement and debug computer-based solutions to problems in diverse application areas
  • use, implement and analyze common algorithms and data structures
  • write clear and efficient code using good Java syntax and programming style
  • know when and how to use Java library classes
  • read, understand and contribute to large programs consisting of several classes
  • identify and discuss the major hardware and software components of a computer system
  • recognize the ethical and social implications of computer use and software creation

Getting Help

You may sometimes get stuck while working on an assignment for this class – please ask for help!  I will try to make myself available most days after school and you can also usually find me in the room during lunch and 5th period.  I encourage you to make an appointment to make sure I’ll be there.  I will also answer all e-mail within 24 hours.

Grading

Over the course of the year, you will complete roughly twelve programming projects and one open-ended final project.  Projects are where the learning happens, so these are weighed heavily.  That being said, paper exams provide you with an important opportunity to demonstrate your understanding of important concepts.  Points will be distributed between categories in approximately this way:

  • 10% – home learning, exercises, participation
  • 55% – programming projects
  • 35% – quizzes and tests

Class materials

We will not be using a paper textbook in this class.  Instead, I will use the course website to link to readings, write lecture summaries and post slides.  Assignment descriptions will also be posted on the website.  It will be your responsibility to make sure you either download materials ahead of time or have access to the Internet when you need them.  I expect all students to come to class with something to take notes on as well as with previous classes’ notes and handouts.

Programming projects

You will have a programming assignment due at least every other week.  It will be up to you to budget your time – I will give you opportunities to work in class but most assignments will require outside work as well.  That means you will need to find access to a computer with a Java compiler.  Instructions for getting your own machine set up are on the course website or I will make the lab available for use after school most days.  All assignments will be turned in electronically through the website.

Late work

If you are sick or have an excused absence, you must talk to me before a project’s due date to make arrangements.
I understand that things come up, so I will give you a total of 6 “late days” to use as you need.  These will allow you to turn in assignments late without penalty — each late day allows for up to a 24 hour extension.  You may use up to 3 on any given assignment and any remaining at the end of the year will be turned into extra credit.  Beyond your six late days, you will lose 10% per day late.

Collaboration

The early programming assignments will be individual work.  I do encourage you to talk to your classmates, parents or to me about how you are approaching a problem but ultimately the work you turn in must be your own. A good rule of thumb is that you should be speaking in English rather than in Java and should never look at someone else’s code. I will use a software system to compare recent student submissions as well as those from previous offerings of this course. High matches may result in a 0 for the assignment and/or removal from the course.

Final Project

The final project will provide you with greater freedom in design and implementation.  You will work in pairs to complete a sizable project of your choice.

Exams

Most of our quizzes will be open-notes to emulate a real programming environment as well as to encourage you to keep organized records.  Our mock AP in April will aim to prepare you for job interviews as well as for the AP test so notes will not be allowed.

Feedback

You have a great opportunity to shape the class into something you love by providing lots of feedback.  You can always talk to me before/after class or send me e-mail or if you’d prefer to remain anonymous, I have posted a form on the website.