Having worked with many of my fellow graduate students to try to teach CS concepts to incoming students without any CS background my conclusion here is that we simply don't know how to teach computer science. My suspicion is that many people who learn CS usually do it inspite of attempts to teach them, not because of instruction. Think about how long it took humans to figure out how to teach reading to _everyone_. We had to break the old whole reading method and switch over to phonics, and that was decades after we had the hard scientific evidence that phonics was the missing perspective needed to get that last percentage of students to read. We are probably decades away from understanding how to teach CS to everyone, let alone getting those techniques implemented.
> Having worked with many of my fellow graduate students to try to teach CS concepts to incoming students without any CS background my conclusion here is that we simply don't know how to teach computer science. My suspicion is that many people who learn CS usually do it inspite of attempts to teach them, not because of instruction.
I have this assumption about almost all organized learning at this time. I think that's also why things like IQ/g/etc. look so important - they make the learning "in spite of" more tractable, because you have enough of a buffer to deal with even really bad information at a very fast pace, and because high IQ students will make one's education methods look good even if they're terrible.
The ironic conclusion is that the most selective institutions could offer the worst environment and still boast about high levels of post-institutional success.
The biggest problem with teaching reading is that not everyone is ready or interested in learning how to read at the same age. Studying why we can't force a random group of 7 year olds to learn how to read is missing the point. We homeschool. One of my daughters became a fluent reader very early. The other when she was a few years older. You can't force people or children to learn something they're not interested or aren't ready (for various reasons) to learn which unfortunately is basically what the educational system is built around. It's really less about methods which make a marginal difference.
The problem with higher education is that we are still forcing people into those programs. If you want to make a good salary you take CS. Whether you have any interest or passion in that area is not relevant. Whatever your level of mathematical maturity is not relevant. You are of the right age and you want a successful career that's where you go. It's no wonder that teaching all those people CS is going to be difficult. It's still the same faulty approach to education. Everything can be taught and everyone can be taught and if it doesn't work we just need to find a better way of force feeding them.
Compounding that even further is that teaching is difficult under the best of circumstances. In higher education it's often researchers who are asked to teach (or students) and while they may be brilliant on an intellectual level it doesn't necessarily make them good teachers.
EDIT: And a thought on the bi-modality ... I would expect to be able to see this sort of modality at the output of a CS program. I would expect modality amongst students who graduated with the same grades. I would be really surprised if students graduating with the same grades perform similarly in software development tasks. Not clear to me what a CS grade means and how they relate to any natural abilities to e.g. write computer programs.
This analogy fails when you consider Chinese and similarly encoded written systems. Sure, there are methods employed that use radicals in order to provide phonetic "hints," but written Chinese is predominantly acquired through rote memorization. Many countries that use written Chinese today have comparable literacy rates to countries that use syllabic and phonetic systems. What have they done right that took phonics for us to do?
I think the difference here is that reading is considered to be so important that people don't just stop if a child doesn't learn it. The child will end up spending an enormous amount of time studying something when another technique might allow them to learn it more quickly.
There is no similar equivalent for learning how to program. No one is going to prevent a student from graduating college until they figure out how to read and write a computer program, and you sure as hell can't prevent them from going out to play.
I have taught some, and the most successful technique I employed was much the same as what a compiler does with chunking packets of instructions for the assembler.
It's fairly logical, actually very logical, inasmuch as it is to think that the human mind can process things in some discrete amount, and then move that data to the hindbrain and ready the visuo-spatial cortex for more.
Repetition is key for this to happen, yet we don't really reiterate a lot (well, in my humble experience) of the things we learn as CS students, other than the bajillion attempts to code properly on our own. We do things maybe twice, three times, then we take some notes or move on to a different part of the subject. The brain needs a 'lot' of repetition to have something down like we do things that require muscle memory.
So, how to make something that would, on its face, appear tedious into a feature set?
Well, again, from my humble teaching experience, and to extend the muscle memory analogy: muscle confusion!
Mix up the media used to teach, and be creative about it. Don't just copy paste a slideshow from a dataset that some UW prof has put together, and then add a video from a YouTube tut, and call that a multimedia presentation (no offense, I know teaching is fucking hard, I'm being ideal here). Instead, MAKE UP a cool little ditty about what constitutes a class declaration (punny, no?) and then couple that with a dance that entails the two dancers to be logical constructs like XOR and NOT and have a little memory register ho-down...lol.
Ok, well like I said, muscle confusion, but with the various lobes of e mind being entertained and enervated, booooi (said to the voice of Flava-Flav).
IF in doubt, simply go piece by piece, building larger chunks of data for he students to learn and reiterate over each new chunk aggregating the last until the entire set of concepts is learned well enough to be determined comprehensive.
>We had to break the old whole reading method and switch over to phonics, and that was decades after we had the hard scientific evidence that phonics was the missing perspective needed to get that last percentage of students to read.
We don't know how to teach fuckall. We basically shove a bunch of crap and resources in students' faces, and we hope that they can manage to teach themselves anything of value. Once in a blue moon there's a teacher who truly knows how to get their students to learn well (I've had more than my fair share in my academic career, that's for sure, but even so it was a tiny minority), most "teaching" is basically just cargo culting and going through the motions to "cover the material". So of course we see a pattern of folks who don't have as much support for learning outside of school tend to be at a disadvantage except in rare cases. Most education is practically coincidental to the process, a matter of osmosis and expectations as much as anything else. And in truth if you take a recently minted college graduate off the line and do some truly in depth tests of the quality of their education you'll find it sorely lacking in almost all cases, no matter their GPA, alma matter, or major.
Education is a bit like journalism. You find in journalism that whenever a story comes out in a subject you are intimately familiar with it's riddled with errors, inaccuracies, half-truths, and sometimes worse. Which makes you wonder about the rest (it's the same). In education you find that once you acquire a sound and thorough understanding of a topic you look at the way it's taught and see a lot of busy work, almost no concentration on the fundamentals, and a constant pattern of "keeping pace" even as most of the class gets left behind and typically only retains enough knowledge to pass the tests by sheer force of will (memorization, test taking techniques, and trial and error).
For me the best STEM classes in college were always the ones where you had to apply your knowledge, but those classes were too rare and not as well attended as the mandatory classes.
Unfortunately, a lot of institutional education in STEM fields suffers from several fundamental difficulties. For one there's is the common perspective that "it's supposed to be hard", and so curricula are tuned to weed out those who can't tough it through. For another, there's a tremendous focus on rote memorization, busy work, and trivia versus practical, applied, core knowledge. Real life is not like an episode of Jeopardy, the vast majority of the time you are better off with having a sound understanding of the fundamentals and the ability to look up or pick up any specifics or trivia as needed. This is true whether we're talking about CS, math, chemistry, physics, or what-have-you. Yet consistently the system is setup to reward the folks who are able and willing to suffer through most of that useless memorization and busywork and punish those who can't or won't.
This is why you see so many adults who routinely say "ugh, I haaaated math in school" or science, or english, or essay writing, or computer science, etc. Those subjects are vibrant, fascinating, exciting, rich, and interesting areas of study. Studying math and computer science can be playful, fun, and inventive. But when crushed under mountains of drudgery all of that is lost and the result is that people end up cut off from learning those things and they lose their enthusiasm for studying.
This is mostly unrelated to the main topic of the article, but this paragraph caught my eye:
> For example, Padavic et al. [20] found that the "work-family" narrative in business is an example of a social defense: people will say that women leave the workplace because of "family", despite the large amount of evidence that women leave their jobs because of inadequate pay or opportunities
for advancement [20], particularly when they see male co-workers promoted ahead of them. The "work-family" narrative is a more palatable explanation rather than to confront sexual discrimination in the workplace, and so the narrative continues.
>
> [20] I. Padavic and R. J. Ely. The work-family narrative as a social defense, 2013.
I tried to track down the work by Padavic et al. that Patitsas et al. are citing, and found this:
However, this article by Padavic et al. is actually saying something different from the way that Patitsas et al. summarized it. Padavic et al. appear to actually be arguing that the work-family narrative is a social defense against the uncomfortable truth of excessively long working hours for both genders at the corporation, not against any uncomfortable truth about sexual discrimination. Also, Padavic et al. don't seem to discuss sexual discrimination in wages or promotions at all.
Did Patitsas et al. make an error in citing their sources? Am I missing something?
Mis-citation occurs all the time. When I was a professional scientist I could only find the source for a claim I was interested in less than 25% of the time. I would find some claim and about 50% of the time the reference cited another reference and so on until the chain broke. The other 25% of the time the reference cited said something completely different to what was being claimed. Very frustrating.
During my Ph.D. I tried tracking down the reasoning behind a couple sets of assumptions made in non-uniform torsion of beams (e.g., twisting a beam with one end fixed). It turns out that they just kept the same assumptions from uniform torsion (just twisting the beam but with no ends fixed) without checking if they still held (they don't). All because nobody thought to check if the assumptions might be in conflict. The uniform torsion models go back to the mid 1800s, while the non-uniform torsion models are from the early to mid 20th century. So, it's been over 60 years people have been working with wrong assumptions.
>Did Patitsas et al. make an error in citing their sources?
An error if you are very generous. It appears to be deliberately lying about what the source says to match it to the pre-selected explanation they are pushing.
"Are CS grades bimodal, or unimodal? To test this, we ac-
quired the final grades distributions for every undergraduate
CS class at the University of British Columbia (UBC), from
1996 to 2013. This represents 778 different lecture sections,
containing a total of 30,214 final grades (average class size:
75)."
My understanding of the bimodal situation, if it exists, is that it primarily applies to earlier classes---later classes only include those who did well, or at least passed, the previous classes.
Ah, yes...
"Of the 45 classes which were multimodal, 16 were 100-
level classes (35%), 5 were 200-level (11%), 12 were 300-level
(27%), and 12 were 400-level (27%). For comparison, in the
full set of 778 classes, 171 were 100-level (22%), 165 were
200-level (21%), 243 were 300-level (31%), and 199 were
400-level (26%)."
How about we take a closer look at those 100 level classes, hmmm?
The earlier classes are exactly the place where things like prior experience and level of interest can possibly explain bimodality. In which case bimodal grades exist, but the conclusions you can draw from their existence are pretty mundane (e.g., turns out you do better if you had a programming class in high school... surprise!) and sufficiently varied that it'd be hard to come up with any compelling interpretation of the data.
There's a survivor-ship bias in later courses. The extent of that bias can only be determined by looking at attrition rates. But it's far easier to predict and measure the major threats to validity for data in later courses.
So, if I were interested in the question "Are some people just naturally better at CS than others", I would either focus on later courses and try to determine the extent of survivor bias, or else I would look holistically at the entire curriculum. But I definitely wouldn't give a lot of weight to 100-level courses.
But if binodality is really strong in early level classes for that reason, it sorta suggests that maybe you should split into a fast and slow track, letting the experienced people maybe do 2 semesters in one class. Then the students with no experience but raw talent don't just drop off because they are having trouble keeping up with peers who have been programming since they were 11.
> The earlier classes are exactly the place where things like prior experience and level of interest can possibly explain bimodality.
I saw this a lot at GT. There, many students had to take the introductory programming course at the time (all engineering and sciences? circa 2000 if someone wants to help me remember). There was a great disparity between those of us who programmed in HS (or earlier) and those who didn't.
What isn't clear is whether the poor grades were due to a lack of aptitude for the material, or a lack of skill on the faculty's part in presenting and educating, or a lack of interest or focus from those particular students (given it was their first and last CS course and they had to deal with the rest of the hell that was GT's first year).
In my own experience, later courses (in computer science specifically) tend to erase the bimodal distribution because your ability to do science related to computing is almost orthogonal to your ability to actually build something with computers. Some of the people who graduated with honours alongside me could not code their way out of a paper bag if there was an exit_paper_bag() instruction.
A more obvious consideration is upper level classes have smaller sample sizes. They defaulted to 'not binomial' which creates a very strong bias in their methods. Even then they found a statistically significant results across a range of samples, thus invalidating their conclusion.
The issue seems to be a failure to understand statistical analysis. The possible results are probably Yes or inconclusive.
PS: You can also hide bi-modal distributions by averaging several offset distributions together. IF class A average is 70 with 2 peaks at 60 and 90 and class B average is 80 with two peaks at 70 and 90. You get four weak peaks at 60, 70, 80, and 90. Now repeat for a range of averages and it's going to look like a bell curve.
I remember my real analysis professor explicitly telling us that he ran the numbers on one of our exams and found bimodality. Real analysis is not what I would call an earlier class. I'm not sure if we were an outlier or a representative data point, however.
I would expect ability driven bimodality to show up in courses that present new types of challenges that were not in previous courses. That is where you'll get students who either do or don't master key concepts, and where they go from there depends on their mastery of those concepts.
For computer science, one of those key concepts is reasoning about state manipulated through a layer of indirection. The infamous "getting" pointers issue.
In the case of real analysis, it is an issue of switching from "Can you apply known operations to produce the right answer?" to "Do you understand the structure of the reals well enough to prove it?".
I think the idea is that people on the lower mode of grading would self select themselves out of a CS at the 100 most often. This reduces the bimodality for the 200 level. Where again students self select themselves out, then the 300 level bi-modality is even further reduced.
I think the 100 level is the place where such a bimodality is most likely to exist and investigation ought to be focused there.
While real analysis alone is probably not enough to do a real representative analysis, if the class were the first real analysis class in the undergrad sequence, then I'd call it an earlier class. Eg, 1st upper division real analysis class, assuming the lower divs were the ones the pre-meds and CS majors took.
The evidence supports the claim that 100-level classes are relatively more likely to have bimodal grade distributions than upper-division courses, but does not support the claim that they are likely to have bimodal grade distributions (and we would want to compare csci to other 100-level classes if we thought there was something particularly problematic about entry-level csci education). By all means let's get more data, but entry level csci courses do not in general have bimodal grade distributions according to the data.
Having TA'd low-level csci courses, I would conjecture that entry-level courses in general are taught by less talented teachers, tend to be graded more sloppily due to sheer work-load, also have a high percentage of people who are absolutely whacked out of their minds than upper division courses.
The whole premise of the survey part of this paper strikes me as very flawed. The idea was "show some professors histograms we know are normal, and see if they see bimodality that isn't there". The problem is, they didn't show them 6 random histograms of the normal distribution. For one, they didn't actually show them normal distributions at all; they showed them normal distributions capped at 100. That's going to give you a point mass at 100... making it a bimodal distribution! Second, they didn't give 6 random examples of a capped normal histogram; they gave them 6 examples chosen from a random set of histograms chosen in such a way that 4 of the 6 look bimodal. The survey participants didn't see bimodality that wasn't there, they saw bimodality that was purposefully generated by the histogram selection methodology!
Aren't final grades often "curved", i.e. re-graded according to rank? That would explicitly destroy bimodality, making the final grade distribution consist of non-iid order statistics.
Also, it's commendable that they point out that they expect 5% false positives, but frustrating that they don't go further and explicitly plan for a multiple testing correction procedure. It seems that they don't need it to fail to reject the null "meta-hypothesis", but still.
Not only are they curved, different courses are 'curved' according to vastly different rules. Some curve percentages, some curve only letters, and different distributions are enforced for different classes.
So if this is post-curve data, I would expect it to be basically worthless as a reflection of skill distribution.
Yeah, lots of ways to fudge. One exam, my friend Brian and I were allowed to skip the final and take our grade. So the rest of the class could go from failing, to getting a grade on a curve. There was that much gap between us and the rest.
My Operating Systems course had a really odd grade curve.
There was a listed one in the syllabus, but then the exams were so difficult that nobody was scoring above 80-85 out of 100, so there had to be an additional full grade curve after that.
So yeah, post-curve isn't helpful. Unless there's some way to normalize the data.
If you make an exam that is difficult enough to need curving, you're getting a poor measure of ability. This is because exams ask only a few questions, and unreasonably difficult exams result in low scores even from high achieving students. Low scores are very susceptible to noise (the delta between 50% and 60% is greater than between 85% and 95%).
If that doesn't convince you, take my argument to the obvious extreme. The Putnam Competition in mathematics is tough. Sometimes over half of the people score 0. Getting 1 question correct (out of 12) at times puts you in the top 20%.
Imagine I gave this as an exam to a math class of 20 students. One person scores a 1. The rest score 0. Is it meaningful to curve this? I could correct by giving partial credit: Some people get 0.25, others 0.5, and others 0.75, so we now have 5 different grades. Should I just give A, B, C, D and F?
The lower the scores, the higher the effect of noise. It's a bad idea.
But I've seen a lot of courses where it isn't. Among the many techniques I've seen used:
- Raw average, then set letter cutoffs for a normal distribution across students. Arbitrary on distribution, normal on letter.
- "Skew high" by counting missed points more weakly as you miss more. Inflated letters with a score-accurate relative distribution.
- "Fixed and curved", where each cutoff is based on the more (or less!) generous of standard deviations and 'conventional' grade brackets: the floor for A is either 92%+ or +2 SD from mean, B is 83%+ or +1 SD, etc. Bizarre and distorted everything, since the relevant cap is determined by the local distribution.
- God knows what else.
So honestly, I think post-curve data is a hopelessly course-specific, nonlinear mess.
I've seen a few different curving processes:
1. Formula, like square root of grade times 10, that's designed to bring up grades. There're a lot of possibilities here
2. Top x% get A's, next y% get B's, etc
3. Look for clusters: top cluster gets A's, next B's, etc
These can also be applied to classes as a whole or individual assignments and tests
That sounds funny, but it's true under the common modern curving regime that is really just lowering the bar for raw score to letter grade conversion, not forcing a bell curve.
"We theorized that the perception of bimodal grades in CS is a social defense. It is easier for the CS education community to believe that some students “have it” and others do not than it is for the community to come to terms with the shortfalls of our pedagogical approaches and assessment tools."
I didn't read the whole article, but I'm not sure I agree with the conclusion. Even with a standard gaussian distribution, one may still believe that some students have it and some don't. Let say there is consistently 25% of students that are unable to pass their exams (for various reasons: lack of interest, motivation, intelligence, discipline...), why would a "social defense" be needed?
While I agree that we always should try to improve our pedagogical tools, I don't believe that anyone can learn anything provided they have a good teacher.
They fix some data that as a matter of mathematical fact is/is not bimodal, and then ask people who do/don't believe in the "geek gene" hypotehsis to interpret the data.
Conclusion of the section: "We found a statistically significant relationship between seeing-bimodality and participants’ responses to the questions relating to the Geek Gene hypothesis"
So the "social defense mechanism" theory is definitely debatable, but apparently people who believe in the "Geek Gene hypothesis" are more likely to see bimodality where there is none.
> I don't believe that anyone can learn anything provided they have a good teacher.
The point isn't that everyone can learn anything. The point is just that the distribution isn't as bimodal as people seem to think it is. Also worth noting that the researchers posit normal distrbutions, not uniform distributions, as the alternative to bimodality.
I'm less impressed by "wrong about rigged data" results than most people seem to be. Yes, it implies that people bring assumptions to their answer, but is that really shocking?
People with a high prior for a thing assume that new data is most likely to conform to that prior. If you handed me a questionably-bimodal data set, my judgement of its distribution would absolutely depend on what you told me the data represented. Hopefully I'd answer right if I sat down and analyzed the thing in depth, but if you simply go "what kind of distribution does this look like?" then I'm going to include my outside expectations.
Yeah, there's a risk of bias here, largely from people not conserving expectations (if you already assume Geek Gene is true, unfavorable data should count more than favorable data). But saying "people used experience to interpret new data!" doesn't seem like it's proving much.
Programming tests amplify modality because they require success on multiple items to succeed.
Consider teaching N skills. Success is binary, uncorrelated and everyone randomly succeeds some high percentage P on each skill. Scoring is the number of binary successes. You'll get a Gaussian distribution. That's most of education.
Now suppose scoring is 1 if all N skills are learned. You'll get a bimodal distribution. That's programming tested on whether the program runs.
I get especially mad when people suggest that there are some ideas that are just special, that only special people can get. Pointers and recursion are at the top of this list.
> For some reason most people seem to be born without the part of the brain that understands pointers. Pointers require a complex form of doubly-indirected thinking that some people just can’t do
Really? Here's my 20 dollar challenge: give me a person and I can teach them pointers. Pointers, referencing and dereferencing, null pointers, pointers to pointers, the whole deal.
The problem is the pedagogy. Learning a new abstraction and a new way of thinking takes time. It's easy to get it but really not /get/ it. You have to do a lot of examples. One on one with a person, with real time feedback. Until they internalize it. Many many many simple examples at first, and then examples of using it in a real world context. Then more. If you already know this abstraction, consciously or unconsciously, it's impossible to un-know it, and the reaction when someone is struggling is "I explained it as simply as I can and I don't know why they still don't get it". It's not like that. It's like basketball: you can explain how to shoot, but really the student needs to do it, and you comment while they're doing it.
> I get especially mad when people suggest that there are some ideas that are just special, that only special people can get.
I think this is an important point.
After working with concepts in enough domains you start to see they are all made up of the same kinds of things; when it seems like they aren't, you're likely missing some implicitly used concepts that you don't even know you're missing which makes learning this new thing seem fundamentally more difficult than other things.
The way I think about why this would be (or would not be) is: are all concepts reducible to some small set of basic entities—i.e. are they all built up from some shared concept 'atoms'?
Now, I don't have a way of giving a definite answer to that, just my experience asking this question over and over again while picking up new concepts, and my experience so far puts me in favor of these 'atoms.' For instance, are there any concepts that can't be broken down into sets of 'types' and 'relations' between the types? (or something along those lines)
Could there be more significant barriers to people learning new concepts than limits to their intelligence? I've taught programming to a lot of people, and it's easy to see where they get caught up: they're doing fine, making progress, happy, excited, a little nervous; they make minor mistakes but quickly see their errors and it doesn't worry them too much. Then, they run into some difficulty that puts the question in their mind of whether they can really do this or not and you can observe their agitation increase. Typically they want to go do something else pretty soon after. If they are especially persistent they will face this scary situation and go back into it the next day—but more often they'll feel guilty about not going back to it for a long period, maybe do it once or twice after without much enjoyment or progress, and ultimately, quietly drop it.
What I have never seen is someone run into a wall with some concept, persistently revisit it and work earnestly to understand, and yet still fail. That's what they fear will happen (maybe an evolved feature to prevent spending too much time on theories that are going to dead-end?), but it doesn't.
I think statements like these brush off problems of learning difficulty as something to be surmounted with good pedagogy; incremental pain for incremental gain.
But when you run a youth pedagogical program of any sort, you can see that the consequences of speed or intelligence aren't things you simply overcome with a great teacher and applied effort. You can see that the consequences of both fast and slow accumulates for years.
The consequence of slow is that by the time you are 18 or whatever, you have learned fewer things. Sometimes the consequence of slow is that you simply don't even do X because of a rational consideration of opportunity cost.
In the race of money and life, almost all tortoises and hares in our society feel the bite of debt and financial worry. It is meh strategy for the tortoise to hope that hares are lazy and arrogant. It is meh strategy to hope that the tortoise would receive high quality education where the hare would not.
I don't think the question is whether a human can learn pointers or not but rather how much effort one has to put to get to the mastery level. From various physical tasks such as swimming, running, bicycling or mountaineering it is well known that few are born with inherent advantages such as metabolism, large lungs, muscle type, carb absorbtion, heart strength and so on. These people typically put in lot less effort and advance lot more faster than others who didn't had those advantages. For running marathons, you can find lots of examples where one has to put enormous effort over extended period of time just to barely succeed while others are competitive with little effort while starting with same initial abilities. It is however contentious if these analogies with developing physical abilities is applicable to mental abilities, primarily because brain is understood be far more complex, malleable and elastic. Even if person doesn't understand one set of abstractions such as pointers, it is likely that they excel at others such as recognizing perfect shade of color, musical composition or designing game levels. Instead of everyone trying to understand pointers, I think people should find their sweet spots, especially the one that they enjoy.
> Even if person doesn't understand one set of abstractions such as pointers, it is likely that they excel at others such as recognizing perfect shade of color, musical composition or designing game levels. Instead of everyone trying to understand pointers, I think people should find their sweet spots, especially the one that they enjoy.
This sounds like the assumption that lack of predisposition to one field is correlated with skill in other fields (eg, "X is not a math person so he's likely to have some talent in lit or the arts). I thought I recalled reading that what evidence there is doesn't support this: and that in fact those who have a knack for, eg, math are more likely to be good at other fields too. (This of course isn't talking about time spent practicing each field, which is rivalrous, but we're talking about "inherent advantages" here).
"give me a person and I can teach them pointers" Yeah, I don't think so. I have a 16 year old son that still hasn't mastered multiplication beyond single digits. It's not for lack of effort. We have spent $10,0000+ private tutors in addition to the efforts from his teachers/school, but he just doesn't get it. He isn't mentally retarded or autistic or anything else (we've had him tested many many times both privately and by the school system). He just has a terrible memory and has a hard time putting things in the right order. I guarantee that you could not teach him something as abstract as pointers no matter how good your pedagogy is.
I think it's meaningless to say that anyone can eventually learn X. Even if it's true, it's not really relevant.
Suppose you're a prospective CS student and you ask your trusted friend/advisor/teacher if they think you have what it takes. Which is a more useful answer?
1) "Anyone can do it with enough guided practice"
2) "Yes, but based on your math grades you'll probably spend several times as much time studying as your peers"
That depends a very great deal on what goal you're trying to advance with a useful answer. The former works towards encouraging the student to keep trying. The latter might help guide the student towards a different area where they might excel with lower time costs. Different people may have different opinions on what constitutes "useful" in such a scenario.
Some people get pointers immediately after one exposure before puberty. Not every student needs to practice. Some people, who maybe never came to your university at all, will never get linear algebra matter how much they practice. To say the distribution is unimodal is one claim. It's another matter to claim the distribution is narrow.
To be sure, if you persist long enough, you’ll manage to teach more people these things, but I’m quite willing to assert that there are some people (I won’t say anything about percentages) that will simply never be able to grok some of these concepts under any circumstances short of substantial neural adjustment. (Even if I ignore the easy target of mentally disabled persons which I would easily win your $20 with.)
Just like I will never be a marathon runner and never had the slightest chance of doing so, however hard I tried, because of biology.
Absolutely - I'm sure that a bit of innate talent can improve one's rate of learning, but 90% of the willing can do it. The best programmers that I've met just loved the art and science of computing, had respect for their craft and very high standards of quality, were undaunted or even motivated by new challenges, but most importantly, put in the necessary time.
I doubt things have changed much since I went to college in the 90s, but back then, the ones that did well at CS either had been hacking computers since the Apple II or spending enormous amounts of time at the lab (or both). Also, when at the Microsoft campus in the 90s, it was not a coincidence that the most expensive cars were the ones that were in the parking garage the latest.
> The best programmers that I've met just loved the art and science of computing, had respect for their craft and very high standards of quality, were undaunted or even motivated by new challenges, but most importantly, put in the necessary time.
This description doesn't conjure the image of a person unable to understand pointers.
Perhaps you're putting the cart before the horse. Did you play with computers a lot as a kid? Did it come naturally? For myself, I can answer "yes" to both. I suspect it's common for aptitude to come before motivation.
I firmly believe that every single person can learn any single concept in the world, given sufficient instructional time, resources, and contact.
However... this should not be confused with a belief that every single person can learn any concept in an economically scalable manner and useful period of time. In a world of limited resources, this can be a very important distinction.
That's if you find the $20 worth more than using the opportunity to examine the hypothesis that there is some special ability to understand pointers, something that may be missing even among otherwise fairly intelligent people. What he's giving you is a tool to test a hypothesis you find so valuable you read far enough down a page discussing it till you found a comment you wanted to reply to.
So, is the $20 worth it? Or would you rather be closer to the truth on the hypothesis?
I have this assumption about almost all organized learning at this time. I think that's also why things like IQ/g/etc. look so important - they make the learning "in spite of" more tractable, because you have enough of a buffer to deal with even really bad information at a very fast pace, and because high IQ students will make one's education methods look good even if they're terrible.
The problem with higher education is that we are still forcing people into those programs. If you want to make a good salary you take CS. Whether you have any interest or passion in that area is not relevant. Whatever your level of mathematical maturity is not relevant. You are of the right age and you want a successful career that's where you go. It's no wonder that teaching all those people CS is going to be difficult. It's still the same faulty approach to education. Everything can be taught and everyone can be taught and if it doesn't work we just need to find a better way of force feeding them.
Compounding that even further is that teaching is difficult under the best of circumstances. In higher education it's often researchers who are asked to teach (or students) and while they may be brilliant on an intellectual level it doesn't necessarily make them good teachers.
EDIT: And a thought on the bi-modality ... I would expect to be able to see this sort of modality at the output of a CS program. I would expect modality amongst students who graduated with the same grades. I would be really surprised if students graduating with the same grades perform similarly in software development tasks. Not clear to me what a CS grade means and how they relate to any natural abilities to e.g. write computer programs.
There is no similar equivalent for learning how to program. No one is going to prevent a student from graduating college until they figure out how to read and write a computer program, and you sure as hell can't prevent them from going out to play.
It's fairly logical, actually very logical, inasmuch as it is to think that the human mind can process things in some discrete amount, and then move that data to the hindbrain and ready the visuo-spatial cortex for more.
Repetition is key for this to happen, yet we don't really reiterate a lot (well, in my humble experience) of the things we learn as CS students, other than the bajillion attempts to code properly on our own. We do things maybe twice, three times, then we take some notes or move on to a different part of the subject. The brain needs a 'lot' of repetition to have something down like we do things that require muscle memory.
So, how to make something that would, on its face, appear tedious into a feature set?
Well, again, from my humble teaching experience, and to extend the muscle memory analogy: muscle confusion!
Mix up the media used to teach, and be creative about it. Don't just copy paste a slideshow from a dataset that some UW prof has put together, and then add a video from a YouTube tut, and call that a multimedia presentation (no offense, I know teaching is fucking hard, I'm being ideal here). Instead, MAKE UP a cool little ditty about what constitutes a class declaration (punny, no?) and then couple that with a dance that entails the two dancers to be logical constructs like XOR and NOT and have a little memory register ho-down...lol.
Ok, well like I said, muscle confusion, but with the various lobes of e mind being entertained and enervated, booooi (said to the voice of Flava-Flav).
IF in doubt, simply go piece by piece, building larger chunks of data for he students to learn and reiterate over each new chunk aggregating the last until the entire set of concepts is learned well enough to be determined comprehensive.
https://en.wikipedia.org/wiki/Phoenician_alphabet#Spread_of_...
Deleted Comment
Very interesting reading at https://en.wikipedia.org/wiki/Phonics#History_and_controvers... that phonics goes all the way back to the 1830's. I just remember the Hooked on Phonics commercials (if you're too young to remember those, see Youtube).
Education is a bit like journalism. You find in journalism that whenever a story comes out in a subject you are intimately familiar with it's riddled with errors, inaccuracies, half-truths, and sometimes worse. Which makes you wonder about the rest (it's the same). In education you find that once you acquire a sound and thorough understanding of a topic you look at the way it's taught and see a lot of busy work, almost no concentration on the fundamentals, and a constant pattern of "keeping pace" even as most of the class gets left behind and typically only retains enough knowledge to pass the tests by sheer force of will (memorization, test taking techniques, and trial and error).
For me the best STEM classes in college were always the ones where you had to apply your knowledge, but those classes were too rare and not as well attended as the mandatory classes.
Unfortunately, a lot of institutional education in STEM fields suffers from several fundamental difficulties. For one there's is the common perspective that "it's supposed to be hard", and so curricula are tuned to weed out those who can't tough it through. For another, there's a tremendous focus on rote memorization, busy work, and trivia versus practical, applied, core knowledge. Real life is not like an episode of Jeopardy, the vast majority of the time you are better off with having a sound understanding of the fundamentals and the ability to look up or pick up any specifics or trivia as needed. This is true whether we're talking about CS, math, chemistry, physics, or what-have-you. Yet consistently the system is setup to reward the folks who are able and willing to suffer through most of that useless memorization and busywork and punish those who can't or won't.
This is why you see so many adults who routinely say "ugh, I haaaated math in school" or science, or english, or essay writing, or computer science, etc. Those subjects are vibrant, fascinating, exciting, rich, and interesting areas of study. Studying math and computer science can be playful, fun, and inventive. But when crushed under mountains of drudgery all of that is lost and the result is that people end up cut off from learning those things and they lose their enthusiasm for studying.
> For example, Padavic et al. [20] found that the "work-family" narrative in business is an example of a social defense: people will say that women leave the workplace because of "family", despite the large amount of evidence that women leave their jobs because of inadequate pay or opportunities for advancement [20], particularly when they see male co-workers promoted ahead of them. The "work-family" narrative is a more palatable explanation rather than to confront sexual discrimination in the workplace, and so the narrative continues. > > [20] I. Padavic and R. J. Ely. The work-family narrative as a social defense, 2013.
I tried to track down the work by Padavic et al. that Patitsas et al. are citing, and found this:
http://www.hbs.edu/faculty/conferences/2013-w50-research-sym...
However, this article by Padavic et al. is actually saying something different from the way that Patitsas et al. summarized it. Padavic et al. appear to actually be arguing that the work-family narrative is a social defense against the uncomfortable truth of excessively long working hours for both genders at the corporation, not against any uncomfortable truth about sexual discrimination. Also, Padavic et al. don't seem to discuss sexual discrimination in wages or promotions at all.
Did Patitsas et al. make an error in citing their sources? Am I missing something?
An error if you are very generous. It appears to be deliberately lying about what the source says to match it to the pre-selected explanation they are pushing.
My understanding of the bimodal situation, if it exists, is that it primarily applies to earlier classes---later classes only include those who did well, or at least passed, the previous classes.
Ah, yes...
"Of the 45 classes which were multimodal, 16 were 100- level classes (35%), 5 were 200-level (11%), 12 were 300-level (27%), and 12 were 400-level (27%). For comparison, in the full set of 778 classes, 171 were 100-level (22%), 165 were 200-level (21%), 243 were 300-level (31%), and 199 were 400-level (26%)."
How about we take a closer look at those 100 level classes, hmmm?
There's a survivor-ship bias in later courses. The extent of that bias can only be determined by looking at attrition rates. But it's far easier to predict and measure the major threats to validity for data in later courses.
So, if I were interested in the question "Are some people just naturally better at CS than others", I would either focus on later courses and try to determine the extent of survivor bias, or else I would look holistically at the entire curriculum. But I definitely wouldn't give a lot of weight to 100-level courses.
I saw this a lot at GT. There, many students had to take the introductory programming course at the time (all engineering and sciences? circa 2000 if someone wants to help me remember). There was a great disparity between those of us who programmed in HS (or earlier) and those who didn't.
What isn't clear is whether the poor grades were due to a lack of aptitude for the material, or a lack of skill on the faculty's part in presenting and educating, or a lack of interest or focus from those particular students (given it was their first and last CS course and they had to deal with the rest of the hell that was GT's first year).
Ok? This is claiming bimodality doesn't exist, not trying to explain it.
The issue seems to be a failure to understand statistical analysis. The possible results are probably Yes or inconclusive.
PS: You can also hide bi-modal distributions by averaging several offset distributions together. IF class A average is 70 with 2 peaks at 60 and 90 and class B average is 80 with two peaks at 70 and 90. You get four weak peaks at 60, 70, 80, and 90. Now repeat for a range of averages and it's going to look like a bell curve.
I would expect ability driven bimodality to show up in courses that present new types of challenges that were not in previous courses. That is where you'll get students who either do or don't master key concepts, and where they go from there depends on their mastery of those concepts.
For computer science, one of those key concepts is reasoning about state manipulated through a layer of indirection. The infamous "getting" pointers issue.
In the case of real analysis, it is an issue of switching from "Can you apply known operations to produce the right answer?" to "Do you understand the structure of the reals well enough to prove it?".
I think the 100 level is the place where such a bimodality is most likely to exist and investigation ought to be focused there.
* some people studied both Topic 1 and Topic 2
* some people studied Topic 1 more than Topic 2
* some people studied Topic 2 more than Topic 1
This would cause bimodality even when inherent "genetic" skill is the same.
200-level: 5/165 = 3.0%
300-level: 12/243 = 5.0%
400-level: 12/199 = 6.0%
The evidence supports the claim that 100-level classes are relatively more likely to have bimodal grade distributions than upper-division courses, but does not support the claim that they are likely to have bimodal grade distributions (and we would want to compare csci to other 100-level classes if we thought there was something particularly problematic about entry-level csci education). By all means let's get more data, but entry level csci courses do not in general have bimodal grade distributions according to the data.
Having TA'd low-level csci courses, I would conjecture that entry-level courses in general are taught by less talented teachers, tend to be graded more sloppily due to sheer work-load, also have a high percentage of people who are absolutely whacked out of their minds than upper division courses.
Also, it's commendable that they point out that they expect 5% false positives, but frustrating that they don't go further and explicitly plan for a multiple testing correction procedure. It seems that they don't need it to fail to reject the null "meta-hypothesis", but still.
So if this is post-curve data, I would expect it to be basically worthless as a reflection of skill distribution.
There was a listed one in the syllabus, but then the exams were so difficult that nobody was scoring above 80-85 out of 100, so there had to be an additional full grade curve after that.
So yeah, post-curve isn't helpful. Unless there's some way to normalize the data.
If you make an exam that is difficult enough to need curving, you're getting a poor measure of ability. This is because exams ask only a few questions, and unreasonably difficult exams result in low scores even from high achieving students. Low scores are very susceptible to noise (the delta between 50% and 60% is greater than between 85% and 95%).
If that doesn't convince you, take my argument to the obvious extreme. The Putnam Competition in mathematics is tough. Sometimes over half of the people score 0. Getting 1 question correct (out of 12) at times puts you in the top 20%.
Imagine I gave this as an exam to a math class of 20 students. One person scores a 1. The rest score 0. Is it meaningful to curve this? I could correct by giving partial credit: Some people get 0.25, others 0.5, and others 0.75, so we now have 5 different grades. Should I just give A, B, C, D and F?
The lower the scores, the higher the effect of noise. It's a bad idea.
- Raw average, then set letter cutoffs for a normal distribution across students. Arbitrary on distribution, normal on letter.
- "Skew high" by counting missed points more weakly as you miss more. Inflated letters with a score-accurate relative distribution.
- "Fixed and curved", where each cutoff is based on the more (or less!) generous of standard deviations and 'conventional' grade brackets: the floor for A is either 92%+ or +2 SD from mean, B is 83%+ or +1 SD, etc. Bizarre and distorted everything, since the relevant cap is determined by the local distribution.
- God knows what else.
So honestly, I think post-curve data is a hopelessly course-specific, nonlinear mess.
These can also be applied to classes as a whole or individual assignments and tests
I didn't read the whole article, but I'm not sure I agree with the conclusion. Even with a standard gaussian distribution, one may still believe that some students have it and some don't. Let say there is consistently 25% of students that are unable to pass their exams (for various reasons: lack of interest, motivation, intelligence, discipline...), why would a "social defense" be needed?
While I agree that we always should try to improve our pedagogical tools, I don't believe that anyone can learn anything provided they have a good teacher.
They fix some data that as a matter of mathematical fact is/is not bimodal, and then ask people who do/don't believe in the "geek gene" hypotehsis to interpret the data.
Conclusion of the section: "We found a statistically significant relationship between seeing-bimodality and participants’ responses to the questions relating to the Geek Gene hypothesis"
So the "social defense mechanism" theory is definitely debatable, but apparently people who believe in the "Geek Gene hypothesis" are more likely to see bimodality where there is none.
> I don't believe that anyone can learn anything provided they have a good teacher.
The point isn't that everyone can learn anything. The point is just that the distribution isn't as bimodal as people seem to think it is. Also worth noting that the researchers posit normal distrbutions, not uniform distributions, as the alternative to bimodality.
People with a high prior for a thing assume that new data is most likely to conform to that prior. If you handed me a questionably-bimodal data set, my judgement of its distribution would absolutely depend on what you told me the data represented. Hopefully I'd answer right if I sat down and analyzed the thing in depth, but if you simply go "what kind of distribution does this look like?" then I'm going to include my outside expectations.
Yeah, there's a risk of bias here, largely from people not conserving expectations (if you already assume Geek Gene is true, unfavorable data should count more than favorable data). But saying "people used experience to interpret new data!" doesn't seem like it's proving much.
A = Belief that some students "have" it
B = View the distribution as bimodal
Even with a standard gaussian distribution, one may still believe that some students have it and some don't.
This is exactly what is happening. Many of the distributions are Gaussian, yet they are seeing it as bimodal.
Consider teaching N skills. Success is binary, uncorrelated and everyone randomly succeeds some high percentage P on each skill. Scoring is the number of binary successes. You'll get a Gaussian distribution. That's most of education.
Now suppose scoring is 1 if all N skills are learned. You'll get a bimodal distribution. That's programming tested on whether the program runs.
1: http://patitsas.blogspot.ca/2016/01/cs-grades-probably-more-...
Take Joel Spolsky, a person whose ideas I read and respect: http://www.joelonsoftware.com/articles/GuerrillaInterviewing...
> For some reason most people seem to be born without the part of the brain that understands pointers. Pointers require a complex form of doubly-indirected thinking that some people just can’t do
Really? Here's my 20 dollar challenge: give me a person and I can teach them pointers. Pointers, referencing and dereferencing, null pointers, pointers to pointers, the whole deal.
The problem is the pedagogy. Learning a new abstraction and a new way of thinking takes time. It's easy to get it but really not /get/ it. You have to do a lot of examples. One on one with a person, with real time feedback. Until they internalize it. Many many many simple examples at first, and then examples of using it in a real world context. Then more. If you already know this abstraction, consciously or unconsciously, it's impossible to un-know it, and the reaction when someone is struggling is "I explained it as simply as I can and I don't know why they still don't get it". It's not like that. It's like basketball: you can explain how to shoot, but really the student needs to do it, and you comment while they're doing it.
I think this is an important point.
After working with concepts in enough domains you start to see they are all made up of the same kinds of things; when it seems like they aren't, you're likely missing some implicitly used concepts that you don't even know you're missing which makes learning this new thing seem fundamentally more difficult than other things.
The way I think about why this would be (or would not be) is: are all concepts reducible to some small set of basic entities—i.e. are they all built up from some shared concept 'atoms'?
Now, I don't have a way of giving a definite answer to that, just my experience asking this question over and over again while picking up new concepts, and my experience so far puts me in favor of these 'atoms.' For instance, are there any concepts that can't be broken down into sets of 'types' and 'relations' between the types? (or something along those lines)
Could there be more significant barriers to people learning new concepts than limits to their intelligence? I've taught programming to a lot of people, and it's easy to see where they get caught up: they're doing fine, making progress, happy, excited, a little nervous; they make minor mistakes but quickly see their errors and it doesn't worry them too much. Then, they run into some difficulty that puts the question in their mind of whether they can really do this or not and you can observe their agitation increase. Typically they want to go do something else pretty soon after. If they are especially persistent they will face this scary situation and go back into it the next day—but more often they'll feel guilty about not going back to it for a long period, maybe do it once or twice after without much enjoyment or progress, and ultimately, quietly drop it.
What I have never seen is someone run into a wall with some concept, persistently revisit it and work earnestly to understand, and yet still fail. That's what they fear will happen (maybe an evolved feature to prevent spending too much time on theories that are going to dead-end?), but it doesn't.
But when you run a youth pedagogical program of any sort, you can see that the consequences of speed or intelligence aren't things you simply overcome with a great teacher and applied effort. You can see that the consequences of both fast and slow accumulates for years.
The consequence of slow is that by the time you are 18 or whatever, you have learned fewer things. Sometimes the consequence of slow is that you simply don't even do X because of a rational consideration of opportunity cost.
In the race of money and life, almost all tortoises and hares in our society feel the bite of debt and financial worry. It is meh strategy for the tortoise to hope that hares are lazy and arrogant. It is meh strategy to hope that the tortoise would receive high quality education where the hare would not.
This sounds like the assumption that lack of predisposition to one field is correlated with skill in other fields (eg, "X is not a math person so he's likely to have some talent in lit or the arts). I thought I recalled reading that what evidence there is doesn't support this: and that in fact those who have a knack for, eg, math are more likely to be good at other fields too. (This of course isn't talking about time spent practicing each field, which is rivalrous, but we're talking about "inherent advantages" here).
Suppose you're a prospective CS student and you ask your trusted friend/advisor/teacher if they think you have what it takes. Which is a more useful answer?
Just like I will never be a marathon runner and never had the slightest chance of doing so, however hard I tried, because of biology.
I doubt things have changed much since I went to college in the 90s, but back then, the ones that did well at CS either had been hacking computers since the Apple II or spending enormous amounts of time at the lab (or both). Also, when at the Microsoft campus in the 90s, it was not a coincidence that the most expensive cars were the ones that were in the parking garage the latest.
This description doesn't conjure the image of a person unable to understand pointers.
However... this should not be confused with a belief that every single person can learn any concept in an economically scalable manner and useful period of time. In a world of limited resources, this can be a very important distinction.
1. Yes I know I just made an absolute claim about humans :)
So, is the $20 worth it? Or would you rather be closer to the truth on the hypothesis?