Computer Science at AHS

AP CSP

About

The AP Computer Science Principles course introduces students to the creative aspects of programming, abstractions, algorithms, large data sets, the Internet, cybersecurity concerns and computing impacts. Languages used in this course include C, PHP, SQL, JavaScript and HTML. Problem sets are inspired by the real-world domains of biology, cryptography, finance, forensics, and gaming. The ability to creatively and collaboratively solve problems is emphasized as well as the ability to effectively communicate these problem solutions.

The AP Computer Science Principles assessment will consist of two parts: completion of through - course performance tasks and the end of course AP exam. For the through-course assessments, students will upload digital artifacts of their programming project via a Web-based digital portal. Digital artifacts will represent the student's creative and original programming solutions to real-world problems. The end of course assessment will be a two-part, computer-based exam administered in May. One part of the exam (2 hours) will be a multiple choice assessment covering the principles of computer science. The onther part of the exam (1 hour), will be written (typed) responses to a variety of prompts about the student's submitted programming project. Students are encouraged to take AP CSA (AP Java) before taking AP CS Principles.

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

Required Summer Assignment: The summer assignment requires each student to write an original game in a text based language of their choice utilizing variables, conditionals, and loops. Additionally, students will review Introduction to Programming concepts such as the binary number system, the hexadecimal number system, and computer hardware concepts. The summer assignment will be collected on the first day of the school year. Students will be tested on introductory concepts during the first week of school.

Summer Assignment

Summer work instructions are available in this Google Doc

Expectations

Objective

Andover High School has adopted a curriculum developed by Harvard University to meet the standards specified by the AP College Board for AP Computer Science Principles. CS50 is Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming for students with a diversity of technological background and experience. CS50 for AP Computer Science Principles is an adaptation of CS50 specifically tailored to align with the AP Computer Science Principles curriculum framework. This course’s assignments, materials, and resources are all identical to the version of the course taught at the college-level, albeit adapted to suit a secondary school audience.

Among AP-CS50's objectives is to supply students with a comprehensive introduction to the fundamentals of the discipline of computer science. We will do so using programming in several different languages as a vehicle to introduce these fundamentals, including such topics as algorithms, abstraction, data, global impact, and internet technologies. Though the course is programming-heavy, this course should be considered one of problem-solving, creativity, and exploration. By year’s end, students will have a richer understanding of the key principles of the discipline of computer science. They will be able to speak intelligently about how computers work and how they enable us to become better problem-solvers and will hopefully be able to communicate that knowledge to others.

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 CS50 C Manual and the CS50 shorts videos
    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 CS50 C Manual and the CS50 shorts videos
    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 Science Principles exam will be administered on Wednesday, May 15 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 Computer Science Principles class at Andover High School are expected to take the AP Exam and submit the AP Create Task. Starting in 2024, the AP exam for this class will be computer based, as part of a general shift by the College Board towards computer-based exams.

    Students are excused from all classes on the day of the exam, May 15, 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 testing periods with a short break between each.

    One two-hour exam block consists of 70 multiple choice questions (57 single response, 5 single response based on a reading passage, 8 multiple-response), worth 70% of the AP score. The other exam block is 1 hour for students to provide written (typed) responses to two questions related to their AP Create Task project code. The two written responses are worth 20% of their exam score, while the remaining 10% is based on their AP Create Task project submission.

    In the late winter and early spring, students will be given up to 9 hours of class time to prepare the code and materials for the AP Create Task. The Create Task includes an original project designed and coded by individual students in any language. The project does not need to be complicated or sophisticated, although it needs to be well-designed and contain certain features associated with well-designed code. We will discuss the key ingredients of an AP Create Task project prior to spending time in class developing the code. Students will then need to create a screen-cast video of their code running, a nicely formatted version of their full code, and high resolution screen shots of key features in their code. Some of the languages used by students in the past include: Scratch, Python, C, Java, web-based languages (Javascript, React). Students have built GUI-based projects and console-based projects. Any project can be a success when it is well designed and original work by the student.

    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. Unit 1: Fundamentals of Computer Programming Modules: variables, data types, loops, booleans, conditionals; using the C language
    2. Unit 2: Expansion of Programming by building abstractions, representing data, and writing functions
    3. Modules: functions, arrays, strings, command line interactions, exit codes, libraries, frameworks, debugging; using C.
    4. Unit 3: Thinking Computationally – understanding the differences between algorithms Modules: Sorting, Bubble Sort, Selection Sort, Insertion Sort, MergeSort Linear Search, Binary Search, Time Complexity, Unsolvable Problems; using C
    5. Unit 4: Design, Elegance, and Efficiency – understanding and making design trade-offs Modules: Graphics and ncurses, structures, recursion, Hexadecimal, File I/O, Images, Collaboration strategies
    6. Unit 5: Problem Solving for a Global Society Modules: python, SQL, MVC, JavaScript, Ajax, Artificial Intelligence
    7. Unit 6: Networking and the Internet Modules: Internet basics, IP addresses, DNS and DHCP, Routers, TCP and IP, HTTP, Trust models, cybersecurity, cyberattacks, HTML, CSS

    Projects

    We have 3 major projects in this course:
    • Python Project
    • AP Create Task
    • Portfolio Project