Computer Science Essentials

https://link.medium.com/Yn7J87WOezb

Computer science is a vast field with multiple branches. But whether you work in data science, computer networks, cryptography, web development, or another area, you need a strong foundation in computer science fundamentals to achieve your goals.

Wherever you are on your programming journey, knowing the fundamentals will help you become a more informed and effective developer. For example, you may learn how to develop an algorithm using expertise in your area of interest. But you’ll still need to be comfortable with computational thinking and other foundational topics in order to:

  • Compute the algorithm’s time and space complexity
  • Make the best use of available data structures
  • Prove the algorithm’s correctness

You may also need to decide which programming language is best suited for your tasks. To do so, you should understand:

  • When a programming language should be high-level or low-level
  • When to prefer a programming language with a compiler vs an interpreter

We’ll explain these concepts later in this article, but suffice to say you simply can’t solve such problems without grasping the fundamentals of computer science. Today, we’ll introduce you to three areas of CS fundamentals at a high level and suggest further reading in each area. From theoretical computer science work to software engineering or software development, knowing these fundamentals will prove invaluable, whether you have a CS degree or not. Let’s get started!

We’ll cover:

1. Hardware and software fundamentals

Let’s start at a foundational level: the machines you program on, and the programs they run. Computer architecture refers to a science or a collection of rules stating how software and hardware are joined and interact to make a computer function. That definition introduces two core ideas: hardware and software. Hardware is anything physically connected to a computer. For example, your display monitor, printer, mouse, and hard drive are all hardware components. Compare this to software: a collection of programs and procedures that perform tasks on a computer. Software is an ordered sequence of instructions that change the state of a computer’s hardware.