Cryptography: Classical to Quantum

Cryptography is an old subject. Any time two parties wish to communicate in secret, cryptography is useful. For example, when Julius Caesar had to communicate information of military significance, cryptography, albeit a simple one, was used, leading to the algorithm by the name “Caesar’s cipher”. This algorithm simply shifts every letter in the original message by three (A becomes D, B becomes E, and so forth), and is obviously very easy to break. Modern cryptographic algorithms are much more complicated, but the essence of it has not changed much. Cryptography widely used in communication technologies today comes down to devising ways to encrypt a message so that only the intended recipient can decrypt it back to the plain text.

Suppose we wished to make Caesar’s cipher stronger. Instead of shifting every letter by three, we may devise a look-up table that switches every letter with another letter as given by the table. Such a table may look like the one below, in which you can look up any letter in the first row, and the corresponding letter in the second row is its encryption.

ABCDEFGHIJKLMNOPQRSTUVWZYZ
GQLKVBOXWTMUHYDPZRNFACEJSI

According to this table, to encrypt a message, I would switch all the A’s to G’s, B’s to Q’s, and so on. Decrypting is just as easy as long as you have access to this table. You look up the letter in the second row, and switch to the corresponding letter in the first row. The G’s become A’s, Q’s become B’s, and so on.

By this rule, “Meet me at the park” would become “HVVFHVGFFXVPGRM”. Here, I took out the spaces to hide some contextual information, because a three letter word in English is most likely to be the word “the” and I don’t want to give out such information.

Now, I simply need to share this table with the intended recipient of all my secrets, and as long as nobody else gains access to our secret table, I can communicate by sending encrypted messages, and the information will be safe, right?

Wrong. This is still a weak cipher. Let’s consider why. It is a major improvement on the Caesar cipher in which an adversary could simply shift the letters back by three to reveal the secret. However, the English language, like any human-spoken language on Earth, has distinct statistical characteristics that make a cryptographic algorithm like this one prone to attacks.

The most common letter used in the English language is the letter e. If I’m using the above table to communicate a message of significant length, it is not long before an attacker who observes the encrypted message will notice that the letter “V” likely is a substitute for “E”, because it seems to appear much more often than any letter. In English, T, A, O, then I are the next common letters after E, in that order, so the attacker may figure those out too by simple use of statistics. Eventually, all of the letters will be broken using a combination of statistics and inference from context.

So can we do better?

Before we discuss more cryptographic algorithms, let’s lay the necessary foundations.

Bits

At the heart of modern communication is the usage of bits to convey information. The word “bit” was coined by a statistician named John Tukey, who also coined the term “software”. A bit stands for “binary digit”, and each bit can hold a value of 0 or 1. Thinking of information as a collection of bits is particularly useful for designing computers, because computers store information in memory which consists of transistors. Each transistor can be in one of two states at any time. We denote one of the states as 0, and the other as 1.

All information can be represented by bits using some standardized process. For example, text can be converted into bits by lookup in each character of the text in the ASCII table, which assigns a number to each character. Those numbers can then be converted to 0s and 1s using binary math.

XOR Operation

The XOR Operation is commonly used as the building block of cryptographic algorithms. XOR stands for “exclusive or”. The operation takes two bits as inputs, and outputs 0 if the two input bits are the same. If not, the operation outputs 1.

So the possible input/output combinations of an XOR operation are as follows, where ⊕ denotes the XOR operation sandwiched by the two input bits:

0⊕0 = 0

0⊕1 = 1

1⊕0 = 1

1⊕1 = 0

The magic of the XOR operation, and why it is so useful for cryptography, is in its reversible nature. If you XOR a bit (call it the “original bit”) with a random bit (call it the “key” bit), you get a certain result (call it the “encrypted bit”).

Now, XORing the encrypted bit with the key bit turns the encrypted bit back into the original bit.

Here’s an example. Assume the following:

Original bit = 0

Key bit = 1

