AP Computer Science A

Course Policies

Read Me!

Apologies in advance for the length of this document, but there are a number of qualities about this course that make it different from most courses that you have taken in the past. Please go through this document carefully.

Course Description

From the Polytechnic School Course of Study:

Course Description

The AP Computer Science A course is designed to provide students with an introduction to topics in computer science and software engineering, including problem analysis, design of algorithms, data structures, control structures, and writing computer programs using the Java programming language. Advanced topics in the course include object-oriented programming, recursion, and searching and sorting algorithms. The course will be centered on the College Board’s AP Computer Science A curriculum, with supplementary study of graphical interfaces, game design, and technology in modern culture. Assignments, projects, and assessments are both hand-written and coded on computers, and range from short, individual assignments to long-term, team-based projects. In class, each student needs a laptop computer with an Apple, Microsoft, or Linux operating system installed. Some class time is available for working on assignments, but students also spend significant time working on projects outside of class. Taking the AP Examination is a requirement of the course.

The AP Computer Science A course at Poly has a wonderful series of topics. In here you will be:

I'm sure you're going to enjoy it!

Code of Conduct

The instructors of this course are dedicated to providing a respectful, harassment-free community for everyone. We do not tolerate harassment or bullying of any community member in any form.

Pirates

Hackers, coders, nerds, and geeks, have a counter-culture tradition that celebrates a piratical "us vs. them" mentality. Good-natured teasing and "shenanigans" can be fun when sharing a private joke with friends, but in a classroom or online, misunderstandings can develop quickly. It is the responsibility of students and instructors to be supportive of people in here. Be especially sensitive to how your remarks and behavior—perhaps even meant to be helpful but expressed in an aggressive, critical, or demeaning way—may be misunderstood.

Harassment includes

Participants asked to stop any harassing or bullying behavior are expected to comply immediately.

If a participant engages in harassing behavior, representatives of the community may take reasonable action they deem appropriate including warning the offender and reporting the behavior to school administrators.

If you are being harassed, notice that someone else is being harassed, or have any other concerns, please act to intercede, or ask for help from the instructor or any school teacher or administrator.

This Code of Conduct has been adapted from the one at PyLadies.com and is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported license.

Course Resources

This course will assume that you make use of a number of different resources:

You will have access to a daily schedule for our class, online lectures that you will be asked to refer to before and after presentations in class, and copies of assignments and other resources used in the course. Daily assignments are typically available on your MyPoly portal, but this website is the canonical, authoritative reference for our work.

Computers

You will need a laptop for use in this course—any Apple or PC laptop running modern Windows, macOS, or Linux will work. Make sure that your laptop's battery is capable of holding a charge for the duration of class or that you have a power supply that you can plug in.

You will need to install software for this course, including the Java Development Kit (JDK), BlueJ IDE, and Visual Studio Code. Windows users will need to have access to the Linux Subsystem for Windows. Information on how to install this software is provided elsewhere on the website.

Notebook

Computer science is only partly about writing code on the computer—we make use of paper documents in here as well. You will need to take notes and draw diagrams as you learn our subject, and print or receive in class documents that you will need to save, store, and be able to access in a 3-ring binder. Either use a small section of a binder currently used for other classes, or get a half-inch 3-ring binder to be used for this class.

Homework

You will have work for this class that needs to be completed outside of our meeting time, including:

It may be the case that you occasionally find yourself stumped by some of problems on a particular assignment. In these cases, you are encouraged to:

No external references should be used in this course

The course materials available on this website, our textbook, and the Java API are sufficient for our needs in here as we learn the fundamentals of the Java programming language.

You should not be Googling for answers, wandering around StackOverflow, asking ChatGPT, etc. for assistance. The answers you get will usually be inappropriate for our work, will not help you learn the material, and thus are ultimately a waste of your time.

While occasionally looking for assistance on the Internet is an important skill for experienced programmers, the work in here doesn't require arcane programming strategies that you've never seen before; it requires applying what we've learned to a specific problem. If you find that it's taking you too long to solve a problem, ask the instructor or another student for advice, or check the pseudocode that is available for most problems.

Occasionally you will have access to answer keys or solutions for some of our work.

Make good use of solutions/answer keys

