1,186 karma · joined May 27, 2009
To me, that's one thing I enjoy about teaching- a lot of the time, you're having to try and figure out how a student is perceiving the subject or lecture. In essence, you're constantly reverse-engineering your students' perceptions of what you're telling them.
As somebody who's been programming for most of my life, it was really hard for me to learn to think about this stuff from the perspective of somebody who'd never seen it before. Many thought patterns and cognitive skills that are second nature to us programmers are, for a lot of people, very difficult to learn.
1. Learning to think algorithmically; 2. Abstraction.
What do I mean by these? By "thinking algorithmically," I really mean "taking a large problem and breaking it up into an ordered series of steps or sub-problems." This is surprisingly hard for a lot of people, in part because the correct "size" of steps or sub-problem can change from problem to problem and from language to language. This can absolutely be taught, though. Some students have an easier time of this than others, but eventually (in my experience) they all get there in the end, and develop an intuitive sense of how to do it... at which point 99% of people immediately "forget" what it was like to not be able to do it, and become incapable of recognizing and dealing with students who haven't gotten there yet. :-) Most programmers (myself included, at least until my dozenth or so student, at which point I figured out what was going on) fall into this category: thinking in this manner is so deeply imprinted into our cognitive processes that we typically have a very difficult time visualizing what it's like to not be there. We're sort of like fish and water, if you know what I mean.
The second problem is much more difficult to address. Abstraction is one of those things that, I'm convinced, some (most) people can "get" and others simply can't. For example, I've had students who seemed to understand arrays perfectly, including the idea of using an integer subscript to refer to the value at an array index such that if you showed them the following code:
<pre>
myList = ['monkeys', 'elephants', 'giraffes'] print myList[1]
</pre>
they'd easily tell you that it would print 'elephants' (yes, they can usually get their heads around zero-indexing without issues). If, however, you showed them this code:
<pre>
myList = ['monkeys', 'elephants', 'giraffes'] idx = 1 print myList[idx]
</pre>
a lot of them would be more than a little bit lost. Even worse would be if you showed them this code:
<pre>
for i in [0, 1, 2] print myList[i]
</pre>
They'd be really lost, then. Even if you walk through it line by line, with lots of extraneous print statements, there is a certain sub-type of (otherwise perfectly capable) student that just isn't gonna get it. I'm convinced that this problem--- lack of abstraction ability--- is also why so many students have problems with loops. Dealing with loop counter variables (and the things that you usually want to do with them--- array indexing, printing, doing math, etc.) is very hard if your brain isn't able to think in this abstract manner.
It's worse in Java than it is in Python, just 'cause there's so much more code involved (meaning that it's harder to pinpoint exactly where the confusion is coming from), but the problem totally persists even in sane teaching languages. I've talked to a lot of other CS educators who've noticed the same thing- no matter how you approach it, this level of abstraction is just beyond some students' reach. It gets worse once you try and teach them about object/class distinctions, and so on. It's not that they're stupid- my students are usually MDs working on their masters' degrees. It's just that some people's brains don't work that way. And it's not that they can't do other computer stuff- some of these students have gone on to become pretty good at SQL and even relational data modeling, which you'd think would use some of the same cognitive patterns, but apparently is different enough that it's doable.
I don't know if the problem would be better or worse teaching with a purely functional language; my gut says "worse," but I haven't tried it so I don't know, and the fact that many students with this problem go on to handle declarative languages pretty well gives me pause.
1. Split-window editing 2. Multithreaded searching, pasting, etc.- having the whole app hang while doing a "find in project" is a major drag, especially when it's due to, oh, say, having a bunch of files open from a slow network share. Which brings me to... 3. Better handling of files opened from remote volumes- another case where multiple threads would probably help. 4. Better handling of really long lines when word-wrap is turned off. There is obviously something O(n) going on at the line level (where n is the number of characters on the line), and it makes handling long runs of text rather painful at times.
So, there it is: my TextMate wish list. Modulo those four things, TextMate is currently pretty close to ideal, IMHO. I love its syntax highlighting grammar, its snippets, its macro capabilities, etc. etc. The Latex package is fabulous, and has singlehandedly done a lot to make my dissertation-writing process bearable.
Also, there's an important difference (to me, anyway) between 1) a descriptive statement about who does certain kinds of work in today's US, and 2) a prescriptive statement about who I think ought to be doing those kinds of work, and under what conditions they ought to be doing so.
Of course, it should be mentioned that much of that pre-WW2 government research was a) actually sponsored by the military, or by government entities that had strong military roots, and b) was of questionable ethical quality by today's standards.
Best wishes with getting the treatment you need, and for a speedy recovery afterwards (both medically and financially).
Furthermore, many insurance plans will cover a surgical procedure at one rate, but will cover ancillary costs (such as anesthesia, follow-up care, and medications) at a different (often lower) rate. This is all a long-winded way of saying that it is quite common for major medical procedures that are nominally "covered" by one's health insurance to end up costing the patient quite a bit of money when all is said and done. Look at the stats on medical bankruptcies in the US over the last few years- most of those people had insurance, and still ended up screwed.
Also, I'd like to point out that if Draper had been born a few years later (i.e., if he was younger than 65 years old) it seems quite likely that he might not have had any insurance at all. Many older people- especially people whose careers haven't been a stead string of stable corporate jobs, but have instead been independent contractors or otherwise self-employed- find themselves in the position of being 55 or 60 years old and suddenly unable to afford (or even be allowed to purchase) health insurance. Also, there are also quite a few people (especially these days) who are laid off from what had been formerly stable corporate jobs around that age, and find themselves uninsured for the first time in their lives just as their bodies are starting to break down. I know a number of people who celebrated their 65th birthday by going to the doctor for the first time in a few years.
Furthermore, that sort of slide sends a clear message to the audience about who the speaker thinks they're speaking to. In this case, it says that the speaker thinks that his audience is composed of heterosexual males[1], which <sarcasm>I'm sure feels just great to any women who might also be in the audience.</sarcasm>
[1]: I'm going to go out on a limb and assume that the author of those conference slides did not include them in an attempt to appeal to the audience's lesbian members. I am, of course, willing to be corrected on this point.
The the stated differences (in terms of mean donation as well as conversion rate) between banners and landing pages strike me as pretty small (e.g., $26.92 vs. $27.07)- confidence intervals would be helpful here, as I suspect that the differences aren't significant.
Also, is mean really the right metric to be reporting? I suspect that these data aren't normally distributed, or, at the very least, have some outliers on either side of the spectrum (some people who donated hardly anything, plus a few "high rollers"), so it seems to me that the median would be a more informative statistic.
If your stats needs are relatively simple- linear models, glms, logit models, anovas, simple tests of hypotheses, etc.- MMA is more than adequate. The new version looks like it adds some non-parametric stats functions, as well as paired t-tests, both of which would be quite useful to me.
Also, the visualization tool in MMA are fabulous, and don't make me want to tear my beard out every time I have to go off the beaten path (as opposed to those found in certain other one-letter-long stats environments I could name). 'Nuff said. Another thing I really appreciate about MMA is how consistent the syntax and functions are- once you've figured out one function, the odds are good that your knowledge will be useful on the next function you try and figure out. This, again, stands in stark contrast to other packages (R, SAS, I'm looking at you guys).
I have found myself turning to R for certain specific things, though. Mixed-effects models, repeated-measure ANOVA, Fisher's Exact Test, etc. Really, the two work together well- it's easy to use MMA to get your data in exactly the right form for R, export it, and then do whatever you need from there.
One important thing to know about SPSS- that a lot of people don't- is that is really a programming language, for which the GUI is simply a code generator. I find that it's almost always easier for me to interact directly with the under-the-hood guts of SPSS than the GUI, although sometimes when setting up a new analysis for the first time I'll use the GUI to do most of the work and then tweak its results.
Even for stuff that a lot of other programs can do just fine, SAS often has an edge. For example, everybody and their brother can do a logistic regression model... but SAS can give you confidence intervals for all kinds of crazy parts of the model that SPSS won't even bother calculating and that R will only give you point estimates for.
The other great thing about SAS is that a lot of the good statistics books from the last twenty or thirty years include SAS sample code- for example, I'm currently having to do some off-the-beaten-path ANOVA stuff, and the reference I'm using (Edwards' "Analysis of Variance for the Behavioral Sciences") uses SAS as its language of choice.
That said, I personally find the SAS "language" to be alternatively bewildering and nostalgia-inducing (the "cards" command, anybody?). SAS is the only language about which I can honestly say "it makes R's syntax look clean and predictable". Also, the Windows version of SAS is an absolute abomination from a UI standpoint. And, their licensing schemes are draconian, and installing the damn thing can easily take an entire day, especially if (say, for example) the installer gets confused because you've already got a JDK installed on your computer. Not that I'm bitter, or anything...
Of course, as others have noted, in bioinformatics, R either is already the default or is almost there. I know that in my department's bioinformatics courses, they use R, Python, and Perl almost exclusively, and only break out the SAS when there's something specific they need it to do.