Encrypted bit is calculated as the original bit XORed with the key bit:

0⊕1 = 1 = encrypted bit.

Now, XORing the encrypted bit with the same key bit gets you back the original bit. This process works like a decryption, because you are decrypting the encrypted information to get back the original information.

1⊕1 = 0 = the original bit!

This works no matter the value of the original and key bits. I suggest that you try a few examples yourself to verify this fact.

One-Time Pad

Now that you understand how the XOR operation works, we are ready to introduce the “one-time pad”, a provably secure encryption algorithm which cannot be attacked on the basis of statistics.

To illustrate with a simple example, let’s assume that Alice and Bob already share a secret key. The topic of key-sharing will be covered later, so for now, let’s just assume that they’ve already gone through the key-sharing process and they both know that the key is “1001 1100”, while nobody else knows it.

Now, let’s say that Alice is trying to send a short message “1011 0101” to Bob in secret. To do this, Alice would XOR each bit of the plaintext with the bit from the key in the same position. This is called a “bitwise” XOR, and results in the following.

(1011 0101)⊕(1001 1100) = 0010 1001

Now, Alice can send this encrypted text (0010 1001) to Bob and it is completely safe from attack. An eavesdropper (let’s call her Eve) who gains access to this encrypted text in transit will have no way of knowing what the message is. It simply appears to be a random collection of 1’s and 0’s, and no statistical information is revealed that may help Eve break the encryption to turn it back to the original message.

Once Bob receives the encrypted text, he can recover the plain text by taking the encrypted text and applying the bitwise XOR operation with the secret key:

(0010 1001)⊕(1001 1100) = 1011 0101 = the original message!

The problem with the one-time pad is that the key can only be used once. Any key that is repeatedly used is proved to give out some information about the original text. Another concern is that the key must be the same length as the message itself, and if you had the ability to share a long key in secret, why not just share the message itself?

To overcome these problems, cryptographic algorithms have been devised to safely exchange a key (of limited length however), and to encrypt and decrypt a message using such a key. Although not provably secure theoretically, these algorithms still make it difficult for a third-party like Eve to figure out the original text, and only known attacks are brute force attacks that try every single permutation of possible keys. So far, these algorithms have stood the test of time to potential attacks, and are used in communication technologies everywhere today. This post will not delve into specific details of these algorithms, but an interested reader should read about Diffie-Hellman protocol for key exchange, and AES (Advanced Encryption Standard) as an example of encryption/decryption algorithm that works with a key of limited size (128, 192, or 256 bits), to get a taste for how some algorithms work under the hood.

These algorithms are in the realm of classic cryptography (as opposed to quantum cryptography). Classic cryptography algorithms depend on difficult math problems that even the fastest computers in existence cannot solve easily or quickly, such as the prime factoring problem. As long as computers don’t get too fast to solve these problems in a reasonable amount of time or to perform a brute force attack quickly, we can continue using these algorithms in cryptography.

A concern to classic cryptography is the observation that historically, computers have gotten faster over time. This means that classical cryptography may become useless in the future. Any algorithm that depends on computers being slow may become obsolete one day. Quantum cryptography, on the other hand, does not depend on math problems. Instead, they depend on the laws of nature. This is a paradigm shift from cryptography of the past, and has been of great interest in the recent decades as an alternative to overcome the limitations of classic cryptography. In the next sections, we will introduce the relevant laws of quantum physics that aid in cryptography, then quantum cryptography itself.

Qubits

We discussed bits in information theory previously, and it turns out that nature has its version of bits. We call them “quantum bits” or “qubits” for short, and we use this term generally to mean any quantum state that can be one of two values. Spin of an electron is one example, but for quantum cryptography, the orientation of the vibration of a photon will provide us with the qubits we need.

Quantum Nature of Photons

If you have a pair of polarized sunglasses, you have in your hands a device to measure the quantum nature of photons. Light consists of particles called photons, and each photon has an intrinsic orientation that can be filtered based on the orientation by the polarizer.

