Week 10

Boolean logic relates to the idea of binary, which depends on the idea of a single difference. A difference can be embodied in hardware, by making two ends to a pipe, and therefore introducing binary options in mechanical terms. Understanding the idea of Boolean logic helps us what information really is. Traditionally, “a fact” comes to mind when we think of information, whereas information is really about the difference – the way Gregory Bateson puts it, it is the “difference that makes a difference. ”

As Shannon demonstrated in his master’s thesis, “A Symbolic Analysis of Relay and Switching Circuits,”[1] electricity can also be used to embody the Boolean logic. Irvine describes binary units (bits) as the “interface between logic-mathematics and electronics.” Computation, therefore, builds on our cognition. While the concept of computational thinking is used to describe how humans think in computer science terms, we can go further and describe how computers think in human terms, and mention cognitive coding to describe how computer programs depend on human cognition to begin with. While software depends on human cognition, however, computers are more powerful than humans. We owe computers’ power to their processing capacity and memories.

The more one gets invested in computing, it becomes obvious that a good code is more than a good algorithm. The procissing capacities of computers not only form their power, but also their limitations. A good code should take into consideration the processing power of computer, and be as smart as possible.

Consider the following Python algorithm that multiplies any three input variables:

def functionMultiply(a,b,c):

mul=a*b

mul=Mul*c

return(mul)

This algorithm, however, can be improved in the following way:

def functionMultiply(a,b,c):

mul=a*b

return(mul)

The concept of computational thinking becomes more tangible once we take into consideration the limitations of computer. Wing eloquently describes this perspective by stating that computational thinking involves: “making trade-offs between time and space and between processing power and storage capacity.”[2]

This quote leads us to think about the elegance in coding design. Less code, less iterations, and rather applying more of algorithm and human intelligence, and relying less on the memory: “It is judging a program not just for correctness and efficiency but for aesthetics, and a system’s design for simplicity and elegance.”[3]

All of the software programs are designed to facilitate human thinking. In Java, the following statement prints a string:

print.out.ln(“Hello World”)

In Matlab, the following code clears the memory:

clc;

And finally, considering the following algorithm that I just wrote last week for my homework:

a <- a + theme(axis.ticks =element_blank(),

panel.background=element_blank(),

axis.text.x=element_blank(),

axis.text.y=element_blank(),

axis.title.x=element_blank(),

axis.title.y=element_blank(),

panel.grid=element_blank())

Even if you are not familiar with the R, Java, or Python, it is intuitively clear that the command “print.out.ln” somehow prints out something, “clc;” is clearing, and in the R code, I was creating something transparent or empty. Therefore, the coding process is eased not only through analogies such as “data sets”, etc., but also through the linguistic analogies with the English language.

What is really deblackboxed, from my perspective, is the way coding and predictive algorithms are altering our online exposure. The content we are formed online have became a means for us to make sense of the world: we consume news, media, entertainment, make buying decisions, and communicate through interfaces. Our interactions with computers, however, are used as data that predictcs the type of content we might be interested in consuming, the type of product we might look for, or to expose us the person that we might have known. Therefore, our online exposure is personalized for us – which brings us to the intersection of capitalism and computation.

[1] Shannon, C. E. (1938). A symbolic analysis of relay and switching circuits.American Institute of Electrical Engineers, Transactions of the57(12), 713-723.

[2] Wing, J. M. (2008). Computational thinking and thinking about computing.Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences366(1881), 3717-3725.

[3] Wing, J. M. (2008). Computational thinking and thinking about computing.Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences366(1881), 3717-3725.