Computer Science at AHS

AP Java

About

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:

  • Minimum grade of B+ in Honors in Java Programming or A- in CP in Java Programming
  • Student AP Contract to be handed in with course selection sheet
  • Teacher recommendation

Summer Assignment

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:

  1. Join our online classroom:
    1. If you don't have one yet, create an account at github.com using a non-school email
    2. Click this link to join our online classroom
    3. Fill out Dr. Bezaire's annual CS survey
  2. Summer Worksheet Part 1 - answer the questions and submit when done. The worksheet will save if you need to come back to it over multiple days
  3. Coding Assignment - complete the Bank project according to these instructions and submit using submit50

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.

Expectations

Objective

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

  • Understand and apply the main principles of object-oriented software design and programming: classes and objects, constructors, methods, instance and static variables, inheritance, class hierarchies, and polymorphism
  • Learn to code fluently in Java in a well-structured fashion and in good style; learn to pay attention to code clarity and documentation
  • Learn to use Java library packages and classes within the scope of the AP Java subset
  • Understand the concept of an algorithm; implement algorithms in Java using conditional and iterative control structures and recursion
  • Learn to select appropriate algorithms and data structures to solve a given problem
  • Compare efficiency of alternative solutions to a given problem
  • Understand one- and two-dimensional arrays, the List interface, and the ArrayList class, and use them appropriately in programming projects
  • Acquire skills in designing object-oriented software solutions to problems from various application areas
  • Discuss ethical and social issues related to the use of computers
  • Prepare for the AP Computer Science A exam; meet all of the curricular requirements defined by the College Board for this course.

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.

Classroom Materials

You are required to have the following items with you in class every day

  • Writing Utensil
  • A notebook that you will use for class notes, homework, program designs, logical thinking exercises

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.

Grading Policy
The grade for this course will be calculated using a point system. Assessments will include tests, quizzes (announced and unannounced), programming exercises and class participation. Term weighting will be:
  • 50% Informal Programs, Assignments, Formal Programs/Labs
  • 8% Participation and work ethic
  • 42% Tests/Quizzes
  • 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.

    Programs and Labs

    Your formal programs and labs will be graded based on the following criteria:

    • Scope – How much of the program did you understand and attempt?
    • Functionality – Did your program work as expected? Was it error free?
    • Design – Is your program intelligently and efficiently designed?
    • Style – Is your program readable and commented? Does it pass style50?
    Class Participation and Work Ethic Policy

    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:

    • Come to class prepared to engage in class activities. This includes having a working understanding of previous night's homework and being prepared to discuss and/or ask questions. Participate in class activities including informal polls and warm-up exercises.
    • Stay on task – use class time effectively and efficiently to complete programming assignments. Challenge yourself to attempt more complex programs when time allows.
    • Avoid disruptive behavior and help to maintain a class environment conducive to learning for all. Disruptive behavior includes playing computer/phone games, using the internet for non-class related activities and any other behavior that would distract yourself or someone else.

    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.

    Makeup and Late Work Policy

    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.

    Attendance and Tardiness

    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.

    Extra Help

    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.

    Academic Honesty

    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
    Yes Refer to this site, the course content in Schoology, the Java online textbook
    Yes Copy individual method headers from examples provided by Dr. Bezaire into your code
    Yes Start an assignment from template files provided by Dr. Bezaire
    Yes Look at your own code from class this year or last year
    Yes Use standard debugging strategies
    Yes 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?)
    Yes AI: Ask questions to and copy code snippets from the CS50 Duck Debugger Duck Debugger icon in CS50
    Yes Ask questions or look at content on our private Stack Overflow for Teams site
    Maybe 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
    Maybe 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.
    Maybe 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.
    NoDo not look at or copy from someone else's code for this assigment
    NoDo not post publicly or otherwise share, send, or make available your code file or large code blocks from this assignment
    NoAI: Do not use any AI helpers other than the CS50 Duck Debugger built into your CS50 IDEDuck Debugger icon in CS50


    Group Projects
    Yes Refer to this site, the course content in Schoology, the Java online textbook
    Yes Copy individual method headers from examples provided by Dr. Bezaire into your code
    Yes Start an assignment from template files provided by Dr. Bezaire
    Yes Look at your own code from class this year or last year
    Yes Use standard debugging strategies
    Yes 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?)
    Yes AI: Ask questions to and copy code snippets from the CS50 Duck Debugger Duck Debugger icon in CS50
    Yes Ask questions or look at content on our private Stack Overflow for Teams site
    Yes 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)
    Yes Review and ensure that you understand the code written by your group members
    Maybe 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.
    Maybe 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.
    Maybe 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.
    NoDo not look at or copy from the code of someone outside your group for this assigment
    NoDo 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
    NoAI: Do not use any AI helpers other than the CS50 Duck Debugger built into your CS50 IDEDuck Debugger icon in CS50


    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.

    Consequences

    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.

    Keys to Success
    1. Complete all reading that is assigned, take notes. Make note of questions that you have as you are reading
    2. Pay attention in class. Ask questions
    3. Think about each programming task and design the program before starting your code
    4. Collaborate with your peers using problem solving strategies, share errors and code snippets rather than entire code blocks or program files, and always do all coding yourself
    5. Don't get discouraged if you don’t get it right away. Analyze your errors; this is the best way to learn
    6. Turn your code in early and often. Review the autograder's feedback after submitting your code
    7. Come for extra help as soon as you feel stuck or confused - be proactive

    AP Exam

    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.


    Syllabus

    1. Java Syntax Review
    2. Classes and Relationships (association, inheritance)
    3. Math
    4. Boolean logic and logical control structures (if, switch, ternary operator)
    5. Loops (for, while, do while)
    6. Strings
    7. Arrays, ArrayLists
    8. Files and Databases
    9. Sorting, Searching, Comparisons
    10. Interfaces and Polymorphism
    11. Graphics
    12. AP Exam Preparation
    13. Project-based Learning

    Projects

    We have 4 major projects in this course:
    • Custom Classes Project
    • String Project
    • Data Project
    • Arcade Project