Sunglasses filter certain photons, but if we let photons through a calcite crystal, we will see that a random photon will pass through and emerge having one of two orientations with a 50/50 chance. If we orient the calcite crystal a certain way, we can force the photons to emerge with either a vertical or horizontal polarization.

Illustration: if a photon goes through a crystal in the following orientation,

then emerges with one of two orientations:

Once polarized, these same photons, if they were to pass through the crystal again, will retain the orientation as long as the orientation of the crystal is not changed.

A really interesting thing happens when I tilt the crystal by 45-degrees. Now, a photon is forced to be in one of two states, either 45-degrees up, or 45-degrees down as illustrated below. Surprisingly, regardless of the previous state (vertical or horizontal), the two new states are equally likely. There is no classical analogue to this nature of orientation and probability, so quantum mechanics is sometimes hard to wrap our heads around.

Illustration: A previously polarized (vertical or horizontal) photon goes through the diagonally-oriented crystal as below:

And emerges with one of these two states:

Another key feature of the photon’s orientation that makes it particularly useful for quantum cryptography is that polarizing the photon with this tilted crystal makes it “forget” the original orientation. Let’s call the original orientation the A basis, and the tilted orientation the B basis. If I measure the photon to be vertical in the A basis, it will stay vertical in the A basis as long as I don’t measure it in any other basis. But if I measure the spin in the B basis, then the original orientation in the A basis is forgotten, and measuring in the A basis again could result in a 50/50 chance of vertical or horizontal, since B now acts like the original basis, and A is now the new basis.

Quantum Key Distribution

With the above crash course in quantum physics out of the way, let’s see how we can take advantage of the quantum nature of photons to implement key distribution using photons. This process is called Quantum Key DIstribution, or QKD.

The goal is for Alice and Bob to share a string of bits that Eve doesn’t know. Alice can prepare a bunch of photons, and randomly select the A or B basis to send each photon. Suppose the below table represents the bases and the results that Alice observed. Here, we’ll denote the orientations with 0 and 1 instead of vertical and horizontal to be consistent with the notation of bits in cryptography.

Alice BasisABBABBAAAB
Orientation0000101100

These photons are sent to Bob using an optical fiber. Bob also randomly chooses the basis with which to measure (A or B). He measures the following orientations:

Bob BasisAABAABABBA
Orientation0100101111

Notice that every photon which Alice and Bob chose to measure in the same basis resulted in the same value. This makes sense, since that is consistent with how photons behave. However, every photon that was measured in different bases has a 50/50 chance of flipping.

Now, Alice publicly shares the bases with which she measured each photon. Alice and Bob can keep the bits that were measured in the same basis as their secret key.

Here’s the end result:

Alice BasisABBABBAAAB
Orientation0000101100
Bob BasisAABAABABBA
Orientation0100101111
Same basis? (Y/N)YNYYNYYNNN
Key00001

So their secret key is “00001” in this example.

The example above only used 10 bits, and they ended up with a 5-bit long key since the other 5 were measured in the wrong basis. In actual applications, they would use a much longer sequence of bits to arrive at a sufficiently long key that can be used as a one-time pad.

Detecting Eve

Now, Alice and Bob must ensure that there was no eavesdropper present. Suppose their secret key is 256 qubits long. They could randomly select a few bits to compare, but the act of comparing requires them to give some of their secret bits away through an insecure channel, and they would have to discard those bits. A better way is to choose some random combination of bits, and share the sum of those bits, modulo 2. For example, Alice might say, “the sum of my 22, 54, 195, 200, 210th bits, modulo 2, is equal to 1.” And Bob can confirm whether his sum is the same. If their remainders don’t match, that tells them that someone had tried to measure the photon along the way, and because of the nature of quantum physics, the act of measuring has a probability to change the value had they measured in the wrong basis.

