Follow Slashdot stories on Twitter


Forgot your password?
Education Programming

Murdoch's AP Computer Science MOOC Goes Live 67

theodp writes "Friday saw the launch of Rupert Murdoch's AP Computer Science MOOC. Taught by an AP CS high school teacher, the Java-centric course has students use the DrJava lightweight development environment for the exercises. 'If this MOOC works,' said Amplify CEO Joel Klein, 'we can think of ways to expand and support it.' Only the first week's videos are posted; course content is scheduled to be presented through March, with five weeks thereafter set aside for AP Exam prep. Might as well check it out, you may have helped pay for it — a MOOC-related Amplify job listing notes that 'This position may be funded, in whole or in part, through American Recovery & Reinvestment Act funds.'"
This discussion has been archived. No new comments can be posted.

Murdoch's AP Computer Science MOOC Goes Live

Comments Filter:
  • Lesson one: (Score:5, Funny)

    by Anonymous Coward on Tuesday September 03, 2013 @08:08AM (#44745183)

    public class HelloWorld {

            public static void main(String[] args) {
                    System.out.println("Hello, World. Obama is a muslim.");


  • I really find it a tedious stumbling block explaining to my kids all the ``public static void main'' stuff --- really wish that Oberon had made it instead. Niklaus Wirth at least has his manuals heading in the right direction (Pascal, hundreds of pages; Modula, a hundred or so, Oberon, dozens).

    • by Anonymous Coward


      Python or javascript to start tinkering - the Khan academy stuff with processing.js is quite fun.

      Then C when they're ready to start learning how a computer works under the hood.

      Followed by scheme & SICP to understand some important principles.

      And finally, perhaps java to understand all the OOP crap.

      • by Anonymous Coward

        Javascript is a terrible choice. While many claim that it allows you to get something working quickly because there's nearly no compiler or interpreter type checking, what they really mean is that it allows them to get something not-working quickly, and then very slowly fix it as they discover the problems. When you're learning, it's much better to be told "no, that's wrong" immediately, than to just be told "yeh yeh, it's fine", and have things break in odd ways. Something that enforces fairly strong ru

        • by Anonymous Coward

          Python is good in this regard then, as syntax and structures are fairly rigidly enforce.

          Perl would also be a good choice, as well as Lua, but it's not nearly as clean-looking as Python (though just as functional), and I have always loved the Perl motto "There Is More Than One Way To Do It."

          For it's purpose, though, java works just fine. It's high level enough that you aren't in the weeds dealing with memory locations or garbage collection, yet you can still uncover more advanced material like OOP, threading

          • by Anonymous Coward

            Python would be an even better choice if it weren't dynamically typed. Personally, I think a first learning language should be statically typed - because the concept isn't that hard to learn, and it's better to start with static typing before you move to dynamic typing. This is not to say that Python is a bad language, or even that it is a bad language for first learning; but I think the dynamic typing is the one problem with it as a teaching language.

    • Does anybody know about the historical genesis of the choice?

      Was there some aspect of Java that was seen as particularly useful pedagogically, or did somebody get seduced by the 'Java is the Enterprise Language Of The Future, don't you want students to be learning Relevant Job Skills?' line?
      • As best I can determine:

        It was Pascal for many years, which had once been widely used as an introductory language. But by the late-'90s Pascal was starting to be seen as an obsolete choice, and the exam was switched to C++ in 1999, with the justification being that C++ was widely used and more practlcal than Pascal.

        However this move was seen by many educators as producing significant teaching complexities, since the classes (partly exacerbated by what material the exam chose to test) ended up spending an inordinate amount of time on accidental complexity that obscured real issues for novice programmers, like how iostreams works. I took AP CS in 1999, and we spent weeks on iostreams, along with miscellaneous other C++-specific nonsense. Dissatisfaction was high enough that the exam fairly quickly abandoned C++, but wasn't willing to go back to Pascal, which was still seen as obsolete. So they moved to Java in 2003, with the justification that Java could exercise many of the same concepts as C++ (you could teach OO and whatnot), but with less up-front complexity for novices. And it's stuck there since.

        • by Barryke ( 772876 )

          This pretty much sums it up. The big downside to pascal was that it took more effort to run on multiple platforms. Java had that going.

          Since then, FPC and Lazarus made things somewhat less complicated but still not easy, and Delphi is barely entering that market now, with Embarcadero recently releasing cross compilers and Firemonkey.

          • by Barryke ( 772876 )

            I should also mention that there are a LOT of compilers and other solutions available based on the (object) Pascal language today, such as []
            Good times for pascal.

          • The big downside to pascal was that it took more effort to run on multiple platforms. Java had that going.
            Not at all. UCSD Pascal was designed to be easy to port to various architectures. The bottom level was machine code. On top of that was P-code. Most everything including system utilities, editors, compilers was written in P-code.

            Turbo Pascal, which I used both on CP/M and MS-DOS introduced a nice fast built in IDE.Compiler, editor and programs shared a common runtime. MS-Windows was written with Pascal

            • by Barryke ( 772876 )

              I hear you, but Java made that even simpler (to grasp).
              You only build (and debug!!!) something (with a GUI) once, and it works for everyone (ok, over 99% of users) that has the (proper) VM installed.

        • by Bigby ( 659157 )

          I can confirm as the 2002 test was C++. The test required the test-takers to be educated on test-specific classes. I think we used some class called "apstring". Of course you needed to know the ins-outs of that class, but most of the test assumed it was part of the C++ core language. Then you try to do something on your own...

          • I took the AP CS course in 2003 in C++, and again in 2004 in Java. "Slack off in the computer lab and learn a new programming language", count me in! Later, this proved to be a wise choice.

          • by devman ( 1163205 )
            Ah yes, good old apvector, apstring, apstack, apqueue and apmatrix (If I missed one let me know.). All those classes were to teach the basics of data structures without getting to involved with the standard library . I took the AP Comp Sci AB exam in 2003 which I believe was the last year for C++ on the exam. The teacher spent the last 2 weeks teaching some basic Java as filler material since that was what the world was heading to he said. When I got to college I didn't see Java again till I took it as an
    • by buddyglass ( 925859 ) on Tuesday September 03, 2013 @09:00AM (#44745525)

      Every part of the method declaration you quoted is important for a student to understand. And not just the student who is learning java.

      1. "public". This speaks to the difference between public, private and package visible methods. That is to say, information hiding, which is a key concept in object oriented design.

      2. "static". This speaks to the difference between class and instance methods. Again, a key concept in object oriented design.

      3. "void". Return types. Or, in this case, the lack of one. You'll be hard pressed to learn how to program w/o learning about functions that return a value.

      4. "main". This speaks to the need for the operating system to know where to "start" your code when it's executed.

      In fact, I'd even go so far as to to say that java being verbose and requiring that these modifiers be explicitly specified is a positive in the context of it being used in a teaching context.

      • Re: (Score:2, Insightful)

        by WillAdams ( 45638 )

        Right, that's 4 concepts which have to be explicitly explained (or passed over) before we even get to how to put a single character on the screen, or add two numbers....

        • I'm fine with pausing to explain. Putting "hello world" on the screen isn't worth much if you don't understand the other stuff. In an intro class you could give a cursory mile-high explanation and go into more detail later on. Glossing over the OO concepts is why you get guys in industry who write java like it's C.
          • To be honest, I find people who write everything like Java is a much bigger problem than people who write java like C. Almost all coders can manage to get their head around OOP, what's rare is one with the breadth of knowledge to understand how to write imperative (but not OO) programs well, how to write functional programs well, how to write logic programs well, and how to know when to use each one of them. The guy who sits there going "zomg, Java, must write OO code" is a moron.

        • by luis_a_espinal ( 1810296 ) on Tuesday September 03, 2013 @10:01AM (#44745969) Homepage

          Right, that's 4 concepts which have to be explicitly explained (or passed over) before we even get to how to put a single character on the screen, or add two numbers....

          Exactly this. It's accidental complexity that has nothing to do with the fundamental tasks of programming that are supposed to the focus of study.

          A BASIC/Python "print" or a Pascal "write/writeln" is supposed to be obsolete and clunky, but System.out.println enclosed within a mandatory class that is just not a class, but a public one, with not just a main function, but a static one, and with its name exactly case-matching the filename that declares it while making sure that no other "public" class exists in said filename, that is supposed to be pedagogical progress </rolls eyes>

        • by Russ1642 ( 1087959 ) on Tuesday September 03, 2013 @10:15AM (#44746081)

          Programming is hard. News at 11.

          • Re: (Score:2, Insightful)

            by Anonymous Coward

            Programming can be taught hard. But compared to other academic fields, it's relatively easy.

        • by geekoid ( 135745 )

          OMG Computer science is Hard. woews meeee!!!

          If some one can't understand the 4 basic thing, I don't want them programming computers, thank you very much.
          And if you can't easily explain them, I don't want you teaching anyone computer programming.

    • by luis_a_espinal ( 1810296 ) on Tuesday September 03, 2013 @09:35AM (#44745797) Homepage

      I really find it a tedious stumbling block explaining to my kids all the ``public static void main'' stuff --- really wish that Oberon had made it instead. Niklaus Wirth at least has his manuals heading in the right direction (Pascal, hundreds of pages; Modula, a hundred or so, Oberon, dozens).

      As a professional who has done Java for application (enterprise/web/web service) and system/network protocol development for 12 years, I would say no. Java is not a good choice for a beginning or even intermediate level programming curriculum. As a very productive platform for developing robust systems, Java delivers.

      For pedagogical purposes, specially as a starting programming language, it is atrocious. I would have preferred Python or Ruby focusing first on procedural programming, leaving object and functional features for later (rarely does a student leverages OOP and FP cleanly without having a good grasp of procedural programming, data structures and algorithms.) Or *gasp* BASIC or a Pascal variant or even C (students need to know right of the bat what a segfault is.)

      I would typically choose Java for development of robust systems. I would never use it as a language in an into-to-programming course.

  • MOOC (Score:2, Informative)

    by Anonymous Coward

    Nothing on the site explained what "MOOC" stood for, including the FAQ where it should have been question and answer #1. Luckily Google helped me out, but it's still something that should be front and center on the site. This is like Communications 101: define your jargon/acronym the first time it's displayed, don't just assume everyone knows what you're talking about. It's indicative that these people are so far up their own ass they just assume everyone already is on the same page as they are.

    • by EvilSS ( 557649 )
      What is a FAQ? I don't see it defined in your post.
    • Re: (Score:2, Interesting)

      by Anonymous Coward

      "Nothing on the site explained what "MOOC" stood for"

      and your not going to tell us either.

      I guess the MO stands for Massively Online
      And C stands for Course

      I can't guess what the other O is for

      Some wear "O" for the rainbow
      Weigh a pie

    • Das Wiki has it here []:

      A massive open online course (MOOC) is an online course aimed at large-scale interactive participation and open access via the web. In addition to traditional course materials such as videos, readings, and problem sets, MOOCs provide interactive user forums that help build a community for the students, professors, and teaching assistants (TAs). MOOCs are a recent development in distance education.[1]

      Features associated with early MOOCs, such as open licensing of content, open structure and learning goals, and connectivism may not be present in all MOOC projects,[2] in particular with the 'openness' of many MOOCs being called into question[3] raising issues around the 'reuse' and 'remixing' of resources.[4]

      The three main present biggies are compared on this NYT article: Coursera, Edx and Udacity.

  • Does DrJava really add that much over vanilla eclipse? If I were a student, I might prefer an environment that more closely mirrors what's actually used in the workplace.
    • by chill ( 34294 )

      Eclipse requires a class or two unto itself. DrJava is easier to get started and focusing on learing JAVA and not the IDE.

      • There's plenty of complexity in Eclipse, but if all you want to do is create a simple project, run it, and watch the console output then it's not that hard. An added benefit is that whatever the student learns about the IDE at least has the potential to be relevant, which isn't the case with DrJava.
  • by ggpauly ( 263626 ) on Tuesday September 03, 2013 @08:53AM (#44745473) Homepage

    Python already has a dictator - no role for Rupert.

    Lisp is illegal in Russia.

    Google uses it so it must be good.

    Java is maintained by a large corporation.

    Java is not a functional language.

    Too many third-world software designers already - first world kids should learn to become something non-exportable like plumbers, waits, or politicians.

    Smart phones!

    Rupert thought it was just like Javascript, only shorter.

    Teaching a language they could use would be too dangerous. Leave cracking to the Nazional Sekurit Apparatus.

    Paid off.

  • by Anonymous Coward
    Great, a whole new breed of morons coding in Java.
  • Sesame Street Widens Its Focus []: On Sept. 24, the material - as well as new videos, online and mobile games, and parent and teacher resources - will find a new home online when Sesame Workshop unveils a hub on the Sesame Street Web site called Little Discoverers: Big Fun With Science, Math and More. In one game, little fingers manipulate a virtual spring to launch pieces of trash into Oscar the Grouch's trash can, a Sesame Street version of Angry Birds.

  • by codeusirae ( 3036835 ) on Tuesday September 03, 2013 @09:14AM (#44745647)
    'Asserting that the K-12 education market is “ripe for disruption []" Joel Klein, former New York City schools chancellor, now executive v-p at News Corp. and director of Amplify, its education unit, offered a presentation of Amplify’s business model and plans to release hardware and software solutions`

    No comment necessary ...
  • by Barryke ( 772876 ) on Tuesday September 03, 2013 @09:34AM (#44745793) Homepage

    Am i the only one that was hoping this to be a story about crazy ass pilot Murdock (actor Dwight Schultz) from the A-Team having built a computer laboratory/system much in the spirit of programmer Zimmerman (actor Dwight Schultz), the creator of the EMH (Emergency Medical Holographic) doctor program from Voyager?

    I hope not..

  • I was waiting for such a course with our API [] in the backend and here it is :)
  • Whatever language is used for introductory programming, I think a few bad features are automatic initialization of variables, and being case insensitive. If you learn to program on languages with these features, it is difficult to adapt to C. In other news, it is better to learn about addition before multiplication. Also, it is better to learn about summation before you learn about integrals.

The other line moves faster.