lectures about "programming methodology"

Discussion in 'Java' started by Stefan Ram, May 5, 2013.

  1. Stefan Ram

    Stefan Ram Guest

    I decided to watch lecture videos from the Stanford
    University about »programming methodology«, which actually
    teach Java.

    I was somewhat surprised that the lectures of the renowned
    Stanford university do not have such a high overall
    quality at all.

    For example, the lecturer (http://en.wikipedia.org/wiki/Meh
    r*n_S*h*mi, where *=a) wrote on the blackboard

    »off by one error«,

    but what he meant clearly was an

    »off-by-one error«.

    . Regarding Java, he explained the import statement as if
    this was required to make a class »available«, while it does
    nothing more than to provide a simple name for a class
    instead of its fully qualified name. (To make a class
    available, the »-cp« option of java(c) is used.)

    He also explained that Java programs were linked by creating
    a JAR archive for them. (While in fact the creation of a JAR
    archive is not necessary and the linking [that is, replacing
    symbolic references by their referents] takes place when the
    classes are loaded by the JVM, independently of whether they
    come from class files or JAR files.)

    But I have watched only the first lectures so far.
    Stefan Ram, May 5, 2013
    #1
    1. Advertising

  2. Stefan Ram

    Arne Vajhøj Guest

    On 5/5/2013 2:37 PM, Stefan Ram wrote:
    > I decided to watch lecture videos from the Stanford
    > University about »programming methodology«, which actually
    > teach Java.
    >
    > I was somewhat surprised that the lectures of the renowned
    > Stanford university do not have such a high overall
    > quality at all.
    >
    > For example, the lecturer (http://en.wikipedia.org/wiki/Meh
    > r*n_S*h*mi, where *=a) wrote on the blackboard
    >
    > »off by one error«,
    >
    > but what he meant clearly was an
    >
    > »off-by-one error«.


    That is just to keep Lew away.

    :)

    > . Regarding Java, he explained the import statement as if
    > this was required to make a class »available«, while it does
    > nothing more than to provide a simple name for a class
    > instead of its fully qualified name. (To make a class
    > available, the »-cp« option of java(c) is used.)
    >
    > He also explained that Java programs were linked by creating
    > a JAR archive for them. (While in fact the creation of a JAR
    > archive is not necessary and the linking [that is, replacing
    > symbolic references by their referents] takes place when the
    > classes are loaded by the JVM, independently of whether they
    > come from class files or JAR files.)


    First, even the best universities can have some teachers that are
    not so good.

    Second, I believe that Harvard is more known for Law, Medicine,
    Business, Economics than for IT.

    Third, some say that the actual education (at bachelor and
    masters level - PhD level may be different) is not that much
    better at the famous universities than at lesser know
    universities and that the benefits of joining is more
    about the prestige and the connections one get. As I have never
    seen the inside of an American university, then I can not
    say if it is true or not.

    Arne
    Arne Vajhøj, May 6, 2013
    #2
    1. Advertising

  3. On 05/05/2013 08:48 PM, Arne Vajhøj wrote:
    [ SNIP ]

    >
    > Third, some say that the actual education (at bachelor and
    > masters level - PhD level may be different) is not that much
    > better at the famous universities than at lesser know
    > universities and that the benefits of joining is more
    > about the prestige and the connections one get. As I have never
    > seen the inside of an American university, then I can not
    > say if it is true or not.
    >
    > Arne


    That's pretty much true almost anywhere. It obviously depends on the
    specific discipline, whether the eventual focus is research as a career
    or practical application, and so forth.

    But for IT specifically, for preparing students for real work, I've seen
    two-year vocational/business schools or community colleges often do a
    better job of providing some programming language training and a dollop
    of useful software engineering than 4-year CS programs at name universities.

    I don't know why anyone would even expect a programming language course,
    online or otherwise, offered by any school and typically taught by a
    faculty member or TA with less time in real-world programming experience
    than hundreds of thousands of professional programmers have, to either
    be particularly noteworthy or to be better than the dozens of good or
    excellent tutorials that have been on the Web for years.

    I think it's pointless to pay $$$ to learn programming languages. What
    *is* a good idea to pay money for is some courses in software
    engineering, but CS programs don't often offer quality courses in that.
    Failing that option, again, no shortage of quality books on the
    subject...and simply OJT.

    If I were aspiring to a career in IT, which does benefit for HR reasons
    if nothing else from a bachelor's degree minimum, I'd take a quality
    degree in almost anything except CS.

    AHS
    Arved Sandstrom, May 6, 2013
    #3
  4. Stefan Ram

    Joerg Meier Guest

    On Mon, 06 May 2013 06:07:34 -0300, Arved Sandstrom wrote:

    > But for IT specifically, for preparing students for real work, I've seen
    > two-year vocational/business schools or community colleges often do a
    > better job of providing some programming language training and a dollop
    > of useful software engineering than 4-year CS programs at name universities.


    > I don't know why anyone would even expect a programming language course,
    > online or otherwise, offered by any school and typically taught by a
    > faculty member or TA with less time in real-world programming experience
    > than hundreds of thousands of professional programmers have, to either
    > be particularly noteworthy or to be better than the dozens of good or
    > excellent tutorials that have been on the Web for years.


    > I think it's pointless to pay $$$ to learn programming languages. What
    > *is* a good idea to pay money for is some courses in software
    > engineering, but CS programs don't often offer quality courses in that.
    > Failing that option, again, no shortage of quality books on the
    > subject...and simply OJT.


    Let's not forget that good teaching is about more than JUST the syllabus,
    and the best teacher is unlikely to be the one with an autistic level to
    detail, and while it would certainly be desireable to have zero mistakes in
    the entire course, I would definitely not put it as the #1 priority.

    Frankly, if a student trusts that their teacher is the final authority on
    the subject matter, they probably aren't ever going to be on a level where
    a 100% error free course would make a difference in the first place.

    As grating as a teacher making a mistake may be to an outside observer,
    what influences whether the students will become adept at the subject
    matter is usually a lot less easily defineable.

    For example, something I would rate infinitely above "Teacher never makes
    any mistakes" would be "Teacher responds well to factual criticism and
    repeated my correction in the next lecture".

    That being said, I only found the error about linking to be substantial
    enough to be worth mentioned at all.

    Liebe Gruesse,
    Joerg

    --
    Ich lese meine Emails nicht, replies to Email bleiben also leider
    ungelesen.
    Joerg Meier, May 6, 2013
    #4
  5. Stefan Ram

    Stefan Ram Guest

    -berlin.de (Stefan Ram) writes:
    >But I have watched only the first lectures so far.


    I just watched another lecture and noticed the following:

    He said something to the effect that the type »int« was there
    to store an int value. I would say that an int /variable/ is
    there to store a value, while the /type/ int can also be the
    type of an expression (like »2«) that is not necessarily
    stored anywhere at run-time.

    He said that a variable had a name. This is not always true
    in Java (he referred to Java, since he is exclusively using
    Java). In Java there also are anonymous variables, like the
    variables of an array.

    He said that the remainder operator »%« can only be applied
    to integers. This also is not true in Java IIRC.

    I am actually watching this to learn English pronunciation
    of programming terms (otherwise, I just would read a text),
    and what I /did/ like was that for the word »char« he gave
    the pronunciations of /kA&/ and /kæ&/ (where A is the open
    back unrounded vowel and & is the schwar), which I also use
    (/kA&/). Bjarne Stroustrup says it was /tSA&/ (where tS is
    the voiceless palato-alveolar affricate), well, maybe that
    is valid for C++ programmers ...
    Stefan Ram, May 6, 2013
    #5
  6. Stefan Ram

    Sven Köhler Guest

    On 05/06/2013 03:23 PM, Stefan Ram wrote:
    > He said that a variable had a name. This is not always true
    > in Java (he referred to Java, since he is exclusively using
    > Java). In Java there also are anonymous variables, like the
    > variables of an array.


    I know that you are particular precise about thing, but I'm pretty sure,
    he will teach that arrays have elements. And he pretty much never
    mention the term "anonymous variable" to describe these elements.
    To be honest, the notion "anonymous vairable" is really not necessary to
    understand how arrays work - and to be honest, your posting is the first
    time I read that term.

    > He said that the remainder operator »%« can only be applied
    > to integers. This also is not true in Java IIRC.


    :) This seems to be a popular misconception. A floating point modulo
    operation doesn't seem to feel very "natural" to many people. When I
    mention it, they usually ask me for the definition.

    > I am actually watching this to learn English pronunciation
    > of programming terms (otherwise, I just would read a text),
    > and what I /did/ like was that for the word »char« he gave
    > the pronunciations of /kA&/ and /kæ&/ (where A is the open
    > back unrounded vowel and & is the schwar), which I also use
    > (/kA&/). Bjarne Stroustrup says it was /tSA&/ (where tS is
    > the voiceless palato-alveolar affricate), well, maybe that
    > is valid for C++ programmers ...


    char is short for character, isn't it?


    Regards,
    Sven
    Sven Köhler, May 6, 2013
    #6
  7. Stefan Ram

    Stefan Ram Guest

    Sven Köhler <> writes:
    >To be honest, the notion "anonymous vairable" is really not necessary to
    >understand how arrays work - and to be honest, your posting is the first
    >time I read that term.


    The JLS, while being technical, actually sometimes is quite
    easy to read:

    One can open the table of contents, spot chapter »10. Arrays«,
    and immediately read near the very beginning of that chapter:

    »An array object contains a number of variables.« (JLS7 10)

    The express »new int[ 3 ]« has its value an array of three
    variables, but neither this object nor those variables have
    a name.

    >I know that you are particular precise about thing, but I'm pretty sure,
    >he will teach that arrays have elements.


    »These variables are called the components of the array.« (JLS7 10)

    >char is short for character, isn't it?


    Yes. For »charcoal«, »to char« or »char« meaning a fish
    or tea or some such I too would use another pronunciaton.
    Stefan Ram, May 6, 2013
    #7
  8. Stefan Ram

    Stefan Ram Guest

    Supersedes: <-berlin.de>
    [edited lines marked with »|«]

    Sven Köhler <> writes:
    >To be honest, the notion "anonymous vairable" is really not necessary to
    >understand how arrays work - and to be honest, your posting is the first
    >time I read that term.


    The JLS, while being technical, actually sometimes is quite
    easy to read:

    One can open the table of contents, spot chapter »10. Arrays«,
    and immediately read near the very beginning of that chapter:

    »An array object contains a number of variables.« (JLS7 10)

    »The variables contained in an array have no names« (JLS7 10) |

    The expression »new int[ 3 ]« has as its value an array of three |
    variables, but neither this object nor those variables have
    a name.

    >I know that you are particular precise about thing, but I'm pretty sure,
    >he will teach that arrays have elements.


    »These variables are called the components of the array.« (JLS7 10)

    >char is short for character, isn't it?


    Yes. For »charcoal«, »to char« or »char« meaning a fish
    or tea or some such I too would use another pronunciaton.
    Stefan Ram, May 6, 2013
    #8
  9. Stefan Ram

    Sven Köhler Guest

    On 05/06/2013 05:18 PM, Stefan Ram wrote:
    > Sven Köhler <> writes:
    >> To be honest, the notion "anonymous vairable" is really not necessary to
    >> understand how arrays work - and to be honest, your posting is the first
    >> time I read that term.

    >
    > The JLS, while being technical, actually sometimes is quite
    > easy to read:


    Subtext?

    > One can open the table of contents, spot chapter »10. Arrays«,
    > and immediately read near the very beginning of that chapter:
    >
    > »An array object contains a number of variables.« (JLS7 10)
    >
    > »The variables contained in an array have no names« (JLS7 10) |
    >
    > The expression »new int[ 3 ]« has as its value an array of three |
    > variables, but neither this object nor those variables have
    > a name.


    So apparently I haven't read that part of the JLS. And neither has the
    lecturer. And this might me the shock: most people and most lecturers
    haven't read the JLS. At least to my experience.

    >> I know that you are particular precise about thing, but I'm pretty sure,
    >> he will teach that arrays have elements.

    >
    > »These variables are called the components of the array.« (JLS7 10)


    Well ...
    So what did the lecturer call them?


    Regards,
    SVen
    Sven Köhler, May 6, 2013
    #9
  10. Stefan Ram

    Stefan Ram Guest

    Sven Köhler <> writes:
    >>The JLS, while being technical, actually sometimes is quite
    >>easy to read:

    >Subtext?


    The precondition for my statement was that some people
    believe that specifications of programming languages
    always are hard (difficult) to read (understand).

    >And this might me the shock: most people and most lecturers
    >haven't read the JLS. At least to my experience.


    >>»These variables are called the components of the array.« (JLS7 10)

    >So what did the lecturer call them?


    I do not have the time immediately to seek through the video,
    but when I learn about this, I will get back to this thread.
    First now, I need time to recover from the shock.
    Stefan Ram, May 6, 2013
    #10
  11. On 5/6/2013 7:23 AM, Stefan Ram wrote:
    > -berlin.de (Stefan Ram) writes:
    >> But I have watched only the first lectures so far.

    >
    > I just watched another lecture and noticed the following:


    Keep in mind that this course is probably for people who have never
    heard of a programming language before. Excessive pedantry may serve to
    confuse rather than elucidate, as I have found when TA'ing
    introductory-level computer science courses.

    > He said that a variable had a name. This is not always true
    > in Java (he referred to Java, since he is exclusively using
    > Java). In Java there also are anonymous variables, like the
    > variables of an array.


    In general programming language concepts, a "variable" is generally a
    user-declared construct with a name, so "anonymous variables" are
    usually a contradiction in terminology. I did go back to the JLS and
    look it up; what it calls "variables" are what C would call "lvalues" or
    are more generally called memory locations.

    > I am actually watching this to learn English pronunciation
    > of programming terms (otherwise, I just would read a text),
    > and what I /did/ like was that for the word »char« he gave
    > the pronunciations of /kA&/ and /kæ&/ (where A is the open
    > back unrounded vowel and & is the schwar), which I also use
    > (/kA&/). Bjarne Stroustrup says it was /tSA&/ (where tS is
    > the voiceless palato-alveolar affricate), well, maybe that
    > is valid for C++ programmers ...


    There is no universal agreed-upon pronunciation of "char." The common
    pronunciations are "kair" (rhymes with air, like the beginning of
    character) and "char" (like the beginning of charcoal).


    --
    Beware of bugs in the above code; I have only proved it correct, not
    tried it. -- Donald E. Knuth
    Joshua Cranmer ðŸ§, May 6, 2013
    #11
  12. Stefan Ram

    Stefan Ram Guest

    =?UTF-8?B?Sm9zaHVhIENyYW5tZXIg8J+Qpw==?= <> writes:
    >I did go back to the JLS and
    >look it up; what it calls "variables" are what C would call "lvalues" or
    >are more generally called memory locations.


    The C specification says:

    »An lvalue is an expression« in 6.3.2.1p1,

    so an lvalue is a part of the /source code/.

    What you mean is called »object« in C:

    »object: region of data storage in the execution environment,
    the contents of which can represent values« in 3.15p1.
    Stefan Ram, May 6, 2013
    #12
  13. Stefan Ram

    Lars Enderin Guest

    You have a strange extra character in your From header:

    From: =?UTF-8?B?Sm9zaHVhIENyYW5tZXIg8J+Qpw==?=
    <>

    It shows up as an unknown character below, but as a square containing
    hex code 01F427 in the header shown with the post.

    2013-05-06 17:50, Joshua Cranmer 🧠skrev:

    --
    Lars Enderin
    Lars Enderin, May 6, 2013
    #13
  14. On 5/6/2013 11:59 AM, Lars Enderin wrote:
    > You have a strange extra character in your From header:
    >
    > From: =?UTF-8?B?Sm9zaHVhIENyYW5tZXIg8J+Qpw==?=
    > <>
    >
    > It shows up as an unknown character below, but as a square containing
    > hex code 01F427 in the header shown with the post.


    It is intended to be the Unicode character representing a penguin. I've
    taken to including such things to test the resilience of software to
    non-ASCII and, in particular, non-BMP characters.

    --
    Beware of bugs in the above code; I have only proved it correct, not
    tried it. -- Donald E. Knuth
    Joshua Cranmer ðŸ§, May 6, 2013
    #14
  15. Stefan Ram

    Lew Guest

    Arne Vajhøj wrote:
    > Stefan Ram wrote:
    >> I decided to watch lecture videos from the Stanford
    >> University about �programming methodology�, which actually
    >> teach Java.

    >
    >> I was somewhat surprised that the lectures of the renowned
    >> Stanford university do not have such a high overall
    >> quality at all.
    >>
    >> For example, the lecturer (http://en.wikipedia.org/wiki/Meh
    >> r*n_S*h*mi, where *=a) wrote on the blackboard
    >>
    >> �off by one error�,
    >>
    >> but what he meant clearly was an
    >>
    >> �off-by-one error�.

    >
    >That is just to keep Lew away.


    Speaking correct information is never a bad idea.

    --
    Lew
    Lew, May 6, 2013
    #15
  16. Stefan Ram

    Eric Sosman Guest

    On 5/5/2013 7:48 PM, Arne Vajhøj wrote:
    > On 5/5/2013 2:37 PM, Stefan Ram wrote:
    >> I decided to watch lecture videos from the Stanford
    >> University[...]

    >
    > Second, I believe that Harvard is more known for Law, Medicine,
    > Business, Economics than for IT. [...]


    Hey, Arne: What school did you attend, and what's its
    reputation for geography?

    ;-)

    --
    Eric Sosman
    d
    Eric Sosman, May 6, 2013
    #16
  17. Stefan Ram

    Stefan Ram Guest

    -berlin.de (Stefan Ram) writes:
    >-berlin.de (Stefan Ram) writes:
    >>But I have watched only the first lectures so far.

    >I just watched another lecture and noticed the following:


    Well, I hope you are not annoyed yet. But I just spotted the
    first major software-methodology error! He explained the
    scope of a variable as the lifetime of the variable. It was
    even displayed as text: »Scope: lifetime of variable«. This
    really hurts!

    For those of you, who have not yet learned the distinction
    (untested code ahead), after:

    class Object
    { /* begin of scope of i */
    final int i; public Object( final int i ){ this.i = i; }
    /* end of scope of i */ }

    and then in »main«:

    { { final Object o = new Object( 4 );
    java.lang.System.out.println( o ); }

    { final Object o = new Object( 7 );
    java.lang.System.out.println( o ); }}

    , after execution, there were two instances of »i« (with
    values 4 and 7) that had the same scope (as identifiers),
    but different lifetimes (as variables), and two instances of
    »o« which indeed have different scopes (as identifiers).

    A scope is a region of the source text. Identifiers
    have a scope.

    A lifetime is a period of time during the execution
    of a program. Variables and objects have lifetimes.

    This has no special relation with Java, this is
    software engineering (or »programming methodology«).
    Stefan Ram, May 6, 2013
    #17
  18. Stefan Ram

    Arne Vajhøj Guest

    On 5/6/2013 8:23 AM, Stefan Ram wrote:
    > -berlin.de (Stefan Ram) writes:
    >> But I have watched only the first lectures so far.

    >
    > I just watched another lecture and noticed the following:
    >
    > He said something to the effect that the type »int« was there
    > to store an int value. I would say that an int /variable/ is
    > there to store a value, while the /type/ int can also be the
    > type of an expression (like »2«) that is not necessarily
    > stored anywhere at run-time.
    >
    > He said that a variable had a name. This is not always true
    > in Java (he referred to Java, since he is exclusively using
    > Java). In Java there also are anonymous variables, like the
    > variables of an array.
    >
    > He said that the remainder operator »%« can only be applied
    > to integers. This also is not true in Java IIRC.
    >
    > I am actually watching this to learn English pronunciation
    > of programming terms (otherwise, I just would read a text),
    > and what I /did/ like was that for the word »char« he gave
    > the pronunciations of /kA&/ and /kæ&/ (where A is the open
    > back unrounded vowel and & is the schwar), which I also use
    > (/kA&/). Bjarne Stroustrup says it was /tSA&/ (where tS is
    > the voiceless palato-alveolar affricate), well, maybe that
    > is valid for C++ programmers ...


    And?

    None of these items seems particular relevant for teachings
    students programming.

    Not at a high school in the middle of nowhere. And not at Harvard.

    Arne
    Arne Vajhøj, May 7, 2013
    #18
  19. Stefan Ram

    Arne Vajhøj Guest

    On 5/6/2013 3:42 PM, Eric Sosman wrote:
    > On 5/5/2013 7:48 PM, Arne Vajhøj wrote:
    >> On 5/5/2013 2:37 PM, Stefan Ram wrote:
    >>> I decided to watch lecture videos from the Stanford
    >>> University[...]

    >>
    >> Second, I believe that Harvard is more known for Law, Medicine,
    >> Business, Economics than for IT. [...]

    >
    > Hey, Arne: What school did you attend, and what's its
    > reputation for geography?


    Oh shit.

    That was about 3000 miles off.

    :-(

    Arne

    PS: They don't teach geography there at all, but I don't think I
    can use that as an excuse - I must take the blame for that one.
    Arne Vajhøj, May 7, 2013
    #19
  20. Stefan Ram

    Arne Vajhøj Guest

    On 5/6/2013 5:07 AM, Arved Sandstrom wrote:
    > On 05/05/2013 08:48 PM, Arne Vajhøj wrote:
    > [ SNIP ]
    >> Third, some say that the actual education (at bachelor and
    >> masters level - PhD level may be different) is not that much
    >> better at the famous universities than at lesser know
    >> universities and that the benefits of joining is more
    >> about the prestige and the connections one get. As I have never
    >> seen the inside of an American university, then I can not
    >> say if it is true or not.

    >
    > That's pretty much true almost anywhere. It obviously depends on the
    > specific discipline, whether the eventual focus is research as a career
    > or practical application, and so forth.
    >
    > But for IT specifically, for preparing students for real work, I've seen
    > two-year vocational/business schools or community colleges often do a
    > better job of providing some programming language training and a dollop
    > of useful software engineering than 4-year CS programs at name
    > universities.
    >
    > I don't know why anyone would even expect a programming language course,
    > online or otherwise, offered by any school and typically taught by a
    > faculty member or TA with less time in real-world programming experience
    > than hundreds of thousands of professional programmers have, to either
    > be particularly noteworthy or to be better than the dozens of good or
    > excellent tutorials that have been on the Web for years.


    They should not.

    Programming at a university should not be seen as a primary
    goal but as an illustration for the theory being taught.

    > I think it's pointless to pay $$$ to learn programming languages. What
    > *is* a good idea to pay money for is some courses in software
    > engineering, but CS programs don't often offer quality courses in that.
    > Failing that option, again, no shortage of quality books on the
    > subject...and simply OJT.


    Theory need to be backed by some practical usage for students to
    get the point.

    Java/C#/C++ is OK for that in my opinion. OCAML/Haskell/Eiffel may
    be more "in" in CS circles, but ...

    I am sure that it varies, but some universities do try to teach about
    software engineering.

    Maybe not as good as you may want, but it is a very difficult topic.

    And to make a quote from a movie: "Some lessons can't be taught. They
    must be lived to be understood.". I don't think even the best possible
    course can replace experience for something like that.

    > If I were aspiring to a career in IT, which does benefit for HR reasons
    > if nothing else from a bachelor's degree minimum, I'd take a quality
    > degree in almost anything except CS.


    I think CS is OK.

    The success of non-CS people with degrees in other natural sciences
    and engineering disciplines do show that the way of thinking is a very
    big part of what is gained.

    Arne
    Arne Vajhøj, May 7, 2013
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Frank
    Replies:
    3
    Views:
    583
    Bob Cain
    Nov 22, 2005
  2. AK444
    Replies:
    3
    Views:
    2,221
    Christian
    Apr 27, 2007
  3. AK444
    Replies:
    0
    Views:
    560
    AK444
    Apr 27, 2007
  4. AK444
    Replies:
    0
    Views:
    352
    AK444
    Apr 27, 2007
  5. AK444
    Replies:
    0
    Views:
    325
    AK444
    Apr 27, 2007
Loading...

Share This Page