DEV Community

Nenad Pantelic
Nenad Pantelic

Posted on

Get your CS degree with MOOC and online resources (part 1)

In this series of articles, I will write about different areas of computer science, programming, and software engineering and what resources can be used by all those who want to learn these areas. So, I write on how you can step into the world of programming without a CS degree or in other words, how you can get a degree online, for free, at a pace that suits you. 💻 🧑‍🎓

In the first article, I write about the freshman year of study and the topics you need to learn to compensate for the first year of study in college.

Introduction to Computer Science and programming

In this course, you should learn about the basics of the computer system, about bits and bytes, data types, how computer programs are executed (compiled and interpreted), conditionals, loops, and functions...

I would recommend one of these courses:

In my opinion, these are the best courses you should take for your introductory courses. Some of these courses are more general and you will learn a little of this, a little of that, and others are more uniform. I would go with Python as your first language (it's user-friendly, very useful and popular today, and above all - very easy to learn).

Python image

These courses push Python in front of you. What is certain is the quality of these courses - they're taught by the best instructors from the best universities.
Note: Besides learning CS principles and programming fundamentals, you should practice a lot. These courses tend to make you practice by doing assignments. I highly recommend you do them. Also, you can practice on some of the popular coding platforms: Codewars, HackerRank (Python and Problem solving tracks), edabit, etc.
It's very important to understand basic concepts and polish your basic coding skills. I have an advice: code, code, and code.

Also, a book I would recommend is Structure and Interpretation of Computer Programs 📖

Math for CS

Many CS and ML beginners run away from math, either because they don’t like it or because they think you don’t need it for the world of computing. However, mathematics is an indispensable part of programming, computer science, and machine learning because it can be said that mathematics has laid the roots of computer science. You don't have to be a math expert to be a software engineer, but it's very important to be familiar with the basics. I would take a look at these topics:

  1. linear algebra
  2. basic calculus
  3. basic geometry
  4. discrete math

For these topics check out these resources:

Algorithms and data structures

I find this topic extremely important. Mastering data structures (arrays, linked lists, trees, heaps, stacks and queues, hash maps, graphs) and algorithms (searching, sorting, dynamic programming, backtracking, greedy) allows you to write better and robust programs that are very efficient in terms of time and memory usage. FAANG companies in particular insist on knowing these areas in their interviews.

Algorithms everywhere

There are various resources to learn these things, but I'll list some of them that I find very handy:

Platforms to exercise algorithmic type of problems:

Computer Architecture and Organization

This topic is a key factor in understanding how a computer system works, how data is stored, how the processor executes instructions, how memory works and what types of memory exist, how the process of working with input-output peripherals works, and so on. This topic can be studied at the level of engineering (electronics) or only with the approach of understanding. Some of the resources I would recommend:

Some good books about this subject:

Bonus: git and GitHub

Learn git - version control tool. Good starting point - GitHub learning lab.

Top comments (0)