{"id":79787,"date":"2020-10-01T15:46:37","date_gmt":"2020-10-01T12:46:37","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/"},"modified":"2020-10-01T15:46:37","modified_gmt":"2020-10-01T12:46:37","slug":"how-to-teach-yourself-computer-science-a-developers-100-hour-journey","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/","title":{"rendered":"#How to teach yourself computer science: A developer\u2019s 100-hour journey"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6af8d0328a6ea\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6af8d0328a6ea\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#So_why_learn_computer_science_by_yourself\" >So, why learn computer science by yourself?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#Computer_science_101_the_study_plan\" >Computer science 101: the study plan<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#What_Ive_done_so_far\" >What I\u2019ve done so far<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#I_Programming_32_hours_55m\" >I. Programming (32 hours 55m)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#II_Discrete_Mathematics_50_hours\" >II. Discrete Mathematics (50 hours)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#III_Return_to_the_basics_of_mathematics_11_hours_15\" >III. Return to the basics of mathematics (11 hours 15)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#Main_resource_How_to_learn_basic_arithmetic_fast\" >Main resource: How to learn basic arithmetic fast<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#My_advice_for_beginners_in_computer_science\" >My advice for beginners in computer science<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey\/#Learning_computer_science_Whats_next\" >Learning computer science: What\u2019s next?<\/a><\/li><\/ul><\/nav><\/div>\n<p>&#8220;<strong>#How to teach yourself computer <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/sciencee\/\" data-internallinksmanager029f6b8e52c=\"5\" title=\"Science\" target=\"_blank\" rel=\"noopener\">science<\/a>: A developer\u2019s 100-hour journey<\/strong>&#8221;<\/p>\n<div>\n                                I wondered for quite a long time: does only knowing the basics of computer science help to become a better developer? And could\u00a0it bring value to a developer?<\/p>\n<p>If you ask yourself these questions as well, and you don\u2019t want to invest time (yet) into\u00a0learning computer science, here\u2019s the story of my experience. In this article, I\u2019ll\u00a0answer the following\u00a0questions:<\/p>\n<ul>\n<li>Why learn computer science?<\/li>\n<li>What was my study plan?<\/li>\n<li>What resources did I use?<\/li>\n<li>Did I learn something useful that can be transferred to my day to day job as a developer?<\/li>\n<\/ul>\n<p>I began with this fantastic list of resources:<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/teachyourselfcs.com\/\">teach yourself computer science<\/a>. It\u2019s basically a guideline\u00a0on how to study computer science as a software engineer, without spending a lot of money trying to enter MIT.<\/p>\n<h2 id=\"why-learning-computer-science-by-yourself\"><span class=\"ez-toc-section\" id=\"So_why_learn_computer_science_by_yourself\"><\/span>So, why learn computer science by yourself?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>That\u2019s a simple but important question: why would we do that in the first place?<\/p>\n<p>For every project which requires a good amount of motivation, I try first<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thevaluable.dev\/side-project-successful\/#2-a-side-project-needs-clear-and-precise-goals\">to define proper goals<\/a>:<\/p>\n<ol>\n<li>Being able to learn a new language \/ new <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/technology\/\" data-internallinksmanager029f6b8e52c=\"4\" title=\"Technology\" target=\"_blank\" rel=\"noopener\">technology<\/a> quicker by<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/fs.blog\/2018\/04\/first-principles\/\">knowing some core concepts<\/a><span>\u00a0<\/span>you can <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>ly to every language \/ technology.<\/li>\n<li>Improving my understanding of lower abstraction levels. Understanding a bit better \u201chow it works under the hood\u201d could improve my understanding and therefore my efficiency for solving bugs or designing algorithms.<\/li>\n<li>Improving my logical reasoning skills to make my code more logical as well.<\/li>\n<li>I believe that understanding the underlying concepts is a key for innovating in the development field.<\/li>\n<li>Understanding the history of the industry: why are we where we are now, what can we do to improve the computing world?<\/li>\n<\/ol>\n<h2 id=\"computer-science-101-study-plan\"><span class=\"ez-toc-section\" id=\"Computer_science_101_the_study_plan\"><\/span>Computer science 101: the study plan<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>I\u2019m not interested in trying to\u00a0read every book\u00a0about\u00a0computer science. It should at least provide me some sense of understanding.<\/p>\n<p>That\u2019s why my study plan focused on memory retention, understanding and building a quick reference about what I\u2019ve learned, to be able to come back to it easily.<\/p>\n<ol>\n<li>I studied about 2 to 3 hours every week, depending on my priorities. I didn\u2019t\u00a0want to do too much and feel burned out and fed up by computer science. The most important thing to me was to study on a regular basis, whatever the amount of time. It should be something I enjoyed doing.<\/li>\n<li>While studying new material, I wrote summaries on it in the form of<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/Phantas0s\/alexandria-library\">mindmaps<\/a>. This has two advantages: writing helps to remember what I learned and I can easily recall some key concepts when I need them, in no time.<\/li>\n<li>My study time is divided in two categories:\n<ul>\n<li>New learning (new chapter in a book, watching a new video course, doing examples and exercises)<\/li>\n<li>What I call \u201cknowledge base recall.\u201d It\u2019s mainly doing (more) exercises about the new material I\u2019ve read \/ seen the week before, reading my mindmaps, and try to remember what I wrote in it.<\/li>\n<\/ul>\n<\/li>\n<li>Regarding the exercises, I try not to spend more than 30min on each of them. The goal is to struggle enough to remember the concept but not too much to feel burned. It\u2019s a delicate balance.<\/li>\n<li>I try to redo some exercises I could not do the first time, days (even weeks) after the different attempts, to see if I my understanding improved.<\/li>\n<\/ol>\n<p>I\u2019m trying to apply some<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thevaluable.dev\/learning-developer-efficiently-effectively\/\">active learning<\/a><span>\u00a0<\/span>principles by doing as many exercises as I can, and asking myself questions while reviewing my mindmaps.<\/p>\n<p>Revisiting what I learned from one week to the next is really, really beneficial to improve my memory retention and my understanding.<\/p>\n<h2 id=\"where-ive-gone-so-far\"><span class=\"ez-toc-section\" id=\"What_Ive_done_so_far\"><\/span>What I\u2019ve done so far<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" alt=\"motivation to learn discrete Mathematics\" class=\" lazy\" src=\"https:\/\/thevaluable.dev\/images\/2018\/computer_science_01\/01.jpg\" data-lazy=\"true\"\/><\/p>\n<p>Here what I\u2019ve precisely done during these (almost) 100 hours of computer science study, in chronological order.<\/p>\n<h2 id=\"i-programming-32h55m\"><span class=\"ez-toc-section\" id=\"I_Programming_32_hours_55m\"><\/span>I. Programming (32 hours 55m)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<figure class=\"post-image post-mediaBleed aligncenter\"><img loading=\"lazy\" decoding=\"async\" alt=\"graph pomodoro done overtime programming part\" width=\"594\" height=\"334\" class=\" lazy\" src=\"https:\/\/thevaluable.dev\/images\/2018\/computer_science_01\/04.png\" data-lazy=\"true\"\/><figcaption><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thenextweb.com\/growth-quarters\/2020\/10\/01\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication\/#\" data-url=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fthenextweb.com%2Fgrowth-quarters%2F2020%2F10%2F01%2Fhow-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication%2F&amp;via=thenextweb&amp;related=thenextweb&amp;text=Check out this picture on: Pomodoro (25 min) done per week for the Programming part\" data-title=\"Share Pomodoro (25 min) done per week for the Programming part on Twitter\" data-width=\"685\" data-height=\"500\" class=\"post-image-share popitup\" title=\"Share Pomodoro (25 min) done per week for the Programming part on Twitter\"><i class=\"icon icon--inline icon--twitter--dark\"\/><\/a>Pomodoro (25 min) done per week for the Programming part<\/figcaption><\/figure>\n<p>The article\u00a0titled \u201c<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/teachyourselfcs.com\/\">teach yourself computer science<\/a>\u201d specified that I should follow \u201croughly\u201d the order of study they propose, beginning by the programming\u00a0field.<\/p>\n<p id=\"main-resource-structure-and-interpretation-of-computer-programs-sicp\"><strong>Main Resource: Structure and Interpretation of Computer Programs (SICP)<\/strong><\/p>\n<p>This book is considered by many as the bible every developer should read. It\u2019s free and you can find the best<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/sarabander\/sicp\">epub and PDF versions here<\/a>.<\/p>\n<p>You can find the solutions of the exercises\u00a0<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\/\/community.schemewiki.org\/?SICP-Solutions\">here<\/a>.<\/p>\n<p>I succeeded to do almost all exercises till<span>\u00a0<\/span><code>1.2.5 Greatest Common Divisors<\/code>.<\/p>\n<p id=\"complementary-resource-berkeley-videos\"><strong>Complementary Resource: Berkeley Videos<\/strong><\/p>\n<p>The videos are<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/playlist?list=PLhMnuBfGeCDNgVzLPxF9o5UNKG1b-LFY9\">available here<\/a>. The notes of the course are<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/inst.eecs.berkeley.edu\/~cs61a\/reader\/notes.pdf\">here<\/a>. If you search some sample exams from Berkeley, it\u2019s<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/inst.eecs.berkeley.edu\/~cs61a\/reader\/vol2.html\">here<\/a>.<\/p>\n<p>These are a very good complement to the book: concepts are explained without asking you too much about Mathematics, in contrast with the book. If you want to study the SICP but your mathematical background is not strong enough, simply follow this course. My<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/Phantas0s\/playground\/tree\/master\/cs\/01-Programming\">notes and exercises are here<\/a>.<\/p>\n<p id=\"what-i-learned-from-sicp-so-far\"><strong>What I\u2019ve\u00a0learned from SICP so far<\/strong><\/p>\n<ul>\n<li>The beginning of this book is very interesting to really understand the roots of functional programming and recursions.<\/li>\n<li>It defines a lot of terms programmers use every day, in a very precise manner. Perfect to be even more precise during technical discussions.<\/li>\n<li>The book pushed my analytic and solving problem skills with its exercises.<\/li>\n<\/ul>\n<p id=\"what-can-i-use-in-real-life\"><strong>What can I use in real life?<\/strong><\/p>\n<p>The whole discussion about recursion in the book helped me quite significantly to easily write them. It\u2019s a topic I\u2019ve always struggled a bit with. Now it\u2019s a breeze to go through any problem I want to solve with recursion.<\/p>\n<p id=\"what-difficulties-did-i-encountered\"><strong>What difficulties did I encounter?<\/strong><\/p>\n<p>This book is not for math haters. It was written for MIT students who have already quite some mathematical knowledge. Without this prior knowledge, the exercises can be pretty difficult and frustrating at time.<\/p>\n<p>It was the cause of another problem: I spent too much time on the exercises. I could solve most of them but it took me hours in some cases.<\/p>\n<p>I decided from there that I would not spend more than 30 minutes on the\u00a0exercises\u00a0to keep the frustration low without discarding the huge benefit of doing them.<\/p>\n<h2 id=\"ii-discrete-mathematics-50h\"><span class=\"ez-toc-section\" id=\"II_Discrete_Mathematics_50_hours\"><\/span>II. Discrete Mathematics (50 hours)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<figure class=\"post-image post-mediaBleed aligncenter\"><img loading=\"lazy\" decoding=\"async\" alt=\"graph pomodoro done overtime programming part\" width=\"753\" height=\"281\" class=\" lazy\" src=\"https:\/\/thevaluable.dev\/images\/2018\/computer_science_01\/05.png\" data-lazy=\"true\"\/><figcaption><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thenextweb.com\/growth-quarters\/2020\/10\/01\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication\/#\" data-url=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fthenextweb.com%2Fgrowth-quarters%2F2020%2F10%2F01%2Fhow-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication%2F&amp;via=thenextweb&amp;related=thenextweb&amp;text=Check out this picture on: Pomodoro (25min) done per week for discrete Mathematics\" data-title=\"Share Pomodoro (25min) done per week for discrete Mathematics on Twitter\" data-width=\"685\" data-height=\"500\" class=\"post-image-share popitup\" title=\"Share Pomodoro (25min) done per week for discrete Mathematics on Twitter\"><i class=\"icon icon--inline icon--twitter--dark\"\/><\/a>Pomodoro (25min) done per week for discrete Mathematics<\/figcaption><\/figure>\n<p>The more I was reading SICP, the more I found the\u00a0exercises difficult, especially since it was dealing with some mathematical concepts that I was not aware of. Therefore, I decided to move on and to begin to studying\u00a0the<span>\u00a0<\/span><code>Mathematics<\/code>\u00a0subject.<\/p>\n<p id=\"main-resource-discrete-mathematics-and-its-applications\"><strong>Main resource: Discrete mathematics and its applications<\/strong><\/p>\n<p><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/teachyourselfcs.com\/\">Teach yourself computer science<\/a><span>\u00a0<\/span>advises you to read the lecture notes by L\u00e1szl\u00f3 Lov\u00e1sz, freely available here<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\/\/www.cs.elte.hu\/~lovasz\/dmbook.ps\">as a ps document<\/a>. I converted it to<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/Phantas0s\/playground\/blob\/master\/cs\/04-math\/L.%20Lovasz%20-%20Discrete%20Mathematics%20Lecture%20Notes.pdf\">PDF here<\/a><span>\u00a0<\/span>for those who don\u2019t know what a ps document is. I didn\u2019t know either.<\/p>\n<p>However, I\u2019ve chosen another main resource of study, apparently more beginner friendly:<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.goodreads.com\/book\/show\/1800803.Discrete_Mathematics_and_Its_Applications\">Discrete Mathematics and its Application<\/a><span>\u00a0<\/span>by Kenneth H. Rosen. It\u2019s a pretty big book, quite inexpensive in its earlier editions.<\/p>\n<p>In 50 hours I was able to finish the first chapter (propositional logic) and achieve 54 exercises.<\/p>\n<p id=\"complementary-resource-mit-6042j-mathematics-for-computer-science-fall-2010\"><strong>Complementary resource: MIT 6.042J mathematics for computer science, Fall 2010<\/strong><\/p>\n<p><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/ocw.mit.edu\/courses\/electrical-engineering-and-computer-science\/6-042j-mathematics-for-computer-science-fall-2010\/video-lectures\/\">These videos<\/a><span>\u00a0<\/span>from MIT are more advanced courses about Discrete Mathematics. Again, they assume that you know quite a bit in Mathematics. Nevertheless, they are very interesting even though I had difficulties to follow them.<\/p>\n<p>In the worst case it will at least give you a good glimpse of what Discrete Mathematics is all about.<\/p>\n<p>One teacher (Tom Leighton) has better teaching skills than others. However, they all have a very deep knowledge of their respective subjects.<\/p>\n<p id=\"what-i-learned-so-far\"><strong>What I learned so far<\/strong><\/p>\n<ul>\n<li>The book taught me the basics of logic, a very good skill to have as a developer. After all, our work is based on proper logic.<\/li>\n<li>Propositional logic with quantifiers and rule of inference. Basically it\u2019s the way to write logical statements, verifying that logical statements make sense and proving their truth values.<\/li>\n<li>Basics of sets and graph theory, thanks to the videos. It\u2019s very interesting and it\u2019s pretty useful for a lot of things: state machines, networking\u2026<\/li>\n<\/ul>\n<p id=\"what-can-i-use-in-real-life-1\"><strong>What can I use in real life?<\/strong><\/p>\n<ul>\n<li>Truth tables can be very useful to sort out complex conditional statements or to refactor them.<\/li>\n<li>Recently I could apply DeMorgan laws to improve the readability of some conditional statements.<\/li>\n<li>Expressing confusing and short specifications with predicates, conjunctions and disjunctions (the language of propositional logic) can show contradictions and the details missing. It can summarize very succinctly complex specifications precisely. It can be a good bridge between the specs and the code itself.<\/li>\n<\/ul>\n<p id=\"what-difficulties-did-i-encountered-1\"><strong>What difficulties did I encounter?<\/strong><\/p>\n<ul>\n<li>Understanding how to write a mathematical proof is hard, especially when nobody can\u2019t help you or correct your proof.<\/li>\n<li>I still lacked of some basics in Mathematics, especially needed for the videos from MIT.<\/li>\n<\/ul>\n<h2 id=\"iii-return-to-the-basics-of-mathematics-11h15\"><span class=\"ez-toc-section\" id=\"III_Return_to_the_basics_of_mathematics_11_hours_15\"><\/span>III. Return to the basics of mathematics (11 hours 15)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<figure class=\"post-image post-mediaBleed aligncenter\"><img loading=\"lazy\" decoding=\"async\" alt=\"graph pomodoro done overtime programming part\" width=\"662\" height=\"282\" class=\" lazy\" src=\"https:\/\/thevaluable.dev\/images\/2018\/computer_science_01\/06.png\" data-lazy=\"true\"\/><figcaption><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thenextweb.com\/growth-quarters\/2020\/10\/01\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication\/#\" data-url=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fthenextweb.com%2Fgrowth-quarters%2F2020%2F10%2F01%2Fhow-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication%2F&amp;via=thenextweb&amp;related=thenextweb&amp;text=Check out this picture on: Pomodoro (25 min) done per week for the basics of Mathematics\" data-title=\"Share Pomodoro (25 min) done per week for the basics of Mathematics on Twitter\" data-width=\"685\" data-height=\"500\" class=\"post-image-share popitup\" title=\"Share Pomodoro (25 min) done per week for the basics of Mathematics on Twitter\"><i class=\"icon icon--inline icon--twitter--dark\"\/><\/a>Pomodoro (25 min) done per week for the basics of Mathematics<\/figcaption><\/figure>\n<p>After having some other (minor) problems with my Mathematics knowledge in Discrete Mathematics, I decided to come back to the basics.<\/p>\n<p>Another important reason which guided my choice: I really enjoyed doing some Mathematics. Without that, I would have not continued to study computer science.<\/p>\n<p>Don\u2019t be confused: the Mathematics related to computer science are different from the one you studied (and maybe hated) at school. I would advise you to give it a try.<\/p>\n<p>At that point I decided to alternate between studying Discrete Mathematics and the basics of Mathematics.<\/p>\n<h2 id=\"main-resource-how-to-learn-basic-arithmetic-fast\"><span class=\"ez-toc-section\" id=\"Main_resource_How_to_learn_basic_arithmetic_fast\"><\/span>Main resource: How to learn basic arithmetic fast<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This video of 4 hours is really good to refresh a lot of things, from the sums and product through the percentages, exponents, logarithms\u2026 It covers a lot of ground very quickly with a lot of exercises.<\/p>\n<p>The tips given are very good as well to understand and solve basic problems quickly.<\/p>\n<p>You can see on <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/social-mediaa\/\" data-internallinksmanager029f6b8e52c=\"1\" title=\"Social Media\" target=\"_blank\" rel=\"noopener\">youtube<\/a><span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/watch?v=TMubSggUOVE\">an hour long preview<\/a><span>\u00a0<\/span>of the video. If you like it, you can<span>\u00a0<\/span><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/vimeo.com\/ondemand\/learnmathfast\">buy it on Vimeo<\/a>.<\/p>\n<p id=\"what-i-learned-so-far-1\"><strong>What I learned so far<\/strong><\/p>\n<ul>\n<li>My mental calculation skills improved very well. If you have difficulties to calculate quickly percentages or even doing simple multiplications without a calculator, this course will help you a lot.<\/li>\n<li>Basics to manipulate fractions, exponents, square roots, logarithms and so on.<\/li>\n<\/ul>\n<p id=\"what-can-i-use-in-real-life-2\"><strong>What can I use in real life?<\/strong><\/p>\n<ul>\n<li>Being able to calculate mentally is very helpful for a lot of things in real life. Calculating quickly promotions, roughly how expensive a full shopping cart will be\u2026<\/li>\n<li>I can apply all this knowledge while studying computer science.<\/li>\n<\/ul>\n<p id=\"what-difficulties-did-i-encountered-2\"><strong>What difficulties did I encounter?<\/strong><\/p>\n<p>After studying the SICP and Discrete Mathematics, it was very relaxing to finally understand everything with a bit of work. I didn\u2019t have many difficulties.<\/p>\n<h2 id=\"my-advices-for-beginners-in-computer-science\"><span class=\"ez-toc-section\" id=\"My_advice_for_beginners_in_computer_science\"><\/span>My advice for beginners in computer science<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" alt=\"basic-mathematic-illustration\" class=\" lazy\" src=\"https:\/\/thevaluable.dev\/images\/2018\/computer_science_01\/02.jpg\" data-lazy=\"true\"\/><\/p>\n<p>If I could come back to the beginning of this adventure, I would have studied the different subjects in this order:<\/p>\n<ul>\n<li>I. Basics Mathematics<\/li>\n<li>II. Discrete Mathematics<\/li>\n<li>III. SICP<\/li>\n<\/ul>\n<p>I would have studied Basics and Discrete Mathematics in parallel and then moved onto the SICP, trying to get the Mathematics knowledge I still missed along the way.<\/p>\n<h2 id=\"learning-computer-science-whats-next\"><span class=\"ez-toc-section\" id=\"Learning_computer_science_Whats_next\"><\/span>Learning computer science: What\u2019s next?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>I will continue to learn the basics of Mathematics and Discrete Mathematics for at least 150 hours:<\/p>\n<ul>\n<li>The little I know about it already helped me quite a bit in my daily developer life.<\/li>\n<li>I feel (and read) that it\u2019s a foundation for every other field in computer science.<\/li>\n<li>I enjoy studying it! Again, it\u2019s an essential component to stay motivated.<\/li>\n<\/ul>\n<p>In short: a very good experience, underlying a many of my weaknesses but as well teaching me solid fundamentals I was missing.<\/p>\n<p>Keep in mind though: if you expect to be a super wizard programmer by studying computer science, you might be disappointed. Computer science is hard to study. It has strong theoretical sides and even if I already found some use of it in my daily work, it\u2019s not mind-blowing at all.<\/p>\n<p>Going through this journey asks for\u00a0work,\u00a0patience, and\u00a0dedication. Having clear goals, a concrete study plan and\u00a0enjoying\u00a0the process are mandatory.<\/p>\n<p><em>This article was written by\u00a0<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thevaluable.dev\/page\/about\/\">Matthieu Cneude<\/a>\u00a0and was originally published on\u00a0<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thevaluable.dev\/\">The Valuable Dev<\/a>, a blog focusing on the important and timeless concepts in software development. You can read the piece\u00a0<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/thevaluable.dev\/learning-computer-science-software-developer\/\">here<\/a>.\u00a0<\/em><\/p>\n<p class=\"c-post-pubDate\">\n                                    Published October 1, 2020 \u2014 12:46 UTC\n                                <\/p>\n<\/p><\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><script data-src=\"https:\/\/connect.facebook.net\/en_US\/sdk.js#xfbml=1&amp;appId=378011798897423&amp;version=v2.6\" id=\"socialSrcFacebook\" type=\"text\/template\"><\/script><\/p>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener noreferrer\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/thenextweb.com\/growth-quarters\/2020\/10\/01\/how-to-teach-yourself-computer-science-a-developers-100-hour-journey-syndication\/\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#How to teach yourself computer science: A developer\u2019s 100-hour journey&#8221; I wondered for quite a long time: does only knowing the basics of computer science help to become a better developer? And could\u00a0it bring value to a developer? If you ask yourself these questions as well, and you don\u2019t want to invest time (yet) into\u00a0learning&#8230;<\/p>\n","protected":false},"author":1,"featured_media":79788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/img-cdn.tnwcdn.com\/image\/growth-quarters?filter_last=1&fit=1280,640&url=https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2020\/10\/computer-science-developer-gq.png&signature=4db402da49b09451b97080a7a8ef8690","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-79787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/79787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=79787"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/79787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/79788"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=79787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=79787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=79787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}