Although you will sometimes be able to consult published solutions and/or answer keys, avoid working on programs and homework with the solutions readily available. Part of the learning process is getting your brain to think about a problem for a little while. You don't sit down to work on a crossword or soduku problem with the answer key available. The point of working on a puzzle is to figure out the puzzle. Looking at the answers before your brain has had a chance to really wrestle with the problem may help you in the short term, but it doesn't help you learn the material.

Finally, you will often find yourself working, formally or informally, with other students in the class. When working with other students:

Do not copy-paste

Our primary goal here is to help you learn how to think about problem-solving, and learn how to create programs. You're trying to train your brain, and copy-pasting code sidesteps that whole process.

NOTE: The "no copy-paste" policy is not advice—it's a rule in this course. See Academic Integrity below for further information.

Procrastination

Thanks to your intelligence and excellent pattern recognition skills, you have probably become well-trained in the fine art of "putting things off till the last minute." In many of your classes, your ability to procrastinate has served you well.

Programming doesn't work like that.

The skills you'll be developing in here require time to sink in. Trying to fit a one-hour assignment into 15 minutes, or a ten-hour assignment into an hour-and-a-half, simply will not work.

Think of creating a piece of art. Whether it's a small or large, the work that you're creating takes time to develop—there aren't any shortcuts, and there are inevitably problems (see next section, Technical Glitches).

Recommendations:

I have every confidence that you'll figure this out sooner rather than later.

Technical Glitches

You can anticipate a wide range of technical glitches that will conspire to impede your progress in here. All of these happen to students in this course every year:

None of these are excuses for turning in late work, with the possible exception of sudden or extended illness.

Plan for the unexpected, and try not to panic when your emergency plan fails. A missed homework assignment here or there won't be a problem for anyone, but a pattern of missed smaller assignments, or a major assignment that's not completed on time, will quickly become a problem. Do what you can to avoid finding yourself in that situation.

Turning in assignments

You'll have a number of different types of assignments in here, most of them involving writing programs in Java, and most of these programs will be written on your computer, either at school or at home. In order to "turn in" these assignments, you'll need to upload them to a directory on the course server reserved for such purposes.

Unless stated otherwise, programs assigned on a given day are due that evening by 12:00 midnight. At that time, the programs will often be automatically evaluated by testing software, so you can't afford to turn in assignments late. You are strongly encouraged to get your work done on these assignments early, so as to avoid any last-minute problems: the assignment was difficult, your connection was down, etc.

Late work

The nature of the work we do in here and the way the course is constructed is such that late work should be an extremely rare occurrence. Depending on the nature of the assignment, late work will receive a grade penalty, or may not be accepted at all.

If you find that you're having difficulty completing work on time, please speak with the instructor as soon as possible.

An ongoing pattern of late or missing assignments will result in an Academic Update as required by the school.

Assignment Evaluation

Evaluation of your work depends on the nature of the assignment. Quizzes, tests, and larger computer-based projects will be evaluated in a fairly traditional manner. Daily written homework assignments are worth fewer points but are an important aspect of your learning the material.

Homework assignments

Homework / short programming assignments will be evaluated in one of two ways.

  1. Testers may be run on your program, with a variety of structured input causing your program to produce output, which is checked against the expected results. Test reports indicate the how well your programs satisfy the requirements of an assignment, and the grade earned reflects those measured requirements.
  2. Qualitative analysis may be done using a system based on one used at Stanford. There are a number of different qualities any given program is evaluated on: efficiency, legibility, correctness, completeness, comments, etc. Under this system, a 5-point assignment has points are awarded on the following scale:
    GradeEvaluationScore
    ✓++An absolutely fantastic submission of the sort that will only come along a few times during the quarter. Rarely awarded, but well-earned.7/5 points
    ✓+A submission that exceeds standard expectation for the assignment. To receive this grade, a program often reflects additional work beyond the requirements or gets the job done in a particularly elegant way.6/5 points
    A submission that satisfies all the requirements for the assignment. It reflects a job well done.5/5 points
    ✓-A submission that meets the requirements for the assignment, possibly with a few small problems.4/5 points
    ✓--A submission that has problems that cause it to fall short of the requirements for the assignment.3/5 points
    0Assignment late, not submitted on time, or missing substantial work.0/5 points

Quizzes, Projects, and Tests

Quizzes are often unannounced and will typically administered at the beginning of class during which you'll have 5 minutes or so to write a program, often based on the previous night's homework.

Projects are larger-scale assignments that typically take 2-5 days to complete, and working on these assignments is a favorite part of the course for many students. Projects typically require more planning, more coordination, and more work than the daily homework exercises, and thus are worth more points.

