College Board Mainstreams AP Computer Science (collegeboard.org)
New submitter Pollux writes: In the Fall of 2016, the College Board will begin a new course titled "AP Computer Science Principles," designed to "introduce students to the central ideas of computer science, instilling the ideas and practices of computational thinking and inviting students to understand how computing changes the world." This course will not replace the existing "AP Computer Science A" course, but has been added, "To appeal to a broader audience, including those often underrepresented in computing." A short list of differences between the two courses notes that instructors can choose a language of their choice. The curriculum framework directs the focus of instruction away from programming as a skill and towards programming as an activity, "enabling problem solving, human expression, and creation of knowledge (PDF)."
Computers for Dummies
Faster! Faster! Faster would be better!
>> The curriculum framework directs the focus of instruction away from programming as a skill
so... it's completely worthless?
>> enabling problem solving, human expression, and creation of knowledge
sounds like new age feelz garbage to me.
ARGH!
This is a positive step. Computing is a big part of our present and future. The more young people we can get into the field the better! There is plenty of room for us all. I am expecting great things from the next generation of computer scientists! GO CS!
>> programming as a skill and towards programming as an activity
The actual AP materials still refer to "skills" throughout. I guess that means you can't just show up at the exam, pout, tell them your name is Marissa and expect to get your 4.
"A language of their choice"
Funny; the link labelled that specifically states that the language that will be used is Java.
So they are not going to learn about explicit memory management, layout of data in memory, pointers, and a bunch of other things, as they would potentially have done with another computer language.
There also appears to be more of an emphasis on social impact than, say, binary math, boolean logic, algorithms, and data structures. Guess those things are less useful in an AP Computer Science course...
what happened to her? upstaged? no mixing adam's apples & hymens? gender specific deities is a crocken?
Since when does learning about Java or the verifiably type-safe subset of C# mean not learning about pointers? In Java, every variable that isn't a primitive is a pointer to an object. Sure, you don't learn about pointer arithmetic as a means of iteration, but you still can't spell java.lang.NullPointerException without "Pointer".
no mixing adam's apples & hymens?
That depends on what you think of "Mann" Coulter or Rachel "Man"-dow.
But seriously, some women do have a prominent larynx.
I'm squarely on the "systems" side of computing, having risen through help desk monkey, support tech, system admin, and finally landing on the systems integration/engineering spot. Every time I've considered taking on more development-focused roles, I've always backed away because of how much generic low-level coding work is being automated, abstracted away or offshored/outsourced. Any dev work that I do is focused on automating installs and tasks (PowerShell, Linux shell scripts, orchestration stuff, etc.) The "appealing to women" crowd is probably going to be strong in their condemnation of this approach, but I do feel that knowing CS concepts is important for a broad range of tech-related jobs and tasks, more so than "spoon fed introductory Java and a little discrete math, we'll teach the interesting stuff later" that you see in intro to CS courses. Therefore, having a "concepts" AP course is a good way to allow people to see if they have the aptitude for either development or IT work in general.
The truth is that low level coder positions, as in "here's the spec, code exactly to it" work, is going to be less lucrative. Same thing with expert-level systems work, as in "Cisco IOS guru" or "EMC storage wizard" or "VSphere administrator." Offshoring is driving the low level coders out, and cloud is driving the systems guys who are so far into a particular niche that they can't think outside of it anymore. Of course, you are still going to need genius-level people in both spots, but there will be fewer of them, and they will tend to work for service providers -- Azure and AWS run on physical hardware somewhere down the stack and that's where the genius level guys are going to wind up.
What I think is going to end up being a reasonably stable place to be is a generalist who is capable of seeing the whole end-to-end stack regardless of where it runs or who is coding it. What we will need fewer of is pure CS grads, especially those who don't really understand what's going on under the hood in their language/OS/database/network of choice. So yeah, give high school students a broader taste of what's out there, get them thinking logically and some might end up in CS.
some experiment by the catholics? treat us like tinker toys damaging our everlasting spirits during our short stay here? deception & starvation (most victims are kids) # 1 killers of us... 1000s per day,, not on tv..
nt
I have looked at this alternate AP course, and my first reaction was somewhat negative. But the concentration on syntactic detail, etc. in the original put kids off. If they can be encouraged to carry on beyond this AP alternative and learn more in a CS1 college course, that should help the dropout rate there and eventually produce more graduates capable of doing real computer science.
I see that they're hell-bent on watering down the computer science exams as much as possible. First they ax the AB exam (which had some real meat to it), and now they introduce a non-computer-science programming class. I'm not opposed to the test per se, but don't call it computer science. It sounds like something between a problem-solving challenge and weak vocational training. Again, that's not a bad thing, but call it what it is: AP Computer Literacy.
When I was browsing college catalogs in the early 1990's, some colleges would allow the substitution of a programming language for the foreign language requirement. Needless to say, eight years of Commodore 64 BASIC wasn't transferrable.
(I'm not responding to you in particular, but this seems like a relevant branch to post in.)
I don't get why people think that it's not a real education unless you call malloc and free (or their equivalent in other languages). malloc and free are still automatic memory management because you're not implementing the details yourself. Yes, it's good to know how automatic memory management works, but calling simply malloc and free doesn't teach you that. Have you implemented your own memory management scheme from scratch? Unless the answer is 'yes', learning about memory management is something divorced from learning the language.
Complaining about automatic memory management is as silly as complaining about these newfangled languages like C with their automatic floating point arithmetic! CPUs didn't (and some still don't) have hardware floating point support, so floating point math was/is a software blackbox that gets used just like automatic memory management, but no one seems to complain about using the floating point black box.
Why? Because very few of us were brought up on languages without floating point support (I'm looking at you, FORTH), so we don't see floating point arithmetic as the black box that it is. However, many of us were brought up on languages without automatic memory management, so we can spot that black box.
Let's take the black-box problem to its, ahem, logical extreme: you're not a real programmer unless you can build your computer from scratch with NAND gates alone. Sounds ridiculous, doesn't it?
Just let the kids have their automatic garbage collection, easy pointers, etc.
That's a very good example of why something like this can be done well and give people a richer understanding of computing, even if it's not that useful to most programmers.
When I did undergrad, the CS department was interested in getting more women in coding and found really two things: (1) if the intro course was taught by a woman, students were more likely to go into CS, and (2) women interested in taking CS courses were much more interested in taking them for utilitarian reasons, because those courses would be useful for them in another specialty.
And that second group--people who are not computer experts but who learn a lot of computing because it is a useful tech--is a massive group that should not be discounted. Those are the people a program like this can start to influence.
I think the goals here are highly commendable, and keeping it programming language agnostic is pragmatic because whatever you learn today is going to be BASIC in a few years. While I concede the authors have a lot more experience at teaching than I do, I disagree with the ordering of the big ideas and suggest my own priority below.
Big Idea 3: Data and Information
What has turned me into a programmer is having to deal with data in my job. The MooCs on this tend to focus on languages like R and SQL to solve problems too big for spreadsheets to handle. Admittedly, this might be too "real world" for a school syllabus, but I've become convinced data-driven programming is the best way to keep things practical. Once you deal with manipulating real world data, concepts like data types follow naturally.
Big Idea 2: Abstraction
I'm a big fan of the "How to Design Programs" school which is unfortunately strongly-tied to a Lisp-dialect Racket. But the fundamental ideas apply to all programming languages. Step one for any novice programmer should be to state clearly what data types their functions are reading in and returning. Teaching test driven development from day one is also fantastic.
Big Idea 4: Algorithms
Once you have some first hand experience at the slow speed amateurish attempts to handle big data crunching leads to, the importance of this becomes clear. Here I find Python a great language because R and SQL do too much "under the hood" to make the design decisions understandable.
Big Idea 6: The Internet
Where does data come from? There's no way to access data these days without knowing the HTTP request library of whatever programming language you are using. Furthermore, hopefully everything soon will be done via a browser. So students should learn from day one how to use browser-based text editors, lints, storage managers like git etc.
Big Idea 1: Creativity
This is where games are great. Everyone enjoys games, and programming games is the best way to learn. Perhaps placing this first comes from pedagogical experience, but I suspect it's best left until pupils have a bit more know-how of what's doable at their skill level.
Big Idea 5: Programming
The best way to understand how programming languages work is to write your own mini-DSL interpreter. This is generally regarded as a very advanced topic, but is actually quite simple given the great MooCs covering it these days.
Big Idea 7: Global Impact
The cool thing nowadays is once pupils have created a web-based game, it's available to the world. This does entail becoming a JavaScript ninja.
If it works, it's obsolete
I am amazed that silicon valley billionares have been able to influence the press, Congress, and Obama, into elevating computer science into near a main topic of k-12 education. Most people don't use Calculus, or Chemistry, after college. Computer programming will be even worse. ~140,000 people took the AP Chemistry exam. ~39,000 took the AP Computer Science exam, and that is a big increase from ~15,000 in 2003. Fuck the sellouts in Congress, but Congress did write No Child Left Behind. I should know better than expect the media to have ethics.
As an engineering major in the 1960's my university had a philosophy requirement for engineering students. I noticed a course in formal logic, which I took and enjoyed very much. I ended up becoming a software engineer, and that course has held me in better stead in my career than all the computer programming classes I have ever taken!
Will the universities care if you've done AP CS (either one), or will they still continue to treat high school CS as being irrelevant and just keep on requiring Calculus and Physics?
This is nice, but in Illinois, universities still have the right to refuse transfer credit, and usually do. I know this because I am a former community college professor. The Illinois Articulation Initiative (IAI) sets guidelines for courses intended for transfer. However, even if the IAI panel approves a course from a particular community college, it is still up to the discretion of the university as to whether or not to accept the credit. Very dysfunctional.
Thankfully, general education credits (Math, English, etc.) transfer much easier. However, Computer Science transfers in Illinois are a big mess. Frankly, after having taught for 10 years, I can't see much of a future for Computer Science at the community college level here in Illinois.
So call it MIS instead of CS.