Loading ...
Sorry, an error occurred while loading the content.
 

Autodidects vs. degreed students (was: Re: [hackers-il] Re: Grades and The Real World...)

Expand Messages
  • Omer Zak
    ... [... snipped ...] ... Can you tell us what difference do you (or do experienced teachers) see between the those three kinds of students
    Message 1 of 18 , Dec 8, 2001
      On 8 Dec 2001, Oleg Goldshmidt wrote:

      > Omer Zak <omerz@...> writes:
      [... snipped ...]
      > > Grades are needed once someone learns for a purpose - to get a degree, get
      > > a job, get a license to practice. It is here that a correlation between
      > > grades and one's real ability to apply his knowledge - is necessary.
      >
      > While there is much sense to it, I'd like to add another wrinkle: most
      > experienced teachers would probably say, on empirical basis, that the
      > difference between a student who attended a course and passed a
      > well-designed exam and a student who attended a course without an exam
      > is greater than the difference between someone who attended a course
      > and someone who read a good book or two on the subject at home. That
      > has implications for "learning for pleasure" as well as for "learning
      > for purpose".

      Can you tell us what difference do you (or do experienced teachers) see
      between the those three kinds of students (student-for-a-grade,
      student-for-a-pleasure and autodidect)?

      I consider courses with grades as (maybe necessary) evil. People study,
      cram before exams, just to pass the exam. Not for knowledge.

      I myself have been mixture of student-for-a-grade and autodidect. It has
      was more pleasant to learn things on my own. I did consult syllabuses,
      however, to get an estimate of the "official" body of knowledge in a
      field. (I formally studied EE in the Technion, and I learned what I know
      in software development on my own.)

      I wonder if other autodidects apply the following rules:
      1. When you read a book, read all of it.
      2. Look at syllabuses and get an idea what does official education cover.

      --- Omer
      There is no IGLU Cabal. It is not known yet which group of Cabal
      candidates failed the effort - the autodidects or the degreed ones.
      WARNING TO SPAMMERS: see at http://www.zak.co.il/spamwarning.html
    • Nadav Har'El
      ... Interesting. A (wise) professor once told me exactly the same thing, when I complained to him that he took points off my test just because I
      Message 2 of 18 , Dec 8, 2001
        On Fri, Dec 07, 2001, Shlomi Fish wrote about "[hackers-il] Image Processing Course - End of Story (?)":
        > <<<
        > Since the Technion employs a system of tests in order to grade with it the
        > abilities of the students, then the performance in the test is what
        > determines the grade. While the test determines the grade of the course,
        > the course's team does not presume to determine your personal ability or
        > "how much you are worth in Image Processing" (as you wrote in your
        > E-mail).
        > >>>

        Interesting. A (wise) professor once told me exactly the same thing, when
        I "complained" to him that he took points off my test just because I
        misunderstood the question, not because I didn't know the material.

        It feels lousy when such misunderstandings happen. I even had a friend once,
        a really smart one with a very high GPA, who simply didn't see a whole
        page of the test, so he obviously got a lousy grade :) But luckily these
        things usually average out in the big scheme of things after you take a few
        dozen courses. Of course, a failing grade is very hard to "average out", so
        you might consider taking this test (or the course) again if you care about
        the grade (and you seem to do, otherwise you wouldn't continue to talk about
        this issue...).

        > The problem is that in a perfect world, the grade would reflect just that.

        Right. And don't you agree that tests are a relatively good refelections
        of that? Sometimes you get fluke results: You told us of a case where you
        knew the material and got a 58. I can tell you of a case that I admit I
        didn't understand a course, and somehow managed to squeeze a 94.

        But overall, wouldn't you agree that a person with a 90 GPA knew the
        material better than a person who has a 80 GPA?
        Of course, it doesn't mean the 90-person is smarter than the 80-person,
        or that he will be more successful in real life. I does mean, however,
        that during their studies, the 90-person *was* more succesful, and
        understood the material (as the professors understand it) better than
        the 80-person.

        > The only way I can think of to determine a student's precise worth is by
        > an oral (or otherwise interactive) examination.

        I'm not sure I agree. By definition, oral exams are short - I never saw a
        3 hour oral exam. In an oral exam you can't have a question that will take
        the student 30 minutes, or even an hour, to think about until he can solve
        it, which limits what you can test in such a test. In an oral exam you usually
        conclude a question when you see that the student is "onto the right idea",
        and you don't wait for the student to complete it till the end - and
        students *should* learn how to finish their work to the end, not just know
        how to start it.

        Have you had oral exams? From the ones I had, I found them much less reliable
        and "scientific" than regular tests, and the grades much more "arbitrary",
        and less fair. Regular tests usually have strict and predetermined set of
        rules by which the grader grades the test.

        > But a more practical method would be to ask the students to prepare
        > treatises on the subject, which may or may not be applicable for every
        > subject.

        I've taken many many courses in the Technion that didn't grade with an exam.
        Moreover, during my masters study, only a minority of the courses had an
        exam at all!

        In fact, contrary to the popular "bitching" about the Technion and its
        professors, I found most of the professors in the Math department to be
        excellent teachers, who care a lot about their students and about the
        fairness of their grading. Maybe it has something to do with the small
        classes we had...

        Here are a few alternatives grading methods, all of which I've personally
        encountered:

        1. Student giving a lecture:
        The student has to prepare a lecture showing his understand in the
        course's material. This is of course what you do in "seminars" (where
        only the students, not the professor, give lectures based on material
        assigned from papers and books), but I also took courses where at the
        end of the normal course each student had to prepare a lecture about
        one example application of the course materials, and we were graded on
        how much understanding of the material we displayed during our lecture.

        There are two problems, though: first, it suits only very small classes
        (about 5 people is probably the maximum). Second, again the grades are
        rather arbitrary and unfair - since your charisma and speaking skills can
        effect your grade.

        2. Written treatise:
        Similar to #1, but prepare a written treatise instead of a spoken
        lecture. Again, your writing skills and choice of subject has an effect
        here, not just your knowledge of the subject. Such grading can be fair,
        however, because of the "written evidence" left behind regarding the
        grading.

        3. Exercises:
        lazy teachers with huge classes don't bother to look at the exercises
        student hand in. But I had several courses where exercises accounted for
        100% (or sometimes a different but big percentage) of the grade.
        For this to be fair, and not an "easy way to get a 100", there usually
        has to be a large number of hard, long, excercises, and good ethics in the
        class (so people not simply copy exercises). Such courses tend to be very
        interesting, but also very hard - sometimes to the point where it's nearly
        impossible to finish all these exercises in time.

        4. Pool of known questions:
        This is one of the most interesting grading approaches I've ever seen,
        and resulted in one of the most interesting courses I ever took. It also
        takes a very large amount of very hard work from the professor, so it's
        very hard to repeat more than one semester.

        The professor (in the second-semester "introduction to topology") gave us
        a few pages with about 50 questions, each meant to take a student about
        an hour to solve, and each at the level of a final exam question. He then
        said to us: You can just ignore this list of questions, and come to the
        test and do it. But if you want, you can use this list: the final exam
        will contain only questions from this list. If you come to the test knowing
        the solution to all these questions, you'll probably get a very good grade.

        Of course, this led me to spend over a week (in the last week of the
        semester and in whatever time I had between tests) in solving *all* those
        questions. It was *very* hard, but also very interesting, and I really
        learned a lot from this process. After much hard work, I was able to
        solve all the questions, and obviously I got a 100 on the test. Other
        people who didn't solve all the questions themselves (because of lazyness
        or because they failed to solve some of them) could (and did) ask others
        for the answers. But it's almost impossible to remember answers to 50
        questions you don't understand, so these people didn't get a very good
        grade.


        5. Class participation.
        On the other hand, this is the most rediculous grading method I saw.
        In one course, when in the last lecture the teacher didn't tell us
        how he's going to grade us (we had no exercises, bchanim, or anything),
        we asked him and he bluntly said: "I don't want to have to compose a
        test or grade it, so I'll just give each of you a grade based on how
        you participated in class".
        Needless to say, this wasn't fair in many aspects. First, people weren't
        made aware from the start that they should participate because that is
        what their grades will be based on. Second, how do you appeal such a
        grade?
        Because of the appeal problem, he was forced to give all course participants
        very high grades...

        6. Aural, interactive, exam. Usually quite short, say 30 minutes - but
        even at that length quite time-consuming for the professor.

        7. Normal test, or several tests (e.g., smaller tests being "magen" for
        a larger test). This is the method you seem not to like too much :)

        > I'm still waiting to hear Nadav's responce for my original letter as he
        > said he had a lot of things to say.

        I don't remember what I had to say then, but I sure said a lot of things
        now... ;)

        --
        Nadav Har'El | Saturday, Dec 8 2001, 24 Kislev 5762
        nyh@... |-----------------------------------------
        Phone: +972-53-245868, ICQ 13349191 |A Nobel Peace Prize? I would KILL for one
        http://nadav.harel.org.il |of those.
      • shlomif3
        ... to apply ... as basis ... or should ... the ... The fact is that while working on let s say image processing and analysis, I ll use completely different
        Message 3 of 18 , Dec 8, 2001
          --- In hackers-il@y..., Oleg Goldshmidt <ogoldshmidt@c...> wrote:
          > Shlomi Fish <shlomif@t...> writes:
          >
          > <Omer's words kept for context - OG>
          >
          > > > In a perfect world, a student's grade would reflect his ability
          to apply
          > > > the material he learned in his work and/or his research and/or
          as basis
          > > > which he can use to learn and understand more advanced topics.
          >
          > > I'm not sure that the Technion (or any other university) presume
          or should
          > > presume to accomplish that.
          >
          > That's almost the only thing a university should presume to
          > accomplish. I don't think it is feasible for a university to give a
          > graduate the full some of knowledge and skills that should enable
          the
          > graduate to start practicing the chosen profession. Universities
          > should provide a basis for further advancement and education is more
          > specialized and advanced areas.
          >

          The fact is that while working on let's say image processing and
          analysis, I'll use completely different things than what the Technion
          teaches me. OK - it teaches me the basics. But, if I need to find the
          value of particular spots on a scan of a comb (my father encountered
          exactly such an incident during his work), there will be a lot of
          trial and error. I can tell someone that he can detect an edge using a
          Laplacian (filtering with [-1 1 ; 1 -1] matrix or something similar -
          sorry I don't remember exactly without looking at the material) or
          something similar - he'll say that it makes perfect sense, and from
          then on, he can get along on his own.

          Most of his work from then on would be to play with the algorithm and
          get everything to work.

          The Technion does give his studnets "wet" assignments, but they cannot
          be compared to a real test case.

          > > If one has worked hard on a given subject, and fully integrated
          it,
          >
          > What's "integrated"?
          >

          Integrated is "le'abed" in Hebrew. It means to analyze the material
          and thoroughly understand it and be able to implement it on demand.

          > > he should receive a good grade on it, even if he has no idea about
          > > how to implement it in real-life.
          >
          > My remark above should not be misconstrued as to mean that
          > universities provide "abstract", "theoretical" knowledge
          > only. Especially not in such practical subjects as EE, CS, physics,
          > etc. I do believe your statement is false and dangerous. I pity you
          if
          > your professors do not explain how their subjects are used in real
          > life.
          >

          I'd like to take back this particular sentence. Like I said there were
          wet assignments and all. However, I do believe that they do not
          compare to a real test-case. Projects are much closer to that, but
          they are still not The Real Thing<tm>.

          > > I'm not sure how much of the material learned in the Technion can
          prove
          > > useful in real-life.
          >
          > I recall students who neglected hydrodynamics in the second year
          > because they came to study electronics and thought hydrodynamics was
          > irrelevant. In their fourth year, when they were deep into their
          > subjects of choice, the smarter ones realized that they had to
          juggle
          > their busy schedules to attend those lectures with the then
          > second-year students to fill the gaps.
          >
          > Wait till you get some real-life experience (a few years worth of
          it)
          > in your chosen field to judge what was and what wasn't useful, and
          > then think really hard. At least that's my advice.
          >

          To be honest, some of the material I learned proved to be useful. For
          instance, I implemented a better state collection mechanism in
          Freecell Solver after I learned that Quick-Sort had a complexity of
          O(n*log(n)).

          But most of it is just the basics and concepts. By itself, you won't
          be able to become a good engineer. I'm not saying you are better off
          without it. However, I think I could have made a much better use of my
          time, had I not studied in the Technion, and still know as much as I
          do today. Maybe not on Electrical Engineering, but an equal amount
          nonetheless.

          > > Those who prove to be good engineers usually can fill the gaps by
          > > themselves.
          >
          > Those who prove to be good engineers will realize early on that the
          > whole point of getting an education is to enable oneself to go about
          > filling the gaps in an intelligent, efficient, and purposeful way,
          and
          > to save one much time, effort, and frustration down that road.
          >

          I personally don't think I needed the Technion to know how to fill
          such gaps. But that's just me.

          > > Most of the EE real-life work (much more programming) is about
          > > finding heuristics that work.
          >
          > Generally wrong. Normally, you first ask if there is an algorithm
          that
          > works. Only when you are sure there isn't, you start considering
          > heuristics. In the cases when it is right, how are you going to
          search
          > for the right heuristics? Determining whether on not you need
          > heuristics and if you do, how to find the right one efficiently, is
          > where education (and experience) helps. A lot.
          >

          I may have misused the word heuristic. By heuristic I mean an
          algorithm that works and looks right.

          > > If the current's too large in the simulation - you put a
          capacitor.
          >
          > That's not heuristics. At least it doesn't sound like one... It
          > doesn't even sound like a correct statement outside of the problem
          > context. Please do not describe the particular context you had in
          mind
          > here - it's not relevant.
          >
          > > If there's a bug in the software, you discover what it is and fix
          > > it.
          >
          > You do realize this statement is devoid of real meaning, do you?
          >

          What I meant is that you don't start trying to build a model of the
          program, looking in the literature for references. You just see where
          it occurs, and correct it.

          Or - if you discover that you made a wrong design decision - you
          correct the design.

          > > I doubt if a lot of the commercial software employed today was
          > > re-factored as much as Freecell Solver, or employed such a large
          > > number of interesting algorithms or techniques as I implemented in
          > > them.
          >
          > That's a very strong statement. Sounds like you should drop out from
          > studies and start a company called MegaHard Ltd - your success is
          > virtually guaranteed. ;-)
          >
          > Anyway, did you learn those algorithms at the Technion, or did you
          > invent them yourself?

          Some of them I learned or heard about in the Technion (e.g: a hash,
          merging arrays, a balanced binary tree, etc.). But the vast majority I
          came up by my own. I welcome you to take a look at the source, and at
          the changes file to see what I did. Or you can read the lecture whose
          overview I posted here.

          In any case, my philosophy of a programmer is to invent algorithms
          where I need them. While research may takes less time, coming up with
          algorithms is more rewarding intellectually.

          > Assuming the former, did you implement them or
          > did you use libraries that do that for you?

          The only thing I did not implement myself was the balanced binary
          tree. I found libredblack and libavl and glib, and Freecell Solver has
          an option to use either one. At the moment the choice of the state
          collections is abstracted using #ifdefs.

          Note that the state collection can also use a hash which I implemented
          myself. This hash uses several optimizations which I came up by my own
          (as well as rehashing which I learned about in the Technion). The last
          time I ran a benchmark it was slightly better in overall performance
          than the best binary tree implementation I found. And I added some
          optimizations since then. ;-)

          In any case, I implemented this hash in the first place, accidently,
          because I used a very bad hash function. When I switched to MD5
          everything worked well either in it or in GLib's hash (which was still
          slower than my own). And the ironic thing is, that I implemented a
          very similar function (also very bad) in a Technion assignment for
          which I got a perfect grade.

          > Assuming the library path,
          > how did you chose among the different approaches and
          implementations?

          According to Google (e.g: libavl or libredblack), mainly, or what I
          already knew (e.g: glib). Other factors were license, and raw speed.
          But like I said, I abstracted the 3rd party dependencies and the code
          can be adapted to work with any other one.

          > See my drift?
          >
          > There is a difference between a talented autodidact and an
          experienced
          > and educated professional. A talented autodidact can become an
          > experienced and educated professional with time and effort. An
          > experienced and educated professional (I assume a certain degree of
          > talent is absolutely necessary to become one) can go a long way down
          > the autodidactic road in a new, advanced field with ease and
          > fun. Assuming comparable amount of talent, there will still be a
          > difference.
          >

          I was much more enjoying myself (and having learned much more in
          knowledge/time ratio) working in the industry, than I did studying in
          the Technion. (I worked for two years before I started studying in the
          Technion). I'm always exerting time and effort into improving my
          skills, but I don't like the Technion way of talking me into doing
          this.

          > Why do you sound frustrated enough with Techion as to wonder whether
          > finishing your degree is worth it? [No, you never said that, but you
          > keep wondering what good it is, in so many ways.] Have you decided
          > that the diploma roll is the only thing you need from the Technion?
          >

          I have reached this conclusion a long time ago - %-). No seriously,
          right now I'm trying to finish my degree with as little obstacles and
          unexpected things as possible. I'm having some fun in the process, but
          I had much more when I worked.

          > I am not a Technion graduate, but on the basis of the institution's
          > reputation I doubt it's that bad... ;-)
          >

          IMO, even the best schools are literally bad. I'll wager a million
          dollars that most of the students of MIT, Harvard, Princeton,
          Berkeley, Standford, etc. hate the guts of their respective
          universities. And no - they are _not_ better than the Technion in this
          respect or in most other respects (except maybe the wider selection of
          courses as I've heard).

          > > The question is whether I get to work in image processing (or any
          other
          > > course for which I was negatively misgraded) or not.
          >
          > The question is whether you become intelligent and educated enough
          to
          > learn the principles used in Image Processing and other disciplines
          > well enough to recognize and apply them in whatever field you found
          > yourself working in 10 years down the road. The hydrodynamics
          example
          > I described briefly above keeps returning to my head. I am still
          happy
          > I never neglected it as many of my coursemates. And a year-long
          course
          > in linear algebra is useful in just about everything I did
          > professionally (covering a few distinct fields) since my freshman
          > year... I am not sure many of my fellow students could foresee this
          > back then, bright as they were (and they _were_ bright).
          >

          Linear Algebra is very useful. At the moment I'm struggling with
          Thermodynamics (among other subjects), which is also a pre-requisite
          for nothing in EE studies. While I understand the motivation to teach
          such courses which are not directly related to the material at hand, I
          think students will never be motivated enough to study them well for
          the same reason. The same argument can be made against humanist
          courses , so it's a rather dangerous direction, but I was just
          mentioning a fact.

          Regards,

          Shlomi Fish


          > --
          > Oleg Goldshmidt | ogoldshmidt@N...
          > If it aint't broken it hasn't got enough features yet.
        • Nadav Har'El
          Isn t this about the 10th time we re having this studying-CS-in-an-university- good-or-bad discussion on this list? Before I go any further, I must remind you
          Message 4 of 18 , Dec 8, 2001
            Isn't this about the 10th time we're having this studying-CS-in-an-university-
            good-or-bad discussion on this list?

            Before I go any further, I must remind you that I'm not a typical Technion
            CS graduate. That is because I'm not a CS graduate at all - I graduated from
            the Technion's Math department (BA in Mathematics, and MSc in Applied
            Mathematics).

            Before I entered the Technion, I considered two departments: CS and Math (I
            liked two other subjects, Physics and Chemistry, but these were even further
            down my priority list). Before entering the Technion, I already had a rather
            broad experience with computers. I knew several programming languages (C,
            Pascal, C++, etc), programmed on several operating systems (Unix, MS-DOS,
            Commodore-64), knew some theory (data structures, algorithms, compiler theory),
            and so on. I learned all this stuff myself. But not the stupid trial-and-
            error way, but rather by reading good, advanced, books on these subjects
            (remember the saying: "Learn from other people's mistakes: you won't live
            long enough to make them all yourself"), and had 7 years of (non-commercial)
            experience.

            So I decided that doing a BA in CS would bore me. I knew well (I thought)
            at least half of the material taught in such a degree, and I couldn't care
            less about a diploma or how much money I would make later (I was young...) -
            I only cared about having fun studying things that interested me.

            So I decided to study math. I really likes the math studies, even though it
            was quite hard, and managed to do well. But all during my math studies I
            continued to read CS books, work with computers (I was a system administrator
            and had a summer job programming a GUI with Tcl/Tk), and took optional
            CS courses (I skipped the usual "boring" introductory courses, and took more
            advanced courses I wanted to study).

            I think I got from the Technion at least two things:
            1. An extensive background in Mathematics. This is something which is very
            hard to learn alone from books. This background came in very useful in
            everything I later worked in, from Physics to computers.
            2. Learn how to think scientifically and methodically. There is no way to
            underestimate this - sometimes I just want to cry out when I see someone
            programming (or any other engineering work) as if this is some sort of
            trial-and-error work, rather then something that needs to be thought out
            first.

            Later, when I had to make the same decision again for my masters studies,
            I again chose Math, and again continued to take advanced CS courses "on the
            side" (as well as reading books on my own). Now I'm considering doing a
            PhD in CS (it's the end of the line in math for me, I believe).

            Ok, so that's my background, now for my answer:

            > The fact is that while working on let's say image processing and
            > analysis, I'll use completely different things than what the Technion
            > teaches me. OK - it teaches me the basics. But, if I need to find the

            There's something you need to get out of your mind - the Technion (like
            other good universities) is not a vocational school. If you're only there
            to "learn a trade" or "learn useful stuff", you're in the wrong place. If
            you're only there for a good diploma or to make money in the future, then
            perhaps you're in the right place, but you're not going to enjoy your
            studies very much.

            You should walk out of the technion with common terminology (so if your
            boss tells you "use a hash table" you'll know what he meant), and knowing
            basic theory. You don't have to go out of the Technion (especially if you
            do a 3 year degree) knowing or remembering the details of every possible
            algorithm, or knowing every programming language in existence. But after
            3 years in the Technion (CS or EE department), when your boss tells you
            "You! Write a compiler! Now!" you'll be able to pick up a book on compiler
            theory and a manual of YACC, sit and read for a few days - and *understand*
            what you're reading, and then be able to implement what you just read.
            Without a good background in CS, you simply will not be able to pick up
            the (say) dragon book (a good book about compiler theory) and understand
            it. You don't need to formally study to get such a background, but you can't
            "invent it as you go along" either - you'll need to learn it from somebody
            who knows the common terminology and half a century's worth of knowledge -
            either a professor or a good book.
            Believe it or not, learning from a professor is in the long run quicker than
            learning from a book! I estimate that it took me 7 years to learn what I
            could have learned in the Technion in just 2 years.

            > The Technion does give his studnets "wet" assignments, but they cannot
            > be compared to a real test case.

            Nor should they. I think we had a long discussion about how, and why,
            civil engineers don't typically get to design a suspension bridge during
            the studies, and by the same token CS or EE students don't usually get to
            play a major role in a big, real-life, project.

            > > Wait till you get some real-life experience (a few years worth of
            > it)
            > > in your chosen field to judge what was and what wasn't useful, and
            > > then think really hard. At least that's my advice.
            > >
            >
            > To be honest, some of the material I learned proved to be useful. For
            > instance, I implemented a better state collection mechanism in
            > Freecell Solver after I learned that Quick-Sort had a complexity of
            > O(n*log(n)).

            See? You can't expect to utilize everything you learned in the same year.
            I bet that if you work programming for 10 years after your graduation,
            you'll find yourself utilizing something from at least half of the courses
            you took.

            But it's also important to remember, that you never know what kind of area
            you'll want to focus on later in life. This is why getting a broad base
            and then not using half of it is better than getting half that base, and
            then finding out you learned the wrong half...

            > But most of it is just the basics and concepts. By itself, you won't
            > be able to become a good engineer. I'm not saying you are better off
            > without it. However, I think I could have made a much better use of my
            > time, had I not studied in the Technion, and still know as much as I
            > do today. Maybe not on Electrical Engineering, but an equal amount
            > nonetheless.

            About the "better use of my time" part - I agree. This is why I studied
            math (see the whole story above) - I thought that studying CS for 3 years
            would be a waste of my time, and studying math would at least teach me
            something new (and interesting).

            > I personally don't think I needed the Technion to know how to fill
            > such gaps. But that's just me.

            Tell me the truth: Before you entered the Technion, if you wanted to
            write a compiler (just to continue using this example), would you even
            know how to go about doing that? If you picked up the Dragon Book (if
            you know it), would you have understood what it was talking about - automata,
            graphs, data structures, and so on?

            If the answer is no, then don't kid yourself - you weren't able to fill such
            gaps yourself before you entered the Technion!

            If the answer is yes, then you're probably right - you may not need to
            study CS in the technion. Maybe you should have studied another subject,
            or even EE while focusing more on (say) physics than CS.

            > What I meant is that you don't start trying to build a model of the
            > program, looking in the literature for references. You just see where
            > it occurs, and correct it.

            I don't understand why you're saying this... A lot of time when your program
            doesn't do what you hoped (and it's not a silly typo bug) or when it's not
            doing it efficiently enough, you *DO* go looking in the literature, and
            thinking about things like proofs (even if not watertight proofs), complexity,
            and so on.
            Again, I bring up the saying "learn from other people's mistakes: you won't
            live long enough to make them all yourself". Finding ideas and algorithm in
            literature (or in your notes from the Technion) is just that - being able
            to learn from trial-and-error work people did in months or years, in mere
            minutes.

            > Or - if you discover that you made a wrong design decision - you
            > correct the design.

            And how do you recognize something as a "wrong" design if you don't know
            the theory about what makes something "right"?

            As you admitted above, before you learned about O(n logn) sorting algorithms,
            you might have thought that a simple O(n^2) algorithm you devise was just
            dandy. When you would go around optimizing it, you'd probably manage to save
            10% running times somehow - never realizing that this problem had been
            solved decades ago, and that you could save (say) 90% time if you just
            switched to a different algorithm.

            > > > I doubt if a lot of the commercial software employed today was
            > > > re-factored as much as Freecell Solver, or employed such a large
            > > > number of interesting algorithms or techniques as I implemented in
            > > > them.

            Guess again.
            Maybe "Microsoft Word" doesn't have many interesting algorithms in it, but
            many pieces of software sure do. The Linux kernel probably have a lot of
            interesting and very efficient data structures, Gimp has a lot of interesting
            image-processing algorithms, Gcc has a lot of interesting compiler theory,
            and the list just goes on and on.

            Most programs I ever wrote included a lot of interesting algorithms -
            some straight "text-book" algorithms, and some my variations on them or
            (in rare cases) completely new inventions.

            > > Anyway, did you learn those algorithms at the Technion, or did you
            > > invent them yourself?
            >
            > Some of them I learned or heard about in the Technion (e.g: a hash,
            > merging arrays, a balanced binary tree, etc.). But the vast majority I
            > came up by my own. I welcome you to take a look at the source, and at
            > the changes file to see what I did. Or you can read the lecture whose
            > overview I posted here.

            After you learn many known existing algorithms, you can start inventing
            new algorithms, without fearing you'll be "reinventing the wheel, but
            badly". But if someone is arrogant enough to invent an algorithm without
            first knowing the existing ones, he's bound to do just that - reinvent the
            wheel, but badly. Like coming up with an "ingenuous new O(n^2) sorting
            algorithm that is twice as fast as bubble sort!".

            > In any case, my philosophy of a programmer is to invent algorithms
            > where I need them. While research may takes less time, coming up with
            > algorithms is more rewarding intellectually.

            Yes, but unless you're a genius, you'd come up with less-than-optimal
            algorithms many times. Most times it won't matter, but sometimes it will.

            > In any case, I implemented this hash in the first place, accidently,
            > because I used a very bad hash function. When I switched to MD5
            > everything worked well either in it or in GLib's hash (which was still
            > slower than my own). And the ironic thing is, that I implemented a
            > very similar function (also very bad) in a Technion assignment for
            > which I got a perfect grade.

            So why reinvent the wheel and invent crappy hash functions when you can
            open Knuth's book, or find something on the web, and find a good hash
            function that people worked for weeks or months to perfect?

            Besides, if you had really known your theory, you'd know that MD5 is a
            strange choice of hash function for a hash table. MD5 is a cryptographically-
            secure hash, and you don't need this feature AT ALL in a hash table.
            You could find a great hash function that is much faster than MD5.

            > I was much more enjoying myself (and having learned much more in
            > knowledge/time ratio) working in the industry, than I did studying in
            > the Technion. (I worked for two years before I started studying in the
            > Technion). I'm always exerting time and effort into improving my
            > skills, but I don't like the Technion way of talking me into doing
            > this.

            If you studied on your own for two years during your work and you thought
            it was a great way to learn quickly, then how come you came into the
            Technion not knowing what quicksort was? Maybe your studying-on-the-job
            wasn't as effective as you think?
            Remember that in 2 years you'd be half-way (or two-thirds-way) through your
            degree, and learned a lot of stuff (even if you don't think all of it is
            useful), including that quicksort algorithm.

            > I have reached this conclusion a long time ago - %-). No seriously,
            > right now I'm trying to finish my degree with as little obstacles and
            > unexpected things as possible. I'm having some fun in the process, but
            > I had much more when I worked.

            It's hard to think you're having "fun" in the technion, when you're
            buckling under the load of exercises and tests. Try to think about it
            in perspective, e.g., in the summer think about your previous semester.

            > IMO, even the best schools are literally bad. I'll wager a million
            > dollars that most of the students of MIT, Harvard, Princeton,
            > Berkeley, Standford, etc. hate the guts of their respective
            > universities. And no - they are _not_ better than the Technion in this
            > respect or in most other respects (except maybe the wider selection of
            > courses as I've heard).

            Maybe it's because many students come to study a subject they feel "forced"
            to study (to get ahead in the job market, etc.) and not people who really
            chose what they study. Luckily, in the math department this wasn't a big
            issue - nobody goes to study math for the "big bucks" or for being envied
            by his friends :)

            I went about an year ago to an open day in HaifaU (but the situation is
            similar in other universities, probably). Each department had a booth to tell
            you about it, and why you should study this subject. The CS department's
            booth was filled with huge "$" signs, pictures of bill gates, and slogans
            of that sort. It was disgusting. No wonder these greedy drones will be
            shocked when they find out that in the university they'd actually have
            to learn something which is hard, and (god forbid) looks like some sort of
            (eeek!) science!

            > Linear Algebra is very useful. At the moment I'm struggling with
            > Thermodynamics (among other subjects), which is also a pre-requisite
            > for nothing in EE studies. While I understand the motivation to teach
            > such courses which are not directly related to the material at hand, I
            > think students will never be motivated enough to study them well for
            > the same reason. The same argument can be made against humanist
            > courses , so it's a rather dangerous direction, but I was just
            > mentioning a fact.

            It's not a fact. I did a whole degree(!) in math, even though I knew I
            was probably going to work in computers. When you're not only after making
            more money in less time, learning something interesting can be a goal
            on its own - it doesn't need to be directly applicable to your job.
            And who knows, maybe in 30 years you will want to change your career
            path? Maybe your knowledge in thermodynamics will come in handy if
            the matter-copying-machine industry picks up? :)

            Ooof, this email was long.... :)

            --
            Nadav Har'El | Saturday, Dec 8 2001, 24 Kislev 5762
            nyh@... |-----------------------------------------
            Phone: +972-53-245868, ICQ 13349191 |Open your arms to change, but don't let
            http://nadav.harel.org.il |go of your values.
          • Shlomi Fish
            ... Very well. Part of the reason I decided to study EE instead of CS was to learn Something I don t Know . In a way, I have reached this goal, but I have
            Message 5 of 18 , Dec 8, 2001
              On Sun, 9 Dec 2001, Nadav Har'El wrote:

              > Background snipped...
              >

              Very well. Part of the reason I decided to study EE instead of CS was to
              learn Something I don't Know<tm>. In a way, I have reached this goal, but
              I have the feeling that given the valid resources (i.e: references to
              books, homework assignments with solutions and lecturers who would answer
              my questions) I could have learned everything on my own faster. And enjoy
              myself more.

              > Ok, so that's my background, now for my answer:



              >
              > > The fact is that while working on let's say image processing and
              > > analysis, I'll use completely different things than what the Technion
              > > teaches me. OK - it teaches me the basics. But, if I need to find the
              >
              > There's something you need to get out of your mind - the Technion (like
              > other good universities) is not a vocational school. If you're only there
              > to "learn a trade" or "learn useful stuff", you're in the wrong place. If
              > you're only there for a good diploma or to make money in the future, then
              > perhaps you're in the right place, but you're not going to enjoy your
              > studies very much.
              >

              I was not saying the Technion should be a vocational school. I just said,
              that a graduate still has a lot to learn before he can implement what he
              learned. And so far, my situation is descrived by the second option: I
              don't like the Technion; I've already been there too long to quite, and
              now I'm there to get a diploma.

              > > > Wait till you get some real-life experience (a few years worth of
              > > it)
              > > > in your chosen field to judge what was and what wasn't useful, and
              > > > then think really hard. At least that's my advice.
              > > >
              > >
              > > To be honest, some of the material I learned proved to be useful. For
              > > instance, I implemented a better state collection mechanism in
              > > Freecell Solver after I learned that Quick-Sort had a complexity of
              > > O(n*log(n)).
              >
              > See? You can't expect to utilize everything you learned in the same year.
              > I bet that if you work programming for 10 years after your graduation,
              > you'll find yourself utilizing something from at least half of the courses
              > you took.
              >
              > But it's also important to remember, that you never know what kind of area
              > you'll want to focus on later in life. This is why getting a broad base
              > and then not using half of it is better than getting half that base, and
              > then finding out you learned the wrong half...
              >
              > > But most of it is just the basics and concepts. By itself, you won't
              > > be able to become a good engineer. I'm not saying you are better off
              > > without it. However, I think I could have made a much better use of my
              > > time, had I not studied in the Technion, and still know as much as I
              > > do today. Maybe not on Electrical Engineering, but an equal amount
              > > nonetheless.
              >
              > About the "better use of my time" part - I agree. This is why I studied
              > math (see the whole story above) - I thought that studying CS for 3 years
              > would be a waste of my time, and studying math would at least teach me
              > something new (and interesting).
              >
              > > I personally don't think I needed the Technion to know how to fill
              > > such gaps. But that's just me.
              >
              > Tell me the truth: Before you entered the Technion, if you wanted to
              > write a compiler (just to continue using this example), would you even
              > know how to go about doing that? If you picked up the Dragon Book (if
              > you know it), would you have understood what it was talking about - automata,
              > graphs, data structures, and so on?
              >

              I knew about automata, graphs and data structures before I came to the
              Technion. At least I knew what they were. OK, I believed a hash was the
              same thing as an associative array (perl man pages damage), but I would
              have understand a description of it (if for instance I read it in Cormen
              et al.)

              > If the answer is no, then don't kid yourself - you weren't able to fill such
              > gaps yourself before you entered the Technion!
              >
              > If the answer is yes, then you're probably right - you may not need to
              > study CS in the technion. Maybe you should have studied another subject,
              > or even EE while focusing more on (say) physics than CS.
              >

              The EE Faculty's courses are split into 4 broad categories: Electronics,
              CS, Math and Physics. This is also the broad category of our
              external pre-requisites. Of these, I liked the math and CS courses I took
              the best. And hated physics the most (mainly due to the lecturers). So,
              for the while, I'm staying a clear 5 yards away of physical EE.


              > > What I meant is that you don't start trying to build a model of the
              > > program, looking in the literature for references. You just see where
              > > it occurs, and correct it.
              >
              > I don't understand why you're saying this... A lot of time when your program
              > doesn't do what you hoped (and it's not a silly typo bug) or when it's not
              > doing it efficiently enough, you *DO* go looking in the literature, and
              > thinking about things like proofs (even if not watertight proofs), complexity,
              > and so on.

              That's not what I do. What I try to do is to use a debugger to find
              exactly when it happens, then realize why it happened, and then fix it or
              figure out a better algorithm for the program.

              > > Or - if you discover that you made a wrong design decision - you
              > > correct the design.
              >
              > And how do you recognize something as a "wrong" design if you don't know
              > the theory about what makes something "right"?
              >
              > As you admitted above, before you learned about O(n logn) sorting algorithms,
              > you might have thought that a simple O(n^2) algorithm you devise was just
              > dandy. When you would go around optimizing it, you'd probably manage to save
              > 10% running times somehow - never realizing that this problem had been
              > solved decades ago, and that you could save (say) 90% time if you just
              > switched to a different algorithm.
              >

              Actually, in this particular case I was told by my friend that Quick-Sort
              had a smaller complexity than Bubble-Sort (after I came up with insertion
              sort once).

              > > > Anyway, did you learn those algorithms at the Technion, or did you
              > > > invent them yourself?
              > >
              > > Some of them I learned or heard about in the Technion (e.g: a hash,
              > > merging arrays, a balanced binary tree, etc.). But the vast majority I
              > > came up by my own. I welcome you to take a look at the source, and at
              > > the changes file to see what I did. Or you can read the lecture whose
              > > overview I posted here.
              >
              > After you learn many known existing algorithms, you can start inventing
              > new algorithms, without fearing you'll be "reinventing the wheel, but
              > badly". But if someone is arrogant enough to invent an algorithm without
              > first knowing the existing ones, he's bound to do just that - reinvent the
              > wheel, but badly. Like coming up with an "ingenuous new O(n^2) sorting
              > algorithm that is twice as fast as bubble sort!".
              >
              > > In any case, my philosophy of a programmer is to invent algorithms
              > > where I need them. While research may takes less time, coming up with
              > > algorithms is more rewarding intellectually.
              >
              > Yes, but unless you're a genius, you'd come up with less-than-optimal
              > algorithms many times. Most times it won't matter, but sometimes it will.
              >

              Most of the things I invent are not algorithms as such but rather
              techniques. For instance, in Freecell Solver, I decided to sort the
              internal order of the heaps to avoid permutations of the same state with a
              different heap order. Eventually, I realized the user or the 3rd party who
              uses it as a library, would want to know the original positions of the
              heaps. So, I kept the original indexes of them outside the main
              data-structure, so I'll still be able to compare it with memcmp(). The
              beauty of the thing was that when I sorted the heaps I could also sort the
              indices, and maintain consistency.

              It's probable that someone documented such a technique somewhere. But it
              did not take me too long to think of it.

              By heaps I meant the heaps of cards of the game.


              > > In any case, I implemented this hash in the first place, accidently,
              > > because I used a very bad hash function. When I switched to MD5
              > > everything worked well either in it or in GLib's hash (which was still
              > > slower than my own). And the ironic thing is, that I implemented a
              > > very similar function (also very bad) in a Technion assignment for
              > > which I got a perfect grade.
              >
              > So why reinvent the wheel and invent crappy hash functions when you can
              > open Knuth's book, or find something on the web, and find a good hash
              > function that people worked for weeks or months to perfect?
              >
              > Besides, if you had really known your theory, you'd know that MD5 is a
              > strange choice of hash function for a hash table. MD5 is a cryptographically-
              > secure hash, and you don't need this feature AT ALL in a hash table.
              > You could find a great hash function that is much faster than MD5.
              >

              At the moment, calculating the hash takes a very small percentage of the
              time in running Freecell Solver. Thus, changin it to something else, is
              not a major concern.

              Besides, I believe Ron Rivest proved that MD5 (or any subset of bits from
              it) is a perfect hash function for arbitrarily-sized data.

              > > I was much more enjoying myself (and having learned much more in
              > > knowledge/time ratio) working in the industry, than I did studying in
              > > the Technion. (I worked for two years before I started studying in the
              > > Technion). I'm always exerting time and effort into improving my
              > > skills, but I don't like the Technion way of talking me into doing
              > > this.
              >
              > If you studied on your own for two years during your work and you thought
              > it was a great way to learn quickly, then how come you came into the
              > Technion not knowing what quicksort was? Maybe your studying-on-the-job
              > wasn't as effective as you think?
              > Remember that in 2 years you'd be half-way (or two-thirds-way) through your
              > degree, and learned a lot of stuff (even if you don't think all of it is
              > useful), including that quicksort algorithm.
              >

              I knew what quick-sort was. I just did not realize it had O(n*log(n))
              complexity. And strangely enough, my lecturer believed my original method
              of using qsort() to merge a sort margin into the sorted array was OK. I
              had to explain here why using a merge was better.

              BTW, I used my own variation on merge, which used excessive binary
              searches to deduce the place to skip. I used it to reduce comparisons
              concerning the fact that the sort margin was substantially smaller that
              the main array.

              > > I have reached this conclusion a long time ago - %-). No seriously,
              > > right now I'm trying to finish my degree with as little obstacles and
              > > unexpected things as possible. I'm having some fun in the process, but
              > > I had much more when I worked.
              >
              > It's hard to think you're having "fun" in the technion, when you're
              > buckling under the load of exercises and tests. Try to think about it
              > in perspective, e.g., in the summer think about your previous semester.
              >

              I'd like to think of the present day as an enjoying day. That what
              happened when I worked.

              > > IMO, even the best schools are literally bad. I'll wager a million
              > > dollars that most of the students of MIT, Harvard, Princeton,
              > > Berkeley, Standford, etc. hate the guts of their respective
              > > universities. And no - they are _not_ better than the Technion in this
              > > respect or in most other respects (except maybe the wider selection of
              > > courses as I've heard).
              >
              > Maybe it's because many students come to study a subject they feel "forced"
              > to study (to get ahead in the job market, etc.) and not people who really
              > chose what they study. Luckily, in the math department this wasn't a big
              > issue - nobody goes to study math for the "big bucks" or for being envied
              > by his friends :)
              >

              In that case, maybe I came to the Technion, partially, for the wrong
              reason. I believed I would eventually be hampered if I did not have a
              degree - a fact that is relatively true. I also believed studying could be
              fun.

              > > Linear Algebra is very useful. At the moment I'm struggling with
              > > Thermodynamics (among other subjects), which is also a pre-requisite
              > > for nothing in EE studies. While I understand the motivation to teach
              > > such courses which are not directly related to the material at hand, I
              > > think students will never be motivated enough to study them well for
              > > the same reason. The same argument can be made against humanist
              > > courses , so it's a rather dangerous direction, but I was just
              > > mentioning a fact.
              >
              > It's not a fact. I did a whole degree(!) in math, even though I knew I
              > was probably going to work in computers. When you're not only after making
              > more money in less time, learning something interesting can be a goal
              > on its own - it doesn't need to be directly applicable to your job.
              > And who knows, maybe in 30 years you will want to change your career
              > path? Maybe your knowledge in thermodynamics will come in handy if
              > the matter-copying-machine industry picks up? :)
              >

              I'd rather cross the Thermodynamics bridge when and if I needs it. My
              situation is a bit more complex than someone who is in the Technion just
              for the money. I have some fantasies about me joining the academe at least
              for a brief time. However, at the moment I don't want to let the previous
              4 1/2 years to go to waste, so I'm just going to finish the degree.

              There are a lot of things which I want to do and just don't have time to:
              work on lectures (the FCS one and various other Haifux ones), work on a
              Freecell Solver book (he he), work on my writings, on intersting OSS, etc.
              One of the good things about having a job is that you have a free weekend.
              Academic studies on the other hand, occupies your time 24*7. Well, almost,
              but you still don't have a free weekend.

              BTW, my friend noticed that students who graduated from the Technion and
              worked in the industry, eventually speak of the Technion much more
              fondly, that those undergrad students who are actually in it. I suppose
              there is a similar situation in other universities.

              Regards,

              Shlomi Fish

              > Ooof, this email was long.... :)
              >
              > --
              > Nadav Har'El | Saturday, Dec 8 2001, 24 Kislev 5762
              > nyh@... |-----------------------------------------
              > Phone: +972-53-245868, ICQ 13349191 |Open your arms to change, but don't let
              > http://nadav.harel.org.il |go of your values.
              >
              > To unsubscribe from this group, send an email to:
              > hackers-il-unsubscribe@egroups.com
              >
              >
              >
              > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
              >
              >



              ----------------------------------------------------------------------
              Shlomi Fish shlomif@...
              Home Page: http://t2.technion.ac.il/~shlomif/
              Home E-mail: shlomif@...

              If:
              1. A is A
              2. A is not not-A
              does it imply that
              1. B is B
              2. B is not not-B
            • Shlomi Fish
              If you wish I can send you (in person) the reply of the lecturer. It may give some context to my quote and may prove intersting otherwise. He claimed that part
              Message 6 of 18 , Dec 9, 2001
                If you wish I can send you (in person) the reply of the lecturer. It may
                give some context to my quote and may prove intersting otherwise.

                He claimed that part of the reason that I received a low grade was due to
                incomplete and not well-formed questions that I gave. My feeling during
                the test was that I did not have enough time to answer everything
                thoroughly, so I tried to answer as much as the test as possible, while
                purposely neglecting the quality. I think that if I had thought about
                everything longer, I would not have been able to fare much better.

                This is yet another reason why I hate such exams.

                Regards,

                Shlomi Fish



                ----------------------------------------------------------------------
                Shlomi Fish shlomif@...
                Home Page: http://t2.technion.ac.il/~shlomif/
                Home E-mail: shlomif@...

                If:
                1. A is A
                2. A is not not-A
                does it imply that
                1. B is B
                2. B is not not-B
              • guy keren
                ... the technion does not teach material . it exercisez one mind, and teaches (or doesn t) methodology. if one person already has a good, working methodology
                Message 7 of 18 , Dec 9, 2001
                  On Sat, 8 Dec 2001, Shlomi Fish wrote:

                  > I'm not sure how much of the material learned in the Technion can prove
                  > useful in real-life. Those who prove to be good engineers usually can fill
                  > the gaps by themselves.

                  the technion does not teach 'material'. it exercisez one mind, and teaches
                  (or doesn't) methodology. if one person already has a good, working
                  methodology - one can skip the technion. if one doesn't have this
                  methodology - one benefits from studying there.

                  i learned mthodology in the technion - and learned most material on my own
                  (including my 'reinvent the wheel period' items) - thus, i have to either
                  think i'm not a good programmer, or to refute your claim - i needed the
                  technion to learn how to think. if you already have the methodology, then
                  you've got a head start, and the technion is not for you.

                  > I doubt if a lot of the commercial software employed today was re-factored
                  > as much as Freecell Solver, or employed such a large number of interesting
                  > algorithms or techniques as I implemented in them. Guy Keren, at least,
                  > who was an Atuday, and now is an IT worker, told me it's been years since
                  > he looked at real algorithms, after I told him aboutone of the things I
                  > implemented in FCS. That was before he and Muli started working on the
                  > System Call Tracker. (Guy, please correct me if I mis-quoted you).

                  the quote is more or less true. on the other hand - it seems that i do use
                  and device various algorithms - i just don't think of them as algorithms.
                  i think of them as 'systems', and i am more into 'system design'. i do use
                  my knowledge of data structures and algorithms when i _use_ existing data
                  structures, to use them in a more optimized manner, and know what to
                  expect and what not to expect of them.

                  but from the 'graph algorithms' course i got something more important then
                  material (i.e. a list of algorithms) - i learned, in that specific course,
                  how to think and design. and the specific alogrithms i learned there are
                  not as important, as the methodology i learned there (and i've no idea how
                  i learned this - most students didn't - and for me, it wasn't a process -
                  it was an enlightenment that was explained to me in a single moment
                  down the corridor from mayer to fishbach.

                  --
                  guy

                  "For world domination - press 1,
                  or dial 0, and please hold, for the creator." -- nob o. dy
                • guy keren
                  ... i m not sure how large are the programs (read: systems) you programmed so far, or how hard to debug they were - but i ve ran into quite a few cases where a
                  Message 8 of 18 , Dec 9, 2001
                    On Sun, 9 Dec 2001, Shlomi Fish wrote:

                    > That's not what I do. What I try to do is to use a debugger to find
                    > exactly when it happens, then realize why it happened, and then fix it or
                    > figure out a better algorithm for the program.

                    i'm not sure how large are the programs (read: systems) you programmed so
                    far, or how hard to debug they were - but i've ran into quite a few cases
                    where a debugger will not show you where the bug is - unless you
                    single-step through the entire program, in varius different routes.

                    just a few examples:

                    when you use multiple threads or processes, some bugs got to do with
                    timings - if you run it via the debugger, the timing changes , often
                    hiding the bug.

                    in the case of the bug discussed on linux-il a week or so ago - the bug
                    was revealed in a real run, but did not occur under the debugger, due to
                    differences in memory allocation.

                    when you debug a large multi-process (possibly multi-host) system -
                    setting up the debuggers to attach to all processes, and keeping a window
                    for each, makes using a debugger hard - often harder then re-reading the
                    code.

                    when the program is large and does a lot of things - you have a long path
                    to single-step with the debugger. thus - you use 'binary search'
                    algorithms to isolate the location of the bug.

                    my imagination stops here. i hope its now clear that sometimes a debugger
                    is not good enough, and thus one should practice other forms of debugging
                    - debugging by reading the code and 'proving' it to be correct. debugging
                    by doing dry-runs (when its hard to simulate the run's input with a
                    debugger). debugging by thinking about the algorithm (useful to find
                    end-cases you've missed, logical race conditions, etc) and there is
                    debugging by sleeping it over - if you think about the problem in your
                    head while lying in bed, jut before falling asleep, there is a good chance
                    you'll come up with either the solution, or an idea of 1-2 more things to
                    check for, when you wake up. i guess there are other debugging techniques.
                    there is no course about debugging software - time we set up one, or at
                    least a debugging tutorial.

                    > Actually, in this particular case I was told by my friend that Quick-Sort
                    > had a smaller complexity than Bubble-Sort (after I came up with insertion
                    > sort once).

                    as i remember, this is a false assesment. q-sort is actually O(N*N),
                    because of the complexity of the 'split' function (i.e. deciding which
                    item to split around). however, on real-life inputs, it was shown to work
                    better then many O(N*log(N)) algorithms, because in real-life cases, the
                    data is not fully un-ordered.

                    > There are a lot of things which I want to do and just don't have time to:
                    > work on lectures (the FCS one and various other Haifux ones), work on a
                    > Freecell Solver book (he he), work on my writings, on intersting OSS, etc.
                    > One of the good things about having a job is that you have a free weekend.
                    > Academic studies on the other hand, occupies your time 24*7. Well, almost,
                    > but you still don't have a free weekend.

                    then make up your mind of not letting it consume that much of your time.
                    in most cases, the effort requried to get a given grade is not linearly
                    proportional to the grade. reducing your efforts by 10% won't reduce your
                    grade by 10%. actually, i demonstrated that there is often no correlation
                    at all between the ammount of effort invested and the grade - it quite
                    depends on the person involved. hmm. so, perhaps this is not applicable to
                    you.

                    > BTW, my friend noticed that students who graduated from the Technion and
                    > worked in the industry, eventually speak of the Technion much more
                    > fondly, that those undergrad students who are actually in it. I suppose
                    > there is a similar situation in other universities.

                    its the same as people who leave the army, and when they talk about their
                    crappy service, they speak of it fondly. we just learn to repress the bad
                    experiences we had, and isolate the good parts. look at the people who
                    didn't do that (yes, they exist all around us) - they become bitter, and
                    that affects their lives, often (but not always) in bad ways.

                    --
                    guy

                    "For world domination - press 1,
                    or dial 0, and please hold, for the creator." -- nob o. dy
                  • guy keren
                    ... please don t directly associate learning for purpose with having an exam at the end of the tunnel ;) an exam is but one possible purpose, and for some
                    Message 9 of 18 , Dec 9, 2001
                      On 8 Dec 2001, Oleg Goldshmidt wrote:

                      > While there is much sense to it, I'd like to add another wrinkle: most
                      > experienced teachers would probably say, on empirical basis, that the
                      > difference between a student who attended a courseand passed a
                      > well-designed exam and a student who attended a course without an exam
                      > is greater than the difference between someone who attended a course
                      > and someone who read a good book or two on the subject at home. That
                      > has implications for "learning for pleasure" as well as for "learning
                      > for purpose".

                      please don't directly associate "learning for purpose" with "having an
                      exam at the end of the tunnel" ;) an exam is but one possible purpose,
                      and for some people, its does not even serve as a purpose. one can have
                      other purposes (read: chose other purposes): i learn something in
                      programming in order to write a program i wanted to write. i learn about
                      car engines, so i could build my mini-model car. i learn about deseases
                      and then practice that info while having a trip in a not-so-higienic land.
                      i learn how to use posix threads in roder to write a posix threads
                      tutorial. etc.

                      --
                      guy

                      "For world domination - press 1,
                      or dial 0, and please hold, for the creator." -- nob o. dy

                      p.s. only one of the exmples shown above is real. the rest might be real
                      for other people.
                    • Oleg Goldshmidt
                      ... ... I didn t. My point was that that one learns better if one passes exams in addition to attending lectures and reading books.
                      Message 10 of 18 , Dec 10, 2001
                        guy keren <choo@...> writes:

                        > On 8 Dec 2001, Oleg Goldshmidt wrote:

                        <left for context>

                        >
                        > > While there is much sense to it, I'd like to add another wrinkle: most
                        > > experienced teachers would probably say, on empirical basis, that the
                        > > difference between a student who attended a courseand passed a
                        > > well-designed exam and a student who attended a course without an exam
                        > > is greater than the difference between someone who attended a course
                        > > and someone who read a good book or two on the subject at home. That
                        > > has implications for "learning for pleasure" as well as for "learning
                        > > for purpose".
                        >
                        > please don't directly associate "learning for purpose" with "having an
                        > exam at the end of the tunnel"

                        I didn't. My point was that that one learns better if one passes
                        exams in addition to attending lectures and reading books. "Learning
                        for purpose" was used by Shlomi, I believe, to indicate learning a
                        profession in order to earn a living later, or similar. I adopted the
                        term to follow the thread. Never was passing an exam construed as the
                        purpose of learning - not in my mind, surely.

                        --
                        Oleg Goldshmidt | ogoldshmidt@...
                        "If it ain't broken, it has not got enough features yet."
                      • Oleg Goldshmidt
                        ... That was not the distinction. I meant that from the point of view of learning a subject successfully it is considered (and I think there is a lot of truth
                        Message 11 of 18 , Dec 10, 2001
                          Omer Zak <omerz@...> writes:

                          > Can you tell us what difference do you (or do experienced teachers) see
                          > between the those three kinds of students (student-for-a-grade,
                          > student-for-a-pleasure and autodidect)?

                          That was not the distinction. I meant that from the point of view of
                          learning a subject successfully it is considered (and I think there is
                          a lot of truth to it, based on my own experience) important for a
                          student to study for an exam systematically and in a disciplined and
                          focused manner in addition to listening to lectures and reading books
                          on the subject.

                          Note that obviously one can be very systematic, disciplined, and
                          focused outside of a context of an exam. Especially if one tries to
                          learn something directly applicable to one's work etc. However, first,
                          I think it's fair to say that most people will find a formal framework
                          such as an exam, where one's achievements are judged independently,
                          very helpful in terms of focus and discipline. Secondly, students
                          (that's the context here) rarely are in a situation where they study
                          something that is immediately applicable outside of the curriculum
                          itself. Thirdly, the note above about direct applicability to one's
                          work often has elements of examination in it, in forms of the next
                          salary review, promotion, etc - just somewhat more abstracted than the
                          straightforward lectures/books/exercises/labs -> exam of a university.

                          In terms of student-for-a-grade vs. student-for-a-pleasure I do think
                          that normally a grade (at least a good one) is perceived - justifiably
                          - as value added, because it is assumed that to prepare well for an
                          exam a "normal" student applies extra time and effort to "integrate"
                          (using Shlomi's term) the material of the course. Regardless of what
                          one thinks of one's ability to do just that without an exam looming,
                          this works for most people. It's a matter of a) formal responsibility,
                          b) verification.

                          Can you write excellent code without the need to satisfy a customer or
                          testing with an independent QA department? I am sure you can. Does the
                          thought of going out of business if the customer is not satisfied help
                          produce good products? Normally, it does. Does independent testing
                          help quality? Please don't argue - I won't believe you are serious,
                          anyway.

                          Do you have enough discipline to jog and ride your very own exercise
                          bike every morning? Yes? Great. Most people who exercise do find the
                          discipline involved in going to a gym - and the feedback from a
                          trainer (that feedback is not so different from a grade) - helpful in
                          maintaining fitness.

                          Same stories, different contexts.

                          --
                          Oleg Goldshmidt | ogoldshmidt@...
                          "If it ain't broken, it has not got enough features yet."
                        Your message has been successfully submitted and would be delivered to recipients shortly.