It is especially easy to find yourself falling behind in a project, so get started early. A project submitted past the deadline will suffer a late penalty. Projects submitted on time but that fail catastrophically may be resubmitted after meeting with the instructor. In either case, the maximum score possible is 80% of the original points possible.

Paper-and-pencil tests are administered every 3-5 weeks, typically after students have had plenty of time to write programs using material. A catastrophic test (score <70% of the points possible) can be made up after meeting with the instructor. The maximum score possible for a test re-take is 70% of the original points possible.

Grading

Your grade will be based on a percentage of points earned / points possible according to the following scale:

A93% and above
A-90-92%
B+87-89%
B83-86%
B-80-82%
C+77-79%
C73-76%
C-70-72%
D+67-69%
D63-66%
D-60-62%
Fless than 60%

The approximate weighting of assignments in the course will be as follows:

Programming Homework / Quizzes25%
Activities and Projects35%
Tests35%
Other5%

Java Style Conventions for Poly's AP Computer Science A course

In order to assist you in writing, reading, and understanding the programs that you'll be working on in here, you'll be asked to follow a number of style conventions. These include:

  1. Initial Comment for every program includes 7 lines of code, as shown in the example below.
    /**
     * FourRectanglePrinter class
     * Programming Exercise for AP Computer Science A
     *
     * @author Richard White
     * @version 2012-12-07
     */
  2. Capitalization convention in code
    • variables and methods are written in all lower case— i, age, value. Variable and method names that consist of multiple words should be written using "camelCase": userName, getData, processTheResults.
    • Classes are written in camelcase but begin with a capital letter: Box, BankAccount, Vehicle, BirthdayParty.
  3. Tabs/Spaces
    Blocks of code are indented. In here, you'll indent successive blocks of code by 4 spaces, not a tab. Most people prefer to use the tab key on their computer to indent, and set their text editor to automatically substitute four spaces for a tab.
  4. Width of program
    Lines in a program may be up to 120-characters in width, but no more than that. Use the Enter key to create lines of code that are easy to read and understand.
  5. Curly braces
    Curly braces { } indicate code blocks. In this course, the initial curly brace for a block will be placed below the previous line and lined up under the first character in the statement, rather than at the end of the statement on the same line. So we'll be writing:
    // CORRECT use of curly braces in Poly's AP Comp Sci course 
    for (i = 1; i <= n; i++)
    {
        double interest = balance * rate / 100;
        balance = balance + interest;
    }

We'll be developing additional conventions as the course proceeds.

Academic Integrity

In addition to assisting students with learning material, teachers are often responsible for assessing their progress. In order to do this, students may be given a number of different types of assignments: homework, quizzes, tests, in-class activities, laboratory experiments to conduct, research papers, individual and group projects, presentations, etc.

It is understood that for some of these assignments, students may collaborate with one another. Four lab partners may perform an experiment as a group and share data. A student team may design and present a project together. Students might consult each other to find out how to solve a homework problem. In these cases, collaboration is accepted and even encouraged.

Collaboration is not Copying

The term "collaboration" refers to discussing a problem and sharing ideas on how to solve it. It does not consist of copying someone else's work.

In many cases, however, the teacher desires an individual assessment of the student, ie. an answer to the question: "How much progress has the student made in mastering the material?" These assessments, usually in the form of quizzes and tests, are to be performed without assistance from any other sources or students.

There are many ways that a student may cheat, but they all fall into one of four categories:

  1. giving or receiving unauthorized information on tests, examinations, or other work (including labs)
  2. copying another student's work, either word-for-word or by rephrasing
  3. using any unauthorized aids on tests, examinations, or other work, or
  4. submitting someone else's work, in whole or in part, for your own.

Thus, looking at someone else's test paper to copy the answer to a problem, discussing a test problem or sharing its solution with another student, copying test problems or answers and sharing them with another student, stealing a test, stealing the answers to a test, and using notes during a test that have not been expressly allowed by the teacher are all prohibited.

What about Chat-GPT?

Exciting new developments in AI-Machine Learning have resulted in the widespread availability of neural networks that can solve problems for you, write paragraphs or essays, etc. in response to your prompts. These tools are fascinating and deserve to be experimented with! Although this software may serve useful purposes in some contexts, these tools should not be used for generating work you do for this class. Submitting work as your own that has been generated by one of these systems is not permitted, and will be treated as a case of academic dishonesty.

