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