Dear students:

Here are some materials from our 2017 Kickoff Weekend conversation


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


Photos of white board: (sorry, you may have to zoom out a bit!) Track 1 (1:45 - 2:45 PM): left , middle , right Track 2 (2:50 - 3:50 PM): left , middle , right N.B. (NOTE):   Stuff is still coming in as of this moment   (Sun Oct 8 13:31:10 MDT 2017)
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 ...as do "production" languages: o The TIOBE Index for October 2016 MY ADVICE TO YOU: (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) MORE REFERENCES: o TALK flow o Language Examples o ...MOST RECENT LINKS WILL APPEAR HERE... 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