If the sums do match, that is still no guarantee that there was no Eve, since Eve may have gotten lucky by choosing the correct basis, or choosing the wrong basis but Bob ended up re-correcting the orientation when he made his measurement by sheer chance. Or maybe a bunch of bits were different, but the remainder just happened to be the same as that will happen 50% of the time just by random chance. So to be confident, Alice can now choose another combination of random bits and compare the sum with Bob. They can repeatedly do this until they are statistically confident that there was no Eve in the middle.

Future of Quantum Cryptography

The physics is there. Quantum cryptography, by the inherent nature of quantum physics, has the advantage over classical cryptography which relies on mathematics and the slowness of current computers and their ability to perform brute-force attacks. What’s preventing quantum cryptography from widespread use is the engineering challenge that comes with engineering a quantum network of intercontinental optical-fiber of long lengths and multiple nodes. One multi-node quantum network was built with a DARPA grant in the Boston metro area and was operational for 3 years starting in 2003, but it hasn’t been adopted much in the private sector where classic cryptography still works just fine, and still is much less expensive to implement. More recently, there is an ongoing effort in China to implement satellite-to-ground quantum channels. Only time will tell, but it may just be a matter of time before all cryptography will shift to quantum cryptography in the near future.

what to do in a changing world

Back when I was a software engineer at Google, Vint Cerf came by our office to give a talk about the future of the internet. Before you ask me “who that?”, let me tell you. It is a safe bet that, unbeknownst to you, your life was significantly affected by this man. His invention of the TCP, a reliable protocol that defines how data is sent from one node to another on the internet, has undoubtedly changed the way you live. That is so because a reliable internet has changed the fabric of society and continues to do so.

Today, most people take for granted the existence of the internet and how well it works. But let us remind ourselves that the technology is very new. Just the fact that Cerf, or “The Father of the Internet”, is still alive is a reminder of the massive change that our world has gone through in a single generation. The internet is so new that I didn’t even know of its existence for the first ten years of my life, and I didn’t even consider to study about it when I was choosing my college major. At the time, I hadn’t yet realized that it was an important topic to be knowledgeable about. Heck the internet is so new that I haven’t installed internet in my home yet! But I’m told that I’m one of the last people to do so in this country. Despite its newness, the societal forces of my post-college years pushed me toward learning about it and working with it, and little did I know, I ended up making a career out of it.

I was thinking about this quickly-changing society the other day when my fiancée, a computer science researcher, was explaining to me the Lamport timestamp algorithm by Leslie Lamport. It is a fascinating algorithm to say the least, but what hit me more is the fact that he is still alive. It turns out that Lamport, like Cerf, is another person who has affected all of our lives even if we don’t know it.

The systems that lie at the heart of the internet services we use today are “distributed”, meaning that they are made up of many components that exist in different places (and often in different continents) that behave as one system, and such a system must somehow order the events happening at different places at different times within the system.

A distributed system is required because you simply cannot have one server taking all requests and one server storing all the data. A modern system handles an incredible amount of data (think about photos on Instagram or videos on YouTube you interact with daily, but multiplied by the number of global users) moving from one place to another, and it is simply impossible to store all that in a single database or to take in requests for the data from millions of users simultaneously with a single server. Even if there were a server big enough to do that, a single server represents a single point of failure and a failure is unacceptable considering that these systems hold most of our financial assets among other things.

Delving into the technical details of the inner-workings of specific services we use today is not the purpose of my post today, but just to touch the surface of the challenges of implementing a distributed system, consider that the laws of nature, or more specifically, the limitation in the speed of light, forbids the components of a distributed system from synchronizing their clocks. Still, for the system to work, it must somehow order the events occurring in various components. Lamport’s algorithm is the building block with which a system accomplishes this ordering.

The fact that Lamport is still alive reminded me of the pace of change in the world that we are seeing today. Such fast changes have never been experienced by past human societies. This is the fastest we have ever moved as a species, so let’s take a moment to appreciate that. The world in 2020 is significantly different from what it was in 2010, the year I finished college. The fact that I have worked for eight different employers since is a testament to that, and I’m not even including all the freelance jobs I do now in music and teaching. This pace is a miracle if seen from a historical perspective considering that the vast majority of human history went like this: “Be born, die a few decades later, and the way the world works has not changed at all from the day of your birth to the day of your death.” Only recently does such a story not hold true anymore. And nobody even knows what 2030 will be like.

