Stanford dumps Java as introductory class



  • @yamikuronue Yeah, it helps a bit. So 2 different colleges could have MAT 101 Calculus and MAT 102 Calculus (because the second has MAT 101 Algebra, but the first has Algebra under another number) and both would be pretty much equivalent?


  • FoxDev

    @khudzlin said in Stanford dumps Java as introductory class:

    Question: how the 101-style numbering mean exactly? I get that the first number is the year, but what's the difference between 101, 102, 103 and so on?

    well...... since you asked..... in my experience US colleges do it this way with very few exceptions

    Prefix: Identifies the school withing the college that the course comes from

    Hundreds Digit     Meaning
    1Introductory
    2Intermediate
    3Advanced
    4Gradutate
    5PostGraduate
    6Experimental

    Tens and ones digit: disambiguates the classes, with lower numbers indicating a lower level of difficulty or that the course is a prerequisite for a later course (i.e. 101 could be a prereq for 130, but 130 is almost never a prereq for 101) if the digits are xx instead of numbers indicates a course that was transferred from another college that has no direct equivalent in the current college. Sometimes it's also used to refer to the entire group of classes indicated by the hundreds digit, context is important in that case.


  • area_pol

    @magus said in Stanford dumps Java as introductory class:

    But why do you need to type car? Why are there parentheses? Why is the thing you're doing inside them?

    What car and parentheses?
    I would suggest ipython, a popular REPL for Python. When you write 1 + 1 it will give you 2, if you write x = 5 it will assign a variable.
    Of course that does not make learning everything easy, but I think a convenient environment to experiment helps a lot.
    I agree Python's design and implementation is lacking, but for learning basic concepts of programming it should be good.


  • Discourse touched me in a no-no place

    @asdf said in Stanford dumps Java as introductory class:

    As long as you're not claiming that Python is worse than JS.

    That's right up there with arguing about whether bubonic plague or ebola is worse.


  • Discourse touched me in a no-no place

    @raceprouk said in Stanford dumps Java as introductory class:

    I'd imagine the rest of the number is just there to make the codes unique.

    For our course codes, the first part is the year ID, the second part is the semester ID, and the third part is stuff to make each course unique. (And there's a zero'th part that says which school is giving the course. ;)) We have enough courses that we use more than three digits.


  • Discourse touched me in a no-no place

    @remi said in Stanford dumps Java as introductory class:

    In some part, this really sounds the same as all teachers complaining that students are getting worse every year, or old geezers ranting about the good old times.

    We had to go uphill both ways, crawling on our hands and knees through the snow! But we were thankful!

    Monty Python - Four Yorkshiremen – 03:14
    — Lizzie Steven


  • FoxDev

    @dkf said in Stanford dumps Java as introductory class:

    We have enough courses that we use more than three digits.

    I know: I'm a graduate of that university :P



  • @raceprouk said in Stanford dumps Java as introductory class:

    Some do, but some don't:

    So Python is well-designed because if you port it to an entirely different runtime than the one Python's developers created, it might not have GIL problems.

    I guess the argument here is "Python's designers are demonstrably far worse than the designers of .net and Java VM."

    Ok... fair enough I guess? Still not selling me on the language.


  • Winner of the 2016 Presidential Election

    @blakeyrat said in Stanford dumps Java as introductory class:

    Still not selling me on the language.

    What you're completely ignoring is that this thread is not about promoting the production use of a language, but about the suitability of a language for teaching freshmen how to program. Therefore, the multi-threading behavior of the default runtime is completely irrelevant. What matters most is the design of the language itself.

    Usually, I'd accept your and @masonwheeler's argument as a valid one, but in the context of this thread it couldn't be more irrelevant.



  • @asdf Ah but what you're completely ignoring is that I was not completely ignoring that, I just don't care and didn't bother restating it. Don't presume you can look into my mind. Lack of telepathy works both ways.

    I actually think Python is probably not-terrible for teaching programming, but that doesn't mean it's not a terrible language for general software development. The instant students see "UrlLib4: We Fucked Up The First 3 Times" they're going to lose all faith in this industry forever, as they should because everything about software development is garbage.

    But if the instructor provides a small selection of non-terrible libraries (assuming such things even exist for Python; they probably do not), it might work.

    Note that JS isn't any better; its libraries are ALSO complete garbage.


  • I survived the hour long Uno hand

    @khudzlin said in Stanford dumps Java as introductory class:

    So 2 different colleges could have MAT 101 Calculus and MAT 102 Calculus (because the second has MAT 101 Algebra, but the first has Algebra under another number) and both would be pretty much equivalent?

    💯


  • FoxDev

    @blakeyrat The design of a language and the implementation of a language are distinct issues. It's perfectly possible to have a well-designed language implemented badly, just as you can have a badly-designed language implemented well.

    The GIL is a feature of the implementation, not of the language.

    Let's play a game of hypotheticals:
    Let's say someone implemented the .NET Framework with a GIL. Would that make C# a badly-designed language?


  • ♿ (Parody)

    @blakeyrat said in Stanford dumps Java as introductory class:

    Ah but what you're completely ignoring is that I was not completely ignoring that, I just don't care and didn't bother restating it. Don't presume you can look into my mind. Lack of telepathy works both ways.

    By not addressing it in your post you were ignoring it in your communications with the outside world. Just admit that you weren't as clear as you could have been and move on instead of scolding people for your shortcomings.



  • @boomzilla Oh good Boomzilla's weighed in! The person I respect most!

    It's not an issue of me "not being clear", I just wasn't talking about a thing I didn't want to talk about.

    Here's a partial list of other things that post ignored:

    • The average speed limit in Dayton, Ohio
    • How many birds are resting on the statue of Chief Seattle
    • Whether it'll rain in Brazil

  • ♿ (Parody)

    @blakeyrat said in Stanford dumps Java as introductory class:

    @boomzilla Oh good Boomzilla's weighed in! The person I respect most!

    It's not an issue of me "not being clear", I just wasn't talking about a thing I didn't want to talk about.

    Here's a partial list of other things that post ignored:

    • The average speed limit in Dayton, Ohio
    • How many birds are resting on the statue of Chief Seattle
    • Whether it'll rain in Brazil

    Good, good, more fuckwittery from you.


  • kills Dumbledore

    @raceprouk said in Stanford dumps Java as introductory class:

    Let's play a game of hypotheticals:
    Let's say someone implemented the .NET Framework with a GIL. Would that make C# a badly-designed language?

    If the implementation of .NET that was released alongside the .NET framework had a GIL, that would imply that the framework was designed with a GIL in mind, which would be a suggestion that the people who designed the framework had some questionable design considerations that could potentially infect the design of the language as well



  • @cvi said in Stanford dumps Java as introductory class:

    @Mikael_Svahnberg said in Stanford dumps Java as introductory class:

    Could be worse. At my uni they are discussing switching to Python as the first language.

    I think it depends on the target audience. For something like math/physics students, I think it would be a fairly solid choice as a first language. It certainly would be more useful than Java, which essentially nobody ever touches again after the first programming course (again IME).

    I don't really see a problem with using Python as a first language :/ Sure it has dynamic types, but if you want a compromise between boilerplate and type safety it seems reasonable.

    I would only use it for the first course though. Move on to Java or C# afterwards

    @adynathos said in Stanford dumps Java as introductory class:

    @cvi said in Stanford dumps Java as introductory class:

    For something like math/physics students

    Python should be the language taught to them, because it has great tools for scientific programming.
    These are the tools these students will likely use in their career.

    But what about MATLAB :thonking:

    @bb36e said in Stanford dumps Java as introductory class:

    I don't get the hate here. It's a CS100 course.

    It's because it's stupid easy to write horrific JavaScript that still "works". You'll inevitably have some students that use the anti-patterns they learn from that course in future courses and in professional development.


  • Trolleybus Mechanic

    @anonymous234 said in Stanford dumps Java as introductory class:

    @slackerd said in Stanford dumps Java as introductory class:

    Fortran

    Might as well make it COBOL, so if they pass they'll be sure to find lifelong employment at some bank.

    That would be cruel and unusual punishment.


  • Discourse touched me in a no-no place

    @cvi said in Stanford dumps Java as introductory class:

    It certainly would be more useful than Java, which essentially nobody ever touches again after the first programming course (again IME).

    Whereas in my experience, nobody uses C#. Which just goes to show that people's experiences vary wildly. ;) Also, there's a real tendency for people to work inside language silos, and not learn the lessons (positive or negative) from elsewhere.


  • Trolleybus Mechanic

    @adynathos said in Stanford dumps Java as introductory class:

    @masonwheeler said in Stanford dumps Java as introductory class:

    On the other hand, so do professors who do this. If a student learns high-level concepts before the low-level ones they're built on, they might have an incorrect (or nonexistent) understanding of those concepts, which becomes harmful later on. So I can sort of see both sides of the argument here.

    In practice that is not the case.
    If students explore the topic on their own, they care and think about it, and through this thinking and exploration can build the understanding.
    They will surely learn more than those who begrudgingly do prescribed homework by copying from StackOverflow.

    @cvi said in Stanford dumps Java as introductory class:

    For something like math/physics students

    Python should be the language taught to them, because it has great tools for scientific programming.
    These are the tools these students will likely use in their career.

    Fortran is still used for quite a bit of scientific programming, and will be for quite some time. Python is a decent language from what I have heard, but it doesn't have the rock hard stability that Fortran does. And it may never have that, at least not for quite some time.

    Edit: Learning Python would still be a good idea, but they should probably learn Fortran as well.


  • Discourse touched me in a no-no place

    @slackerd said in Stanford dumps Java as introductory class:

    Fortran is still used for quite a bit of scientific programming, and will be for quite some time. Python is a decent language from what I have heard, but it doesn't have the rock hard stability that Fortran does. And it may never have that, at least not for quite some time.

    Varies a lot by field. Meteorology likes Fortran. Biology is keener on Python (and Excel).


  • Trolleybus Mechanic

    @dkf said in Stanford dumps Java as introductory class:

    @slackerd said in Stanford dumps Java as introductory class:

    Fortran is still used for quite a bit of scientific programming, and will be for quite some time. Python is a decent language from what I have heard, but it doesn't have the rock hard stability that Fortran does. And it may never have that, at least not for quite some time.

    Varies a lot by field. Meteorology likes Fortran. Biology is keener on Python (and Excel).

    Good to know. Remind me not to major in Biology, then. 🚎



  • @dkf said in Stanford dumps Java as introductory class:

    @slackerd said in Stanford dumps Java as introductory class:

    Fortran is still used for quite a bit of scientific programming, and will be for quite some time. Python is a decent language from what I have heard, but it doesn't have the rock hard stability that Fortran does. And it may never have that, at least not for quite some time.

    Varies a lot by field. Meteorology likes Fortran. Biology is keener on Python (and Excel).

    Computational quantum chemistry is still Fortran with some C++. The package I interfaced with had a Python interface library for data analysis, so that's what I spent my time with. That's where I learned to program--having to write Python scripts to analyze data.



  • @jazzyjosh said in Stanford dumps Java as introductory class:

    @cvi said in Stanford dumps Java as introductory class:

    For something like math/physics students

    Python should be the language taught to them, because it has great tools for scientific programming.
    These are the tools these students will likely use in their career.

    But what about MATLAB :thonking:

    I had to use Matlab for a bit last year.

    You can immediately tell the language was designed by non-programmers. Everything is stateful. When you create a graph, you don't store a reference to it in a variable so you can perform operations on it. Operations are just applied to the latest graph you created.

    It seemed pretty terrible in general. Aside, of course, from the extensive library of complicated mathematical functions you get with it.



  • @anonymous234 said in Stanford dumps Java as introductory class:

    @jazzyjosh said in Stanford dumps Java as introductory class:

    @cvi said in Stanford dumps Java as introductory class:

    For something like math/physics students

    Python should be the language taught to them, because it has great tools for scientific programming.
    These are the tools these students will likely use in their career.

    But what about MATLAB :thonking:

    I had to use Matlab for a bit last year.

    You can immediately tell the language was designed by non-programmers. Everything is stateful. When you create a graph, you don't store a reference to it in a variable so you can perform operations on it. Operations are just applied to the latest graph you created.

    It seemed pretty terrible in general. Aside, of course, from the extensive library of complicated mathematical functions you get with it.

    Don't forget seriously expensive. And obtuse. Great for doing vector operations in bulk and for handling complicated mathematical algorithms. I still prefer Python with NumPy/SciPy for my number-crunching/graph-making needs.



  • @masonwheeler said in Stanford dumps Java as introductory class:

    @bb36e said in Stanford dumps Java as introductory class:

    I don't get the hate here. It's a CS100 course. class Example { public static void Main(String[] arts) { is what makes people think that programming is some sort of black magic and makes them run away in terror.

    And getting Lost In Superfluous Parenthesis doesn't?!?

    Math students at least wouldn't have a problem with them, because they're used for grouping and overriding order of operations in math expressions. The biggest difference I know of would be learning to use Polish notation instead of infix notation for expressions.


  • Impossible Mission - B

    @djls45 said in Stanford dumps Java as introductory class:

    The biggest difference I know of would be learning to use Polish notation instead of infix notation for expressions.

    And using stuff with names that make no sense, like car and cdr (quick, does anyone at all know what those names actually mean without Googling it?), cons, fold, etc...



  • @accalia said in Stanford dumps Java as introductory class:

    lowers the barrier to entry

    i don't understand why people consider this to be universally good. if you can't get past the barrier of entry consisting of the basics, how well do you think you will cope with anything and everything beyond it?

    in other words, imagine someone in a wheelchair being admitted to army as an infantryman. imagine them in the basic training. and then on the battlefield. because let's not be elitist, lowering barrier of entry is a universally good thing, right?


  • Impossible Mission - B

    @sh_code That's one of the points Joel makes in the article I linked: intro to CS classes are supposed to be difficult, with the express purpose of weeding out those who don't have the mental flexibility to make it as successful programmers.


  • area_pol

    @sh_code said in Stanford dumps Java as introductory class:

    i don't understand why people consider this to be universally good. if you can't get past the barrier of entry consisting of the basics, how well do you think you will cope with anything and everything beyond it?

    A low barrier to entry allows you to try various activities without prohibitive investment of effort, to find the activities that you want to pursue further.



  • The thing about having a low barrier to entry is that it helps dismiss the sense of mysticism people have about programming, which is really valuable.

    I honestly believe that while not everyone can be an amazing programmer, a lot more people could do moderately productive work in it if they weren't terrified of trying.



  • @sh_code said in Stanford dumps Java as introductory class:

    @accalia said in Stanford dumps Java as introductory class:

    lowers the barrier to entry

    i don't understand why people consider this to be universally good. if you can't get past the barrier of entry consisting of the basics, how well do you think you will cope with anything and everything beyond it?

    Because there are many more reasons to teach basic programming skills than just to churn out professional programmers. Unless you're trying to enforce trade guild like exclusivity, where only those initiated in the arcane Rights of Computing are allowed to create a Program then it's a good thing for non-specialists to be able to solve simple problems themselves (or at the very least be on the same wavelength as the programmer who they eventually commission to solve the problem).

    Because programming can be a fun hobby and simple introductory courses ought to let people scratch an itch without being scared off by a barrage of obtuse syntax.



  • @japonicus agreed. People who have experience with programming also make for better clients and managers in my experience since they at least have some clue as to the issues at hand. Not as big of an ego stroke as having someone crawl to the priest-programmer and beg for intercession with the holy machine though :trollface:


  • Impossible Mission - B

    @japonicus On the one hand, yeah, you make some good points.

    On the other, we're all computer users first and developers second, and we've all worked with crappy programs that were obviously developed by some amateur who knows just enough to be dangerous and really shouldn't have been allowed anywhere near a compiler. Keeping that down is in all of our best interests, not as professional developers but simply as ordinary computer users.



  • @adynathos said in Stanford dumps Java as introductory class:

    A low barrier to entry allows you to try various activities without prohibitive investment of effort, to find the activities that you want to pursue further.

    because removing prohibitive investment of effort from programming really gives you the correct idea about it, therefore better helping you to find out and decide if it is something you want to pursue further, right?



  • @masonwheeler as one of those amateur programmers, kindly take your elitist attitude and shove it where the sun don't shine. I've used many more :wtf: programs written by supposed professionals than from amateurs.

    PS I mean the first part in all good fun. Not as a personal attack.



  • @dkf said in Stanford dumps Java as introductory class:

    @cvi said in Stanford dumps Java as introductory class:

    It certainly would be more useful than Java, which essentially nobody ever touches again after the first programming course (again IME).

    Whereas in my experience, nobody uses C#. Which just goes to show that people's experiences vary wildly. ;) Also, there's a real tendency for people to work inside language silos, and not learn the lessons (positive or negative) from elsewhere.

    To clarify, I was referring specifically to physics and math students there. "Nobody ever touches again" is clearly a bit of hyperbole, but if you have a 5-year education, and teach a language in the first year (and in the only mandatory programming course) that doesn't make any appearance whatsoever in the following 4 years, there might just be a better choice.

    MATLAB was a de-facto standard back then, and you were expected to pick it up for numerics. Most stuck to matlab after that, though there were the odd C/C++/python users (mostly self-thought, and mostly for later courses that required a non-trivial amount of computational power to get through).



  • @magus said in Stanford dumps Java as introductory class:

    I honestly believe that while not everyone can be an amazing programmer, a lot more people could do moderately productive work in it if they weren't terrified of trying.

    i could be a moderately good singer. the question is, why should i, when there's loads of amazing singers who casually do what would be my best effort, and much more? what real value would i bring to the society by doing that, instead of finding and doing something i'm at least very good in?
    answer is none. quite the opposite, i would clutter an already cluttered area making it even harder for everyone to filter out and find the really good ones who are really worth listening to.

    same principle in coding (anywhere, really) , except when you're a not good enough singer, nobody else has to waste their time and potential correcting your sub-par songs instead of making their own, better ones.



  • @sh_code said in Stanford dumps Java as introductory class:

    in other words, imagine someone in a wheelchair being admitted to army as an infantryman. imagine them in the basic training. and then on the battlefield. because let's not be elitist, lowering barrier of entry is a universally good thing, right?

    You're example is dumb because the Army has a lot of positions that aren't infantrymen, and in many or most of them a person in a wheelchair could easily excel. Just like a person might not be a superhero at writing code, but still be a genius at designing UIs or data structures.



  • @masonwheeler said in Stanford dumps Java as introductory class:

    This is more relevant than ever, now that they're making things even worse than Java:

    That article has a lot of bullshit.

    Without understanding functional programming, you can’t invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable.

    That's like saying that without [philosopher that wrote some stuff on the nature of the world 1,500 years ago], we wouldn't have physics today. The idea of running code without side effects in parallel is not owned by functional programming.



  • @japonicus said in Stanford dumps Java as introductory class:

    reasons to teach basic programming skills

    and one of the most quirky, arcane and misunderstood of the widely used languages is certainly the right tool for this job... :wtf:



  • @masonwheeler said in Stanford dumps Java as introductory class:

    On the other, we're all computer users first and developers second, and we've all worked with crappy programs that were obviously developed by some amateur who knows just enough to be dangerous and really shouldn't have been allowed anywhere near a compiler.

    ... most of those programs I've dealt with have been developed by professionals. The developers of Lotus fucking Notes weren't amateurs.

    When I think of software developed by amateurs, I think of things like: Facebook, Napster, lots of HyperCard stacks. Stuff that's, in my experience, been relatively pleasant to use. I actually can't think of any program written by an amateur that's been remotely as awful as Lotus Notes.



  • @sh_code You could not be more incorrect. This industry is growing constantly, with no indication the growth will slow down any time soon. Furthermore, there are a huge number of people who have no idea whether they're good at programming are not, and who you don't know whether or not they'd do well either, who never even consider trying programming.

    And that's a failure on all of our parts.

    30 years ago, many programmers were previously experts at other things, who realized that they were perfectly capable of doing this newly available kind of work well. Now the only people who try are nerdy boys. You should be utterly ashamed that we're in a state like this.



  • @benjamin-hall said in Stanford dumps Java as introductory class:

    I've used many more programs written by supposed professionals than from amateurs.

    and why do u think is that, when introductory courses usually use Java with all its stdlib built-in antipatterns, and are now downgrading even more, to JS?

    you need the introductory tool to be prohibitive and rigid and unforgiving, even limited, to a degree, so it forces you to learn to instinctually work with the basic concepts and limitations applying to the whole area in general. even Java fails at this in some ways, but JS is even worse.


  • area_pol

    @sh_code said in Stanford dumps Java as introductory class:

    i could be a moderately good singer. the question is, why should i, when there's loads of amazing singers who casually do what would be my best effort, and much more? what real value would i bring to the society by doing that, instead of finding and doing something i'm at least very good in?

    Yes, so you need a way to check if you are a good singer, or if you are a good programmer.
    The way to do it is try some basic singing / programming and see if you like it, whether you are making progress.

    If you were required to take a half year university course before even trying to sing, you would most probably not even bother trying, and would never know if its the right thing for you.


  • Impossible Mission - B

    @adynathos Someone can't accidentally destroy hours' worth of data and hard work by inflicting bad singing upon you. :P

    (INB4 :pendant: explanations of contrived situations in which this is technically possible. You know what I mean.)



  • @blakeyrat my example is alright and does precisely what it's supposed to. stop playing around with it just to avoid the correct point i made in it.


  • area_pol

    @masonwheeler said in Stanford dumps Java as introductory class:

    Someone can't accidentally destroy hours' worth of data and hard work by inflicting bad singing upon you.

    I say the barrier of entry should be low for programming, not for editing your production data :P



  • @sh_code You made a point.

    I'm disagreeing with you because there's a lot of aspects of software development that don't require strong coding skills. In fact, there's a lot of aspects of software development that don't require any coding skills.

    A lot of this depends on the motivation of the computer science department. If they wanted to make super mega nerd coder rah rah rah, then yeah, I guess kick wheelchair-man to the curb. On the other hand, if they (like me) want to teach how to create quality software, then kicking that person would be an enormous mistake.

    I would argue a lot of the reason software is so crummy now is that software developers have been hiring only super mega nerd coder rah rah rah and ignoring all other aspects of software development. They've even replaced the QA department with super mega nerd coder rah rah rah. This is why, to give only one example, Google products seem to have absolutely zero emotional intelligence whatsoever.



  • @adynathos said in Stanford dumps Java as introductory class:

    The way to do it is try some basic singing / programming and see if you like it, whether you are making progress.

    yes. and basic programming starts in your mind, by working with the basic concepts, understanding them and why are they important, and what their use is. language and syntax are second.

    it won't help you with learning the basic concepts and their significance when the first thing you ever encounter is a language which has style conventions instead of actual proper syntax and structure, and where variable is a number is a string is an object is a function is a class is all the same because let's not bother people with needless syntax clutter.

    101 entry programming would then be better served even with no actual code, just talking and drawing boxes and working with concepts and algorithms using natural language. then those people who find they' re interested and actually have the ability to THINK programmerly, would move on to "learning the clutter", in other words actual programming language.


Log in to reply