Bad Textbook



  • @Zecc said:

    Here's a serious question: how do you teach usability? Other than what can be summarized as "test with your users and get their feedback"? Do you teach metrics and stuff? Give good and bad examples of interfaces, and analyse them? Am I answering my own question here? I am, aren't I?

    Yeah, another thing I wish people would do is show an application interface, go through it briefly, then ask: "how would you use this application on a computer with no mouse? What about on a computer with no keyboard? What about a computer with no monitor? What if the user has color-blindness? What if the user has a disability preventing them from clicking small icons? What if the user has poor short-term memory? What if the user has poor long-term memory?" etc.

    The thing that pisses me off about the open source movement over all other pissy-off-worthy things is how they completely ignore accessibility issues, and their attitude is basically, "use the computer like a 20-year-old with excellent rote memory or fuck you". "What if I don't have excellent rote memory?" "Fuck you." "What if I can't read your small font?" "Fuck you." Hate it.



  • @drurowin said:

    Nevair.

    What, did Ryanair change their name?



  • @MiffTheFox said:

    @drurowin said:

    Nevair.

    What, did Ryanair change their name?

     

    ValuJet became JetBlue after the Everglades crash.  They became part of Delta, who also bought RyanAir, ConAir, and Baloo's seaplane from Tale Spin.  They now operate under the "One Delta" brand, out of the lost city of Atlanta.

     



  • @blakeyrat said:

    There's no reason to assume a student who started with C# would be more or less likely to pick a bad algorithm over one who learned C.

    Indeed.

    There is a crucial difference in students learning to program C# and students learning to program through C#. An important point not everyone might be seeing.

    The former drills students in language-specific high level constructs and standard library or API features to produce code monkeys, whereas the latter aims to help students to concentrate on the algorithms theory itself; the actual skill being taught, by not weighing them down with all kinds of non-relevant implementation details. Details such as memory allocation or pointers and (de)referencing have their place, but it is in more detailed and domain-specific courses such as on memory-optimized algorithms, I/O-optimized algorithms, etc.



  • @blakeyrat said:

    Robot Odyssey was the sequel, numbnuts.

    Why must you be so hurtful?



  • @blakeyrat said:

    Something everybody listing bullshit so far has missed: usability.

    I usually view this as a separate UX role. It seems you can teach aspects of it, but there's also a mindset that a lot of programmers simply do not have.



  • @morbiuswilters said:

    I usually view this as a separate UX role. It seems you can teach aspects of it, but there's also a mindset that a lot of programmers simply do not have.

    Well maybe but since you can't force companies to hire someone to do it, you should at least have some basic classes on it. Ditto with data storage: a lot of people do it as their sole occupation, but every programmer should be familiar with the basics at least.

    Google should freeze hiring on the Google+ team until they have at least 10 UX people to tell them the 374,231,233 things they need to change to make people stop hating that shitty, confusing, unusable product from hell.



  • @blakeyrat said:

    @morbiuswilters said:
    I usually view this as a separate UX role. It seems you can teach aspects of it, but there's also a mindset that a lot of programmers simply do not have.

    Well maybe but since you can't force companies to hire someone to do it, you should at least have some basic classes on it. Ditto with data storage: a lot of people do it as their sole occupation, but every programmer should be familiar with the basics at least.

    Google should freeze hiring on the Google+ team until they have at least 10 UX people to tell them the 374,231,233 things they need to change to make people stop hating that shitty, confusing, unusable product from hell.

     

    Hey, I like Google+.

     



  • @drurowin said:

    Hey, I like Google+.

    Every time I start not-hating Google+, they do something to reinvigorate my hatred.

    Most recently it was forcing my YouTube channel to have a Google+ page. Now whenever I'm using YouTube it says at the top, "you are using YouTube as Blakeyrat" which is about the dumbest message I can imagine and I have no clue what it means, or what connection it has with the RobotsInTheNews YouTube account having a Google+ page. (And no there's no "help" link or any explanation of what that means or why I'm seeing it. Natch.)



  • @blakeyrat said:

    read "The Way Things Work", the chapter on how to build a computer out of half-adders

    Ah, yes, mammoth-sized logic gates. (Which reminds me of some Minecraft redstone projects I've seen.)

    When I got a new copy of the book to hand out, I discovered that the new version of that book removed the section on logic gates. I guess they figured nobody uses computers any more.



  • @blakeyrat said:

    Generic knowledge: how to write a program, manage the project, create a usable interface, create a sane data store, etc.

    Even this "Generic knowledge" covers a lot of ground. There are few other occupations where you have someone who needs to be incredibly technically knowledgeable, but must also be fairly competent in a wide range of other disciplines as well, just to be considered slightly qualified.

    No wonder they pay us so well.



  • @Lorne Kates said:

    @lucas said:

    The total number of fucks I give is zero.
     

    Is your FuckArray zero-indexed? Do you give no fucks, or do we owe you a given fuck?

    console.log(fuck.length);
    > 0
    


  • @gu3st said:

    @Lorne Kates said:

    @lucas said:

    The total number of fucks I give is zero.
     

    Is your FuckArray zero-indexed? Do you give no fucks, or do we owe you a given fuck?

    console.log(fuck.length);
    > 0
    
    #DEFINE ARRAY_INDEXING 1
    console.log(fuck.length);
    > -1


  • What the university should be teaching (I'm assuming we are talking an IT programming degree†) is the mechanics of programming in lots of different enviroments, with the aim of producing well-rounded programmers. The degree should be exposing them to lots of different platforms and situations and paradigms to give them a wide experience, as well as (and here's what I think is most important) the critical thinking to take things learned in one environment and apply them to other environments.

    I expect a university graduate with a three- or four-year programming degree to have a well-rounded collection of skills and practices and a well-rounded set of experiences to do with modern programming. Breadth and depth.

    For example, embedded programming is usually very memory- and cpu-limited, and usually has no user interface. It teaches a programmer to respect resources like memory and CPU. It teaches how to write optimal code (and also how much work it is to write optimal code and how that work usually isn't worth it when resources aren't limited).

    For example, Web programming is a completely different user interface paradigm to desktop software. If a programmer has dealt with nothing but the keyboard-and-mouse desktop software paradigm for four years then how are they going to react when faced with something different (either web-based or something else)? Web programming teaches asynchronous communication concepts (you can't just what an alert box on a screen and wait for the user in web server code).

    Programming a web site requires different skills and approaches than programming a desktop application or programming a service or programming a database abstraction layer library or programming a smartphone app. I expect a programming graduate to have more than just an introductory level of skill in all of these.

    @blakeyrat said:

    Something everybody listing bullshit so far has missed: usability. Also the thing programmers are weakest at. And something with UNIVERSAL applicability. (Unlike the embedded bullshit or the web programming bullshit.)

    Oh man, I am so with you on that one. Every engineer should be able recognise when they are creating ugly and/or unusable shit and should be able to either not produce the turd in the first place or correctly defend why they are producing it, as appropriate.

    __________

    † If we are talking a Computer Science degree, then that is completely different. Computer Science is the study of programming in exactly the same way Astronomy is the study of telescopes.



  • @morbiuswilters said:

    @Chame1eon said:
    Is it becuase the languages themselves are useful or is it becuase they would be ideal for learning certain concepts or features in the general sense.

    Both. C is the grandfather to so many modern languages, and C is still
    used so widely. It forms the basis of practically every OS in existence.
    And understanding fundamental C concepts can help you understand things
    that the OS provides, like file systems, memory management, networking.

    C# is a good example of a modern, high-level, strictly-OO, class-based
    language. It's in the same vein as Java, although with fewer rough
    edges. Most development is done in Java or C#, and if you already know
    one you have a leg up on learning the other. Learning either is going to
    be a big benefit for finding employment.

    JS is almost on the opposite end of the spectrum from C#. It has a
    different OO paradigm, being prototype-based instead of class-based.
    There are few prototypal languages out there and I think learning the
    fundamentals not only broadens your horizons, it helps you understand
    class-based OO better, too. Also, JS is a very, very dynamic language
    with many unique features, such as closures. It's a great way to get
    exposure to dynamic programming, and to learn both its benefits and
    pitfalls. Also, JS is used in a lot of development nowadays, so it's a
    useful job skill.

    I thought that it would be better to use
    languages that were useful in order to learn concepts so you can do
    both at the same time, but I have had Visual Basic C++ and Java.  Every
    time we start over completely and the first Java class seemed incredibly
    slow in the first place. (We ended on Arrays) It makes me think that we
    are spending way too much time on syntax, which is easy , when if we
    just limited the languages we could focus more on concepts from the
    basic stuff through algorithms focus more on design multithreading and
    learning new languages is easy when the concepts are the same.  

    The
    other problem with focusing on practical languages is that, even though
    a very large number of people will probably want java or c# and web
    languages with sql and maybe network stuff some people want things more
    related to operating systems embedded systems or games.  

     It seems that maybe at some point you would have to specialize.



  • @lucas said:

    JavaScript is one of those languages that is extremely expressive, but unless you know what you are doing you are probably creating a WTF in the process. I had a really hard time getting my head around it until I read JavaScript Patterns.

     

    It looks like something that is easy to use wrong.  I noticed it has some interesting features too but I never used them. I was starting to think that I could be making a mistake thinking of it as a wierd object oriented c like language, but then I never used it much after that.

     



  • @Chame1eon said:

    Every
    time we start over completely and the first Java class seemed incredibly
    slow in the first place. (We ended on Arrays)

    Really? Jesus Christ. My Java class got past arrays in the first week, I think.

    But, yeah, have to restart each time is a problem, but they shouldn't need to do that. Once you learn arrays in C, you don't need to learn them again in Java, you just need to learn whatever makes arrays different from C, which isn't much where students are concerned.

    @Chame1eon said:

    The
    other problem with focusing on practical languages is that, even though
    a very large number of people will probably want java or c# and web
    languages with sql and maybe network stuff some people want things more
    related to operating systems embedded systems or games.  

     It seems that maybe at some point you would have to specialize.

    Sure, at some point, but we're talking about basic programming here. Spend your first 2 years learning core concepts, getting your feet wet in a few different languages, etc.. Then you can focus on specializing on embedded or what-have-you.



  • @morbiuswilters said:

    @Chame1eon said:
    Every time we start over completely and the first Java class seemed incredibly slow in the first place. (We ended on Arrays)

    Really? Jesus Christ. My Java class got past arrays in the first week, I think.

     

     That is what I thought.  I really don't understand what is going on. There are languages like Python and Java now so you don't even need "teaching languages".  At the same time IDE's and debuggers like Visual Studio  and Eclipse along with the internet should make things even easier.  But a large number of students dropped my C++ class and the instructor curved the Java class using standard distribition becuase, aside from 2 people everyone got a horrible grade on the mid term exam. I heard some people were replacing Java with alice

    It really makes no sense at all to me especially when programming is taught in some high and middle schools now.

     @morbiuswilters said:

    But, yeah, have to restart each time is a problem, but they shouldn't need to do that. Once you learn arrays in C, you don't need to learn them again in Java, you just need to learn whatever makes arrays different from C, which isn't much where students are concerned.

     That is what I thought, but they keep restarting.  If they do that it really doesn't seem worthwhile.

     

     



  • @Chame1eon said:

     It looks like something that is easy to use wrong.  I noticed it has some interesting features too but I never used them. I was starting to think that I could be making a mistake thinking of it as a wierd object oriented c like language, but then I never used it much after that. 

     

    If you are interested I would read JavaScript Patterns book published by O'reilly, a little bit of googling can find a downloadable PDF. Also learning what the "this" keyword does is very important, there is good explanation here.

     



  • @lucas said:

    @Chame1eon said:

     It looks like something that is easy to use wrong.  I noticed it has some interesting features too but I never used them. I was starting to think that I could be making a mistake thinking of it as a wierd object oriented c like language, but then I never used it much after that. 

     

    If you are interested I would read JavaScript Patterns book published by O'reilly, a little bit of googling can find a downloadable PDF. Also learning what the "this" keyword does is very important, there is good explanation here.

     

     

     

    Thanks, If I use javaScript again in the future I will keep the title in mind.

     



  • @morbiuswilters said:

    JS is almost on the opposite end of the spectrum from C#. It has a different OO paradigm, being prototype-based instead of class-based. There are few prototypal languages out there and I think learning the fundamentals not only broadens your horizons, it helps you understand class-based OO better, too. Also, JS is a very, very dynamic language with many unique features, such as closures. It's a great way to get exposure to dynamic programming, and to learn both its benefits and pitfalls. Also, JS is used in a lot of development nowadays, so it's a useful job skill.

    What's unique about closures? Can you name a functional language which doesn't have them? And aren't they already covered by C#'s anonymous delegate implementations? JS' scope, OTOH, does provide a contrast to C#.

    @joe.edwards said:

    Clearly, students should have to learn all languages, ever.

    My undergrad course only covered 3 languages in depth (SML, Java, ARM assembler), but did include a course called "Comparative Programming Languages" which covered IIRC 10 languages in 4 weeks. Fortran, COBOL, Algol, BCPL, Simula, Smalltalk, C++, some others. I seem to recall some course which covered Prolog too.



  • @pjt33 said:

    What's unique about closures? Can you name a functional language which doesn't have them?

    Yeah, and how many businesses use functional languages?

    @pjt33 said:

    And aren't they already covered by C#'s anonymous delegate implementations?

    Are they? Not all anonymous functions are closures, but I don't know what C# does. I just advocate it, I don't use it.


Log in to reply