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.'"
Lesson one: (Score:5, Funny)
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World. Obama is a muslim.");
}
}
Re: (Score:1)
Well, given the close-minded leftist bent of most wackademics, competition on multiple fronts is a good thing.
It's so sad when people parrot opinions heard in the media as their own.
Was Java a good choice for the AP requirement? (Score:1)
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).
Re: (Score:1)
NO.
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.
Re: (Score:1)
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
Re: (Score:1)
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
Re: (Score:1)
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.
Re: (Score:3)
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?
Re:Was Java a good choice for the AP requirement? (Score:5, Interesting)
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.
Re: (Score:2)
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.
Re: (Score:2)
I should also mention that there are a LOT of compilers and other solutions available based on the (object) Pascal language today, such as http://smartmobilestudio.com/ [smartmobilestudio.com]
Good times for pascal.
Re: (Score:2)
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
Re: (Score:2)
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.
Re: (Score:1)
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...
Re: (Score:2)
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.
Re: (Score:2)
Re:Was Java a good choice for the AP requirement? (Score:5, Informative)
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)
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....
Re: (Score:3)
Re: (Score:2)
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.
Re:Was Java a good choice for the AP requirement? (Score:5, Insightful)
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>
Re:Was Java a good choice for the AP requirement? (Score:4, Insightful)
Programming is hard. News at 11.
Re: (Score:2, Insightful)
Programming can be taught hard. But compared to other academic fields, it's relatively easy.
Re: (Score:2)
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.
Re:Was Java a good choice for the AP requirement? (Score:5, Insightful)
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.
Re: (Score:3)
Ruby and Python are scripting languages. Students are better off being exposed to Java or C++ from the start so they can see if they have the knack for programming or not. Sink or swim, as it were. Putting students on scripting languages just creates the perception that they are doing true software development when they are not. If you're going to use Python or Ruby you might as well put them on VBScript or JavaScript. Or go whole hog and put them on CoffeeScript so they don't have to deal with the agony of curly braces and proper formatting.
That's bull. Scripting or otherwise doesn't make a difference for the tasks of learning the basics. Again, based on my 12 years of programming experience with Java, Java is not a good pedagogical choice. And C++ (where I also have work experience)? Please, that's another bad choice. Too many semantic subtleties that have nothing to do with elemental programming tasks. Plain old C is a much better pedagogical option. Like C++, no memory management and plenty of segfaults and pointer management. Unlike C++,
Re: (Score:2)
Maybe the problem is you are too stupid to understand complex things?
" Too many semantic subtleties that have nothing to do with elemental programming tasks. Apparently I am right.
Since insulting seems the way to prove you are right (or let me say "your right" so that you get a chance to bash teh gramm3r), maybe I should just let you assume the answer to your question since you seem to be the pedagogical expert here.
See, your typical answer indicates with almost certainty that you are a) either an inexperienced fanboi or perhaps b) an idiot savant that might have many years of experience, and still be an idiot savant. Perhaps you might be c) a software Sheldon Cooper, but probabili
Re: (Score:2)
Unless you want your students to only use scripting languages and whitespace formatting forever, you're setting them up for failure.
This only true if the student does not cover anything but scripting languages. That is not an argument that I made, but don't let that stop you from building a straw man.
What are they to do when they get into the real world and run into "semantic baggage" languages in the enterprise space?
Well, what is a student to do in the real world when they encounter the "semantic baggage" of the enterprise with only one or two introductory programming courses using either C++ or Java? Would you expect a student to be able to be capable to deal with the real world with a course or two, regardless of the programming language used?
Obvio
Re: (Score:2)
1. Slashdot is news for nerds
2. Java is lightweight
3.
4. Profit!
Re:"Java" and "lightweight" in one sentence... (Score:4, Funny)
...head explodes.
Be fair: I ordered an extra 16 GB of RAM not long ago, and the two DIMMs together only weighed maybe 50 grams.
Re: (Score:2)
MOOC (Score:2, Informative)
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.
Re: (Score:3)
Re: (Score:2, Interesting)
"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
Re: (Score:1)
Maybe it stands for "MOO Cow". It is actually a Gateway computer in disguise!
MOOC: Definition (Massively Open Online Course) (Score:2)
Das Wiki has it here [wikipedia.org]:
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.
huh (Score:2)
Re: (Score:2)
Eclipse requires a class or two unto itself. DrJava is easier to get started and focusing on learing JAVA and not the IDE.
Re: (Score:2)
Why Java? (Score:3)
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.
Ugh (Score:1)
Sesame Street to launch STEM MOOC (ElMO-OC?) (Score:2)
Sesame Street Widens Its Focus [nytimes.com]: 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.
The K-12 education market .. (Score:3, Insightful)
No comment necessary
Dwight Schultz: A-Team meets ST:Voyager (Score:4, Funny)
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..
Re: (Score:2)
Re: (Score:2)
Right i must have been confuzzled.
IdeoneAPI in the backend (Score:1)
Safety can be bad (Score:2)