?

Log in

No account? Create an account
swapcontext(&bloomington, &ithaca); - Lindsey Kuper [entries|archive|friends|userinfo]
Lindsey Kuper

[ website | composition.al ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

swapcontext(&bloomington, &ithaca); [Jun. 13th, 2010|12:32 am]
Lindsey Kuper
[Tags|, ]

Three weeks ago, I did a potentially insane thing. I moved to an apartment I'd rented sight unseen in a town where I'd never been and where the closest person I knew was a four-hour drive away. Then I immediately started a demanding new job, and at the same time began taking an accelerated, semester's-worth-of-material-packed-into-six-weeks course that I didn't feel particularly prepared to take. Alex oniugnip feared for my sanity, and I did, too. I'm tough, but I'm not indestructible, and this particular combination of actions had every right to lead to disaster.

It hasn't. In fact, it's been great. It's been kicking my ass, but in a good way; I can't believe how much I'm learning. Yesterday I turned in the second assignment for the course, which was to implement a user-level cooperative thread library using the POSIX context functions. I'm not going to say my implementation is particularly good, but it seems to work! And I made it myself!

Before this, the last time I took an OS course or wrote C was eight years ago as a terrified and clueless undergrad. Back then, I didn't ask questions much, because I was afraid of being found out as an impostor who didn't know anything. For some reason, it didn't occur to me that it was fine to not know anything because, after all, I was there to learn, not to prove my knowledge. So I didn't ask questions and, as one might expect, didn't really learn a goddamn thing. I barely knew what my own code did.

Alex and I often talk about how if only we could go back and do our undergrad degrees again, we would totally destroy them. That was a large part of my motivation in wanting to take an undergrad OS course this summer and paying no small amount for it out of pocket. I wanted to see if that was really true. Well, I wouldn't say I'm wreaking total destruction! on CS 4410, but I'm more than keeping up. If I don't understand something, I actively address my lack of understanding by asking a buttload of questions, and I never, ever, ever, ever, ever write a line of code I don't understand. I can't believe I ever thought that was acceptable.

LinkReply

Comments:
[User Picture]From: lyceum_arabica
2010-06-13 06:04 am (UTC)
I've always been one of those people who will go down with the ship as required... I hated turning in work I wasn't proud of, and I never wrote code I didn't understand, but I was perfectly happy to just... not turn things in. I suspect your undergrad GPA is a bit higher than mine :-)

The asking questions part is definitely helpful if you're going to go with the former approach. :-) I was generally too proud to ask the prof/teaching staff unless I had an interesting question... but I'd bug my more knowledgeable friends, within reason. Then the wall you run into is the CS geek who is incapable of explaining technical terms without using other technical terms.
(Reply) (Thread)
[User Picture]From: lindseykuper
2010-06-13 08:13 am (UTC)
Yeah, in undergrad I was afraid I'd be looked down on for asking -- I guess that's what it means to be too proud to ask. Doing some teaching myself has helped with that; I end up thinking highly of the ones who ask detailed questions. It's okay if they ask questions all the time as long as they show that they're putting some thought into it.

I just went to check what my undergrad GPA was by department and was surprised to see that I had around a 3.6 in CS courses. Huh, it felt like it was lower than that...oh, yes, right, that would have been because of my 2.7 in math courses.
(Reply) (Parent) (Thread)
[User Picture]From: lyceum_arabica
2010-06-14 12:14 am (UTC)
I came out at a 3.3 :-) And the high grades were almost all humanities.

It is interesting being on both sides of the classroom. Bad students make good teachers, I think :-) I've had good luck getting my students to avoid the problems I had... getting them to keep turning in their work and keep up with the class. I bet you're very good at making the students who come in with questions feel comfortable

(Reply) (Thread)
[User Picture]From: lyceum_arabica
2010-06-14 12:22 am (UTC)
Although... ever notice that bad students, of the right type, make good researchers too? The skills I picked up trying to teach myself everything from the book (often, like, the week before the final) have turned out to be incredibly useful for learning background material for research. I bet some of the persistence and dedication that's necessary to contribute to new research in PL got honed while you were wrestling with undergrad projects. (smiles) voluntarily not looking for help does have the advantage of prepping you for when there's no help to be had....

of course, it has the disadvantage of leaving you without a solid grounding in some practical tools. which is why I'm *still*, damnit, trying to get the hang of probability and linear algebra....


(Reply) (Parent) (Thread)
[User Picture]From: lindseykuper
2010-06-14 01:52 am (UTC)
I think I agree with the bad-students-make-good-researchers idea, but in a different way than you're describing. A student who runs out of time to do the second half of the test because they got distracted coming up with a brilliant, nuanced answer to a question on the first half -- that could be a good researcher. But I think that being unwilling to ask questions is a good way to fail at research. To do research, you have to be willing to be wrong, to make a fool of yourself. And I really think there are very few situations where there's no human help to be had. It's often helpful just to talk to someone about the problem, even if all they can do is scratch their head and say "huh" with you.

