Dear students:

Here are some materials from our 2016 Kickoff Weekend conversation

   HIGH POINTS:     (Stuff like this (<- except for this one) is clickable...)

    o There are many programming languages - which ones matter to you?
      --> Here are a couple of language tag clouds:   (1)  (2) 

    o There are many ways to organize the languages:  "logically", as in this diagram.
      --> But what does "logically" mean...?

       * This Wikipedia article organizes them by "type".

       * This one organizes them by "paradigm".

      --> How do you think "paradigm" and "type" relate?

    o Or you could organize them historically, as in this diagram.
      --> But of course the history is not entirely unrelated to the logical structure.

    o You could rank them by "expressiveness", as in this reference.

    o Meanwhile, "teaching"/"learning" languages tend to change over time...

    o July 2014: "Python bumps off Java as top learning language"

    o do "production" languages:

    o The TIOBE Index for October 2016


   (1) "Lift the hood" - now, while you can, while you're young...

       --> A beautiful statement of this principle (for web programming) can be 
           found HERE  (search for the phase "when in doubt".)

       (2) Understand your tools - start with the machine!
           --> As a scientist, I do not tend to like black boxes and clouds!
           --> My academic grandfather's advice:
                "Touch it first with the tip of your pencil!"

       (3) Understand the Big Pictures
            . Study Psychology and recognize the diversity of thinking styles
              --> ...Think about that as you develop user interfaces!
            . Study ECONOMICS.  Why...?
              --> Economics is embedded in the art of programming!
              --> Examples can be found in the "Mythical Man Month", a book by
                  Fred Brooks, who also wrote another nice book: The Design Of Design

   (4) Learn Unix (Linux)
       --> ...the most general IDE ever created (including emacs!)
       --> Shells, tools (editors, debuggers, package managers, etc...)
       --> Regular expressions!

   (5) Learn TWO or more *different* languages, *beyond* what you already know

   (6) Distinguish "Design" from "Coding" and "Hacking"...
       --> The basic issues:  Idiums and Patterns
       --> The advanced issue:  humans, machines, and their modes of "computing"

   (7) Beware of "over-technologization"...  (back to Psychology and Economics)


   One difference between C++ and C#:

     o Wikipedia: The .NET Framework

   For low-level and/or high-performance programmers, "know your machine!"...

     o Wikipedia: The IEEE 754 and related floating point standards

     o Wikipedia: Graphics Processing Unit (GPU)

   Some great quotes about "programming" can be found HERE.

Go back to SC Challenge Class Materials

If you get too stressed trying to program, click here