4 ms·
I'm a high school student taking AP CS right now. At least anecdotally, the main problems with the program are curriculum related and instructor related. The c
by jaykru 11y ago
I'm a high school student taking AP CS right now. At least anecdotally, the main problems with the program are curriculum related and instructor related.
The curriculum sadly is very fine-tuned to an obscure Java-dialect created specifically for the course. Though the program does teach basic principals of CS, there's a great deal of time wasted on this weird little platform; obviously, most high school students these days with technical inclinations would rather learn more open and directly applicable platforms to learn.
The even greater problem though stems from the instruction, which I would argue is derived from the aim of the course itself. There's a very heavy focus on teaching to the test, as in the AP system teachers are rewarded for having high-scoring students. This means there's a lot of bland dissemination of facts and non-trivial projects are few and far between.
Overall, as someone who plans to have a career in software, I've been really disappointed with the program. Supposedly there is a program launching in fall 2016 however: https://advancesinap.collegeboard.org/stem/computer-science-principles https://advancesinap.collegeboard.org/stem/computer-science-...
- groovy2shoes 11y agoThe thing is, there's so much more to computer science and even software than just programming. Many "CS" instructors don't even understand that! Data structures, algorithms, discrete mathematics, algebra, the list goes on. Yet, the AP CS curriculum seems to have been adapted from "Sams Teach Yourself Java in 21 Days" (at least, that was the case when I took it back in 2006). It's rudimentary coverage of the basics of programming in Java, along with some idiosyncrasies of Java syntax, and nothing else. Furthermore, the instruction mirrored the poor instruction in mathematics. "Here, memorize this template for writing a loop. Then, when the test asks you to write a loop, regurgitate it." Like too often in mathematics, there was no emphasis on understanding, but rather the emphasis was on rote memorization. With the combination of contrived examples, shallow coverage, and poor instruction, it should not be a surprise that so many students are disinterested in computer science. Not to mention that Java is an exceptionally poor choice for an introduction to programming (the AP curriculum used to use C++, which is also a very poor choice). (As a tutor, I've had good luck with Scheme, and I've heard from others that Python and Lua are also good choices. You could also kick it old-school with a structured BASIC dialect (which is how I cut my teeth) or Logo, if you can find a suitable implementation.)
- nv-vn 11y agoYep, I too think the class needs a total redesign. It fails to cover a lot of what actual computer science is for some poorly put together subset of Java taught as what's essentially magic (the same kind of problem with a lot of elementary math education). Sadly, the class has changed very little since it was first designed. Most of the course material hasn't been updated significantly by CollegeBoard since around 2005. I think they really should redesign it with a language more suitable for teaching basic computer science, like Scheme or Python. But even more so, they need to design the course to be more understandable to those without previous programming experience, because AFAICT 90%+ of the people who don't fail the AP exam with a 1 or 2 already know most of the course material coming into the class.
- hdctambien 11y ago> he thing is, there's so much more to computer science and even software than just programming. Many "CS" instructors don't even understand that! Data structures, algorithms, discrete mathematics, algebra, the list goes on. That's completely correct. Although, it's because most "CS" instructors majored in english, history, or math in college. They were pushed into teaching computer science and sent to a "learn Java in 4 weeks" summer training. They are doing the best they can with what they know. We either need more computer science majors to take up teaching, or we need better training for non-computer science teachers to actually learn computer science (but not too good training, otherwise they might get a "real" job doing computer sciencey things)
- groovy2shoes 11y agoThat's a very good point. However, I think even an english/history/math/whatever teacher could make a decent computer science teacher with the proper training. "Learn Java in 4 Weeks" is emphatically not the proper training. You're absolutely right, and it's a shame that no one is willing to invest in computer science education.
- nv-vn 11y agoThe new program being launched is even more disappointing -- it's basically just "working with computers". It briefly touches on some slightly programming-related topics, but it also includes things like photography, etc. It might be a great way to interest people in computers, but it's not relevant to computer science and it's not going to help repair the computer science program. Also, as another high school student taking the course, I've experienced mostly the same as you. Coming into the class with my own experience makes it clear to me how poorly planned out it is. The textbooks and specific Java dialect used are completely outdated and focus too little on a lot of the important things. Combine that with poor training and tools for teachers, and it seems like a good 50% of the class is completely confused on what's going on. Honestly, the course itself seems very off-putting to somebody who wants to study computer science in the future. I personally know lots of people who have chosen not to pursue further comp sci education after shitty experiences with that class.
- knicholes 11y agoI realized this in college when my dean sat me down after my complaints about a professor: You go to school for your diploma/degree. All too often school has stood in the way of my education. There's MIT OCW and Stanford CS classes out there, among I'm sure so many others, that can help you get that solid foundation you want.
- deboboy 11y agoI teach CS in middle and high school. Have not wasted any time on Java. My students get basic fundamentals then they are encouraged and lead to explore open platforms, frameworks, tools to solve problems. They seem much happier about what they're learning and it seems to 'infect' their thinking in other classes. Meanwhile their peers in other schools where Java is the only curriculum are struggling or dropping out.
- hdctambien 11y agoI teach AP Computer Science, and I feel for you. The biggest issue with computer science education is that "studies have shown" teaching people with no computer science background how to teach Computer Science leads to better retention of computer science teachers (ie, they don't leave for a better paying job in industry) That means that many (most?) computer science teachers have no training in actual computer science except a 4 week summer course in "how to teach computer science". Heck, there's a math teacher at my school finishing up a degree in computer science and he told me "I'm graduating in May and then I'm outta here." and he'll probably get a job that pays 2 or 3 times as much with better benefits and better hours (yeah, even counting "summer vacation") The college board doesn't offer any curriculum, they just give guidelines of what will be covered on the AP Test. Most of the curriculum that you can buy is pretty poor (as you've experienced) I'm not entirely sure what you mean by "obscure java-dialect created specifically for the course". That smells like something coming from your teacher/the curriculum your school bought. College board uses a "subset" of Java 1.6. It's regular java (albeit an older version), but limited to only using the int, double, and boolean primitives and ignoring auto-boxing. You can use char, float, or even auto-boxing in the open response portion, you just won't encounter a multiple choice question covering them. There are for sure better languages that could be used for teaching but at some level the student has to know the syntax of an if-statement and the syntax of a for-loop. From your perspective, it seems like your teacher is just hammering the basics and not giving you anything challenging. I imagine that is happening because many (most?) of the other students in your class can't write a syntactically correct if-statement or they try to use a for-loop when they should be using an if-statement (and aren't writing the for-loop syntactically correctly either) You could say that teachers are being "rewarded" for having high AP test scores, since that'll keep them from getting fired. There really isn't any reward. As far as AP Computer Science Principles goes, you may enjoy that class more than AP Computer Science A. It will all depend on which curriculum your school goes with (there are several companies pitching themselves to schools right now) and your teacher. That class is project based and it can be whatever you make it to be. (However, there will be a lot more writing in it than you might expect... and there is a good chance it will be Scratch based since the emphases isn't on programming but "creating"). Long story longer, computer science education isn't going to get better unless people that know computer science come to teach people computer science. As it stands, computer science will continue to be taught by english, history, and education majors and they will do their best, but their best will mostly be teaching the syntax of Java and how to pass the AP Computer Science test.
- EdHominem 11y agoMy ~1990s CS12 AP exam was in Pascal, and was similar to a petty reviewer who wanted to make sure I could code trivial things on a whiteboard. (Reversing a string in place.) My AP teacher was a math teacher who'd taken a 2-month summer in how to program and nothing about how to design systems before programming. It has proved just as irrelevant as I imagine yours will.