DEV Community

Cover image for What CS concepts should self-taught and bootcamp devs learn?

What CS concepts should self-taught and bootcamp devs learn?

Ben Halpern on August 18, 2020

We might not need all the computer science knowledge to write code, but what concepts are still worth learning?

Collapse
 
dfockler profile image
Dan Fockler

Basic Data Structures

  • Hashes, Arrays, Stacks, Queues, maybe a Linked List

Big O Notation

  • It's useful for understanding how algorithms work and the limits of what computers can do.

Learn Algebra really well

  • It's basically what we are doing all day, in an abstract way. Assigning values to variables and then doing operations with those variables is the bread and butter of algebra and coding.

Concurrency and Asynchronous Code

  • It's everywhere and it's only going to be more important

Basic Database Modeling

  • You'll need it, so you might as well know it.
Collapse
 
rderik profile image
rderik

This is a hard question to answer without making it clear what area of software development the person is working at. If we are talking that the bootcamp and self-taught person is looking for a position as a web developer or maybe mobile developers, the topics change.

I've used concepts that are seldom used by web developers. For example:

• TCP package format
• Regular Expressions
• Binary Arithmetic
• Grammars, Scanners, Parsers, etc
• Operating Systems, scheduling, memory management

In general for any path I would suggest:

• Algorithms
• Profiling and measuring performance of your code

And not CS concepts but definitely a must for any professional:

• Writing - everything needs good documentation or product description
• How to keep a work journal

Collapse
 
tfantina profile image
Travis Fantina

What is a work journal?

Collapse
 
rderik profile image
rderik

The concept is simple, it is just a log/diary, where you keep all your notes. What you worked during that day, the reason behind design decisions, etcetera. The main idea is for you to have something that you can refer back and learn from. If you organise it well you should easily reference back to it and find relevant information about a project.

Thread Thread
 
shadowtime2000 profile image
shadowtime2000

Three words: Git commit descriptions

Collapse
 
jacobjzhang profile image
Jake Z.

What I wish I had paid more attention to in school: algorithms and data structures, operating systems, and OOP design.

What I should have spent less time on: programming language theory (grammars/regex), networking theory, discrete structures and most of the heavier math courses.

Collapse
 
annietaylorchen profile image
Annie Taylor Chen

Why do you think OS is more important? And network not so much? I think for a web developer I care less about OS and more the network, I haven’t studied either of them, just curious.

Collapse
 
humzakhan profile image
Humza K.

I'd say a good understanding of Data Structures and Algorithms is definitely a must to have for any dev. However, one of the most overlooked skills in this regard is System Architecture Design.

The ability to architect a robust solution from the ground up requires a lot of knowledge in certain domains along with experience to make the right decisions. It's an absolutely gold skill to have.

Collapse
 
corentinbettiol profile image
Corentin Bettiol • Edited

Here's my journey so far:
1) Boolean algebra
2) Karnaugh Map
3) Algorithmics
4) Boolean circuits (using logisim)
5) Forma grammar

And then:
6) C basics (loops, functions, arguments)
7) Assembly basics (x86)
8) OOP (Java, Python)
9) Web basics (xhtml then html5, css3)
10) PHP 5/7 (OOP, bit of apache, dynamic web)
11) Javascript basics (ES6/ES7)
12) Python 3 (OOP, flask's microframework, Django, ...)

I like this CS learning approach because I kinda understand how a computer is working down to the logical gates in the processor (I created a small processor that can solve additions, divisions, multiplications and subtractions in logisim) and it was really great to complete the puzzle of "how a computer works" by adding new pieces as I learned.

Collapse
 
mvermadev profile image
Manish Verma

It is simple but bit difficult to answer, the reason is, now we have jargon of thing to hit in CS basics. Even though many universities and expert prefer to have a good understanding of the C and C++. Then after, you must have to play with DS and Algo to make rigid logical and problem solving skill. You can also watch CS50 lecture on YouTube by Harvard University youtube.com/playlist?list=PLWKjhJt....

Collapse
 
matveyclark profile image
Matthew Clark

This is something I think about a lot. As a bootcamp grad myself, I attempted to have a go at SICP. Although interesting, I put the book down since Im not sure how many concepts were sinking in for me. Alot of people have mentioned it makes you a better dev to struggle through that book, so ill for sure give it another shot later in my life/career.

As someone who is more interested in backend web development, I am always trying to understand what books and core concepts from computer science I might be missing. On the other hand, I definitely learn best by doing. Although I have gotten to the point where I am holding myself back from even attempting to learn languages like Go since I feel like I am not ready to fully grasp them.

Apart from the regular interview-prep theory (Algorithms and DS), can anyone recommend some good books or maybe practical courses that cover the foundations of programming and that are less about CS theory?

Thanks!

Collapse
 
annietaylorchen profile image
Annie Taylor Chen

I refer to teachyourselfcs.com/
I just got four books from amazon including the two they recommended most to people having less time.

Collapse
 
amorpheuz profile image
Yash Dave

I have been going through so many CSS posts recently that I read it as "What CSS concepts should self-taught and bootcamp devs learn?". And my instant thought was "Do they even teach CSS in universities? (except basic 5-min starter tutorial)".

Coming to the correct question, it would be a broad experience for self-taught/bootcamp devs to try out programming with C, explore how things are built from ground-up, try building a simple version of basic features of any modern language like Arrays, etc. from ground up. It is not only a great learning experience but the feeling you get on building even a basic version of those complex components is on another level!

Collapse
 
scroung720 profile image
scroung720

Dynamic scoping.
Static scoping.

Collapse
 
stereoplegic profile image
Mike Bybee

@ben , I think you're teaching(/providing the opportunity for) an invaluable one here: Document your learning journey.

Collapse
 
jeikabu profile image
jeikabu

Operating Systems

Collapse
 
itsjzt profile image
Saurabh Sharma
  • How to debug
  • how to measure things