When I told a student of mine, who had just entered high school, that there is a high chance that he will be working a job that doesn’t exist yet, he asked me, “what should I be studying?” My honest answer to him was, “it doesn’t matter”.

In all honesty, your field of study does not matter all that much. Whatever specific domain knowledge you gain for a career that exists today will be outdated in 10 years, other than the fundamentals like reading and mathematics (so yes, be strong in those at the very least).

More importantly, whatever you are doing now, do it extremely well. This applies to everybody. I don’t care if you are a student, a parent, a barista, a surgeon, or a chief economist of a central bank of a country. Do your job well. If you don’t want to and you absolutely cannot get yourself to put in the work, don’t be afraid to switch fields. Pick something that you are at least driven to be good, and actually become good. I mean this advice seriously, and I mean it to be applied even for hobbies and recreational activities. Whether you are gardening, making YouTube videos, or playing the guitar, do them well. Because to do anything well requires that you build up your foundation, and that foundation will undoubtedly spring forward you in your future endeavors, whatever those foundations and endeavors happen to be in. You may not see the connections now, but you sure will in the future, looking back. Also, by doing things well, you will develop the inherent confidence that you can accomplish things, because you will have gone through the process of self-improvement already.

This importance of having that kind of confidence cannot be emphasized enough. When life throws a curveball at you and you must adjust course, the first step is acknowledging that you can indeed do so. Many self-help books like to claim that you can develop confidence in a matter of hours, and claiming as such must be helping with their book sales, but that is a flawed and deceptive message. True confidence takes time. It only comes when you actually are good. So become good.

As society gets more complex, the number of ways in which a person can live a productive life has increased as well. It is a natural byproduct of a trade-based economy in which we trade our skills for everything else we need in life, those other things being produced by other people with skills that you don’t have. Today, there are as many ways to live a fulfilling life as there are people on the planet.

For me, when I look back at my life so far, the foundational knowledge I have built up in mathematics and physics has been helpful. Because knowledge is most efficiently built up like a pyramid from the bottom up, shifting gears to a diverse array of possibilities is easier with a stronger foundation. For example, some of my recent pursuits in fields such as economics and artificial neural networks have been significantly accelerated because I had studied calculus extensively in the past. I would have never imagined this when I was doing calculus. Even though I applied calculus for years to the field of Newtonian mechanics, I had no idea that it could be applied to so many other things. I doubt that Newton, the inventor of calculus, knew either.

Another skill that does not get talked about often is the “confidence to learn difficult things.” Maybe that doesn’t really count as a skill, but it sure matters. So many people, when faced with a challenge, give up because they feel that they do not have what it takes to learn, and settle for what is, even when they know that they are not satisfied in their current situations. That’s really too bad, because we actually all have the power to change ourselves and our situations if it weren’t for our self-limiting beliefs. Sure it may take you more work than another person because of factors like your lack of experiences or innate abilities, but the words “hard” and “impossible” are not to be confused. They do not overlap.

It is certain that the world will continue to change, and you may need to adjust by learning new things. It it hasn’t hit you yet, expect that it will soon. A natural question is then, how do you develop the confidence that you can learn? Again, there is no one right answer here. For me, much of my confidence comes from music, the one constant in my life. Music’s purpose is in its beauty, but there are also positive side effects of having devoted my life to music that I didn’t even imagine while putting in the hours of practice day in and day out. I simply wanted to make good music, but music has taught me much more than how to make music. The side effects are too many to mention here, but they basically boil down to the fact that music is extremely difficult to do well. As such, any other challenge that come up in my life all just seem so easy to me in comparison. I don’t even think twice about whether or not I will be able to overcome it.