If you have any questions about this policy, the instructor is happy to discuss them with you.

The penalties for cheating vary, depending on the institution, the department, the teacher, and the nature of the infraction. Commonly, a student caught cheating will receive a failing grade on the assignment and be subject to disciplinary action, including suspension and a letter being placed in the student's file. A friend of mine who is a professor states that at her university, there are a total of ten disciplinary actions possible in response to cheating, including: "expulsion, suspension (withdrawal from the University for a given period of time), mark reduction on the assignment or exam, reduction in the final course grade, a grade of F in the course, conduct probation, written reprimand, suspension of any degree already awarded, rescinding any degree already awarded."

Copy-paste is NOT allowed

In your science classes, you use a common lab protocol with the entire class, usually perform labs within a class, and usually share data with at least one other lab partner. When it comes time to report those results, your work is to be completely your own: Your own writing of results, analysis, conclusions, your own calculations, your own percent error, etc. You are allowed to talk to others about your results, and with your lab partner even to talk about your results, confirm your percent error, etc. You should not be "talking and writing at the same time," or copy-pasting results. Your work is your own, and the teacher knows it's not your own by comparing what s/he sees on your paper with what others in the class have done. If the numbers/results are similar, that's as it should be. If the calculations/writing are exactly the same, we know you cheated. It's pretty easy.

In computer science, the temptation to use others' work as a source for your own is often powerful. There are a large number of references readily available on the Internet, and searching for these references is extraordinarily easy. And yet, you mustn't do this!

The purpose of this class is not for you to produce programs. This purpose of this class is for you to learn how to write programs, and you do that, in large part, by developing both your programming and problem-solving abilities. Neither of these are aided by copy-pasting from code that others have written.

There is a place for copy-pasting in computer science and computer programming, and if you go on to work with computers for a living, you will find yourself using other people's work quite a bit. This class is not about that. This class is about working to develop experience with the fundamental skills of creating algorithms to solve problems.

In introductory physics programs, the professor is not interested in seeing you find answers—the answers to the problems that you're solving are already known! The professor is interested in seeing you develop the problem-solving skills that can be used to produce the answers. Learning how to "think physics" is what those classes are about.

And learning how to write programs is what this class is about.

So... don't copy-paste in here. It's against the rules, and it is of no use in helping you learn programming. Despite my efforts to discourage you from this habit, you may find yourself tempted anyway. Don't. Copy-pasting is considered cheating—"academic dishonesty"—and is treated as such, with the accompanying consequences: zero on the assignment, meetings with the deans/parents, a letter in your file, etc. You should know that it's enormously easy for me to identify when you've copy-pasted. I employ tools that compare your work with that of other students in the class, and compare your programs with those available online.

Don't do it.

Use your powers for good, not for evil.

SPECIFIC EXPECTATIONS AND CONSEQUENCES AT POLY

Expectations

  1. In an assessment, online or in-class, you will write your own answers without using any notes, preprogrammed calculators or the like, unless you have been given express permission from the instructor to use such resources. Specifically:
    • You will not access another student's work during a test, quiz, or other individual assessment.
    • You will not allow another student to access your work during such an assessment.
    • You will not discuss the test, quiz, or assessment in the presence of any student who has not yet taken it.
    • You will not help any student study for a test, quiz, or assessment which you have taken but they have not.
    • You will not ask other students for information about a test, quiz, or assessment that you have not yet taken.
  2. If you collaborate with other students on a programming exercise, you are permitted to share ideas, algorithms, and specific programming advice.
  3. You are permitted to use the solutions posted on this website for the purposes of better understanding the problem and completing the assignment.
  4. You will not copy-paste code from other websites, other students, or the instructor and submit it as your own code.
  5. Regardless of the type of assistance, each student must physically enter his/her own program via keyboard, test and debug the program himself/herself, and submit his or her own work.

Consequences

If you fail to meet these expectations there will be consequences for you, depending on the severity of your failure. These consequences may include a zero on the assignment and notification of the incident to parents, deans, and the Upper School Director.

Polytechnic School's Responsible Use Policy

In addition to these course policies, by using computers and the computer network at Poly you are tacitly agreeing to abide by the school's Responsible Use Agreement, which you are strongly encourage to read and understand. Violation of this policy may result in your loss of access to school technology, which is going to have a devastating effect on your ability to participate in this class! :)