Altruism – a concern for the comfort, happiness, well-being and productivity of others.
I teach “Introduction to Computer Science” to about 1,500 students each year at the University of Illinois. On the first day of each semester, I tell our incredibly bright and enthusiastic students that we will be introducing computer science and programming in our course, but we also will be introducing them to the community of computer scientists. Then I say these words:
“Computer scientists are some of the most altruistic people in the world. I don’t know why.”
The students always chuckle at this.
I tell the students that I’m not kidding and that over the upcoming semester we will see example after example of difficult problems that have been solved or significantly mitigated through technological solutions. Then I go on to explain about the stackoverflow.com phenomenon – an online community where an astonishing number of people take time out of their busy days, take time from their jobs, their hobbies, their projects, their hopes and dreams to help strangers with theirs. I also explain to them that more than fifty students who have taken our course in previous semesters are volunteering this semester to help them with their homework, labs and outside projects. And throughout the semester, in lectures and in labs, we will work in teams lifting each other up and working toward a common goal, the mastery of this difficult yet rewarding craft we call computer science. Then, as the semester winds down and all the readings, the homework assignments, the labs, the machine problems are done, we will ask you to consider paying it forward, helping others as you have been helped, as you move forward throughout your life in computer science.
There are many well-documented reasons students should study computer science:
-
- Innovation – computer science is the future.
Robots that mow our lawns; self-driving cars; movies that stretch our imaginations; virtual worlds that let us experience nothing we have ever known before; social media engagement that keep our species more connected than ever. The future belongs to those who speak the language and possess the tools of computer science.
-
- Success – there are currently far more dreams than those with the expertise to fulfill them.
There is an urgent need for well-trained computer scientists to fill existing demand. The demand for, and the willingness to pay for, well-educated computer scientists will continue for decades. In his last State-of-the-Union speech, President Obama put “teaching our students to code” at the top of his list of priorities for the United States – just ahead of curing cancer.
-
- Confidence – learning computer science gives you a leg up on the competition.
A well-trained computer scientist embraces challenges with the confidence that their toolset is ideally-suited to tackle any challenge or idea.
-
- Creativity – computer science empowers us to create the unexpected.
We are just beginning to explore the possibilities of the digital world. Every day, new and exciting solutions to problems facing our world are offered up by new waves of computer scientists and we are consistently blown away by innovative creations in the arts. Music, art and cinema are all being transformed by computer science. Entire industries are being disrupted by technology. In the next decade or two, agriculture and transportation will look nothing like they do today.
-
- Expertise – well-trained computer scientists are are problem solvers.
Learning computer science develops exceptional logic and problem solving skills. There is extensive developing research however, demonstrating that these tools extend to other life skills like critical thinking, mathematics, science, language construction and active reading. Computer science is more than just programming. When a student studies computer science, they learn problem solving skills, computational thinking, algorithm development, number systems, abstraction, idea mapping, data representation, structured thinking, and iterative refinement of ideas, skill sets and solutions.
These compelling prospects have communities scrambling to incorporate computer science into all levels of their school’s curriculums. Forward thinking communities understand that the earlier their children learn fundamental topics of computer science (e.g., sequences and conditionals), the more deeply they absorb these concepts. Learning to program and exploring the ideas of computer science is like learning a second language, the earlier you start, the easier it is to master.
These student outcomes are reason alone to adopt computer science wholly into our community goals, but perhaps the most overlooked reason for teaching computer science is:
-
- Abstraction – the ability to generalize a set of rules and ideas from specific examples.
Abstract thinkers strive to think of the big picture – to ignore details that can muddy the main point, to reason simply about the complex. Computer scientists are always abstracting information and procedures to create their applications. Abstraction is the foundation of computational thinking and is one of most important fundamental skills that a young computer scientists will master.
Even beyond the scope of computer science, a student who is adept at abstraction has an advantage in a world of ever-increasing complexity. James Flynn, an intelligence researcher in New Zealand, has spent years exploring why subsequent generations are scoring higher on similar IQ tests than preceding generations. Flynn suggests that historical changes in occupations and lifestyle have evolved from concrete tasks such as construction, manufacturing and tending to crops, to more information-intensive activities – those that use more abstract thinking and information classification. As our economy shifts from agriculture and industry to information more people are involved in occupations like doctors, lawyers and administrators – occupations that require big-picture approaches.
Even within specific occupations, abstract thinking has taken hold. Not long ago, farmers for example, would manage their farms very similarly to their ancestors. Farm management advice like what and when to plant, when to fertilize and how much, were passed on from generation to generation. In the past decade however, growers are adopting a more top-down, system approach. They look at their farms in a big-picture sense, as a business and an ecosystem, with a large variety of potential inputs that need precise managing to optimize and protect their crop yields, profits and sustainable future.
Abstraction is the foundation of computer science and it’s also the reason computer scientists are altruistic.
The Golden Rule: Do unto others as you would have them do unto you – perhaps the simplest encapsulation of altruism there is. Many parents and teachers would be happy if their students followed this one simple rule of civility. Consider the frame of mind needed to apply the Golden Rule. First, a student needs to be able to step back from an action and assess a big picture of the situation in order for them to see their action as a part of a greater context. This is abstraction. Taking this a step further, a student needs to be efficient enough at perceiving the whole context to be able to mentally change positions with another person and empathize with how their action would feel if it were done to them. Big picture thinking and abstraction are prerequisites to fully and effectively implementing the Golden Rule.
There is no reason to expect that computer scientists are more empathetic than the general population, but their training may make them more effective and comfortable applying their empathy by identifying the appropriate situations through big-picture thinking and abstraction. After working with thousands of computer science students and watching their behavior and interactions play out over the years, I have seen enough examples of students selflessly helping each other achieve their goals and their dreams to be very comfortable and affirmed adding the seventh and final reason why your student should learn computer science:
-
- Altruism – a concern for the comfort, happiness, well-being and productivity of others.