I am also a junior at Rice University: CS/Linguistics double major. I've noticed what philf98 has said to be a fairly accurate picture. I've also noticed a lot of women go into sociology and psychology. The CS ratio inverts somewhat in my linguistics classes; in a class of 15, only 3 will be men. One reason why the female ratio is higher in the lower CS classes is that these classes are required for other engineering majors. Some of the more popular engineering majors for women are Chemical (CENG), Mechanical (MECH), and Electrical Engineering (ELEC).The upper level CS courses are obviously not required for Elecs or MechE's or Ceng's, since those majors require courses that delve into their specific field. I'm not really sure what it is about CS that doesn't appeal to women on a broad scale, but I've heard both men and women who took or tried to take the intro level CS course(s) that the material was too difficult and/or boring, at which point they switched majors (if they had intended on a computer science major). CS is a very time-consuming major, especially in the upper level courses, and a lot of people become disillusioned about CS when they realize a large portion of it is math and proofs rather than learning "applicable" skills, i.e., specific programming languages that will let them pull in six-figure salaries. There has been clamor for the creation of an IT major at our school. One of my friends is currently a CENG, but she would rather work in an IT position when she graduates, e.g., server sysadminning. She doesn't want to take all kinds of high-level CS Theory/Math courses, but she wants to learn some basic programming skills and then focus on server/router maintenance, etc. There are a lot of jobs in the IT market that don't require a complete degree in CS theory. However, because this isn't provided at some schools, or in the case of my CENG friend, who didn't discover her interest in IT work until too later, people look to other majors. The point of this? A lot of people are turned off by CS theory, and a lot of people initially start out as CS majors intending to make money in the "new emerging economy." Combined, these factors, among others that the article's author touches on, make for the extremely high attrition rate of the CS major. I've had people come up to me and say, "Why are you a COMP major?/study weird languages? You'll have no life/It's so boring/You'll never be happy/It has no practical value in the real world." The answer: because I enjoy it. At one point, I considered changing my major because of an extremely rough semester. In the end, I realized there no other major could pull my interest as much as COMP/LING, and so I stuck by my choice. If we want to increase the number of female COMP majors, we have to somehow make them feel the same way about what they're studying. And let them know not to take ELEC 326 and COMP 314 in the same semester.
I pass large structures by value (multiple times), I make the code jump around a lot (losing any points for locality), etc. etc. (think that's so unreasonable? You should have seen my comp-sci major friends! Their code had a complete disregard for the processor underneath)
Jumping around, depending on what the jumping is used for can be good, if you mean making code more modular. Abstraction is the name of the game; copying code just copies errors, and right now, too many people copy code. I'd say a lot of people (myself included) could benefit from a healthy smack over the head with some software engineering principles.
Design is critical in creating code. If you don't take the time to design your code with some sort of inherent architecture, whether OOP, functional, or imperative, all you're going to get is one big, ugly hack. Have you taken a look at slashcode? There is one gigantic module with one function aptly named the Beast with some other functions in various files to handle various jobs. I find it very difficult to read, and if it is any indication of the code that "coding for hours w/o software engineering" produces, I think I can safely rest my case.
At its core, programming, whether you like it or not, is about math. At the systems level, you have to consider the processor carefully. At the applications level, you shouldn't have to worry much about the processor - the systems level code should worry about that for you. What I'm trying to say is, no, you can't completely disregard the processor, but you should be able to disregard a lot of it if you are developing user applications.
In this new era of internet start-ups, the code that is produced may become crufty because of the incessant and unreasonable demands of management. However, you should take the time to realize that properly designed code will require less future maintenance and fewer headaches for you, the coder. Argue with your boss if you have to. A year of uptime is worth a week of delay.
I know you've said in a later post that this was tongue-in-cheek, but I thought I'd add my 2 cents here, anyway, since a lot of people vehemently feel that Java (among other languages, e.g., Scheme) is the worst thing to (dis)grace the programming scene.
The really nice thing about Java and its object-oriented system is that you can mathematically prove that your answer will be of a certain type (a.k.a object), assuming you've written proper code. There is no such guarantee in languages like C++ or C. By giving you the right to directly access memory (via pointers), you lose any chance of definitively predicting the output of your program.
In C, you're told upfront about this - Kernighan and Ritchie explicitly state in the C reference that "types" merely encode the amount of memory you need to allocate for a specific piece of data.
In C++, you are promised real types, but C++ is a superset of C, and you still get all of the direct memory access and other low-level functions that ruin a real typing system. In C++, everything is bits when you get right down to it - even memory addresses.
Let's say you write some code that makes a list of some sort where each node refers to the next node on the list as a node. You finish the code and hand it off. Now some other programmer is called to extend your code. This programmer finds that (s)he can speed up an insertNode(...) function by bypassing your setNext(), etc. functions and directly rewriting the "next" field with some numerical memory address that the new code calculates. By doing this monkeying around, you sacrifice
(a) readability - the next coder to extend the program is going to have a tough time trying to figure out what "blah.next = 0xfff + calcAddr()" means.
(b) predictability - by not working with the list as a whole, i.e., as a list, you can no longer make assumptions about its "listness" and how that affects the outcome of the program.
(c) maintainability - this really is pretty much the same as (a), but it extends a little further. Once you start down the dark path, the code you write to fix the hacks become a hack itself, until you have extremely bloated software.
To reiterate: 1) No pointers - This is good. People abuse pointers. 2) #includes - this has been covered, but just copying the code into one big lump file is not all that great of an idea. 3) Strings are a class - I think deep down they aren't, but this relates to 4) Everything is treated like an object - great! now you can prove things about your program.
For reference, read Luca Cardelli's paper on type systems. It is extremely well-written and I think it is suitable for the layperson.
The paper is aptly titled "Type Systems" and more concretely nails down the points I am trying to make here.
Btw, if you mean vasectomy, that is the process of removing a man's ability to produce sperm... I'm not sure how that fits into a description of a programming language, or I could be reading the word wrong.
Although the site has been slashdotted, it would be interesting to see what sort of algorithms it uses to perform the translations. Mmm, open source.
I would be inclined to say that if it is based on grammar rules, the project won't make much headway - machine translation has been butting its head against this brick wall for forty years. The problem with hard-and-fast grammar rules, e.g.,
S = NP VP NP = Det (Adj)* N VP = V (Adv)
is that they don't account for rapid linguistic change, and people have this nasty habit of twisting grammar to express themselves in new and creative ways.:) In addition to this, it's very difficult to write simple, lucid grammar rules that also count for the myriad exceptions found in language.
I imagine GPLTrans would probably be using some sort of probability frame of phrases and words occurring together, but one can't be sure without looking at the source. I think the best way to do translation software would be to convert the text into syntax, then into a more abstract semantic form, and from the semantic form, translate back into the target language's syntax, and then into the target language's text. Of course, the trick is to figure out just exactly how to do this.:) The parsing itself is a hefty (and not terribly exciting) task. I attempted to make a term project of a fairly basic English parser and ended up changing the project.
I have a sister (8) who I would not like to be seeing South Park. That being said, I think it's up to the parents to ensure that their kids have a sense of morals and that the child grows into a responsible adult. Blaming the media for violence is unjustified - the things that the 6 o'clock news and the tabloid TV magazines target - violent movies, music with dubious messages - are not causes but are sometimes symptoms of a larger problem, e.g., abuse, alienation. Young kids who face these problems and listen to industrial music or whatever do so because they identify with the message coming from the music, not the other way around. Watching a violent movie has never in and of itself led to a violent outburst in real life. People don't live in a vacuum.
I wonder if the media (news vendors) have ever stopped to think that maybe they contribute to the hysteria over school violence by covering the stories until the people immediately involved are tired of the privacy invasion and want to recover from the ordeal without the help of 20/20.
Generally, these seem to be the two threads in this discussion.
However, I think, whether it is or isn't for everybody, college should be a balance of theory and practice. For example, at my school, we have a class that teaches team programming/large projects, and is done in C++. I think it will be taught in Java in the coming semester. Normally, this wouldn't be of concern except that at my school we don't have another explicitly C++ course. It might be better to teach the class in Java so you don't have to deal with pesky memory management, but if you don't teach some real world skills, like that pesky memory management, you could find yourself up a creek. Luckily, I've already taken this class, but I hope that if it does move to Java that a C++ class is ready and waiting for the students who haven't taken it.
Earlier, I saw a thread about the uselessness of Motorola 68k ASM. I'm taking a class that deals heavily with SPARC ASM, something I probably won't use again outside of college. However, I dabbled in x86 assembly in high school, and I saw parallels and whatnot between the two - for me it was somewhat interesting, like the fact that x86 assembly doesn't have a branch delay slot, and SPARC does, and that SPARC does because of the way pipelining is implemented, ad nauseam. The point of this long-winded text is that college provides you with a real understanding of why stuff works the way it does and why people made decisions that later affected present implementations and architectures.
And then there's the whole social side of college, and the access to resources, and as someone said earlier, the chance to find a direction.
I've been in the real world a little bit. In high school, I programmed/web designed for minimum wage as part of an internship. In the end, I got bored with the work. I'm reaching a similar point as a tech assistant for my school's language lab. I think one of the most important reasons for college is the chance to find something you really want to do, and to be able to sift through jobs you don't want when looking for a job. I don't want to do web work for the rest of my life - that's what I got from the real world. But I do have a general idea of what I DO want to do - and that's what I'm in the process of getting from college.
By no means is college necessary to find any of these things - it depends on the person - but I would highly recommend the college experience if at all possible.
I meant a "group of people who own those cards", although it would be pretty cool if the cards up and called Nvidia asking them to support the cards under linux.
A group of Nvidia Riva 128 and TNT based cards are trying to get a groundswell of support for Riva 3D drivers under linux. Please mail os-info@nvidia.com with your wishes for Nvidia and linux, and bcc to either myself (bogart@rice.edu) or cmiller@surfsouth.com. You can also look at http://www.chad.org/dev/ and look at the link for riva-tnt to see some letters we have already sent, and the one response we got from Nvidia. Please send Nvidia mail, or they won't know that there is a large number of linux users who want to use the 3D capabilities of their Riva cards. Tell your friends, if you like.:)
Thanks, Mike Y.
Hmm, it seems that the server is not allowing access. I'll try to set up a page on my account with letters sent to nvidia, and if you want the address, send mail to bogart@rice.edu.
You and me both. I got a Riva 128 because I wanted to run 1024x768 at higher than 8 bit depth and the Riva was the only decent card within my price range. Then I found that there are no 3d drivers for linux, even though the 128 has an OpenGL ICD. I'd like to contact nvidia as well, but I think it would be more effective to find all the people who want Riva 3D drivers for linux (probably not too hard) and make a concerted effort at mailing nvidia.
I've gone to both of their concerts in Houston over the past two years and had a blast. They put on an excellent live show - I think somebody here put it best when they said that TMBG was a fun band. Their lyrics on most songs are far more intelligent than anything that a group like Matchbox 20 could ever put out. The lyrics that aren't "intelligent" oftentimes are tongue-in-cheek - I find it hard to pass negative judgement on Them because they are one of a few groups who don't insist on writing songs that are exact copies of each other (e.g., Gin Blossoms, Matchbox 20). I can understand many people's dislike of Them, but your post lacks any sort of intelligent criticism and gives me the image of someone foaming at the mouth.
Another Buggy (?) Release
on
Linux 2.2.1
·
· Score: 1
I don't know. I d/led 2.2.0. I had initial problems compiling and some other problems with a bad util-linux rpm (couldn't log in b/c of incompatible shared libraries) but once I returned to my old version of util linux, compiled the kernel with auto kernel module loading or whatever, I've had nothing but improved speed, etc., and no crashes yet. I upgraded from 2.0.34 and I am definitely pleased with the results. The only reason I'm going to get the.1 patch is so I don't have that pesky ldd core bug.:)
I have to say that this year was a bad year for TV in general. I never saw That 70's Show, so maybe I'm making a premature judgement, but the commercials I saw on Fox never induced me to watch it. I've seen a good part of one episode of Buffy, and I have to say I was was impressed with neither the acting nor the dialogue. The only excuse I could see for Buffy's popularity is to see Sarah Michelle Gellar in suggestive outfits.
I liked the X-Files, although I was not a regular fan until this past year. Aside from that, though, I can't think of a single TV show that I watched religiously because it was good.
On movies, I think "Lost in Space" was a good movie to heckle, simply because it was so terrible. The best movie I saw this year? I didn't get a chance to see "Private Ryan" or the "Truman Show" even though I wanted to. Pi was good despite mathematical inconsistencies - I haven't seen a sci-fi thriller/suspense that good since Sneakers. Actually, one of the best movies I saw was an old one on video - "Johnny Stecchino" with Roberto Benigni (the guy from "Life Is Beautiful", which I also want to see). I think "Private Ryan" would be my top choice, had I seen it, but I'll just have to wait till it comes out on video. Anyway, those are my two cents.
I am also a junior at Rice University: CS/Linguistics double major. I've noticed what philf98 has said to be a fairly accurate picture. I've also noticed a lot of women go into sociology and psychology. The CS ratio inverts somewhat in my linguistics classes; in a class of 15, only 3 will be men.
One reason why the female ratio is higher in the lower CS classes is that these classes are required for other engineering majors. Some of the more popular engineering majors for women are Chemical (CENG), Mechanical (MECH), and Electrical Engineering (ELEC).The upper level CS courses are obviously not required for Elecs or MechE's or Ceng's, since those majors require courses that delve into their specific field.
I'm not really sure what it is about CS that doesn't appeal to women on a broad scale, but I've heard both men and women who took or tried to take the intro level CS course(s) that the material was too difficult and/or boring, at which point they switched majors (if they had intended on a computer science major). CS is a very time-consuming major, especially in the upper level courses, and a lot of people become disillusioned about CS when they realize a large portion of it is math and proofs rather than learning "applicable" skills, i.e., specific programming languages that will let them pull in six-figure salaries.
There has been clamor for the creation of an IT major at our school. One of my friends is currently a CENG, but she would rather work in an IT position when she graduates, e.g., server sysadminning. She doesn't want to take all kinds of high-level CS Theory/Math courses, but she wants to learn some basic programming skills and then focus on server/router maintenance, etc. There are a lot of jobs in the IT market that don't require a complete degree in CS theory. However, because this isn't provided at some schools, or in the case of my CENG friend, who didn't discover her interest in IT work until too later, people look to other majors.
The point of this? A lot of people are turned off by CS theory, and a lot of people initially start out as CS majors intending to make money in the "new emerging economy." Combined, these factors, among others that the article's author touches on, make for the extremely high attrition rate of the CS major.
I've had people come up to me and say, "Why are you a COMP major?/study weird languages? You'll have no life/It's so boring/You'll never be happy/It has no practical value in the real world." The answer: because I enjoy it. At one point, I considered changing my major because of an extremely rough semester. In the end, I realized there no other major could pull my interest as much as COMP/LING, and so I stuck by my choice. If we want to increase the number of female COMP majors, we have to somehow make them feel the same way about what they're studying.
And let them know not to take ELEC 326 and COMP 314 in the same semester.
- Y
I pass large structures by value (multiple times), I make the code jump around a lot (losing any points for locality), etc. etc. (think that's so unreasonable? You should have seen my comp-sci major friends! Their code had a complete disregard for the processor underneath)
Jumping around, depending on what the jumping is used for can be good, if you mean making code more modular. Abstraction is the name of the game; copying code just copies errors, and right now, too many people copy code. I'd say a lot of people (myself included) could benefit from a healthy smack over the head with some software engineering principles.
Design is critical in creating code. If you don't take the time to design your code with some sort of inherent architecture, whether OOP, functional, or imperative, all you're going to get is one big, ugly hack. Have you taken a look at slashcode? There is one gigantic module with one function aptly named the Beast with some other functions in various files to handle various jobs. I find it very difficult to read, and if it is any indication of the code that "coding for hours w/o software engineering" produces, I think I can safely rest my case.
At its core, programming, whether you like it or not, is about math. At the systems level, you have to consider the processor carefully. At the applications level, you shouldn't have to worry much about the processor - the systems level code should worry about that for you. What I'm trying to say is, no, you can't completely disregard the processor, but you should be able to disregard a lot of it if you are developing user applications.
In this new era of internet start-ups, the code that is produced may become crufty because of the incessant and unreasonable demands of management. However, you should take the time to realize that properly designed code will require less future maintenance and fewer headaches for you, the coder. Argue with your boss if you have to. A year of uptime is worth a week of delay.
- Y
I know you've said in a later post that this was tongue-in-cheek, but I thought I'd add my 2 cents here, anyway, since a lot of people vehemently feel that Java (among other languages, e.g., Scheme) is the worst thing to (dis)grace the programming scene.
The really nice thing about Java and its object-oriented system is that you can mathematically prove that your answer will be of a certain type (a.k.a object), assuming you've written proper code. There is no such guarantee in languages like C++ or C. By giving you the right to directly access memory (via pointers), you lose any chance of definitively predicting the output of your program.
In C, you're told upfront about this - Kernighan and Ritchie explicitly state in the C reference that "types" merely encode the amount of memory you need to allocate for a specific piece of data.
In C++, you are promised real types, but C++ is a superset of C, and you still get all of the direct memory access and other low-level functions that ruin a real typing system. In C++, everything is bits when you get right down to it - even memory addresses.
Let's say you write some code that makes a list of some sort where each node refers to the next node on the list as a node. You finish the code and hand it off. Now some other programmer is called to extend your code. This programmer finds that (s)he can speed up an insertNode(...) function by bypassing your setNext(), etc. functions and directly rewriting the "next" field with some numerical memory address that the new code calculates. By doing this monkeying around, you sacrifice
(a) readability - the next coder to extend the program is going to have a tough time trying to figure out what "blah.next = 0xfff + calcAddr()" means.
(b) predictability - by not working with the list as a whole, i.e., as a list, you can no longer make assumptions about its "listness" and how that affects the outcome of the program.
(c) maintainability - this really is pretty much the same as (a), but it extends a little further. Once you start down the dark path, the code you write to fix the hacks become a hack itself, until you have extremely bloated software.
To reiterate:
1) No pointers - This is good. People abuse pointers.
2) #includes - this has been covered, but just copying the code into one big lump file is not all that great of an idea.
3) Strings are a class - I think deep down they aren't, but this relates to
4) Everything is treated like an object - great! now you can prove things about your program.
For reference, read Luca Cardelli's paper on type systems. It is extremely well-written and I think it is suitable for the layperson.
You can download a PS or PDF file from
http://www.luca.demon.co.uk/Bibliogra phy.html.
The paper is aptly titled "Type Systems" and more concretely nails down the points I am trying to make here.
Btw, if you mean vasectomy, that is the process of removing a man's ability to produce sperm... I'm not sure how that fits into a description of a programming language, or I could be reading the word wrong.
-Y
Although the site has been slashdotted, it would be interesting to see what sort of algorithms it uses to perform the translations. Mmm, open source.
:) In addition to this, it's very difficult to write simple, lucid grammar rules that also count for the myriad exceptions found in language.
:) The parsing itself is a hefty (and not terribly exciting) task. I attempted to make a term project of a fairly basic English parser and ended up changing the project.
I would be inclined to say that if it is based on grammar rules, the project won't make much headway - machine translation has been butting its head against this brick wall for forty years. The problem with hard-and-fast grammar rules, e.g.,
S = NP VP
NP = Det (Adj)* N
VP = V (Adv)
is that they don't account for rapid linguistic change, and people have this nasty habit of twisting grammar to express themselves in new and creative ways.
I imagine GPLTrans would probably be using some sort of probability frame of phrases and words occurring together, but one can't be sure without looking at the source. I think the best way to do translation software would be to convert the text into syntax, then into a more abstract semantic form, and from the semantic form, translate back into the target language's syntax, and then into the target language's text. Of course, the trick is to figure out just exactly how to do this.
My 2 cents/Pfennig/lire/pesos,
Y
I wonder if the media (news vendors) have ever stopped to think that maybe they contribute to the hysteria over school violence by covering the stories until the people immediately involved are tired of the privacy invasion and want to recover from the ordeal without the help of 20/20.
Generally, these seem to be the two threads in this discussion.
However, I think, whether it is or isn't for everybody, college should be a balance of theory and practice. For example, at my school, we have a class that teaches team programming/large projects, and is done in C++. I think it will be taught in Java in the coming semester. Normally, this wouldn't be of concern except that at my school we don't have another explicitly C++ course. It might be better to teach the class in Java so you don't have to deal with pesky memory management, but if you don't teach some real world skills, like that pesky memory management, you could find yourself up a creek. Luckily, I've already taken this class, but I hope that if it does move to Java that a C++ class is ready and waiting for the students who haven't taken it.
Earlier, I saw a thread about the uselessness of Motorola 68k ASM. I'm taking a class that deals heavily with SPARC ASM, something I probably won't use again outside of college. However, I dabbled in x86 assembly in high school, and I saw parallels and whatnot between the two - for me it was somewhat interesting, like the fact that x86 assembly doesn't have a branch delay slot, and SPARC does, and that SPARC does because of the way pipelining is implemented, ad nauseam. The point of this long-winded text is that college provides you with a real understanding of why stuff works the way it does and why people made decisions that later affected present implementations and architectures.
And then there's the whole social side of college, and the access to resources, and as someone said earlier, the chance to find a direction.
I've been in the real world a little bit. In high school, I programmed/web designed for minimum wage as part of an internship. In the end, I got bored with the work. I'm reaching a similar point as a tech assistant for my school's language lab. I think one of the most important reasons for college is the chance to find something you really want to do, and to be able to sift through jobs you don't want when looking for a job. I don't want to do web work for the rest of my life - that's what I got from the real world. But I do have a general idea of what I DO want to do - and that's what I'm in the process of getting from college.
By no means is college necessary to find any of these things - it depends on the person - but I would highly recommend the college experience if at all possible.
-Mike Y.
I meant a "group of people who own those cards",
although it would be pretty cool if the cards up and called Nvidia asking them to support the cards under linux.
> A group of Nvidia Riva 128 and TNT based cards
Hi.
:)
A group of Nvidia Riva 128 and TNT based cards are trying to get a groundswell of support for Riva 3D drivers under linux. Please mail os-info@nvidia.com with your wishes for Nvidia and linux, and bcc to either myself (bogart@rice.edu) or cmiller@surfsouth.com. You can also look at http://www.chad.org/dev/ and look at the link for riva-tnt to see some letters we have already sent, and the one response we got from Nvidia. Please send Nvidia mail, or they won't know that there is a large number of linux users who want to use the 3D capabilities of their Riva cards. Tell your friends, if you like.
Thanks,
Mike Y.
Hmm, it seems that the server is not allowing access. I'll try to set up a page on my account with letters sent to nvidia, and if you want the address, send mail to bogart@rice.edu.
You and me both. I got a Riva 128 because I wanted to run 1024x768 at higher than 8 bit depth and the Riva was the only decent card within my price range. Then I found that there are no 3d drivers for linux, even though the 128 has an OpenGL ICD. I'd like to contact nvidia as well, but I think it would be more effective to find all the people who want Riva 3D drivers for linux (probably not too hard) and make a concerted effort at mailing nvidia.
my 2 cents,
Mike Y.
bogart@rice.edu
I've gone to both of their concerts in Houston over the past two years and had a blast. They put on an excellent live show - I think somebody here put it best when they said that TMBG was a fun band. Their lyrics on most songs are far more intelligent than anything that a group like Matchbox 20 could ever put out. The lyrics that aren't "intelligent" oftentimes are tongue-in-cheek - I find it hard to pass negative judgement on Them because they are one of a few groups who don't insist on writing songs that are exact copies of each other (e.g., Gin Blossoms, Matchbox 20). I can understand many people's dislike of Them, but your post lacks any sort of intelligent criticism and gives me the image of someone foaming at the mouth.
I don't know. I d/led 2.2.0. I had initial problems compiling and some other problems with a bad util-linux rpm (couldn't log in b/c of incompatible shared libraries) but once I returned to my old version of util linux, compiled the kernel with auto kernel module loading or whatever, I've had nothing but improved speed, etc., and no crashes yet. I upgraded from 2.0.34 and I am definitely pleased with the results. The only reason I'm going to get the .1 patch is so I don't have that pesky ldd core bug. :)
-Y
Um, ok....
I've never even heard of sightsound.com, much less known that you could patent downloading audio.
I really hope this is dismissed as frivolous. It's sad how rampant commercialism has become.
-Y
I have to say that this year was a bad year for TV in general. I never saw That 70's Show, so maybe I'm making a premature judgement, but the commercials I saw on Fox never induced me to watch it. I've seen a good part of one episode of Buffy, and I have to say I was was impressed with neither the acting nor the dialogue. The only excuse I could see for Buffy's popularity is to see Sarah Michelle Gellar in suggestive outfits.
I liked the X-Files, although I was not a regular fan until this past year. Aside from that, though, I can't think of a single TV show that I watched religiously because it was good.
On movies, I think "Lost in Space" was a good movie to heckle, simply because it was so terrible. The best movie I saw this year? I didn't get a chance to see "Private Ryan" or the "Truman Show" even though I wanted to. Pi was good despite mathematical inconsistencies - I haven't seen a sci-fi thriller/suspense that good since Sneakers. Actually, one of the best movies I saw was an old one on video - "Johnny Stecchino" with Roberto Benigni (the guy from "Life Is Beautiful", which I also want to see). I think "Private Ryan" would be my top choice, had I seen it, but I'll just have to wait till it comes out on video. Anyway, those are my two cents.
-Y