If you find yourself asking “Can I do this?”, that’s a silly question. It’s not even worth discussing. Of course you can.

the world is not a zero sum game

When I used to teach computer science and shared with my students how an open-source software is born and developed, many of them would ask me, why would anyone want to start an open-source project?

Open source projects are kind of a big deal, to say the least. The React JavaScript library, the software at the very foundation of what Facebook is built on top of, was made open-source by Facebook. Google has made a similar decision with Chromium, an open-source sister of Chrome and Chrome OS.

My students’ question stems from the perception that it seems counter-intuitive for a company to share their secret sauce (the code that they developed) with the world. But they fail to see the upside of sharing and accepting contributions from engineers all over the world by turning a project open source to improve on it, and allowing creative people in all walks of life to come up unique and useful applications making use of the technology.

There is no question that Google and Facebook both have its share of brilliant engineers, but there is great power in the collective knowledge of the entire world that even the most successful companies stand to benefit from. It just takes stepping back from the myopic views (such as “me and this one rival”, or “our sales for the next quarter”), and observing the broad, long-term effects of improved software and universal access.

Do you think it’s an accident that Wikipedia today gives you much better information on most topics compared to other encyclopedias? It turns out that 7 billion prospective volunteers collectively make a much better expert than a few hundred well-paid professionals. By the same token, the quality of a software is naturally improved by allowing the world to make contributions to the code. In this technology-driven world, better software means a better world.

One key thing to recognize here is that economic rewards in this world has not been, is not, and will not be, a simple game with winners at the cost of losers. The early hunter-gatherers who would share their hunt for the goodwill of their neighbors were onto something. Today, access to information benefits everyone, even the person who was the source of that information.

A great example of that is one of Google’s early data-processing models called “MapReduce”. Google used it to index the world-wide web, which was the foundation of how Google search worked in its early days. You would think that such secret should be kept within Google, but Google saw what it could mean to share the knowledge. So they published a paper, outlining MapReduce’s inner workings.

Out of that paper, arose a project called Apache Hadoop. It is an open-source collection of data-processing software. It allowed everyone (even small startups with little money) to perform analysis of big data. This has led to the explosion of applications that make use of data in just the last ten years. We now take it for granted that weather and traffic can be predicted more accurately than ever before, your photos can automatically organize themselves based on factors like where it was taken or who is in it, everyone can get customized movie recommendations as if they’re curated by someone who knows the deep intricacies of your personality, and doctors can diagnose diseases more accurately. Data analysis even exists in surprising areas where you would not expect it. I was very surprised to learn recently that farmers can predict the best time to milk a cow simply by letting a cow wear a pedometer and letting a data-processing software analyze the output from the pedometer. With the right technology in the hands of the right people, maybe the day when we’ll be able to predict earthquakes in advance isn’t so far away.

Tomorrow at Google, we are celebrating the company’s 20th birthday. It is a celebration of the innovations of the past, as well as the future that is to come. Yet as we speak, we are in the midst of a trade-war led by some misguided people. The future that I dream of is an open one, a world in which both physical goods and knowledge flow freely across boundaries. This world is not a zero sum game.

On sexism

It has been a few days since the infamous Google doc, or the “Anti-Diversity Manifesto” as so many media sources have called it, has been passed around. I’m not going to respond specifically to it because many have done that already, and it is so easy to view this as an “us-versus-them” issue because of the outspoken nature of those who hold extreme views on the topic, even though the reality is much more nuanced. I wish the media didn’t simplify the issue and boil it down to a sound bite with a misleading title like “Anti-Diversity Manifesto”, because, despite the author’s being labeled as “sexist”, his main motivation for writing the document doesn’t seem to be to speak against diversity itself, but to question Google’s specific diversity initiatives. If you carefully read it, he had some good points to make.

However, beyond the doc, I do want to point out a few things about sexism in the workplace and in society in general, because the gravity of the issue at hand is actually about so much more than this one single doc.

