3 ms·
I'd rather teach generalized sequential logic and reasoning in high school. Then the programming will naturally fall from that, if they decide to learn. However
by jdmichal 10y ago
I'd rather teach generalized sequential logic and reasoning in high school. Then the programming will naturally fall from that, if they decide to learn. However, if they don't decide to learn, then at least the class will still have some applicability to their life.
EDIT: Think of teaching at the level of what's in this Atwood post, and the related paper:
https://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/ https://blog.codinghorror.com/separating-programming-sheep-f...
- pbhjpbhj 10y ago>'d rather teach generalized sequential logic and reasoning in high school. // Isn't teaching programming one way to do that? Interesting codinghorror link. What struck me was the ineptitude of the question in their example assessment "intended for students who have never looked at a line of code in their lives" ("int a= ..."). It's testing syntax primarily without having taught the syntax, it seems really worthless - all you're really going to test for is who has actually seen some programming and knows that "=" is not equals but is being used as an assignment operator. Surely a proper test for ability in programming would be to write it out in pseudo code like: integer value a is set to 10 integer value b is set to 20 a is assigned the value of b what are the values now of a and b. Supremely facile. Surely they're not really trying to test ability to guess arbitrary syntax? If they were then they'd be better with nni a :-# 10 nni b :-# 20 a :-# b what are the values of a and b? At least that's not giving a free ride to those who know the previous syntax, they also have to impute meaning on unlearned symbolic strings. Mind you how do you decide to do CS at Uni and not ever have programmed anything??? Sure there's not the degree of crossover that people imagine between the two, but it seems like choosing to do maths without ever having proved a theorem.
- jdmichal 10y agoI'd consider programming to be a specialized topic, as it has domain issues and limitations. As an example, think of things like integer datatypes. Is it really important that we teach people that there's several "flavors" of integers based on how much memory they consume, which is directly related to how many distinct values they can represent? Obviously that's important to programmers, but I think the general populous is safe throughout their life without that information. Also, the assignment test is interesting, even with your rewording. The barrier is in the sequential part of the topic. In something like proofs, which is the closest I remember getting in high school to logic, those statements are simply invalid together, because there is no time domain. If `a` is 10, it is 10 throughout the entire construct. Seeing `a` is `b` means that an impossible conclusion has been reached. Finally, the last point is, well, curious. How many people decide to go into aerospace engineering without ever having engineered an airframe? I'd guess the vast majority. Requiring prior exposure to succeed in a degree is an oddity, so what is is about CS education that causes this?
- throwaway729 10y ago> The barrier is in the sequential part of the topic pbhjpbhj's point still stands -- the question is "supremely facile" once you get past matters of syntax. For example, most third graders could solve the problem when you make the time indexing explicit: a(1) = 10 and b(1) is undefined. a(2) = a(1) and b(2) = 20. b(3) = b(2) and a(3) = b(3). What is the value of a(3) and b(3)? We can go a step further for students still struggling by associating to each variable at each time step a fresh variable (bonus: when they see SSA it'll be a breeze): Q = 10 W is undefined R = Q T = 20 Y = T U = Y What are the values of Y and U? I've had students for whom even this didn't work, so I definitely don't believe "everyone can code". But still, if 30 - 60% of your students can't solve this problem, then there's something very wrong with the way the course is being managed, because I don't even get close to that percentage with sixth graders. Of course, I take the time to explain in excruciating detail what the symbols mean. So if I had to bet, it means that no one is sitting down and taking the time to help students get up to speed on the meaning of the syntax for this huge engineered system that was just thrown at them. Which is a real shame, because having these sorts of difficulties early in an intro course is, IME, completely uncorrelated with how the student will do throughout the rest of the curriculum. You see the same thing when tutoring for early mathematics courses -- most students in the bottom of the distribution are having difficulty because some historical-cruft syntax is presented and not properly explained in lecture. Unsurprisingly, if no one bothers to explain what the hell the symbols mean, three more weeks of using the symbols to do more complicated stuff isn't particularly useful. So lack of movement among the groups isn't surprising, but reading off from that anything other than lack of sufficiently differentiated instruction is a fool's errand. > Requiring prior exposure to succeed in a degree is an oddity 1. This is obviously not true for any of the natural sciences or for mathematics. It's also not true for English -- students have already done a lot of reading and essay writing by the time they get to college. Maybe it's a little more true for engineering fields, but at least there students are expected to have some background in math and physics. Oh, and also, typically take some university-level science and math alongside or prior to their serious engineering courses. 2. Requiring the mastery of large engineered systems during the first week or day of a course is also an extreme oddity.
- Ar-Curunir 10y agoYou're probably from the UK (given your usage of 'Uni'). The high school system in the US is pretty meh. You choose your major after getting to college, not when you apply. So people come to college, realise all the money is in CS, and decide to switch over.
- throwaway729 10y ago"generalized sequential logic and reasoning" sounds like a pretty specific skill set, actually. I can't imagine wanting to teach that to high schoolers in an alternative history where lisp takes off and becomes the lingua franca of software development. For example. I could get on board with teaching mathematical logic or combinatorics and discrete mathematics, for example. But "generalized sequential logic and reasoning" is hard for me to get too excited about because it's not a particularly useful concept outside of understanding and using imperative models of computation. And if the only substantial motivation for teaching something is its application to some particular useful skill (programming in an imperative language), why not just teach that skill?
- moyix 10y agoBy the way – the study that the Coding Horror post is based on has been retracted: http://retractionwatch.com/2014/07/18/the-camel-doesnt-have-two-humps-programming-aptitude-test-canned-for-overzealous-conclusion/ http://retractionwatch.com/2014/07/18/the-camel-doesnt-have-... But I think it's what spurred all the interest into the "bimodal hypothesis" that the current work explores.