Computer Science basics

We recommend learning the following topics if you would like to apply for junior roles at big tech companies. Less important topics are marked with an asterisk (*).

  • Essentials & programming concepts

    • How computers work (a high-level overview)

    • Computational thinking

    • General code flow

    • Binary system

    • Primitive data types

      • Numerical data types (e.g. integer, floating-point)

      • String

    • Functions

    • Recursion

    • Object-Oriented Programming

      • Objects

      • Classes

      • Encapsulation

      • Interfaces

      • Inheritance

      • Polymorphism

  • Software construction

    • Software quality

      • Logging

      • Documentation

      • Self-documenting code

      • Bugs and debugging

      • Unit testing

    • Libraries and frameworks (what they are, examples of common libraries and frameworks)

  • Development and Collaboration Tools

    • Command-line interface (parameters, options, help files, bash syntax)

    • Build tools

    • Basics of using IDE

    • Code review

    • Version control, Git

    • GitHub*

  • Programming languages basics

    • Imperative vs functional (what are key differences)

    • Strong vs weak typing

    • Compiled vs interpreted languages (what does it mean, what are key differences)

    • Comparison of the most popular programming languages*

      • C/C++, Java, Go

      • Python, Ruby

      • Kotlin, Objective-C, Swift

      • JavaScript, TypeScript

  • Data Structures & Algorithms (some people count them as CS fundamental, while others don't, please see this document for more details)

  • Standards and formats*

    • Basics of JSON, XML, YAML, CSV

    • Basics of Unicode

Most recommended resources:

Other recommended resources:

Please make sure to cover what you learned from recommended sources using one-off articles or videos you find on the Internet.

If you have any feedback, we would be more than welcome to hear it. Please email [email protected]