“Sexism”, just like many other words that end in -ism, is ingrained in the way a society functions which propel behaviors from the members of the society that cause a certain effect, in this case, the degradation of the members of the female gender, made possible largely by what are considered the societal and cultural norms, and our indifference toward those norms. So the problem isn’t simply the one openly sexist person who believes that men are better than women, but rather, what all of us tolerate every single day, or at times don’t even realize or label as sexism because of our ignorance and the subtlety of the issues that we encounter. So much of sexism goes unnoticed because we have built a society in which it is perfectly ordinary for one gender to be treated differently than the other, so unless we are actively seeking to identify and bust the existence of sexism, we will continue to live in a sexist society. Most of the time, we don’t even stop to think about it, or realize that something is wrong, which is exactly why this is a problem.

It starts early in our lives as culture and society subliminally enforce stereotypical norms on everyone from a very early age. As young kids, boys are given puzzles and Legos that improve their spacial and reasoning abilities, while girls are given dolls to play with. Boys are encouraged to develop skills that lead to a career (You like to cook? You should become a chef) while girls are encouraged to develop skills for making a home. (You like to cook? You’ll make a great wife and mother.) That might not be as big of an issue if homemakers got the respect that they deserve for the hard work that they do, but as long as society continues to elevate work above home-making, and money-making above relationship-making, this is a major issue. In school, boys are more likely to be given feedback from their teachers that directly address their performance, while girls are more likely to be commented on about their smiles and clothes. And even if we actively tried to stay away, nobody is immune from the dose of pop culture that is always screaming at us; all those TV shows and movies that portray men as heroic protagonists and women as objects to be won by those heroes. And throughout all of these experiences, little by little, we start to pick up on the social cues, and what it means for each one of us to be a valuable member of this society. While boys are taught to be brave and take risks (which naturally lead to many life opportunities), girls are taught to play it safe, be gentle, and look and act cute.

The sexism of course doesn’t stop in adolescence, they continue through adulthood. I routinely notice that when a group of people are having a conversation, a male member of the group will often interrupt a female member who is speaking, and nobody will raise this as an issue. This happens so often that we don’t even notice it as it happens right in front of our eyes. (One time, I encountered exactly this situation in a meeting to discuss how we can promote diversity. Irony much?) Not only do we often fail to recognize the inherent sexism here, men even benefit from such a scene, because so many people view it as a sign of strength when a man expresses his views and dominate the conversation. But our reactions are surely different if the opposite were to happen, that is, if a women were to interrupt a man. Or heck, she doesn’t even have to interrupt anyone, she may just hold a strong opinion about something and express it, at which point she quickly gets labeled as “bossy” or “bitchy”. (related read: Lean In by Sheryl Sandberg) Ok, maybe people are not that explicit nowadays with their choice of words, but you get the point.

Here’s another example that you may have encountered: a female coworker of yours does something that is outside of her job description, such as volunteering to organize a team lunch together, or cleaning up after a social event in the office. If you pay some attention as to how the situation plays out, you will notice that she got little to no recognition for this work, because subconsciously, we take it for granted that it is the normal role of women to be these supporting figures behind the scenes, all the while men are encouraged to take on the more flashy, “respectable” roles that stand out more, and often are more about elevating himself rather than the team (by the way, it is horrible that such actions are tolerated and even rewarded, because it hurts the company more than it helps if we wish to engineer a great product, but we can save that discussion for another day), and through these selfish actions, he somehow earns status and respect, and with that come the raises and promotions. And even if your male colleague were to volunteer himself to do some of the “supportive” tasks instead, he is still recognized for that because it is out of the norm for men to take on such a task and be so “selfless”, so his actions are immediately noticed and appreciated.

So about the “doc”, while we may feel good about ourselves because we think that we are fighting sexism by expressing our outrage toward one man who decided to share his views with the company, please, don’t let us think that that is the way to change. It is great to have these conversations as a starting point, but more importantly, let our actions speak loudly for what we stand for. Let us fight deliberately the sexism of this world. To start, we must be aware of the ways in which societal norms can put down one gender. Once we recognize the issue, we can actively challenge them.

