Bits of CS

Author’s Preface

The following figure \ref{#fig:mona lisas}{1} shows three different versions of the Mona Lisa by Leonardo da Vinci, each rendered with a different level of granularity.

\figlabel{fig:mona lisas}{1}Different renderings of the Mona Lisa by Leonardo da Vinci.

The first picture on the left, which I call ‘Pixel Lisa’, has barely any meaningful resemblance to the original because it is made of such large square pixels. It’s fair to say that anyone visiting the Louvre in Paris to see the Mona Lisa would be disappointed if instead they saw Pixel Lisa. This rendering has every point in these square pixel regions overwritten with the average color value of the whole square. The real-life equivalent would be placing a grid on the painting and smudging all of the colors together in each square of the grid.

In the same way, Pixel Lisa is a visual snapshot of someone’s understanding of computer science before they study the field. They may have heard umbrella terms associated with the field (e.g. AI, microprocessor, or algorithm) and so they paint a picture of their understanding with these words as their colors for each big square pixel.

Although better than the first, the middle picture in figure \ref{#fig:mona lisas}{1} is still missing information. It’s a picture of a ‘black box understanding’ of the field—being able to use tools, but not understanding the whole picture of how they work.

And then we have the original Mona Lisa, as depicted in the right of figure \ref{#fig:mona lisas}{1}. In the context of computer science this original version of the Mona Lisa is a clear snapshot of everything in the field of computer science with no uncertainties, spanning from the most complex topics down to the very foundations of those topics.

It’s impossible to know everything, but when you learn with a focus on understanding instead of using knowledge as a means to an end, you enjoy it a lot more. The goal for this textbook is that the reader (1) obtains a great breadth of knowledge in the field of computer science, (2) becomes confident in applying this knowledge and molding it to fit their needs, and most importantly, (3) understands the why behind everything they have learned. Hopefully you enjoy my attempt at narrating the story of computer science and if you have any feedback I’d love from you! Feel free to shoot me an email: ross@bitsofcs.com.