by Zhia Hwa Chong
These are the top Computer Science terms you should know if you’re new to programming
Crucial CS terminologies and concepts explained in simple English
Since many friends and family from non-CS backgrounds ask me about different terminologies and concepts, I will attempt to explain the following Computer Science concepts in the simplest language possible.
In this quick guide, you’ll learn about what each term/concept means, and why it matters:
- Backend Development
- Frontend Development
- Programming languages
- Open Source
At the end of this article, I’ll also share some resources for you to learn more!
You might’ve heard the term “Backend Development” thrown around quite a bit. Especially if you’ve been hanging around LinkedIn.
“Backend”, in this case, refers to a layer of the technology stack. This mostly involves writing, or maintaining, a web service with a database for keeping data.
Often times, backend development is associated with technologies such as Java, Scala, Python, DynamoDB, MongoDB, nodeJS, MySQL, MapReduce and many, many more.
This is in contrast with front-end development, which often refers to the user interface (UI) layer, or customer-facing side of a feature.
Why is this important
Understanding the differences between frontend and backend development lets you know what components you should think about before you start developing an app in the future.
Frontend development often entails working on customer-facing features, such as a web page, or an iOS/Android app.
The reason I call them technologies and not programming languages is because some of these are frameworks that help you set up your bases and guide the way you program, but they are not programming languages in themselves. Examples of these are React and Angular.
A programming language is simply a way for humans to communicate with computers. Some might argue that HTML is a programming language… I think that’s a topic for another day. ?
Why is it important
A computer is very good at executing the commands it is told. In order for us human beings to communicate with a computer, we need a common set of understandable languages —a set of instructions that both humans and computers can agree on and communicate with.
In the human world, we use languages such as English, Mandarin, Spanish etc to communicate.
When it comes to computers, we call it a programming language. A programming language allows humans and computers to communicate. Examples of programming languages are Java, C++, Python and many more.
Why is it important
Learning a programming language allows you to understand how something you see on the Internet works underneath the hood — it’s like knowing how and why your car runs. With some elbow grease, you will be able to build your own apps, like Candy Crush or Twitter too.
A process or set of rules to be followed in calculations or other problem-solving operations, especially by a computer. — Google :)
Computers are great at executing instructions, and as software engineers we write instructions for the computers to execute. An algorithm is a list of steps or instructions that can be performed with or without a computer in order to solve a specific problem.
One of the first problems we learn as computer science students is the problem of sorting. The essence of it is to sort a set or a collection of items in the most efficient manner.
There are many ways of sorting. A popular one is Bubble Sort, otherwise known as “comparison sort”. It involves comparing and picking the larger of two items and repeating for all other elements until everything is eventually sorted. Others include Insertion Sort, Merge Sort and many, many more!
I highly encourage you to explore them, as it’s a fascinating introduction to algorithms. Here’s a Youtube video to learn more about sorting algorithms.
Why is it important
Algorithms are the core of Computer Science — understanding what algorithms are and how they work makes you a better software engineer. Period.
API, a.k.a application programming interface, a.k.a a source of information. In more concrete terms, imagine you had a lemonade well at home. Your neighbors want a sip of your lemonade well, but you don’t want the well to get polluted. What do you do, then?
You decided to build a hose that connects to a small hose outside your house. All your neighbors who want a taste of your magical lemonade will line up and open the hose to access your lemonade. All this without ever coming close to your well, and you can also control when to pump the lemonade, swap out the lemonade if your well runs dry someday, or maybe charge people who drink a lot of lemonade.
This is the idea behind many companies these days — these companies build a “well” of precious data and then sell it to others who wish to access that data via an API.
Why is it important
The internet today relies on seamless communication between different services. That’s how we’re able to build tools/websites that talk to each other. The API is the foundational layer that allows all of the communication to happen. That’s why it’s important to know how and what the Internet uses to communicate.
You might’ve seen the following meme on social media websites, and might not have understood what it really meant.
A bug is an error in a computer program that prevents the program from running as expected.
For example, let’s assume you downloaded an iOS application, which is a type of computer program, that is supposed to show the local weather temperature in Fahrenheit. However, the iOS application might show the temperature in Celsius only, instead of the Fahrenheit you expected.
In such a case, the program is not performing as expected (should show Fahrenheit, not Celsius), and you would call the error a bug.
This is so common in the industry that software engineers turned it into an inside joke, hence the meme, “it’s not a bug, it’s a feature”.
Why it is important
Bugs happen all the time. Knowing this helps you navigate the Internet and point things out when you see something not working right. Next time around, you’ll call it a “bug” correctly rather than “that thing there doesn’t hover right”.
I’ll try to explain Open Source with a simple analogy I thought up :)
Imagine that you are the owner of a lemonade stand, and you own a special recipe for making the best lemonade in the city. You don’t share the secret recipe with anyone because you’re afraid that someone else might take it and steal your customers. Your secret recipe is considered “Closed Source” in this case, where no one but you is allowed access to it.
Alternatively, imagine that you share your lemonade recipe freely online, and use the power of the Internet to help you improve it so that everyone can enjoy and benefit from the best lemonade possible. In this case, your recipe is considered “Open Source” because it is made freely available and others may contribute, use and/or modify it.
This term has become much more popular with the rise of Facebook and the wave of tech companies that encourage the Internet community to participate in the development of new and exciting technologies.
Why is it important
The Internet has progressed that much faster in the past few years due to open source. It’s a revolution, and everyone should know why it makes sense to make things for free and share them with the world.
Crowdsourcing — To obtain (information or input into a particular task or project) by enlisting the services of a large number of people, either paid or unpaid, typically via the Internet.
Crowdsource is the idea of getting a large group of people to contribute to a common cause.
Let’s assume you’re running that same lemonade stand again. Your customers are saying your lemonade needs a new flavor. You realize that using the power of the Internet, you can ask people to help you brainstorm the best lemonade recipe.
You can then start a Twitter account and start getting people to contribute their best lemonade recipe from around the world. This is called Crowdsourcing, which is the act of getting people to contribute to a common cause (in this case, lemonade-making).
Why is it important
The Internet has allowed the entire population to unite and put its best brains behind some of the toughest challenges in the world. Crowdsourcing has allowed us to do it seamlessly through the Internet. I think that’s a huge step forward for humankind.
- Stanford’s Online CS 101 — the course gives you a basic overview of CS terminologies, how the Internet works, how digital images are formed and processed etc. Best of all, it’s FREE!
- Python Crash Course — One of the best resources to get started with Python programming. If you’d like to get your hands dirty with programming, I recommend starting with Python and the following book.
- Python, Practical Guide — This is an interesting book to get, after you’re done with the Python Crash Course. I imagine you can do most of the stuff in here without the book, but it does give you more detailed step-by-step instructions on how to do it. Great for people who prefer to learn by example.
- Introduction to Algorithms — If you’d like to learn more about algorithms, which is a core tenet of computer science, this book comes highly recommended. This is THE textbook for many CS courses.
- Acing the Coding Interview — This is my personal coaching course, where I show you how I prepared for my interviews, my tips and tricks for acing the coding interview, and many more.
Zhia Chong is a software engineer at Twitter. While not slinging code, he’s playing tennis, writing articles, or making Youtube videos.
If you enjoyed this article and would like to get a copy of this in PDF, do consider subscribing to my mailing list where I share industry news, programming tidbits, interview notes, and much more!