I’m a junior that is planning to go into computer science in college (most likely focusing on game design). I have the opportunity to take either a regular Programming Java class or AP Computer Science Principles in senior year after I take a summer course. Which is the better choice? I have heard that AP Computer Science Principles isn’t useful, but it does have the AP title, so I’m not sure what to pick. I am also self-studying for AP Computer Science A next year (I am not eligible to take the course).
AP CS principles is more of an overview of CS. See https://cs10.org for a college course that is a model for it. Such courses are mostly intended for non-CS majors, but sometimes do get students interested enough to want to major in CS.
AP CS A would be like a frosh-level programming and data structures course for CS majors in college, although some colleges’ courses in that area cover substantially more material than AP CS A. Presumably, the “regular programming Java” course in your high school is a subset of AP CS A in material coverage.
Assuming that you already have some CS background, I think the regular Java programming would be of more use. It is a little hard to say how college admissions might see it. Some AOs may see the AP as reflecting a willingness to undertake rigor in the area of admission even if that regular Java class is more useful.
I would take the Java programming course, especially if it’s with a reputable online learning platform (CodeCademy, Coursera, etc.) and you earn a certificate. I frequently see posts here on CC that self-studying for AP classes is not well-regarded by colleges because they really want you to take AP classes with a teacher who gives you grades. Self-studying and taking the exam only results in a test score, which colleges don’t always look at during admissions. AP exam scores are used to support grades (as in, does the test score coordinate/match the grades the student earned?) and for assigning credit for equivalent entry-level college classes (4’s and 5’s often will get you credit for an intro class in the subject, but it varies from college to college).
I don’t think AP Computer Science Principles is viewed as a rigorous course, particularly if you are applying to schools as a prospective CS major, so I wouldn’t choose it just because of the “AP” label.
The other problem with that course (as well as your plan to study AP CS-A independently) is that as a senior you won’t receive AP exam scores until well after admission decisions are already out – the scores may help you with placement/credit once you’ve matriculated, but they won’t help you with admissions. In the CS applicant space, you will be competing against applicants who have already completed AP CS A and moved on to more advanced CS courses while still in high school.
I would encourage you to try to find a CS course this summer or in the fall semester at the very latest that you could complete for a grade on a transcript (prior to admission deadlines) that would demonstrate mastery of the material. There are plenty of online options that would fit this bill, or you could look to your local community college for other possibilities.
Given the choice of the two, I’d suggest the Java course. As noted, CSP is a good overview of technology, and students of all majors would benefit from taking it, but it’s not really a “get ready for CS major” course.
Self-study of an AP course as a Senior won’t help in admissions - you aren’t in a course, have no grades, and have no test score. So a Java course would show progress and instructor evaluations in course work aligned with a CS major. Enhancing it with self studying any topics in CSA that aren’t covered, and taking the AP test, might help when enrolling at college, if you do well on the test.
(Though credit is often not provided at top CS schools for AP CSA scores. My daughter won’t get credit regardless of score. She can test out, but <10% of CSA students pass the test. Freshman intro CS courses at competitive schools are often much more than CSA)
Agreed with @RichInPitt and others. My son took CSP as a 9th grader and didn’t find it challenging (CSP is the only AP course 9th graders can take at our HS). Take Java (or Python). CSA is based on Java if that means anything to you.
I have chosen to take the regular Programming class. It seems to be a lot more useful and would greatly help in my self-studying for the AP Comp Sci A exam. Thank you all for your help!
Our high school required AP CSP before you could take AP CS. My son took AP CSP at the high school but ended up taking Python at the community college. Our school was weird about that for other classes as well- ex- to take AP Spanish you had to commit to 2 years AP spanish Lit and AP Lang.