Girls Who Code

Girls Who Code’s Summer Immersion Program application is now open.

If you know of any girls currently in the 10th or 11th grades, encourage them to apply to take part in this life-changing experience.

The Girls Who Code Summer Immersion Program (SIP) is like an intense coding boot camp for high school girls. Over the course of one entire summer, they attend the program for 7 hours a day, and they learn important computer science concepts such as conditionals, abstraction, and object-oriented programming, and their various applications such as robotics, cyber security, and game and web development. Most of the girls come into the program with little to no computer science experience, and not only do they come out with a newfound love for coding and problem-solving, they also learn that with time and effort, they can accomplish things that they thought they could not do.

Check out this video below documenting my students’ summer, and this LA Times article highlighting some of the girls and their projects. Video credit to Linda, my amazing fellow co-teacher!

Computer Science Education

As a former public school teacher and advocate for students everywhere, one issue that concerns me is the lack of access to computer science classes for students in K-12 schools.

The graph below shows the number of AP exam takers in various subjects.

ap-exams-1997-2011
(source: http://www.exploringcs.org/resources/cs-statistics)

It is immediately obvious that computer science has not seen the growth in enrollment that other subjects have.

But why? Considering that computing is arguably the fastest-growing industry in society today, how is it that our students are not exposed to the study of such a relevant and important subject?

This is a multi-faceted issue, but first, there is a serious shortage of computer science teachers. As a result, currently, only about 10% of high schools in the U.S. offer a computer science course.

To make matters worse, 97% of students who elect to study computer science in college choose the major because they have had prior exposure to computer science before entering college. So what about the students who did not have that opportunity?

Just put the numbers together: most high schools don’t offer computer science, yet only those who have been exposed to it consider it as a possible future career. We can deduce, then, that for most high school students in the nation, pursuing computer science is not even a viable option; they simply aren’t aware of the opportunities that exist.

Computer science is also suffering from an image problem. It is commonly (and mistakenly) thought of as a profession for privileged white males, sitting in cubicles typing away in front of a computer all day, eventually to suffer from extreme boredom and carpal tunnel, and die a lonely death. But that is far from the truth.

Programming is a creative endeavor, with as much opportunities for critical thinking and teamwork as any other field. It is an important and integral part in a variety of areas in society today. Computer professionals work for diverse employers, not just for tech companies. They are the ones who create the tools to make sense of data to inform policy to better the world. They help create technologies that cure diseases. They work with physicists and artists to create the algorithms to simulate the reflection of light or the movement of a strand of hair of a character in Pixar movies. They create platforms like Kiva that empower the marginalized to become entrepreneurs. They write the programs to auto-navigate spacecrafts, such as the MSL Curiosity Rover which, in a split second after the heat shield came off, made a decision on the safest landing-spot, and miraculously guided itself to actually land there softly, all in a low-pressure, low-gravity environment that could not have been replicated for practice here on Earth.

Anyone who wants to make a difference in the world can get off to a flying start by combining their passion with the knowledge of computer science.

If you are a high school student reading this, I encourage you to give it a try. Take a CS course or join a club if your school has it. If not, there are tons of online courses to get you started, and if you can, sign up for summer coding programs like Girls Who Code and others available in your area. It might just change your life.

If you are in college, chances are good that your school offers an introductory CS course available for non-CS majors. Enroll in it, and you might discover a new passion that you never knew existed.

If you are an adult, it is never too late to start learning. I know many people who got started in this field post-college and have grown to love it. Start taking introductory online courses, and attend meetups to see if there are others like you who might be looking for a study buddy. As far as online courses go, I really like the contents available on websites like Udacity, CodeCademy, and Khan Academy. They are all great places to get started, and each have their unique strengths, so see which one fits your learning style, or try them all.

Happy new year!
Shin