The Advanced Placement Computer Sciences A (APCSA) is a course in computer programming using the Java programming language and object oriented programming style. A large part of the APCS course is built around the development of computer programs that correctly and efficiently solve a given problem. Students will use Java library packages and classes within the scope of the AP Java subset and be able to select appropriate algorithms and data structures to solve a given problem. Common searching and sorting algorithms will be covered. Students will acquire skills in designing object-oriented software solutions to problems from various application areas using conditional and iterative control structures, recursion, inheritance, polymorphism, one and two dimensional arrays, the List interface and the ArrayList class.
The ability to work effectively both independently and in a group while maintaining a perseverant approach to problem solving will be critical to student success. Tests given in class will follow the format of the AP College Board APCS exam and they are a very important component of the course grade. Students should expect to spend 90 minutes doing homework per class meeting. Enrolled students will take the AP Computer Science Exam in May.
Prerequisites:
Required Summer Assignment: The summer assignment consists of two worksheets and a coding project. It has been designed to help students practice the concepts taught in the Java Programming course. The summer assignment will be graded on the first day of the school year. The completed project will be used in class during the first few weeks of school.
Follow these steps to complete the assignment:
If you need help, you may wish to consult this online Java textbook:
https://runestone.academy/ns/books/published/csawesome/index.html
You are also welcome to post a question in our private Stack Overflow for Teams site. You should have received an email invitation to this site in your personal email inbox. If you do not see it or it is more than 7 days old, please email me to request a new one.
This course is both a course for potential computer science majors and a foundation course for students interested in other disciplines requiring computer literacy and advanced problem-solving skills. The course emphasizes programming methodology and in-depth study of algorithms, data structures, procedural and data abstractions, as well as a structured lab component comprised of a minimum of 20 hours of hands-on lab experiences integrated throughout the course.
In line with the College Board AP Computer Science A requirements, the following objectives will be addressed
Computer science is more than just programming. Students should leave this class with the ability and confidence to solve complex, real-world problems using sound software engineering design principles.
You are required to have the following items with you in class every day
It is recommended to bring a computer or chromebook with you each day. However, we also have loaner computers available in the classroom (for use in 354 only during class period), and you are welcome to use a loaner computer each day if needed. Writing code on a phone is not allowed; you must use a device with a monitor-sized display and a proper keyboard.
Grades and autograder scores will be automatically and regularly transferred from Gradescope or CS50 (submit50) to Schoology. Quiz and test grades will be entered into Schoology. Grades will be transferred to Aspen at least twice per term.
Your formal programs and labs will be graded based on the following criteria:
The best way to become a strong programmer is to do a lot of programming. In order to ensure you get the most out of this class, you should consistently meet the following expectations:
Upon successful completion of this course, you will have strong enough programming skills to make a non-trivial contribution in a professional environment. Employers are not only looking for good programmers but for those individuals who work hard and work well with others.
If a student misses a class in which no new material was covered, then the student will be expected to take the assessment with the class. If a student misses class the day of the assessment, then the student will be expected to take the assessment before or after school or in H-block within three days of their return to school. Students are responsible for getting class notes and completing any assignments that were due or given during an absence. Homework assignments will be posted on Schoology. If you have questions, contact a classmate or me. Homework is generally due by 10 pm the day before the next class. For Gradescope assignments, you may submit the assignment multiple times until the due date; the latest submission will be graded. Unless discussed with me before hand, late work will not be accepted more than a week after the due date. Late programs passed in within a week of the original due date will have points deducted.
Regular attendance is crucial to your success in this class. Students are responsible for getting class notes and completing any missed assignments from an absence. Students who are not in the room and ready to work when the bell has rung are tardy. Students with three or more unexcused absences or five or more unexcused tardies will receive an after school detention. School policy will be followed for patterns or absences or tardies.
If you feel you are falling behind or you are having difficulty understanding concepts, come for extra help as soon as possible. You can book an H block with Dr. Bezaire, or email Dr. Bezaire if the H block is full. You can also email Dr. Bezaire your questions or post to our private Stack Overflow.
Most assignments in this class are individual assignments. Occasionally there will be group projects or group exercises. In all situations, students are expected to follow the guidance found in the Student Handbook.
Here are the integrity policies for each type of assignment. Unless otherwise specified, an assignment is subject to the policy for individual work in this class. No matter which policy is in play, it's always expected that any code not written by you is attributed to the author or source in a comment. Use comments to clearly indicate any code blocks not written by you.
Individual work |
---|
Refer to this site, the course content in Schoology, the Java online textbook |
Copy individual method headers from examples provided by Dr. Bezaire into your code |
Start an assignment from template files provided by Dr. Bezaire |
Look at your own code from class this year or last year |
Use standard debugging strategies |
Ask Dr. Bezaire or your classmates for verbal or email conceptual help or specific debugging help (what does this exception mean? Why is this math expression always returning 0? What are some reasons why my loop might not print anything?) |
AI: Ask questions to and copy code snippets from the CS50 Duck Debugger |
Ask questions or look at content on our private Stack Overflow for Teams site |
Search and look at content on Stack Overflow. Do not copy code directly and make sure to cite any code in your program inspired by what you found on Stack Overflow. A simple comment with the link to the Stack Overflow page is sufficient |
Advise your classmates in plain English, using pseudocode, or with diagrams, view their exceptions or buggy code snippet and provide limited, specific guidance, on paper, verbally, on our Stack Overflow for Teams site, etc. |
Show the erroneous part of your code to someone who has already successfully completed it for help with debugging. The person helping should not change your code or give their correction verbatim, but can point out where or what seems wrong in your code. |
Do not look at or copy from someone else's code for this assigment |
Do not post publicly or otherwise share, send, or make available your code file or large code blocks from this assignment |
AI: Do not use any AI helpers other than the CS50 Duck Debugger built into your CS50 IDE |
Group Projects |
---|
Refer to this site, the course content in Schoology, the Java online textbook |
Copy individual method headers from examples provided by Dr. Bezaire into your code |
Start an assignment from template files provided by Dr. Bezaire |
Look at your own code from class this year or last year |
Use standard debugging strategies |
Ask Dr. Bezaire or your classmates for verbal or email conceptual help or specific debugging help (what does this exception mean? Why is this math expression always returning 0? What are some reasons why my loop might not print anything?) |
AI: Ask questions to and copy code snippets from the CS50 Duck Debugger |
Ask questions or look at content on our private Stack Overflow for Teams site |
Merge code written by someone else in your group into your code file(s) for this assignment (with comments indicating the author), or share your code written for this assignment with other group members (with comments indicating the author) |
Review and ensure that you understand the code written by your group members |
Search and look at content on Stack Overflow, but check with your group members before incorporating any snippets and make sure everyone is aware of the provenance of all code submitted for a group project. |
Advise your classmates in plain English, with pseudocode, or using diagrams, view their exceptions or buggy code snippet and provide limited, specific guidance. This can be done on paper, verbally, on our Stack Overflow for Teams site, etc. |
Show the erroneous part of your code to someone who has already successfully completed it for help with debugging. You should first go to your group members for help before seeking help from students not in your group. The person helping should not change your code or give their correction verbatim, but can point out where or what seems wrong in your code. |
Do not look at or copy from the code of someone outside your group for this assigment |
Do not post publicly or otherwise share, send, or make available your code file or large code blocks from this assignment to anyone outside your group |
AI: Do not use any AI helpers other than the CS50 Duck Debugger built into your CS50 IDE |
The expectation is that unless indicated otherwise, all work you submit will be your own. Interaction and discussion with classmates and others can facilitate mastery of the course material. However, there remains a line between enlisting the help of another and submitting the work of another. Collaboration is only permitted to the extent that the assistance does not include using someone else’s work as your own, or enabling someone else to use your work as their own. When asking for help, you may show code snippets to others, but you should not be viewing their code. Respect the intellectual property of your classmates.
If two or more students turn in overly similar code for an assignment, all involved students will lose credit for the assignment.
Students are responsible for writing the content of all program files that they submit in this class. Students will be held accountable for the content of their programming submissions in this class.
If a student is found to have violated the academic honesty expectations for an assignment, the student will be talked to and their caregivers and assistant principal will be made aware of the violation. For the first occurrence, no conduct referral will be filed. In most situations, nothing will go on the student's permanent record based on a single offense, although there will be consequences to the student's grade for the assignment and their work ethic points for the term. If a second violation occurs (across any class) or if a student first violates the expectations on a large project such as the AP CSP Create Task, a conduct referral would be initiated at that time.
The AP Computer Sciences A exam (AP Java exam) will be administered on Wednesday, May 8 at 12:00 pm. Location information will be provided by the AHS Guidance department in the weeks prior to the exam. All students enrolled in the AP Java class at Andover High School are expected to take the AP Exam. In 2024, the AP exam for this class will be paper-based. In the future (2026 or earlier), the exam will instead be administered on a computer.
Students are excused from all classes on the day of the exam, May 8, to prepare for the exam and take it. In general, students are expected to make up any missed material and should check with their teachers prior to the exam date. Students should arrive at the exam location no later than 11:30 am. The exam consists of two equally-weighted 90-minute testing periods with a short break between each.
One exam block consists of 40 multiple choice questions (one correct response per question). The other exam block consists of 4 free response questions, in which students write Java code to define several related methods for one or more classes. Each free response question will have multiple parts, where each part defines the logic expected of a particular method.
In the weeks leading up to the exam, our class will take one or more practice exams to prepare. We hope to identify any knowledge gaps, work on pacing our time, and build up our written fluency for the free response questions.