Welcome to CS 330! Think of a big graph, each of whose nodes is one of the many programming languages that have been invented. This class is not about those nodes. The graph also contains a node representing you. This class isn’t about you either. If it were, I wouldn’t be talking as much as I have already! Really, this class is about the edges between you and these languages. In this class, we want a few things to be true of your graph…
This class is meant to be subversive. If it was housed in a humanities department, it would make your conservative parents uncomfortable, and I would appear on anti-education watchlists. My intent in this class is to knock down Authorities. But not political or religious ones. Technological ones. Like Java and C.
I think what happens to our brains is described well by psychologist William Perry. He studied college students like you in the 1950s and 1960s and found distinct patterns to their cognitive development. Let’s summarize the main stages:
In the world of technology, there is absolutely no reason to monogamously marry a programming language or a platform. There’s no need to choose. Your employer can get you an iPhone and an Android phone. You can use Windows, Mac, and Linux, either with virtual machines or dual booting. You can and should know many languages, continually learning new ones, because you are in a world where
isRight is neither
false. It is
Okay, with that discussion out of the way, let’s warm up our minds by comparing and constrasting some programming languages. In groups of 2 or 3, choose 3 languages in which you have written code. Contrast them according to these characteristics:
Write your notes down on a 5×3 grid on a piece of paper, which you will turn in for the semester’s first participation point.
We will discuss your findings together. Arguments are encouraged.
This semester our primary goal is not to make you masters of a couple more languages, but we will talk in some depth about shell programming, C++, Haskell, Java 8, and Ruby. My number one goal, however, is for you to have an intellectual relationship with the tools that make computation happen. I want you to find ways to make programming less of a headache, your software products to run faster, and your future career to be intellectually stimulating.
One of my goals this semester is to be less of an Authority. In the past I haven’t been able to decide if I should be the first to broach an idea in lecture, or if I should ask you to read some other source first. I’ve probably leaned toward the former, and it’s frankly exhausting. That said, I will ask you to do more reading this semester than I have in the past, and during lecture we’ll discuss what you’ve read about and apply them in worked examples.
I hold firmly the belief that we learners undermine our learning by starting things late. So, one of the things I will do this semester to encourage timely reading is assign reading quizzes. These will count toward your participation, but only if you answer all questions correctly. You will have several attempts to perfect a quiz, but only one submission is allowed per day. The earlier you read and attempt the quiz, the more opportunities you have to earn the participation.
Here’s your TODO list for next time:
P.S. It’s Haiku Monday! This is Perryian commitment:
He is not the one
But I will still marry him
And then he will be