Why Computer Science?

Jawwad Ahmed Farid
10 min readJun 27, 2023

A note for those considering CS as their undergraduate major.

Yesterday at IBA’s open house for students and parents I was asked why computer science (CS)?

37 years ago, I was good at math, physics, and chemistry. I didn’t want to do computer science. It wasn’t my first choice. I was aware of the field. I worked with computers. I played games on them. I liked them, but there was no buzz, no electricity between me and the subject.

When my friends asked what I was doing in the computer science program, I would tell them it was a means to an end. I wanted to be an actuary and I thought computer science would help. The first five papers of the society of actuaries were covered in the first year and a half at FAST. By enrolling in the computer science program, I could hack my way into the actuarial profession.

Also, I saw Marina Khan drop her kid brother at the test. Logical thinker I was I thought this would be a great way to finally meet her in person. An ultimate fan moment, or rather three years of fan moments. But only if we both got into the CS program at BCCI FAST ICS.

I passed. He flunked. And that was the end of that plan.

A year later I found something other than math that I loved. Technically it was still math. But a very different type of math. A thinking man’s math. Is there any other kind? A math with numbers. Math unlike any I had studied in twelve years of prior education.

CS is not math. My friends at the CS school are right. It is applied mathematics. But it is also a way of thinking. That is what got me in the end. The way of thinking.

I hated puzzles, brain teasers and riddles. And theorems and proofs. But I loved detective stories. And I loved numbers and playing with them. Computer science made it possible for me to do both. Solve detective stories and play with numbers. Surprisingly when we first read Minsky despite my aversion to proofs, I realized that there was a certain type of proof that I did like. You know like the friends you have who you would never think you would have? Minsky was poetry that ignored every single rule in the English language. Yet to the right parsers it was ethereally beautiful.

To me CS has always represented one thing. How do I solve this problem?

The lightning strike for me was debugging a particularly onerous error in my code in our operating system project. I had been up for three nights. Most of the work was done. But the code I had written wasn’t working. It was parsing and compiling but it wasn’t doing what it was supposed to do. The boot loader was working. The OS was working. The test program was working on its own. They just weren’t working together.

In those four hours between two am and six am in the morning, I traced every single step that I wanted the program to take. I realized three things in that process.

a) One, in a mentally questionable and deficient fashion, this was fun.

b) Two, I was good at it.

c) Three, most problems in my code could be traced back to variable initialization. This would be a recurring theme in my life.

That was it. This is the transformative epiphany that many of us go through during our education process. For some it is biology, for others it is literature. For me it was debugging code and tracing it. The numbers and letters on the screen came alive and spoke to me. Decades later they still do.

How do you know you are meant for a profession? If the tools of your trade start speaking to you, you are on the right track.

If history speaks to you, become a historian. If words do the same, become an author. But if like Neo in the original Matrix (episode one) you see code, structure and design where the rest of the world sees an inanimate object, consider computer science.

A jump forward in my professional life. 9 years after graduating with an unassuming 2.78 CGPA, I find myself at cross roads again.

I have just shut down my first startup in Santa Ana. I didn’t know then but I have personally witnessed and partaken in the dot com bubble. The labor of love we put two years in is history. And so are we. A part of history that is.

I am interviewing in southern California for open roles and positions that sit at the intersection of finance, math and systems. I receive a surprising interview call from a trading desk at a large insurance company. Surprising because I thought they would never call. But they did. Towards end of my interview, the desk VP interviewing me asked if I had questions.

I said yes, why me? You have had your pick of candidates, so why me? Why take a bet on an unknown, untested commodity?

She said, and I quote:

Because you did CS. You break things down. Systematic thinker. Problem solver. Everyone else is Finance or Trading or Math or Insurance. You are all four and you did CS. You don’t see the problems everyone else sees. You see solutions first. And you can backtrack to them from ground zero. You don’t wait for resources or permissions. You are a first responder, you start solving first.

How do I know? Because I did CS too.

That has been the essence of CS for me. How do I crack the code behind this or the next challenge. The challenges and the code changes but the essence and the approach remain the same.

It applies just as well to other fields. Author, film maker, teacher, runner, power lifter. The mindset extends. It enables and empowers you to do stuff the world originally thought impossible.

How does that really work? Making the impossible, possible?

You want to run a half marathon? You have never run before. Where do you start? Start with running a short distance without stopping. Repeat. Add distance every other week. When you can run 10 miles without dying in 90 minutes you are ready. Take as long as you need.

Speed endurance training. Run a short distance as fast as you can. Go back to the starting point and repeat. Keep on repeating till you are at death’s door. Then stop. Go home. Come back and do it all over again.