A few times, someone has come into my office and asked me about some topic I don't really know anything about, and I just try to ask questions as best I can in response to their questions, until eventually they think of something and they say "Ah! Thanks!" and scurry off to do more work.
(Reply) (Parent) (Thread)
[User Picture]From: lyceum_arabica
2010-06-14 04:58 am (UTC)
fair enough :-) I agree it's *never* good to be scared of talking about your work, or worried what people will think (especially since likely: a) they're lost too, or b) they will be as soon as they hear your question and realize they'd never thought of that, or c) they know the answer, but only because someone had already told *them*). People who can be helpful are often the people who've been helped themselves in the past, and who are happy to help others.... er, so it's good to let them help. And when there is help available, making use of it can save an awful lot of pointless frustration.

My point was closer to "screwing things up when you're young has the incidental side-effect of building character". :-)

I had a bad tendency to skip class when I got bored, get behind, and then find it necessary to teach myself from the book the entirety of the class on the weekend before the exam (at which point, it's rather bad form to bug the TA... if there even is one). But now, when I find a term in a paper that I don't know, and I discover that it's just the tip of a whole field I'm not familiar with but need to be in order to proceed... it's a comfortable situation for me, one I've gotten through before. I just hunt down a tutorial, or the applicable wikipedia articles and start working. I can get through morasses of poorly written, unfamiliar material surprisingly quickly.

And I imagine, on a similar basis, you're less alarmed than me when you have to wrap your head around complex programming environments. You've had experience programming around things that didn't make immediate sense before, so just the fact of being in that situation isn't debilitatingly scary. You can get in and hack at things until you're able to understand everything... while if I have to work with a piece of a language/system that isn't clearly defined, I tend to flee in terror and abject frustration. Note that you have a summer internship, and I haven't written a program in nearly two years.

So... in undergrad, I really should have slacked off less, and I gather you would've had an easier time if you'd felt more comfortable asking questions... but screwing things up is its own experience, and it can be useful too.

I've had conversations with people at the schools you go to when you *don't* screw anything up (Purdue & UIUC) where people seem weirdly impressed by this type of self-reliance/independence/durability (which isn't uncommon around IU). I think the ability to feel comfortable just getting your hands dirty and untangling things when you've got no idea what you're doing must be an 'imperfect but persistent' student trait. The kids that were sensible, diligent students, followed all the rules and aced all their classes in undergrad are actually caught off guard when there's not a well-built structure to support them. But those of us who did admittedly stupid things, but still kept going, tend to keep our feet better when we have to work without a structure.

I've actually had a conversation where a Purdue faculty member explained this phenomenon to me in detail, so I'm reasonably sure I'm not *just* rationalizing my spotty past. :-)
(Reply) (Parent) (Thread)
[User Picture]From: lindseykuper
2010-06-15 04:37 am (UTC)
My point was closer to "screwing things up when you're young has the incidental side-effect of building character". :-)

Ah! Yeah, no doubt. But I'd suggest that it's not necessarily that we're screw-ups -- sometimes it might just be that we're the first in our families to be computer geeks, or the first in our families to be academics, or both of those things, and so we're used to stumbling through and figuring it all out for ourselves as we go along, unlike folks who have a parent or two who do this and brought them up in a culture of it.

I have to chuckle just a little, though, at the suggestion that I "can get in and hack at things until [I'm] able to understand everything". Man, I wish! That almost never happens. Understanding other people's code is hard. At my job, today (the beginning of my fourth week there) was the first day that I actually got through review and committed some code that was part of a larger system. I had been committing some things before, but until today, everything I'd committed had basically been code that wouldn't affect anyone else. I absolutely don't understand everything about the larger system that my stuff is a part of, and one of the most difficult things is figuring out which parts it's important to understand and which parts I can just not worry about.

I wonder if at IU, we sometimes have Ph.D. students who are more self-reliant and flexible than students at other schools because they're back at grad school after having spent some time working. They may not have any research experience when they come in (raises hand), and perhaps they don't know how the research process works (raises hand again), but maybe at some point they read To Mock a Mockingbird or The Little Schemer or Gödel, Escher, Bach and thought, "Dang, this stuff is way more fun than my job. I'm going to go hang out with the people who do the fun stuff." That path to grad school is very different from that of the people who are at prestigious schools because they've been planning things that way their entire lives.
(Reply) (Parent) (Thread)
[User Picture]From: jes5199
2010-06-17 05:42 am (UTC)
good
(Reply) (Thread)