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:
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 work instructions are available in this Google Doc
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.
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 CS50 C Manual and the CS50 shorts videos |
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 CS50 C Manual and the CS50 shorts videos |
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 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.