Computer science can be an intimidating subject for anyone to study. It can be even more intimidating if you’re a woman, because only 18% of computer science majors in college are women. It can be extremely intimidating when looking at the field as a minority, because the percentage of minorities majoring in computer science is even smaller. From my perspective as a black woman, this disparity is frightening.
Disregarding computing’s lack of diversity for a second, the subject of computer science can seem menacing in and of itself. I believe that the perception of the difficulty of computer science stems from the answer to the question “What is computer science?”
The answer I heard the most was, “It’s when you make programs by writing code on a computer.” And that was usually followed with phrases like “Doesn’t that sound cool?” and “Eventually, you can make programs just like Microsoft Word.”
When people said that to me, I felt kind of scared. Yes, it does sound cool to be able to write code and program amazing software that millions of people will use on a daily basis, but looking at all of the features that programs like Microsoft Word has and imagining coding all of that from scratch seemed impossible. Especially because, in my freshman CS class, we aren’t going to cover the complex data structures needed to even begin writing a word processing program like Microsoft Word.
Not to mention the fact that many students in my CS class, including myself, are struggling with some of the concepts and logic that you must learn in order to succeed in CS. How are we supposed to even picture writing anything complex when we’re struggling to understand the most basic material? How are we to hope that we can persevere through the CS program when, during our first CS class, we all seem to simultaneously hit a wall that blocks us from the knowledge we try so desperately to grasp?
Learning programming is hard, but with the right tools, support, and frame of mind, it can be done. In this article, I discuss how the media has a negative effect on diversity in computing. I also talk about the challenges I’ve faced as a woman, a minority and a newbie in Computer Science, and offer some advice for how to persevere and overcome those challenges.
How the Media Affects Computing’s Diversity
One reason that young people shy away from computer science is the image that the media has given to computer scientists, which is that it’s not all too glamorous. The stereotype commonly depicts a white male with either an awkward, lanky frame or a heavy, round figure. This stereotype is usually accompanied by acne, large thick-rimmed glasses, and ill-fitting clothing that was popular in the 1950’s. Their personalities range from being extremely soft spoken and weak to extremely annoying and boorish in a “know-it-all” sense.
It’s hard for children and teenagers to relate to characters that are that extreme, especially girls and minorities. This stereotype perpetuates the idea that computer science is not for you if you aren’t white, male, or a genius (as many students may not “know-it-all”). Also, these images are not going to appeal to people who care about fashion and they won’t appeal to women or minorities because, speaking from experience, we don’t want to be the only person in the room with a different gender or skin color. Being singled out for our differences is uncomfortable and most times undesirable, and I understand why people try to avoid that kind of environment as often as possible.
These kinds of labels are the reason why that wall of learning that every budding computer scientist must face seems that much more impossible if you are a woman or a minority. There are so few examples of women and minorities in computer science in the media that we can look at and aspire to be like.
I chose to go into CS primarily because I fell in love with fixing problems and creating projects with code, but I also saw it as an opportunity to be a role model who could encourage young women to pursue CS by example. I felt encouraged to break the negative and exclusive stereotypes that people in CS are often given in the media because of the lack of role models and positive portrayals of people in CS that I saw in my childhood.
My Experiences with Computer Science in High School and College
I thought my first Computer Science class in college would be a breeze. I took computer science classes in high school-- one in C++ and one in Java. The Java course was Advanced Placement (AP) Java, and while I did well on the programming aspect of the course, I struggled with pacing through loops and if-else logic manually. I thought that I would understand how to go through the logic as the year progressed, but while I understood the String and GridWorld APIs just fine, I still had trouble stepping through the logic.
Although I knew I wasn’t prepared, I took the AP test in the spring anyway and received a 2. The only way the credit would have transferred to my institution of choice was if I had received a 4 or 5. I took this as a sign that I definitely needed to be refreshed on the material and figured that college was the perfect place to start fresh.
I started with Introduction to Software Design. I was excited to begin learning techniques that are necessary to become a successful software engineer, and I figured since I already took AP Java, I had at least seen most of this material before.
It turns out that I was right and wrong. When the class started out, I knew all the material, but I still took notes in class. I answered questions when prompted and started the homework ahead of time. Everything was going well. The first test was a piece of cake.
Unfortunately, as the semester progressed, I had to put more time into my other classes, and sometimes CS was put on the back burner.
Because of this, I didn’t study as hard for my CS midterm. My first mistake was assuming that the second test would be just as easy as the first one. My second mistake was not taking the time to really look at the material before the test. I didn’t do well.
What happened? The material on the test was the topic I struggled with the most: logic. When I received my grade after the exam, I felt depressed. There I was again at the same wall that I faced during high school. . While one barrier keeping people from flocking to CS is the image given to computer scientists by the media, another barrier is the actual content. There’s no doubt about it: learning to program is hard.
Tips on Learning to Program
There is good news. While there may not be many role models for us to look up to, we can become the role models that young girls and minorities can look up to in the future (or even right now). We just have to make it over that wall. I have a few suggestions that I think can benefit beginners who may be experiencing the wall:
- Manually debug your code with pen and paper.
- Begin discovering how code works by debugging it in a compiler.
- Write test cases.
- Ask a TA or friend to look at your code.
- Look at the way you’re formatting your code.
Sometimes it’s better to debug the old fashioned way. This method can be extremely tedious and confusing at times, but if you can manage to struggle through it, computer science will become less frustrating, especially as you begin to learn more complex topics.
I had never heard of a debugger before this semester because I didn’t use it in my previous computer science classes, but this tool is really helpful to start with. It can benefit you tremendously if you’re having trouble finding out how the computer is implementing your code if it doesn’t act as expected.
I also had never written a test case before this semester, but they are also a really great way to understand how your code can fail. Testing my code also helped me understand that it’s so much better to test your code as you write it. I cannot stress that enough! You will save so much time time if you can identify which components of your program are failing.
Sometimes it can be hard to see exactly what’s wrong with your code if you’re just looking at it yourself. Having a friend work through the code with you can reveal a logical error that you may have overlooked.
It took me half a semester to really comprehend that there are more effective, shorter ways to write code. If you’re struggling with understanding why your code isn’t working or if you think your code can be shorter, break it up into smaller pieces (methods, functions, etc.) to make it easier to read. Also (boolean specific advice), if you are using if-else statements, always write the conditions so that they will test if the code is false first then, at the end, if all of those fail you can return true. This will make your code so much shorter and less convoluted!
What I’ve come to realize is that the logic behind CS is not something that can be avoided if I am to become a good computer scientist. I need to be able to step through loops and if – else statements with ease if I am to really understand how code works. It can be really tempting to just give up and say, “I’ll just let the compiler debug my program” when manually debugging the program not only helps my understanding of how my code works, but also makes me feel more competent as a coder. While it’s great to ask people for help, sometimes it can be really satisfying to know that you can find the answer on your own through pen, paper, and a lot of patience. I know it’s going to take a lot of effort on my part to climb this wall, but in the end I know it will make me a better computer scientist.
Advice on Being the Only Woman or Minority
When it comes to advice on how to deal with being the only woman or only minority in a computer science class, the best thing to do is try to make friends. There are always going to be people in these classes that think that you may not be capable because you are a woman or because you are a minority. I’ve found that most people are struggling just as much as (if not more than) you are. Maybe it will be different as I enter upper level courses, but right now, I can say that everyone tries their best to help everyone out regardless of race or gender.
I consider myself lucky, as I know that this may not be the case for many other women and minorities starting out in CS. If you are facing mild discrimination in your classes (i.e. the occasional sexist/racist remark), I would, first, recommend telling them that those comments bother you. If that doesn’t work, prove to them that you’re just as good as, if not better than, they are at coding. Lastly, I would recommend finding a network of people from whom you can receive specific advice. For me, the knowledge of having the NCWIT Award for Aspirations in Computing recipients network is very comforting as I continue through CS because I know that I can always ask them for advice or even just vent my frustration with CS topics, sexism, racism or anything, really.
If you are experiencing extreme discrimination in your classes (i.e., harassment), talk to your teacher or a school official, because that behavior is unacceptable and should not be tolerated.
The best thing to do when facing adversity, whether it be from other people, societal perception, or the course material, is to remember that the situation that you are in is not permanent and you will get through this. I try to remind myself of that as finals week approaches. We will get through this. We will dominate this wall.