Slashdot Mirror


High School Computer Science: Look Ma, No Textbooks!

theodp writes: Computer Science Teacher Alfred Thompson wonders how other high school CS teachers use textbooks. "It's not a conversation I hear much about," he writes. Indeed, many teachers apparently don't rely on CS textbooks much at all. In fact, the highly-touted new AP Computer Science Principles (AP CSP) course does not require a CS textbook for students (sample College Board AP CSP syllabus), albeit to the chagrin of some. Some of the bigger providers of AP CSP curriculum -- e.g., BJC and Code.org, both of whom partner with Microsoft TEALS -- don't require a traditional CS textbook. But with teachers being recruited to teach Computer Science even if they don't have a CS background, should students learning CS have a textbook? Or is the high AP exam pass rate enjoyed by AP CSP students proof that no-more-books works?

54 of 110 comments (clear)

  1. The book they need isn't a CS book. by mcmonkey · · Score: 5, Insightful

    If they want to teach computer science (and not software development or programming) a text on abstract algebra or discrete mathematics is likely going to help more than anything with "computer" in the title.

    1. Re:The book they need isn't a CS book. by THE_WELL_HUNG_OYSTER · · Score: 4, Insightful

      Did you see the AP Computer Science Principles curriculum? It has topics like "Copyright and the law", "Impact of your life", "web crawlers", "indexing pages", "ranking pages", "Privacy in the age of big data". etc. Is this a joke?

    2. Re: The book they need isn't a CS book. by Anonymous Coward · · Score: 1

      https://www.indeed.com/m/jobs?q=Computer+Scientist

      10,000+ jobs under computer scientist. Walmart has some high paying positions available for computer scientists if you live in Arkansas (since that's apparently the only company you are qualified to work at). Maybe you just aren't very good at what you do.

    3. Re:The book they need isn't a CS book. by Nidi62 · · Score: 1

      If they want to teach computer science (and not software development or programming) a text on abstract algebra or discrete mathematics is likely going to help more than anything with "computer" in the title.

      So Abstract Algebra and Discrete Mathematics for Computers is a no go then?

      --
      The only thing necessary for evil to triumph is for it to be pitted against a slightly greater evil
    4. Re:The book they need isn't a CS book. by p4nther2004 · · Score: 1

      OK, I'll play. You know there are no jobs for computers scientists

      Can you provide an explanation of P vs NP? Does it apply to the search of Prime Numbers? What real world examples of P vs NP?

      Too difficult? Can you explain what a DFA/NFA is? What the corresponding architecture is in electronic circuits? What sort of problems (real world) can a DFA/NFA solve? What sort can't it solve (think Pumping Lemma)? Can you provide an example (real world)?

      Yeah. Everyone wants programmers. Even if they go to boot-camp schools and come out in 26 weeks knowing a gee-wiz-bang-language. Then they use floats for storing monetary amounts and the CEO wonders why they're losing money.

      Not that we can complain. Even computer scientists (a la Marvin Minsky) can get things wrong.

    5. Re:The book they need isn't a CS book. by Anonymous Coward · · Score: 1

      Theoretical computer science is a highly specialized field and should not be taught at the high school level. Anyone going in that direction should take all the math they can get instead. Practical computer science starts with learning how to program. You can't talk about programming if you don't know what you're talking about. High school computer science should be practical. It should not be a course on word processing. It should not be a course on Windows maintenance. It should teach programming.

    6. Re:The book they need isn't a CS book. by K.+S.+Kyosuke · · Score: 2

      That depends. Are you a computer?

      --
      Ezekiel 23:20
    7. Re:The book they need isn't a CS book. by Nidi62 · · Score: 2

      That depends. Are you a computer?

      I don't think so. I guess it depends on which philosopher you talk to?

      --
      The only thing necessary for evil to triumph is for it to be pitted against a slightly greater evil
    8. Re:The book they need isn't a CS book. by Anonymous Coward · · Score: 1

      If they want to teach computer science (and not software development or programming) a text on abstract algebra or discrete mathematics is likely going to help more than anything with "computer" in the title.

      That would definitely be a great way to steer high school kids away from a career in computers.

      As if they could even find a high school teacher who could teach it. I never found a college professor who could.

    9. Re:The book they need isn't a CS book. by WallyL · · Score: 3, Funny

      That depends. Are you a computer?

      What's a computer?

    10. Re:The book they need isn't a CS book. by h4ck7h3p14n37 · · Score: 1

      I think you're missing OP's point. Businesses typically don't hire "computer scientists", they hire Python or Java programmers, or Oracle DBAs. Traditional schooling doesn't prepare students to work these types of roles.

    11. Re:The book they need isn't a CS book. by Assmasher · · Score: 1

      This. Exactly. They don't teach Computer Science, they teach programming and some of the soft areas around programming. There's absolutely nothing wrong with that - but it's not Computer Science as defined at the collegiate/university level.

      Actual computer science would likely bore the bejeesus out of high school students and yield little benefit except to those already determined to pursue a CS oriented path after graduation.

      --
      Loading...
    12. Re:The book they need isn't a CS book. by p4nther2004 · · Score: 2
      Actually his point was that "traditional" CS isn't valued by business.

      Which is mostly true. Most businesses can't tell the difference between a DFA/CFG/Turing Machine if they tried.

      However the argument that CS doesn't HAVE value is completely false. (And thus my comment about storing monetary amounts in standard floats -- a practice I've personally seen businesses doing in 2016. Why are we getting rounding errors?)

      BTW: We're talking AP exams - these are college credit exams for CS. I'd might allow allow them to skip Intro to Programming Languages with that test...but COT?

    13. Re:The book they need isn't a CS book. by mysidia · · Score: 1

      That's why it's "Computer Science Principles" and not "Computer Science"; the students aren't learning any of the core CS which includes things like

      • (1) Digital Logic -- The differences, pros/cons, and appropriate applications for Analog versus Digital electronics and Analog and Digital computing, Symbolic Logic topics from philosophy - Formal Argumentation from philosophy - What is the definition of a sound argument? - Propositions and Proofs in the language of symbolic logic and Mathematical logic, logical Syllogisms, Boolean Logic and representation, Boolean Algebra, Logic Gates (AND, OR, NOT, XOR, NAND, NOR), Simplification, Karnaugh Maps, Binary and Hexadecimal number systems and the skill to do arithmetic and conversions in the binary and hexadecimal numbers (Translate, Add, Subtract, Multiplication and Long-division within Base-2 without use of a calculator or aide), Gray Code, Binary representations of integers, decimal numbers, character strings, and complex structures, Multi-byte representations, Unicode, Big-Endian vs Little-Endian, 1-st complement form IEEE 1394 Floating point;
      • (2) Introductory programming --- Basic programming and use of common tools for at least two major programming languages -- All common primitive Data Types from C++ and X86 assembly, Variables, Constants, Declarations. Statements. Putting together "Hello World". Expressions. The difference between a Statement and Expression. Common programming errors such as "Works by coincidence", unintended assignment; Undefined Behavior; Off-By-One; Miscounting; Buffer Overflow. Conditional Statements and branching. Looping structures and writing code with both conditionals and looping. Nested looping structures and Basic recursion. Pointers to basic types.
              Pointers to functions. Pointers to pointers. Pointer-based and Array-based Linked lists.

      •         (3) Basic Software Engineering and Assembly -- Learn the basics of X86_64 assembly language and to compile and execute software in a console environment. Understand how .SO and .DLL libraries, dynamic, and static linking works on major operating systems. Learn to properly use common version control systems: Git, Subversion, Mercurial, and Perforce. Learn to analyze binary files without source code using Binary Analysis tools. Debug and analyze software execution in two or three common languages with or without source code using common debugging tools such as Valgrind, GDB, or Visual Studio's debugging. Use breakpoints. Use disassembly to identify classes of errors.
      • (4) All basic Data structures -- Recursively-defined datatypes, Implementations of Trees, UnionFind, Heaps, Queues, Stacks, Priority Queues, Huffman Coding, Hashing, B-Trees, Merkle Trees, Complex data structures
      • (4) Construction and Analysis of algorithms -- Big O notation, Sorting, Djikstra's Algorithm, A* Search
      • (5) Set theory, Graph Theory, Recurrence relations, and the applications of Discrete and Applied Math to computer science
      • (6) Theory of Computation: Turing Machines, Lambda Calculus, Procedural Programming, Functional Programming, OOP.
      • (7) Foundational concepts in CS: Discrete Finite Automata, Regular Expressions, Finite State Machines, The construction of Parsers for formal languages LR LALR, Parse trees, Construction of Compilers, Turing Machines, Turing Completeness.
      • (8) Modeling functions using Splines and polynomials, F-NORM, Mathematics and applications of High-dimensional spaces, Machine learning, Statistical Analysis of Algorithms, and AI principles --- N-Space, Clustering, Classifiers based on Simple regression, Non-Linear regression, DFS Search, Games, basic Game Theory, Neural Networks
    14. Re:The book they need isn't a CS book. by Darinbob · · Score: 1

      I don't think there are high school level texts on computer science. They may have something about programing (not the same as CS), they may have an introductory electronics text, but I don't think there's a good introductory level text that skims the surface of what computer science encompasses.

      Thought that's not really needed. I think high school should be the prerequisite before you really dive into computer science as a major in college. Just like high school science just skims the simple surface, you can't really get deep into science until you get college math under your belt. Remember all the greats who built up the industry from scratch, build all our programing languages, designed all the computer architectures, figured out how to make self driving cars, none of them took a high school computer science class.

      I'd rather the high school level just have a similar broad overview. Basics of programming, basics of computer architecture, basics of algorithms, basics of numerical analysis, basics of digital logic.

    15. Re:The book they need isn't a CS book. by TechyImmigrant · · Score: 1

      Nice post, except for...

      > IEEE 1394 Floating point;
      IEEE 1394 is not a floating point standard. IEEE 754 is.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    16. Re:The book they need isn't a CS book. by THE_WELL_HUNG_OYSTER · · Score: 1

      I don't see how "Copyright and the law" is a topic in Computer Science *or* Computer Science Principles.

    17. Re:The book they need isn't a CS book. by Kevin+Stevens · · Score: 1

      I am teaching this curriculum right now (as a volunteer for https://www.tealsk12.org/ ) and I can tell you that 90% of our time is spent teaching coding, either HTML or CSS. We wrap the fluff stuff into the curriculum to break up the harder stuff.

      The point of this class is to teach basic programming skills and computer concepts so that the regular AP CS class in Java (which I also teach) isn't such a culture shock. Kids drop out of that class at a very high rate and they are trying to give a sanctioned path to learning the real stuff. The regular class was very similar to my first semester CS class in content.

    18. Re: The book they need isn't a CS book. by wellingj · · Score: 1

      You act like college professors are professional teachers. They aren't. They are professional students.

    19. Re:The book they need isn't a CS book. by mysidia · · Score: 1

      I don't see how "Copyright and the law" is a topic in Computer Science *or* Computer Science Principles.

      Copyright and the law is not a computer science topic; it has no business being in a High-School level course, as Copyright is a very complex thing where an adequate teaching of it would leave no time and space for meaningful CS education.... it sounds like something the RIAA would have lobbied for.
      However Digital Copyright is a "Computer Literacy/Computers in Society topic", that would be something like a 1-credit class CS students get as a required elective in college, and something software developers would need to know something about to know not to go copy+pasting other peoples code into their work and go into business and protect their works.

    20. Re:The book they need isn't a CS book. by edittard · · Score: 1

      X as taught in high school is not the same as X defined at the collegiate/university level.

      Isn't that rue for all X?

      --
      At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
    21. Re: The book they need isn't a CS book. by edittard · · Score: 1

      underlying tenants

      That's not taught in CS. You want property law, room 12A.

      --
      At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
  2. I don't think this is new by BenFranske · · Score: 4, Interesting

    I took AP CS in 2000-2001 back when it was C++ based and we didn't use a textbook then either so I'm not so sure this is a new phenomena. We relied on lectures and a lot of hands-on exercises which seemed to work out pretty well. I suspect at that time the AP CS market was quite a bit smaller so there probably were a pretty limited set of textbook options, especially geared at high school students. Now, with the advantage of substantially more online resources there are probably even fewer reasons to be using a textbook. The teacher does need to put some effort into pre-selecting some good online resources to share with students as well as some effort into being a reasonably proficient programmer themselves though. There are many ways to do that too though and my AP CS teacher taught one or two sections of AP CS and the rest of the time was a math teacher which was pretty standard I think.

    1. Re:I don't think this is new by TimMD909 · · Score: 1

      The AP CS course back then thought me nothing. By the time I was old enough to take it, I was already way past it. One of the "hardest" tests was creating a linked list with pointers with some simple user input/output. Not particularly "advanced" and was very disappointing. My suspicions are that students who rely on elementary and high schools to teach them about computers, in any capacity, aren't learning much. They're also robbing themselves of the time when it'd be easiest to pick up the core concepts.

    2. Re:I don't think this is new by TechyImmigrant · · Score: 1

      I completed my CS degree in 1991 and my A-level CS 3 years before (in the UK). There we no specific textbooks back then either, but there were a lot of books to buy if you wanted to succeed. Various languages, electronics books, computer architecture books, formal methods books, graphics algorithms etc. Some of the lecturers published a list of "books you might like to get". No teaching was directly from a book. When did it become expected that a CS course needs a textbook?

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    3. Re:I don't think this is new by networkBoy · · Score: 1

      My programming class used the ANSI C specification as the "textbook". Teacher said it was optional, but recommended.

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    4. Re:I don't think this is new by h4ck7h3p14n37 · · Score: 4, Interesting

      You took a C++ course and you didn't use Stroustrup's book, "The C++ Programming Language"? Isn't that like learning C and not reading K&R's book about it or taking a course on design patterns and not reading GOF?

      There are a lot of classic computer science texts that I would expect all students to be familiar with.

    5. Re:I don't think this is new by sexconker · · Score: 1

      Good ol' Turbo C! I spent way too much time making various sounds with the pc speaker.

    6. Re:I don't think this is new by jandrese · · Score: 1

      Yeah, I knew I was going to be a CS major in college so I took the AB test and then discovered that basically no colleges I applied to gave it time of day. I still had to suffer through the stupidly easy "weed out" class like every other freshman in the program.

      --

      I read the internet for the articles.
    7. Re:I don't think this is new by godrik · · Score: 1

      Note AP CS and AP CSP are different classes. AP CS is meant to be more technical. AP CSP is meant to be less technical but "inspire" more.

  3. High by mnemotronic · · Score: 2

    ... Or is the high AP exam pass rate enjoyed by AP CSP students proof that no-more-books works?

    I believe that proves the test is well correlated to the class content (or vice-versa). Does the class content help the students find meaningful, relevant employment?

    --
    The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
    1. Re:High by JoePete · · Score: 1

      And one could argue that the high failure rate of software today indicates that whatever these kids are learning - in high school and college - isn't translating to quality software. I think that is the underlying issue. Textbooks might not be appealing to students (or teachers) who want to "do," but far too often we see developer running before crawling. There is a lot in that textbook that they need to learn still.

  4. Most info is already available by Anonymous Coward · · Score: 4, Insightful

    CS, much more than most other STEM fields, already has absolute loads of reference information and tutorials and explanations available online. A textbook is supposed to be one-size-fits-all volume with all you need to know to get to a certain level in a certain topic -- a really useful thing to have with no internet, or on a topic where the internet doesn't already have all that information in easily-accessible form, but with the tradeoff that everyone using that textbook gets taught in roughly the same way, which won't work well for all of them. For CS, especially high-school-level CS where you aren't dealing with the more complicated aspects of algorithm performance or CS theory, easily available resources outside textbooks can easily cover everything necessary while also allowing the versatility to more easily suit different teaching and learning styles.

    1. Re:Most info is already available by avandesande · · Score: 1

      This is true about almost any established subject.. texbooks are basically a money making scam for schools.

      --
      love is just extroverted narcissism
  5. Obviously no by AlanBDee · · Score: 1

    What value does a textbook really bring to a classroom beyond being expensive? I love reading but I stopped buying physical books years ago. Maybe the library at the school can have physical books for students who like a physical book. Most would be better off using a more interactive medium; especially for subjects that change often or are difficult to master/understand, like math or computer science. Oh, did you hate history? There are some great YouTube channels that make it fun.

  6. Re:BJC and code.org only serve a single purpose. by Killall+-9+Bash · · Score: 1

    Everyone's a coder, if you lower your standards enough. Welcome to the new white slavery.

    --
    "Prediction: within 10 years, Windows will be a Linux distribution." Me, 7-6-2016
  7. If there's no Deitel and Deitel... by jockeys · · Score: 1

    it's not a real CS class! I'm kidding of course. Many of those books weren't textbooks by any stretch, any more than a dictionary or the DSM is a text book: good reference, but not with "lessons" and such. My best CS classes were when the prof used a reference book and wrote their own curricula, rather than a "textbook" and just following the built in lesson plan.

    --

    In Soviet Russia jokes are formulaic and decidedly non-humorous.
    1. Re:If there's no Deitel and Deitel... by h4ck7h3p14n37 · · Score: 1

      I used to call those guys Tweedle Dee and Tweedle Dum. The Deitel and Deitel books are absolutely awful! My introduction to C class used their book and it was a bad joke compared to the definitive text by Kernighan and Richie.

      People should be using the well known texts from accomplished authors.

    2. Re:If there's no Deitel and Deitel... by jockeys · · Score: 1

      We always pronounced it out loud as "DEEdle and DIEdle" (rhymes with "beadle" and "bridle") with the same general idea you had e.g. Tweedledee and Tweedledum.

      --

      In Soviet Russia jokes are formulaic and decidedly non-humorous.
  8. Textbooks are for studen loans in HS the gov is pa by Joe_Dragon · · Score: 1

    Textbooks are for student loans in HS the gov is paying most of the costs so they can say no to textbook BS.

  9. the intarwebs ruin everything by Thud457 · · Score: 1

    Unfortunately, kids these days just aren't motivated to learn the way we were by a unattended Apple II and a floppy of Strip Poker.

    --

    the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff

  10. Too Fast by freeze128 · · Score: 1

    I imagine that the content of computer science changes too fast to be worth publishing a book. By the time the authors have finished the book, and it gets published, there is some new topic that needs to be covered, and other methods get disused. How about Math teachers, or History teachers? Do they still use textbooks?

  11. Re:BJC and code.org only serve a single purpose. by Cinnamon+Beige · · Score: 2

    Are you kidding me? You chose the worst examples. Try the historic assumption of the public schools that the vast majority of their students would be working blue-collar factory jobs--slaves being taught skilled trades, especially the trades you picked, got the core competencies and theory of their trade. I'm not sure how a carpenter that lacked those would count as a carpenter (vs a random with a box of woodworking tools) and I sincerely doubt anybody would have any use for a cobbler without those skills. Skilled labor is called skilled for a reason.

    That said, most of the people they're teaching probably would never gain particularly in-depth programming skills. You may also have distinctly better results by treating the 'core competency and theory' of programming as something you do after you've learned basic coding--more people learning them better. (And, personally, I do agree with the school that the best way to learn programming is to read code; that and the documentation for the language have taught me more than any textbook on programming has...)

  12. Re:BJC and code.org only serve a single purpose. by nitehawk214 · · Score: 1

    If you never expand on your knowledge after school is out you deserve the crappy coder job you get.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
  13. It's not necessary by jandrese · · Score: 1

    Hands on experience beats textbooks pretty much every time. If your school has a computer lab (AKA you are in a first world country) then there isn't much point studying from the book instead of just doing it yourself and learning how it works. Later on when you start talking about making inductive proofs and the like then the books become necessary again, but for high school CS there is basically nothing that isn't best done directly on the computer.

    --

    I read the internet for the articles.
  14. Book is necessary to a degree... by TemporalBeing · · Score: 1

    I'd highly suggest some kind of book.

    When I did programming classes in high school the teacher used a book specific to each language we were taught. We didn't take them home; they stayed in the classroom. The books were most useful for assignments, but the reading material was good too. The teacher's background was Mathematics and teaching; and he did fairly well. But what he brought most to the table was outside the book - discipline as we were also graded on comments, explaining what it did, and more than just the basics of the assignments; even if the program didn't work or failed, you could still do okay if you could explain what you were doing and had it all commented.

    So yes - a book and non-book materials go hand-in-hand.

    And at that level you basically cannot be doing the language du jour - you have to stick with time honored languages to keep year-to-year work easy. The teacher does not have the time to rewrite the curriculum every 6 months for whatever new hotness is out there. So sticking with C++, Python, and a couple others that have been around for a very long time is much more preferable than trying to keep up with all the different JS frameworks (Node, React, etc) or whatever else is the latest fancy of the CS departments.

    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  15. Re:BJC and code.org only serve a single purpose. by Darinbob · · Score: 4, Informative

    Computer science is not "programing skills". This is the mistake I think these people keep making. If they want programmers, then it's not computer science and is instead jobs training. We don't learn algebra in high school because we're going to be professional mathematicians, and we don't learn physics because we're going to be a scientist, and we don't learn civics because we're going to be a politician.

    The point of high school is to get a well rounded education in preparation to becoming a full ledged participant in civil life. Part of that is getting a trade,and much of having a trade involves these extra life skills (reading, writing, communicating effectively). And there is much more to life than having a trade. That's why we learn literature and history. Maybe you don't need that when being an auto mechanic on the job, but you need that when at home, when interacting with the community, when voting, and so forth. You need the arithmetic so you can maintain a proper budget, plan for retirement, do your taxes, and so forth. A public high school is an investment that the public makes in order to provide a large payoff in the future when you have better educated public.

    So computer science in high school should fit that mold also. Everyone should know something about how computers work, whether or not they end up going into a computing field. And by how they work, this is so much more than programming; it's math, electronics, digital logic, algorithms, a dab of theory, and so forth. And this teaches logical thinking; even simplistic modern programming style at least teaches you how to divide a complex task in smaller parts, divide and conquer, it's an important life skill.

  16. Re:BJC and code.org only serve a single purpose. by serviscope_minor · · Score: 1

    This is so much bullshit I don't even.

    To drive down the cost of sourcing and employing programmers specific to the construction of code for major multinational corporations.

    Yeah possibly, on the other hand, it's better to be educatig people to be card designers than buggy whip makers.

    in much the same way slavery worked in 18th century america, these programmers are never intended to understand or learn the fundamentals of their trade.

    WTF?

    No, seriously, WTF?

    The point is to get people started. Very very few people are suited to starting computing by learning about fundamental theorems of computability or semiconductor design, depending on what you personally consider to be "fundamental".

    A course that doesn't give you everything at once is not somehoq equivalent to slavery. there have never been more resources for learning the fundamentals

    Instead, like the slaveholders cobbler or slaveholders carpenter, theyre instructed only as much as they need to know for the task at hand.

    Except the difference is they were you know, slaves. The completelty not slaves are free to (a) learn more and (b) leave and get another job.

    --
    SJW n. One who posts facts.
  17. Re:BJC and code.org only serve a single purpose. by Darinbob · · Score: 1

    There are so many crappy coders now that they are influencing everyone around them into thinking that crappy coders are a good thing, and that we need more tools to help out crappy coders, and that we should fight off outsourcing to countries that specialize in crappy coding.

  18. self-documenting by bugs2squash · · Score: 1

    The lack of a textbook is intentional, to instill a general hatred for documenting any code. All the explanation they will need is in the comments.

    --
    Nullius in verba
  19. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  20. thoughts from an AP CS A teacher by reiscw · · Score: 1

    There are now two AP courses for Computer Science. The first is Computer Science A, which is essentially CS 1 taught in Java. I've had students go directly from that course into Data Structures/Algorithms at a university and they do fine.

    The other course is a few years old, and it is called AP Computer Science Principles. I haven't taught that course, but I have been to professional development workshops preparing teachers to teach it. Those of you who work in universities may be aware of "general education" courses in computer science that are designed for liberal arts majors. This is basically that course (and at least one liberal arts college in my city offers an equivalent). It's all the rage right now, because there's not a lot of programming (probably less than 25% of the course) so more people are comfortable teaching it. It also lets schools claim that more students are learning CS (which, to an extent, they are).

    As to whether books are necessary in AP Computer Science, I think they help. A well-written introductory textbook explains things in a thorough, logical way, with plenty of examples and exercises. They are not essential, but many students who are interested in the material but have little or no background in programming find a thorough treatment helpful. You can also learn some things you might not have known otherwise by reading a newer text in a common programming language. I recently learned about default methods in interfaces in Java 8, which is something I didn't know before; I learned it because I was reading a newer text on Java for AP Computer Science. I also believe that students interested in engineering or computer science should have the opportunity to learn how to read technical literature which can be somewhat dense.

    That's not to say that they are an expensive waste of money for some students thanks to predatory pricing from textbook publishers.

    One issue with textbooks is that if you use a common one, solutions to every single exercise are available online. You can detect this with some clever things like MOSS (and just eyeballing the code yourself), but it really disrupts a lot of learning. I did my first computer science courses in Pascal/C++ before the internet really took off (mid-90s) and you really had to figure everything out on your own. I think a lot of us teachers write our own exercises to get around this, and the AP examination is a great equalizer to know who has really been learning the material.

  21. Re:BJC and code.org only serve a single purpose. by Cinnamon+Beige · · Score: 1

    Most of your list is things you either ought to be obtaining elsewhere and/or earlier, or it is something a student most likely/easily going to attain after learning some programming--and, not sure how to break this to you, but most public school systems in the US do a damn lousy job of teaching anything. (They certainly don't teach history. It's social studies, which means you can skip parts of history that don't fit with the story you want to tell or which are embarrassing.)

    The thing with starting with coding is because a lot of later classes on CS are going to assume you've got at least a generic understanding of code under your belt and if you like it, you'll actually be interested in learning more and developing greater skills in it--which means you'll pick up the theory and other elements and often be able to see how they work relatively soon, or at least not be subjected to bad explanations from people who probably understand the material worse than you do. Current thinking is that all a teacher for K12 students needs to actually know is how to teach--not the subject, never mind that a person who knows, understands, and enjoys the subject is hands down the best possible teacher you can get.

    Incidentally, some of your list can be taught at elementary school or earlier. You can find many examples online of how to model logic gates with marbles (such as this) which means you can render a basic mechanical computer as a child's toy, and breaking tasks down into smaller, more manageable parts is a skill you can definitely teach a child long before they are much good at reading and writing.

  22. Re:BJC and code.org only serve a single purpose. by Darinbob · · Score: 1

    I certainly learned history in high school. American history, California history, world history, ancient history. They don't teach these things anymore?