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

Re: [hackers-il] Image Processing Course - End of Story (?)

Expand Messages
  • 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 1 of 18 , Dec 8, 2001
    • 0 Attachment
      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 2 of 18 , Dec 8, 2001
      • 0 Attachment
        --- 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 3 of 18 , Dec 8, 2001
        • 0 Attachment
          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 4 of 18 , Dec 8, 2001
          • 0 Attachment
            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 5 of 18 , Dec 9, 2001
            • 0 Attachment
              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 6 of 18 , Dec 9, 2001
              • 0 Attachment
                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 7 of 18 , Dec 9, 2001
                • 0 Attachment
                  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 8 of 18 , Dec 9, 2001
                  • 0 Attachment
                    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 9 of 18 , Dec 10, 2001
                    • 0 Attachment
                      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 10 of 18 , Dec 10, 2001
                      • 0 Attachment
                        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.