Stanford dumps Java as introductory class



  • @sh_code Well, if you're trying to teach a specific thing (e.g. data structures, a certain GUI toolkit, mathematical simulations), all the obstacles you find before getting to that specific thing are bad obstacles that you'd ideally want removed.

    For example: Jeff @wood said "we keep the Discourse development stack complicated because it weeds out the amateur programmers". But knowledge of a specific development stack is not the same as knowledge of databases, algorithms, UI or good development practices in general. They are obviously correlated because developers must learn all those topics to be good, but they're still separate.

    So in an algorithmic course, you should try to weed out students by testing their algorithmic skills, not testing their ability to understand C strings, Java class inheritance or Fortran compilers.

    Edit: this comment was supposed to be a response to

    @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?

    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?



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

    So in an algorithmic course, you should try to weed out students by testing their algorithmic skills, not testing their ability to understand C strings, Java class inheritance or Fortran compilers.

    exactly. therefore no programming language at all actually required. see my previous post



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

    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.

    then why would you teach coding skills for those and lower your teaching standards in the name of it? your area is not coding-focused, or only a little? great, teach/learn that area then and leave the learning of the tiny required amount of coding on the students. it's not like it is unheard of to expect students to learn the marginal bits needed for their main topic by themselves. also if you want to send a message that programming is not some scary arcane thing, this is actually the best way to do it. much better than fuckin JavaScript.



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

    @japonicus Well, if you're trying to teach a specific thing (e.g. data structures, a certain GUI toolkit, mathematical simulations), all the obstacles you find before getting to that specific thing are bad obstacles that you'd ideally want removed.

    For example: Jeff @wood said "we keep the Discourse development stack complicated because it weeds out the amateur programmers". But knowledge of a specific development stack is not the same as knowledge of databases, algorithms, UI or good development practices in general. They are obviously correlated because developers must learn all those topics to be good, but they're still separate.

    I'm not quite sure how that's a reply to my earlier post but anyway 🤷♂

    The Stanford course under discussion was 'Programming Methodology', so yes, from a perversely narrow perspective you could argue that this could be taught using any language (or no language). It's described as a basic introductory course, with no prior knowledge required.

    For the students who go on to become software engineers it's immaterial what language is used at this stage, but for the rest (possibly the majority on the course??) it seems more helpful to pick a language that they could conceivably encounter and use in the wild. Javascript or python fit that better than java and it doesn't really matter that neither is well designed.

    So in an algorithmic course, you should try to weed out students by testing their algorithmic skills, not testing their ability to understand C strings, Java class inheritance or Fortran compilers.

    It distresses me that you appear to see 'weeding out students' as the purpose of a university course. If that's the objective then I'd advocate insisting on machine code written in binary on ticker tape.



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

    then why would you teach coding skills for those and lower your teaching standards in the name of it?

    Why shouldn't you teach coding skills to everybody, much the same way you teach music, soccer, math, etc. to everybody?

    All I'm saying is it makes no sense for a 100-level computer science class to use a super-difficult language to "weed students out".

    A better question: why the fuck am I debating with a person who doesn't even own a shift key?


  • ♿ (Parody)

    @sh_code said in Stanford dumps Java as introductory class:

    @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?

    Well, you might enjoy it, for one. You might participate in your church choir or some other activity with others. Maybe that activity helps you relax and recharge or whatever. Maybe the socializing you do helps you meet people and you all have a good time singing or whatever.


  • ♿ (Parody)

    @anonymous234 said in Stanford dumps Java as introductory class:

    For example: Jeff @wood said "we keep the Discourse development stack complicated because it weeds out the amateur programmers".

    Yeah, but we all know that's really just post hoc rationalization.



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

    I'm not quite sure how that's a reply to my earlier post but anyway

    It's not, I replied to the wrong comment.

    And worse, there's no :embarrassed: emoji.


  • FoxDev

    @anonymous234 said in Stanford dumps Java as introductory class:

    And worse, there's no :embarrassed: emoji.

    But there is 😊 :blush:



  • If they dumped C(++) for Java, as they surely have done sometime in the past, certainly there would be people complaining that students won't learn pointers, allocating memory and all this unnecessary low-level stuff. I would have preferred something else than Javascript, plus I never battled with NetBeans, it was a huge help to me from the very start, but I'm trying to see things in perspective.



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

    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...

    Contents of Address Register and Contents of Data Register. In practice, car is the first element of the list and cdr is the list minus the first element, so that (car list) + (cdr list) == list.



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

    like car and cdr (quick, does anyone at all know what those names actually mean without Googling it?)

    One is a vehicle, the other is recordable optical media. 🏆


  • Impossible Mission - B

    @dragnslcr said in Stanford dumps Java as introductory class:

    Contents of Address Register and Contents of Data Register. In practice, car is the first element of the list and cdr is the list minus the first element, so that (car list) + (cdr list) == list.

    Yup. Lisp design is so brain-dead that two of the most fundamental commands are named after registers in the CPU architecture of the machine that was originally used to implement Lisp, which has been dead for decades.



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

    @anonymous234 said in Stanford dumps Java as introductory class:

    And worse, there's no :embarrassed: emoji.

    But there is 😊 :blush:

    But that's a happy blush! I want an embarrassed blush.



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

    If they dumped C(++) for Java, as they surely have done sometime in the past, certainly there would be people complaining that students won't learn pointers, allocating memory and all this unnecessary low-level stuff.

    If they dumped C, yes. If they dumped C++, I'd be glad they stopped teaching it incorrectly - even C++98 didn't require much use of pointers or manual memory management. That hasn't stopped 99% of professors from teaching straight C and calling it C++.


  • Impossible Mission - B

    @masonwheeler said in Stanford dumps Java as introductory class:

    Yup. Lisp design is so brain-dead that two of the most fundamental commands are named after registers in the CPU architecture of the machine that was originally used to implement Lisp, which has been dead for decades.

    Also, gotta love the whole Lisp-1 vs. Lisp-2 debate, about whether everything should be in one big global namespace or whether functions and variables should have their own separate namespace. Even in modern Lisp variants, such as Clojure, these ancient ideas persist, whereas non brain-dead programming languages have had module-level namespaces (and classes, which function as a namespace of their own) for decades now.



  • @masonwheeler Very odd that there would be Lisp-1s around anymore...


  • Impossible Mission - B

    @magus I know, right? But on the other hand, it's odd that there would be Lisp-2s around anymore too, because that means that you can have a function named foo and a variable named foo at the same time, in the same scope, and they're both valid, and which one you're referring to when you say foo is contextual. That actually seems even worse!

    According to its official website, Clojure is a Lisp-1. I haven't used it, but I have to believe, being a JVM language, that it has full access to Java namespaces and classes. And yet it still follows Lisp-1 semantics! :doing_it_wrong:



  • @masonwheeler I don't have a problem with that aspect of Lisp-2 - that's something that you can deal with on a code-review level pretty easily if you feel you must.

    Messing around with SBCL through Bash through Ubuntu through Powershell now.



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

    @sh_code said in Stanford dumps Java as introductory class:

    then why would you teach coding skills for those and lower your teaching standards in the name of it?

    Why shouldn't you teach coding skills to everybody, much the same way you teach music, soccer, math, etc. to everybody?

    I agree. Why shouldn't you? I have nothing against that. I have something against convincing people that soccer is normally played in wheelchairs so as not to "alienate" amputees.

    @blakeyrat said in Stanford dumps Java as introductory class:

    All I'm saying is it makes no sense for a 100-level computer science class to use a super-difficult language to "weed students out".

    I agree. Therefore Java makes little sense, but at least some. But JavaScript makes no fucking sense at all. C/C++ neither. C# feels good for the purpose, but that might be just out of my personal preference. Maybe try to find a language that was specifically designed for teaching programming? OH WOW DID YOU HEAR ABOUT THIS AWESOME NEW (Object) Pascal thingie? Right in the middle of "modern and cool but insane design-wise" and "old and weak and relatively low-level, and just about the right amount of pedantically obtuse to force the basic programming principles on you, and doesn't confuse even seasoned programmers out of their minds"!
    Oh wow. You should check it out.

    @blakeyrat said in Stanford dumps Java as introductory class:

    A better question: why the fuck am I debating with a person who doesn't even own a shift key?

    Oh Look. A Shift Key! And All It Took For Me To Find It Was One Boring Ad-Hominem! ;) :-*



  • @sh_code said somewhere up there:

    @blakeyrat said in Stanford dumps Java as introductory class:

    A better question: why the fuck am I debating with a person who doesn't even own a shift key?

    Oh Look. A Shift Key! And All It Took For Me To Find It Was One Boring Ad-Hominem! ;) :-*

    Do you think it'll work for other stuff too? Try "Why the fuck am I debating with a person who doesn't even know why Nvidia Shadowplay's Record function refuses to Record?"

    Because that one would really help, seriously.


  • area_pol

    Since most of us here already know programming, the speculation on best way to learn programming is very theoretical.

    In the end, I think the language is not such an important factor in learning.
    I have learned on JASS - a very primitive language for Warcraft 3 mods.
    But I could use it to make games. I have seen what others could achieve with it and I wanted to build similar mods.
    It was very exciting, and crucially gave a reason to explore and learn, a goal and a reward for progress.


  • Fake News

    @lb_ said in Stanford dumps Java as introductory class:

    @lukfi said in Stanford dumps Java as introductory class:

    If they dumped C(++) for Java, as they surely have done sometime in the past, certainly there would be people complaining that students won't learn pointers, allocating memory and all this unnecessary low-level stuff.

    If they dumped C, yes. If they dumped C++, I'd be glad they stopped teaching it incorrectly - even C++98 didn't require much use of pointers or manual memory management. That hasn't stopped 99% of professors from teaching straight C and calling it C++.

    Back in my day (just over 10 years) they went for C-with-streams using C++. It does work for that in getting the C language basics without immediately hitting segfaults when you code a wrong printf call.



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

    Therefore Java makes little sense, but at least some.

    So, you're tossing one language because this boilerplate is bad:

    public static void main(String[] args) {
        System.out.println("Stuff");
    }
    

    (this was cited as an issue further up this thread)

    C# feels good for the purpose, but that might be just out of my personal preference.

    but this one is OK:

    using System;
    
    static void Main(string[] args)
    {
        Console.WriteLine("Stuff");
    }
    

    ?



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

    @sh_code said in Stanford dumps Java as introductory class:

    Therefore Java makes little sense, but at least some.

    So, you're tossing one language because this boilerplate is bad:

    public static void main(String[] args) {
        System.out.println("Stuff");
    }
    

    (this was cited as an issue further up this thread)

    C# feels good for the purpose, but that might be just out of my personal preference.

    but this one is OK:

    using System;
    
    static void Main(string[] args)
    {
        Console.WriteLine("Stuff");
    }
    

    ?

    no, i never mentioned anything about boilerplate.
    the difference is that "C# is like a Java except it makes sense"
    as in, names and structure of its standard library, for example. or as in, not containing four implementations of almost any feature, three of which are obsolete. or as in, not containing 4 or 5 "built-in" (re)implementations of GUI system which are sometimes silly easy to mix up/combine if you're not aware of this problem.
    And similar stuff.



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

    Since most of us here already know programming, the speculation on best way to learn programming is very theoretical.

    In the end, I think the language is not such an important factor in learning.
    I have learned on JASS - a very primitive language for Warcraft 3 mods.
    But I could use it to make games. I have seen what others could achieve with it and I wanted to build similar mods.
    It was very exciting, and crucially gave a reason to explore and learn, a goal and a reward for progress.

    Getting someone motivated to learn is the biggest hurdle to teaching, and is one of the key differentiating factors between a good teacher and a bad one.

    I also was motivated to learn how to program after getting into making mods for C&C: Red Alert. I saw a copyright notice in a comment in one of the de-encrypted files that said the game was made in Delphi C++, and that's what pushed me to want to learn. My uncle gave me a Borland IDE with a complete set of documentation, which gave me enough to basically teach myself to code. C++ may not be the best language for most people to start using, but it worked for me.



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

    Getting someone motivated to learn is the biggest hurdle to teaching, and is one of the key differentiating factors between a good teacher and a bad one.

    My first CS teacher taught a C++ class, and while he knew enough to teach it, he really was not a good coder*. Some of his students (IMAO I suspect myself included) were better at writing code than he was, but he was excited about it, and was able to transmit that excitement to his class.

    One thing in particular I remember him saying was that writing software is just about the closest humans can get to creating something ex nihilo. Before the advent of computers, novels held that place, but every reader's mind conjures up a slightly different version of the world in a novel. A computer program comes from it's coder's mind, but it produces the same effects for everyone.

    * None of what he said was wrong, but it wasn't always best, if that makes sense.


  • Garbage Person

    @japonicus said in Stanford dumps Java as introductory class:

    but for the rest (possibly the majority on the course??) it seems more helpful to pick a language that they could conceivably encounter and use in the wild.

    My university explicitly rejected that. They used Karel with an editor that did not make it possible to construct a syntactically invalid program. They were there to teach the concepts and weren't going to have students waste time struggling with trivia.

    Everyone had to take a version of the course. The Humanities version was 108. I don't remember which one the Fine Arts students got.

    That may well have since gone by the wayside. The techies start with Python. The course catalog doesn't mention what the Humanities or Fine Arts students start with.



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

    not containing four implementations of almost any feature, three of which are obsolete.

    Hey, what's the code for downloading a page over HTTP, again?


  • Discourse touched me in a no-no place

    @sh_code said in Stanford dumps Java as introductory class:

    Therefore Java makes little sense, but at least some. […] C# feels good for the purpose, but that might be just out of my personal preference.

    Those two make almost identical sense for an introductory class. The differences between them are all in areas that you simply wouldn't teach in an intro setting; even fairly basic things like classes probably shouldn't be covered. There's just a vast amount of ground to cross from where people start out before you get to where the distinction matters.

    Having an accessible REPL is a pretty good reason for choosing JS than Java or C#, since that shortens the try-observe-and-learn cycle. Python (or any of quite a few other scripting languages) would also be a reasonable choice.


  • Notification Spam Recipient

    @djls45 said in Stanford dumps Java as introductory class:

    @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.

    Math students need to handle far greater notational challenges like g(f(x)) being written as either (g ∘ f)(x) or (f ∘ g)(x) depending on who you're talking to



  • @dkf I thought C# had a REPL now, although I don't think Java ships with one yet (although it supposedly will when Java 9 ships in 2027... or was that 2037).


  • FoxDev

    @powerlord said in Stanford dumps Java as introductory class:

    I thought C# had a REPL now

    MS calls it the 'Interactive WIndow', which is a dumb name.


  • Winner of the 2016 Presidential Election

    @cark said in Stanford dumps Java as introductory class:

    @djls45 said in Stanford dumps Java as introductory class:

    @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.

    Math students need to handle far greater notational challenges like g(f(x)) being written as either (g ∘ f)(x) or (f ∘ g)(x) depending on who you're talking to

    :wtf: Who uses (f ∘ g)(x) to mean g(f(x))?


  • Winner of the 2016 Presidential Election

    @dkf said in Stanford dumps Java as introductory class:

    @sh_code said in Stanford dumps Java as introductory class:

    Therefore Java makes little sense, but at least some. […] C# feels good for the purpose, but that might be just out of my personal preference.

    Those two make almost identical sense for an introductory class. The differences between them are all in areas that you simply wouldn't teach in an intro setting; even fairly basic things like classes probably shouldn't be covered. There's just a vast amount of ground to cross from where people start out before you get to where the distinction matters.

    Having an accessible REPL is a pretty good reason for choosing JS than Java or C#, since that shortens the try-observe-and-learn cycle. Python (or any of quite a few other scripting languages) would also be a reasonable choice.

    Languages with REPLs also have the benefit of not having to worrry about build systems and environments too much.


  • Notification Spam Recipient

    @dreikin said in Stanford dumps Java as introductory class:

    @cark said in Stanford dumps Java as introductory class:

    @djls45 said in Stanford dumps Java as introductory class:

    @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.

    Math students need to handle far greater notational challenges like g(f(x)) being written as either (g ∘ f)(x) or (f ∘ g)(x) depending on who you're talking to

    :wtf: Who uses (f ∘ g)(x) to mean g(f(x))?

    I mostly see them when talking about permutations


  • Impossible Mission - B

    @raceprouk said in Stanford dumps Java as introductory class:

    MS calls it the 'Interactive WIndow', which is a dumb name.

    Why? It makes more intuitive sense than "REPL".


  • Winner of the 2016 Presidential Election

    @greybeard said in Stanford dumps Java as introductory class:

    My university explicitly rejected that. They used Karel with an editor that did not make it possible to construct a syntactically invalid program. They were there to teach the concepts and weren't going to have students waste time struggling with trivia.
    Everyone had to take a version of the course. The Humanities version was 108. I don't remember which one the Fine Arts students got.

    This approach is weird to me. Let's introduce everyone to programming in a language that none of them will have any use for after the course? Brillant!

    I suppose it ties in with the earlier parts of this discussion which went a bit like
    🅰 Not everyone can be a successful builder. Indeed, it's dangerous for people without the right mindset and skills to even try! Therefore we should make shop a weed-out class so that no-one who can't be a good builder learns anything about the tools or the trade.
    🅱 Y'know, hammers aren't only good for building houses. There are perfectly good everyday uses that even unskilled people have for them.
    🅰 People without the right knowledge and qualifications trying to build houses make more trouble for everyone later on! It's just a bad idea.
    🅱 There's no reason shop class has to be limited to future builders. There are plenty of uses for screwdrivers in everyday life by people who would never dream of even building a desk, much less a house. Why just this morning I used one to tighten up a loose widget!
    🅰 … Fine. But they'll have to use the academic toolbox kit so they don't hurt themselves!
    🅱 But no-one's ever going to use those tools in their daily life! Why can't we just use common tools our students are likely to encounter and make use of?
    🅰 Look, the Acme Toolbox kit is specially designed to make teachers' live's easier at their students' expensemake it easier for students to learn the art of tool use without having to know such unnecessary trivia as the difference between a Phillips-head and a flat-head screwdriver.
    🅱 But knowing that is important! It's not like we change head types every five years or something. Using an unconventional toolkit like that is only good for students who will later go on to be professional builders, learning how to use normal tools in later courses.
    🅰 That's the point.Ugh. Okay, fine. Useful, real world tools. Great. So we'll have shop class use stuff like belt sanders and jigsaws and …
    🅱 And hammes and regular screwdrivers?
    🅰 What? No, of course not. There won't be any time in between learning how to safely work with all these power tools. Wouldn't want a student to blowcut their footfinger off with a null pointermiter saw, after all!
    🅱 But those are still useless for most intro and gen.ed. students! They're unlikely to ever use that information. Also, doesn't that focus on a lot of unnecessary trivia before teaching anything about the basic ideas of how to use and work with tools?
    🅰 Fine. Fine! We'll make our basic class focus on simple tools and simple machines. We'll make it accessible to everyone! Are you happy now⁉
    🅱 Yes!
    👷♀ Oi! What's this about dumbing down shop?

    And so on, ad infinitum.


  • Discourse touched me in a no-no place

    @masonwheeler said in Stanford dumps Java as introductory class:

    Why? It makes more intuitive sense than "REPL".

    What's unintuitive about “Read-Evaluate-Print Loop”? (“REPL” is just shorthand.)


  • Winner of the 2016 Presidential Election

    @cark said in Stanford dumps Java as introductory class:

    @dreikin said in Stanford dumps Java as introductory class:

    @cark said in Stanford dumps Java as introductory class:

    @djls45 said in Stanford dumps Java as introductory class:

    @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.

    Math students need to handle far greater notational challenges like g(f(x)) being written as either (g ∘ f)(x) or (f ∘ g)(x) depending on who you're talking to

    :wtf: Who uses (f ∘ g)(x) to mean g(f(x))?

    I mostly see them when talking about permutations

    The product of two permutations is defined as their composition as functions, in other words σ·π is the function that maps any element x of the set to σ(π(x)). Note that the rightmost permutation is applied to the argument first, [6] [7] because of the way function application is written. Some authors prefer the leftmost factor acting first, [8] [9] [10] but to that end permutations must be written to the right of their argument, often as an exponent, so the permutation σ acting on the element x results in the image xσ. With this convention, the product is given by xσ·π = (xσ)π. However, this gives a different rule for multiplying permutations. This convention is commonly used in the permutation group literature, but this article uses the convention where the rightmost permutation is applied first.

    Wonderful. :headdesk:



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

    @masonwheeler said in Stanford dumps Java as introductory class:

    Why? It makes more intuitive sense than "REPL".

    What's unintuitive about “Read-Evaluate-Print Loop”? (“REPL” is just shorthand.)

    Users see an interactive command window, not a read-evaluate-print loop.

    Just like they see a "video", not a "get frame-decode-show loop", or a "web browser", not a "fetch-parse-render program" or a GUI, not a "process input events-update graphics buffer loop".



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

    Having an accessible REPL is a pretty good reason for choosing JS than Java or C#, since that shortens the try-observe-and-learn cycle. Python (or any of quite a few other scripting languages) would also be a reasonable choice.

    One of the most useful (yet rare) features an IDE can have, especially for beginners, is the ability to select a function or lines of code, define the inputs/variables, and see the result.

    Even better if it lets you see the resulting value of every single expression in the code.

    Even better if it lets you "go back in time" to change any specific value and re-evaluate from there.



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

    @dkf said in Stanford dumps Java as introductory class:

    Having an accessible REPL is a pretty good reason for choosing JS than Java or C#, since that shortens the try-observe-and-learn cycle. Python (or any of quite a few other scripting languages) would also be a reasonable choice.

    One of the most useful (yet rare) features an IDE can have, especially for beginners, is the ability to select a function or lines of code, define the inputs/variables, and see the result.

    Even better if it lets you see the resulting value of every single expression in the code.

    Even better if it lets you "go back in time" to change any specific value and re-evaluate from there.

    For all that I hate Apple, Swift has a nifty "playground" feature that lets you do this, showing the results and how variables change in real time.


  • 🚽 Regular

    @anonymous234 said in Stanford dumps Java as introductory class:

    @raceprouk said in Stanford dumps Java as introductory class:

    @anonymous234 said in Stanford dumps Java as introductory class:

    And worse, there's no :embarrassed: emoji.

    But there is 😊 :blush:

    But that's a happy blush! I want an embarrassed blush.

    😳 :flushed:


  • 🚽 Regular

    @dreikin said in Stanford dumps Java as introductory class:

    @cark said in Stanford dumps Java as introductory class:

    @djls45 said in Stanford dumps Java as introductory class:

    @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.

    Math students need to handle far greater notational challenges like g(f(x)) being written as either (g ∘ f)(x) or (f ∘ g)(x) depending on who you're talking to

    :wtf: Who uses (f ∘ g)(x) to mean g(f(x))?

    Lots of people? It's the notation I've learned. It's also the notation used in Wikipedia.



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

    @anonymous234 said in Stanford dumps Java as introductory class:

    @raceprouk said in Stanford dumps Java as introductory class:

    @anonymous234 said in Stanford dumps Java as introductory class:

    And worse, there's no :embarrassed: emoji.

    But there is 😊 :blush:

    But that's a happy blush! I want an embarrassed blush.

    😳 :flushed:

    That looks too surprised!

    Why not just give us a "facial expression editor" and let us create our own ones? The technology is there. Then it could automatically scan which ones are being used the most and they could be added to the list of presets.

    (I know, I know, the quixotic ideas thread is...)


  • Winner of the 2016 Presidential Election

    @zecc said in Stanford dumps Java as introductory class:

    @dreikin said in Stanford dumps Java as introductory class:

    @cark said in Stanford dumps Java as introductory class:

    @djls45 said in Stanford dumps Java as introductory class:

    @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.

    Math students need to handle far greater notational challenges like g(f(x)) being written as either (g ∘ f)(x) or (f ∘ g)(x) depending on who you're talking to

    :wtf: Who uses (f ∘ g)(x) to mean g(f(x))?

    Lots of people? It's the notation I've learned. It's also the notation used in Wikipedia.

    No, Wikipedia (and pretty much everywhere else I've seen it) does it the other way around:

    (g ∘ f )(x) = g(f(x))

    Remember that (f ∘ g) is not necessarily the same as (g ∘ f) in outcome.


  • Discourse touched me in a no-no place

    @zecc said in Stanford dumps Java as introductory class:

    😳 :flushed:

    Look out, Perverted_Vixen is behind you!



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

    What's unintuitive about “Read-Evaluate-Print Loop”? (“REPL” is just shorthand.)

    The computer's not reading anything. Evaluate-- ok fair enough. There's no printer involved. There's no loop involved (unless you write one).

    Plus REPL sounds like a sick bullfrog.

    Does that cover the bases?

    It actually reminds me of the old joke about how the "Union of Socialist Soviet Republics" isn't any of those things, except perhaps a "Soviet" because nobody knows what that is.



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

    @zecc said in Stanford dumps Java as introductory class:

    😳 :flushed:

    Look out, Perverted_Vixen is behind you!

    I should be safe as long as she's not wearing a strap-on...


Log in to reply