Answers.Body: <p>It takes a lot of time and a lot of infrastructure to set up for a new language in AP CS. At the time of its creation, Java was much simpler than today and had a lot of desirable characteristics, including a pretty good graphic layer. So, proposals were made and a lot of effort was put into the infrastructure. That is difficult to abandon.</p>
  <p>Starting over with a clean slate, I might pick Python, myself, but others might disagree.</p>
  <p>But choosing a professional language for a beginning course comes with a lot of issues. I found, back when I was a serious C++ programmer, that I could write some beautiful stuff, but the language fought me every inch of the way. That isn't something I'd like to put on a novice just starting out.</p>
  <p>But an AP course is a lot more than just a language and a few exercises.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-09-22T22:03:33.727Z
Answers.LastActivityDate: 2020-09-22T22:03:33.727Z
Answers.UserDisplayName: Buffy
Answers.Body: <p>Particularly since they have recently removed interfaces and abstract classes, I would say that there are no particularly important <em>philosophical</em> reasons that they are using Java.  At this point, it was a historical decision.</p>
  <p>The exam began in Pascal, and when they looked for a way to move towards Object Orientation, they switched (in 1996) to C++.  This was <a href="http://www.cs.williams.edu/%7Ekim/ETSCplus.html" rel="nofollow noreferrer">controversial at the time</a>, as Java was very modern and was thought by many to be a conceptually better language, particularly for students.</p>
  <p>They switched from C++ to Java in the 2003-2004 school year largely for two reasons:</p>
  <ol>
  <li>Java was considered to be a better object-oriented language, particularly with regards to inheritance, and the compiler does a much better job at checking to make sure that beginners aren't doing silly things that they definitely shouldn't be doing.</li>
  <li>College programs around the country were taking up Java, so it better reflected the reality of the introductory courses that students would be getting credit for.</li>
  </ol>
  <p>You can read the justification for the switch to Java courtesy of the ever-magical <a href="https://web.archive.org/web/20040124182231/http://www.collegeboard.com/ap/pdf/adhoc_report_surveys.pdf" rel="nofollow noreferrer">wayback machine</a>.</p>
  <p>Given the recent changes to the AP Test, it does not appear that there is any particular good <em>pedagogical</em> reason to stick with Java at this point.  In fact, the latest iteration of the test basically ignores the most important features of OO, instead emphasizing a great number of procedural concepts.</p>
  <p>However, the testing language is unlikely to change any time soon, as <a href="https://www.codio.com/blog/2019-survey-cs-teaching" rel="nofollow noreferrer">Java is still the dominant language at universities for teaching introductory Computer Science</a>, and these are the institutions that must agree to provide credit if the AP exam is to continue to provide value.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-09-23T07:41:33.227Z
Answers.Text: Last paragraph is the real reason, and distills down to "Because that's what the bosses want."
Answers.UserDisplayName: Gypsy Spellweaver
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-11-18T22:24:00.703Z
Answers.Text: Java is ubiquitous at UNC, NCState, and Duke. This is where we send a  lof of our students.
Answers.UserDisplayName: ncmathsadist
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-09-23T01:26:53.010Z
Answers.LastActivityDate: 2024-05-02T13:23:02.043Z
Answers.LastEditDate: 2024-05-02T13:23:02.043Z
Answers.UserDisplayName: Ben I.
Body: <p>What are the reasons that <a href="https://en.wikipedia.org/wiki/AP_Computer_Science" rel="nofollow noreferrer">AP Computer Science A</a> is using Java as its programming language?</p>
  <p>While Java is a great language in general, it has high verbosity, which is quite important for a timed exam.</p>
  <p>How about other programming languages, perhaps something more modern, like Rust or Go? Maybe even C++?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-09-22T21:58:44.710Z
Comments.Text: C++ has a lot of gotcha's that get in the way for beginners.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-09-24T21:13:24.587Z
Comments.Text: If you had not mentioned C++, then I would agree.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-01-10T05:11:20.033Z
Comments.Text: Maybe relevant https://www.theatlantic.com/national/archive/2012/10/ap-classes-are-a-scam/263456/
Comments.UserDisplayName: Rushi
Tags: <ap-computer-science-a>
Title: Why does AP Computer Science A use Java?
ThreadText: # Why does AP Computer Science A use Java?
  
  (Asked by: username_0 on 2020-09-22)
  
  What are the reasons that [AP Computer Science A](https://en.wikipedia.org/wiki/AP_Computer_Science) is using Java as its programming language?
  
  While Java is a great language in general, it has high verbosity, which is quite important for a timed exam.
  
  How about other programming languages, perhaps something more modern, like Rust or Go? Maybe even C++?
  
  **Tags:** ap-computer-science-a
  
  > **Comments:**
  > **username_1**: C++ has a lot of gotcha's that get in the way for beginners.  
  > **username_2**: If you had not mentioned C++, then I would agree.  
  > **username_3**: Maybe relevant https://www.theatlantic.com/national/archive/2012/10/ap-classes-are-a-scam/263456/  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_4 on 2020-09-23. Score: 8
  
  Particularly since they have recently removed interfaces and abstract classes, I would say that there are no particularly important *philosophical* reasons that they are using Java. At this point, it was a historical decision.
  
  The exam began in Pascal, and when they looked for a way to move towards Object Orientation, they switched (in 1996) to C++. This was [controversial at the time](http://www.cs.williams.edu/%7Ekim/ETSCplus.html), as Java was very modern and was thought by many to be a conceptually better language, particularly for students.
  
  They switched from C++ to Java in the 2003-2004 school year largely for two reasons:
  
  1. Java was considered to be a better object-oriented language, particularly with regards to inheritance, and the compiler does a much better job at checking to make sure that beginners aren't doing silly things that they definitely shouldn't be doing.
  2. College programs around the country were taking up Java, so it better reflected the reality of the introductory courses that students would be getting credit for.
  
  You can read the justification for the switch to Java courtesy of the ever-magical [wayback machine](https://web.archive.org/web/20040124182231/http://www.collegeboard.com/ap/pdf/adhoc_report_surveys.pdf).
  
  Given the recent changes to the AP Test, it does not appear that there is any particular good *pedagogical* reason to stick with Java at this point. In fact, the latest iteration of the test basically ignores the most important features of OO, instead emphasizing a great number of procedural concepts.
  
  However, the testing language is unlikely to change any time soon, as [Java is still the dominant language at universities for teaching introductory Computer Science](https://www.codio.com/blog/2019-survey-cs-teaching), and these are the institutions that must agree to provide credit if the AP exam is to continue to provide value.
  
  > **Comments:**
  > **username_5**: Last paragraph is the real reason, and distills down to "Because that's what the bosses want."  
  > **username_6**: Java is ubiquitous at UNC, NCState, and Duke. This is where we send a  lof of our students.  
  
  ---
  
  ### Answer by username_1 on 2020-09-22. Score: 2
  
  It takes a lot of time and a lot of infrastructure to set up for a new language in AP CS. At the time of its creation, Java was much simpler than today and had a lot of desirable characteristics, including a pretty good graphic layer. So, proposals were made and a lot of effort was put into the infrastructure. That is difficult to abandon.
  
  Starting over with a clean slate, I might pick Python, myself, but others might disagree.
  
  But choosing a professional language for a beginning course comes with a lot of issues. I found, back when I was a serious C++ programmer, that I could write some beautiful stuff, but the language fought me every inch of the way. That isn't something I'd like to put on a novice just starting out.
  
  But an AP course is a lot more than just a language and a few exercises.
  
  
  ---
  
  