There are three frameworks CS introduced me to that shape how I attack problems.

Divide and conquer. Break a bigger problem down into a sub problem. Repeat till you get to a problem definition that you can solve. Breaking problems down into smaller sub problems is an acquired skill. In the beginning you keep on hitting your head against the wall till the wall comes down to a level you can scale and crack. Once you get hang of the process you use to break things down, you see challenges as sub problems to solve at the start.

Input. Output. Process. How do you attack sub problems when you get down to a level that you can tackle? Identify what goes in, what goes out and what is transformed in between the two stages.

Iterative problem solving. Also known as trial and error. To run fast, you must first learn to run slow. The first version you build will always end up in the trash bin. So build them to bin them. Version 1.0 equals version -3.0. It will take you three tries, if not more to get it right.

There is more to the process of solving problems. There are different approaches we use to document our understanding of the challenge we are solving, how we design solutions, how we architect the code, how we test and deploy our solutions with customers and end users and how we manage deliveries.

There is also more to the field than just solving problems. There are unsolved mysteries. Curiosity. A search for efficiency, intelligence and meaning. The difference between knowledge and knowing, insight and intelligence.

When we started exploring home schooling options for our special needs autistic son, it was this mindset that helped. Space, curriculum, teachers, commitment, financing, measuring effectiveness, traction, growth and comprehension. These were all sub problems that we had to solve as parents. It took us eight years to figure it out. And we still don’t have all the answers.

If you trust the process, time is often no longer relevant.

In Arrival the movie there is a theme around which the movie and the novel is based. Learning a new language rewires your brain.

CS is not rocket science and life is not a movie. But you do the bits above repeatedly and it rewires your brain.

To me that is what CS is. A language for solving problems that rewires your brain.

Not programming languages. I literally mean grammar, expression and syntax dedicated to capturing the essence of problems and solving them. A language you use describe problems and solutions. Irrespective of the domains involved.

There is a word that you are likely to come across on a regular basis if you pick computer science as a profession. Meta. A meta-language. A language about languages.

A magical process that shows you how to get to a desired end goal as soon as you see state zero, while the rest of the world is still recovering from the enormity of the problem they must tackle.

The challenge is most students look at CS as programming or applications or games or animation or becoming keyboard warriors. That is a horrible image for a profession. I am not the desk jockey. I am more.

The most powerful and meaningful things I have done with CS have not been behind the computer. They have been with insights and intelligence derived from data that helps change minds, convince people, influence policy and shape the future.

There I have said it. Shape the future. To me CS was never about keyboards or being a desk jockey. CS was always about becoming part of history and writing the future we wanted to live in.

Last year this time I was asked if I wanted to teach at the Business school or at the School of Math and CS at IBA Karachi. I picked CS.

Because with every other field in the world in my past, I had needed capital, plant, machinery, people or licenses to change the world.

Want to start a insurance company? Need $US 2.5 million in capital. Want to run a coffee shop? Need space, an expresso machine, a supplier for beans and a barista. A new TV channel? Don’t even get me started on the wish list for that one.

Not with CS.

All I have ever needed is my mind, paper, pen, a quiet room, my education, the frameworks I have learnt to love and time.

Archimedes once said, give me a lever and a place to stand, I can move the world. Two centuries later I found that for me, personally, that lever was computer science.

I hope you get there sooner than I did. Only fools learn from experience. Wise men learn from fools.

IBA SMCS admission test for the final round of admissions is on 16th July 2023. The last date for registration is 7th July 2023. You have three options. A pure CS program, a pure Math program and an Economics and Math program.

The math programs is one of the most flexible undergraduate experience in Karachi if you like Math and pure CS is too low brow for you. You can specialize in Data Science, Statistics, Physics and Computer Science.

If you want to get into CS and don’t, Math is a possible hack to get into the system and get similar experience and exposure. Remember my story. How times have changed.

You can apply online at https://onlineadmission.iba.edu.pk

Related Readings

If you were here for computer science but I failed to convince you, take a look at the posts that follow on careers in math, actuarial science, financial modeling, running and publishing.

Understanding the difference between N(d1) and N(d2) using Monte Carlo Simulation in Excel.

This is my favorite example of using concepts from computer science to teach how to unravel a partial differential equation. I used Monte Carlo Simulation to show how two components of a Black Scholes equation are different from each other. Not really computer science, computational finance, but a great example of mixing numbers and CS together.

What do I really do for a living? Besides teaching?

--

--

Jawwad Ahmed Farid

Serial has been. 5 books. 6 startups. 1 exit. Professor of Practice, IBA, Karachi. Fellow Society of Actuaries. https://financetrainingcourse.com/education/