<p>So currently I am registered to take ap computer science as an online course through the school year. I have had experience with these online classes and heard that they weren't that good and that they don't prepare well for the ap exam. I want to actually learn computer science and participate in programming competitions such as USACO. This leads me to thinking that I should self study ap computer science and actually learn it in depth so I can also do USACO. Does anyone have suggestions for resources I can use to learn the ap computer science curriculum while also just learning computer science in general and preparing for the USACO? I already have some experience with python. Please do not suggest review books that are aimed solely at ap computer science because I am not learning ap computer science solely for the exam. </p>
<p>If you want to learn programming (not CS) on your own, there is a ton of resources online for free. Oracle posts most of their example code online for Java, and PHP is an easy server-side web programming language to get into. These are one of the top widely used programming languages in the industry, led by C++ and C# as well as Python. </p>
<p>Computer Science is a discipline, not something you can study in a matter of months. For that, you’d either pursue a degree program or read (a lot) on your own, but I doubt that will help for employment. </p>
<p>For Java, [JavaNotes</a> 6.0](<a href=“http://math.hws.edu/eck/cs124/javanotes6/]JavaNotes”>Javanotes 6.0 -- Title Page) is an awesome resource. It’s an entire book.</p>
<p>For PHP, [O’Reilly’s</a> cookbook](<a href=“http://www.inforsystem.eu/manuais/PHP%20Cookbook.PDF]O’Reilly’s”>http://www.inforsystem.eu/manuais/PHP%20Cookbook.PDF) is an awesome resource as well.</p>
<p>I’m sure you can find lots of more resources online, especially YouTube. Nowadays, you can learn a lot on your own.</p>
<p>OK, so first, Computer Science != programming. </p>
<p>If you want to learn (Java) programming, seriously, just do a google search. or use <a href=“http://www.learnjavaonline.org/”>http://www.learnjavaonline.org/</a></p>
<p>If you want to learn computer science, I suggest you study for the exam. </p>
<p>Okay here is the deal.</p>
<p>As one of the posters said CS is not only programming. BUT, learning to pass the AP exam has nothing to do with learning Computer Science either.</p>
<p>The question is what is your primary motivation. It seems as if your two short term goals are the USACO and the AP exam. Do you want to major in CS in college? Why do you want the AP? The credit, the proof of completion?
(Not that I am advocating it but it is entirely possible that some US colleges might look more favorably on MOOC certifications) Do you want to write some code to save the the word or make some money?</p>
<p>As a general rule most high school students are best served by learning one or two programming languages well. As you probably know already the AP exam is Java based. (So you could start with Java, a language much used in industry, but it is not really the best language to learn to start. Most of the top CS college programs do not start with Java. That should tell you something.)</p>
<p>There are tons of courses online, There are full on college CS courses online. Some are more bare bones, but with lectures, see for example MIT’s intro class in Python is part of their open courseware program. And there are full on MOOC’s, You can check out Coursera, edx or Udacity for courses.(edx has a version of the intro MIT course) For a thorough introduction to the intellectual breadth of CS, the Harvard’s intro course is superb. (self-paced on edx CS 50 in the C language). From there you could go to Coursera’s Algorithm course I and II (Java). This is from Princeton. The Harvard prof David Malam and the Princeton prof. are legendary teachers. If you got through those three courses you would A) be set for CS in college B) undoubtedly ace (five?) the exam. Again, these are real college courses so they might be a bit much, you do have the rest of your studies to do, even if you are home schooled, which I am guessing is the case. </p>
<p>(By the way, often in Coursera you can get into a course archive and still take the course even though it has already passed.)</p>
<p>If you are not ambitious or crazy enough for the above, you can supplement your existing online AP course with</p>
<p>A) Taking Google’s crash weekend course on Python, given by Nick Parlante, another legendary CS prof.
B) the intro Java class on Udacity, my sister did as a supplement to her AP class.
C) Short coding exercises on Codingbat.com, Nick Parlante’s site, both Python and Java are supported</p>
<p>If you get through that then you could dip into the first few weeks of the Coursera Algorithm I class mentioned above.</p>
<p>Good luck and happy coding.</p>