AP Computer Science

AP Computer Science, officially AP Computer Science A, is a one-year Advanced Placement computer science course typically taken in Junior or Senior year. It is one of the most popular AP courses. The first semester teaches students how to program in Java, including object-oriented programming, classes, interfaces, polymorphism, searching, recursion, basic sorts, big-O notation and GUI programming. The second semester focuses on sorts data structures, specifically merge sort, quick sort, linked lists, queues, stacks, trees, binary search trees, heaps, maps, hash tables, and the big-O measurements for all of them.

Originally, there were two AP tests and courses for computer science, A and AB. The A course was equivalent to the first semester, while the AB course was equivalent to both. Because the A course was vastly more popular than the AB course, the College Board has pulled the AB course. However, at Stuyvesant, the full course is still taught.

Curriculum
The first semester is primarily learning how to program in Java. The exact progression of topics depends on the teacher, but typically, the class will start by learning about object-oriented programming, move to polymorphism, and finally, write a few searching and sorting algorithms and analyze their efficiency using big-O notation. At some point, the class will also learn how to program GUI's. There is sometimes a final project for the first semester; the point is to demonstrate knowledge of the Java language, not to show a deep understanding of principles beyond the basic ones (an understanding of polymorphism should be demonstrated). There may or may not be a final exam for the first term, depending on the teacher.

The second semester is generally more difficult. The focus is on understanding various data structures and their advantages and disadvantages. Big-O notation will be heavily used in the second semester to explain the efficiency of various algorithms and data structures. There will be a final project at the end of the semester to show an understanding of data structures. There may or may not be a final exam.

Mr. DW
Mr. DW's class is fairly relaxed and informal. He assigns occasional homework, due at 2 AM.

Mr. Zamansky
Mr. Zamansky's class is also fairly relaxed. He frequently assigns small homeworks that add up to become part of a larger project. Homework is submitted through subversion, and he grades it when he is able to. It is sometimes possible to submit late homework: he will take anything as long as it is submitted before he grades it.

Mr. Platek
Mr. Platek has a basic teaching style, mixing lecture and lab periods where students work on programming exercises or projects. He is considered by many students to be dry in manner, particularly due to his soft voice. Homework assignments are given relatively regularly and are submitted through an online submission site. Approximately two tests are given per semester, usually formed of questions from past AP tests. Mr. Platek regularly reincludes identical questions on his tests to make sure students review questions they get wrong.

Mr. Brooks
As of the 2013-2014 school year, Introduction to Computer Science 2 is a required course at Stuyvesant High School, and the AP Computer Science teachers have changed slightly, adding two wonderful teachers to the array:

Mr. Brown-Mykolyk
Mr. Brown (accompanied by lisa.stuy.edu) teaches based on lecture and class participation. He occasionally assigns homework that must be uploaded to the StuyCS Homework Server, and he uses piazza and Dropbox, as well as Google Calendars and other online web resources, to teach his class. A big supporter of both analog and digital feedback.

Mr. Konstantinovich
Mr. K (accompanied by marge.stuy.edu) teaches directly from code samples. He uses Dropbox, keeps a relatively unorganized Google Sites page running, and always wears creative T-shirts. He is a Stuy grad and therefore knows how Stuy students try to get around work.

AP Exam
The Computer Science A exam is widely considered among the easiest of the AP exams. It tests only material covered in the first term, as the A test was originally meant to be an alternative to the more difficult data-structure-heavy AB test. It is rarely accepted for any sort of college credit (unlike the AB test), but students should take it anyway for college applications.

The test has a multiple-choice section and a free-response section that requires students to write programs.

Textbooks
There are three texts for the course. The official textbook is rarely, if ever, used.

The online Java API contains all the commands in Java. There are two versions of the API: the AP version, and the real version. The real version is highly recommended, as the AP version is incomplete (it only contains commands and classes relevant to the AP exam) and some parts of it are actually incorrect. However, to study for the AP, students should use the AP version as the incorrect commands and classes are what are used in the test.

The third textbook is HeadFirst Java. While reading is rarely given as a homework assignment, the book is a very good reference, especially for teaching things not taught in the class that may be useful for projects (such as inner classes and exception handling)