@@mustafaa.4690 F that. I had to work with MFPs in grad school teaching programming labs. Ye olde dot matrixe MFPs. I don’t know how much of the lab time was taken up by trying to get stuff to print for the students. The only thing worse was the network delays which had a tendency to freeze students out for half the class. I’m sure a number of times I wanted to say that I only work with software. You’re on your own for printer issues.
1. Error: An issue or problem that occurs during the execution of a program. 2. Turing machine: A theoretical device that can compute anything that is computable. 3. Central processing unit (CPU): The brain of a computer, responsible for executing instructions. 4. Transistor: A tiny on/off switch that is an essential component of the CPU. 5. Bit: The smallest unit of information that a computer can use. 6. Byte: A group of eight bits. 7. Binary: A system for counting that uses only two digits: 1 and 0. 8. Hexadecimal: A base-16 numbering system that uses 10 numbers and 6 letters to represent a 4-bit group called a nibble. 9. Machine code: The binary format that the CPU executes. 10. Random access memory (RAM): Short-term memory used to store data for the CPU to use. 11. Operating system: A layer of software that controls the hardware resources of a computer. 12. Device driver: Software that allows an operating system to communicate with a piece of hardware. 13. Shell: A program that exposes the operating system to the user via a command line interface. 14. Secure shell (SSH) protocol: A network protocol that allows secure communication between computers. 15. Programming language: A tool that allows humans to write instructions that a computer can understand and execute. 16. Interpreted programming language: A programming language that is executed by an interpreter line by line. 17. Compiled programming language: A programming language that is converted into machine code by a compiler before execution. 18. Executable file: A file that can be run by the operating system without any extra dependencies. 19. Data type: A classification of data that determines how it can be used and what operations can be performed on it. 20. Abstraction principle: The idea of separating the details of how something works from the way it is used. 21. Syntax: The set of rules that govern the structure of a programming language. 22. Variable: A named location in memory that stores a value that can change. 23. Constant: A named location in memory that stores a value that cannot change. 24. Operator: A symbol that represents a specific operation to be performed on one or more values. 25. Control flow: The order in which instructions in a program are executed. 26. Conditional statement: A statement that executes a block of code only if a certain condition is true. 27. Loop: A block of code that is repeated until a certain condition is met. 28. Array: A data structure that stores a fixed-size sequential collection of elements of the same type. 29. Linked list: A data structure that stores a dynamic collection of elements, each of which contains a link to the next element. 30. Stack: A data structure that stores a collection of elements in a last-in, first-out (LIFO) order. 31. Queue: A data structure that stores a collection of elements in a first-in, first-out (FIFO) order. 32. Tree: A data structure that stores a hierarchical collection of elements, each of which has zero or more child elements. 33. Graph: A data structure that stores a collection of interconnected nodes and edges. 34. Hash table: A data structure that stores a collection of key-value pairs and allows efficient insertion, deletion, and lookup of values.
I can imagine how overwhelming this video would've been for me if I watched it when I was a beginner, but this works very well for people who already have some experience in programming by summarizing and also including some concepts you may not have been aware of, but could understand easily if you spent some time learning about them.
@xFTOxGold It's alright, you'll get there, one step at a time. Don't try to skip over essentials that might make your life harder later on, and you'll be fine. A lot of self taught devs might brag about being able to land jobs after just 3 months but I'd argue it's probably a full year for the average person before they're job ready (that was the case for me too), and could take longer or shorter depending on the efficiency of your learning and since we're self taught, efficiency is a huge factor and could even be a matter of luck (nobody can truly measure their own learning efficiency as they're learning).
1. Turing Machine 2. CPU 3. Transistors 4. Bit 5. Byte 6. Ascii Character Encoding 7. Binary 8. Hexadecimal 9. Nibble: 0000 for example 10. Machine Code 11. RAM 12. Memory Address 13. I/O: Maus and Monitor 14. Kernel: Linux, Mac and Windows 15. Shell: Programm, that exposes the OS to the user. Why Shell? wraps the kernel 16. Command Line Interface: Takes a line as input an gives u an output 17. Secure Shell Protocol: SSH cant connect u to remote Computers over a network 18. Mainframe: Bulk data processing Computer 19. Programming Language: to program 20. Abstraction Principle: to work with a Computer as a human by simplifying systems layer by layer 21. Interpreted: There is a program called Interpreter that execute every line of code one by one. Like Python 22. Compiled: There is a program called compiler to convert the code into machine code before the CPU attempts to execute it ⇒ executable file that can be run by the OS without any extra stuff 23. Executable: executable file that can be run by the OS without any extra stuff 24. Data Types: to represents the data we work with 25. Variable: declare variable. It attaches a Name to data Point so you can reuse it somewhere else in your code 26. Dynamically Typed: u don’t need to tell the program wich data type is assigned to a variable. It figures it out by itself. Python for example 27. Statically Typed: Like in C, you need specify the data type of a variable in your code 28. Pointer: When a variable is defined, its value is defined somewhere in the memory in the hardware. A pointer is a variable whos value is the memory address of another variable, which can be used for low-level memory control 29. Garbage Collection: to avoid a low-level memory control, it allocate and de-allocates memory when an object is no longer referenced in the program 30. Int: to represent whole numbers 31. Signed or unsigned to represent negative numbers 32. Floating Point: for decimal point 33. Double: Doubles the amount of the memory used for the number 34. Char: Typically used for a single character 35. String: commonly to represent multiple characters 36. Big Endian: Characters are stored somewhere in the memory. They have a certain order: When the order starts with the most significant byte MSB and smallest memory address it is called ”Big Endian” 37. Little Endian: When the order starts with the least significant byte L SB and smallest memory address it is called ”Little Endian” 38. Data Structures: organize data into Data Structures (in Software Engineering) 39. Array or list: Most useful. It organizes multiple data points in order. It maintains an index of integers that starts at zero an goes up for every new Item of list. U don’t actually need an index to crate a list of items. 40. Linked List: Every item has a pointer to the next item in front of it. 41. Stack: LIFO (Last In First Out) 42. Queue: FIFO (First In First Out) 43. Hash: Also called a Map or Dictionary. It is like an Array but instead o an index of integers you define the Keys that point to each item. ⇒ Key value pairs 44. Tree: To organize data in a linear way, because it doesn’t work in Hash. A Tree organizes notes together in hierarchy that can be traversed more quickly 45. Graph: To connect multiple notes together in a virtually unlimited number of ways . A graph has a node for the data and an edge for the relationship between the data points 46. Nodes and Edges: A graph has a node for the data and an edge for the relationship between the data points 47. Algorithm: A code that solve a problem 48. Function: Is block of code that takes an input then does something and returns an output. 49. Return: A function returns an output. 50. Arguments: A function has name and it can be called from other parts of your code with different input parameters called arguments 51. Operators: like =, >, 1 then it is true, if 1>2 then it is false 52. Boolean: True and false, we use so called Boolean Data Types 53. Expression: Code that produces a value 54. Statement: Code that does something 55. Conditional Logic: like if-statement: If the condition is true its going to execute this code, otherwise it will short circuit and run the code inside of the else block 56. While Loop: A common type of statements: A while loop will run over and over again until the condition in the parentheses becomes false, that 57. Iterable: to loope over iterable datatype like an array 58. For loop: to run code for each object 59. Void: A function with no return value 60. Recursion: when a function calls itself. It happens because of the Call Stack 61. Call Stack: Is a short-term chunk of memory for executing your code. When a function keeps calling itself, it the language keeps pushing frames onto the call stack until you get a stack overflow. 62. Stack Overflow: stack overflow error: When a function keeps calling itself, it the language keeps pushing frames onto the call stack until you get a stack overflow. 63. Base Condition: To avoid a stack overflow. An algorithm needs a base condition so it knows when to terminate the loop 64. Big-O-Notation: Is a standard format for approximating the performance of an algorithm 65. Time Complexity: How fast the algorithm will run 66. Space Complexity: How much memory is required to run it. 67. Brute Force: Algorithm where you loop over every possible combination to hack somebody's password :) 68. Divide and Conquer: Cutting a problem in half multiple time until you find what you are looking for 69. Dynamic Programming: Where a problem is broken down into multiple smaller sub-problem. The result of each computation is stored for later use. 70. Memorization: The technique used in dynamic programming. If a function already has been called it will use the existing value instead of recomputing it from scratch 71. Greedy: Algorithms that make the choice that is most beneficial in the short term without considering the problem as a whole one 72. Dijkstra's Shortest Path: Greedy algorithm 73. Backtracking: On the flip side of greedy algorithms we have backtracking algorithm which take more incremental aproach by looking at all the possible options. For examble: A rat in a maze exploring all the potential paths. 74. Declarative: A programming paradigm. Your code describes what the program does an what is the outcome. It doesn’t care about things like control flow 75. Functional Languages: Where you can program with declarative way. Like Haskell 76. Imperative: A programming paradigm where the code uses statements like if an while providing explicit instructions about how to produce an outcome. 77. Procedural Langauges: Like C where you doe imperative programming. 78. Multiparadigm Languages: Like the most popular languages now. They support all the paradigms mentioned 79. Object-oriented: additional paradigm 80. Class: programming using the OOP needs classes which encapsulate variables and functions. Encapsulated variables are called properties and encapsulates functions are called methods. 81. Property: Encapsulated variables are called properties 82. Method: encapsulated functions are called methods. 83. Inheritance: Classes ad OOP use it to share behavior between each other through inheritance, where a subclass can extend and override the behavior of the parent class. It makes the code reusable. 84. Design Patterns: reusable solutions to common software development problems that have been tested and proven effective over time. 85. Instantiate: A class does nothing except it is used to instantiate objects which are actual chunks of data that live in your computers memory 86. Heap: Can grow and shrink based on the application you use. It is for long live data which can’t go to the call stack. It helps to reference an object over and over in your code. It allows to pass objects by reference. 87. Reference: You can use the same object in multiple variable without increasing the memory footprint 88. Threads: It takes the physical CPU core and breaks it into virtual cores that allow it to run code simultaneously 89. Parallelism: Is supported by some programming languages. You can write code that can be executed on multiple threads at the same time. 90. Concurrency: For single-threaded languages. It implements concurrency models like an event loop or co-routines. So it can pause or delay the normal execution of code to handle multiple Jobs on a single thread at the same time. 91. Bare Metal: We rarley use it nowadays 92. Virtual Machine: Peace of software that simulate hardware. It runs on the cloud 93. Ip-address: Each machine has a unique one to identify it on the network. 94. URL: Ip-address is an alias to a URL 95. DNS: Gloabal database that is called Domain Name Service 96. Transmission Control Protocol: to establish a connection the two computers will perform a TCP Handshake :) ⇒ exchange messages 97. Packets: Messages exchanged between the two computers after the TCP 98. Secure Sockets Layer: SSL to encrypt and decrypt the messages over the network 99. HTTP: The two computers can securely share data use hypertext transfer protocol. The Client may request a web page then the server will respond with some html 100. Application Programming Interface: Modern servers provide a standardized way for a client to request data which is called API. The most common architecture is rest. 101. PRINTERS (Even I don't know how they work): Learn it at your on
It's fun how learning is more of a speedrun these days which acts as a very good starter, motivating us to learn the remaining stuff by ourselves and now we have something of a map which we can follow instead of blindly jumping into stuff.
@@aurelia8028 A concept map to use as labels, so you can use your tests to measure your understanding of the concepts. That's basically step 1 of Ultralearning by Scott H. Young
It's mind-blowing how you're able to explain so much in a single video, while being completely accurate, easy to understand and also funny. I think you're one of the best content creators on UA-cam and this might be one of the best tech videos I've ever seen. Go Fireship!!
Im wrapping up my second semester as a CSE major and I was pleasantly surprised to see that I've already learned a huge chunk of these concepts. I really love this field so far and I can't wait to learn more!
Finish the degree and get a job and work five years on crappy projects and watch all that feverish passion you're feeling now evaporate into thin air as you debug the same old shitcode the hundredth time 🙄
I could litterly see my 4 years computer science related subjects one by one, this is so amazing. Because even after knowing the subject or topic,it was very difficult for me to combine all of these and make some sense out of it. This connected dots so well for me,now I finally understood the digital,to computer organisation, data structures,class,algo, OS,Memory, Network subjects,that how all these get connected and work simultaneously. I wish I could have watched this earlier. This is by far the best video I have watched in my whole journey 🎉.
normally we are taught these things one by one and that too not in the correct order thats why we can't connect the dots simultaneously we are taught these things in the order of their difficulty level
@@aniketsrivastava1870 I agree, I think every lecture/course should do this, the practical usage and how the subject is connected to it's large impact. Where exactly this is getting used, this is just a great story telling. This video for me was like watching an explanation video for a bad movie(my degree). I finally got the whole idea , but this should have happened while I was learning.
This is like a great BBC series called CONNECTIONS that was hosted by James Burke and documented how one invention of the Industrial Revolution affected or led to another invention or even an entire industry. It threads the needle that weaves the fabric of our modern society.
I have a master’s degree in CS. This is surprisingly accurate and entertaining. The part about hashes could have been fleshed out a bit more. Aside from that, great!! Also, completely true about printers.
where i can learn these concepts in details like how cpu work, pointers, how programming languages work, how kernel work, etc. Now a days tutorials mostly focus on practical part. please recommend some book or tutorial thanks.
@@ahsanabrar880 Operating Systems: Three Easy Pieces. It's free as a PDF online. My operating systems course used it as reference material. Seems to have good reviews too
Pretty nice video indeed, but it's kinda funny how the first fact already contains a mistake. "In theory, Turing machines can compute anything" was proven wrong by the same guy who came up with Turing machines.
where i can learn these concepts in details like how cpu work, pointers, how programming languages work, how kernel work, etc. Now a days tutorials mostly focus on practical part. please recommend some book or tutorial thanks.
@@ahsanabrar880 I would recommend just looking up “how X works” on UA-cam and I’m sure you’ll find helpful videos. Such as “How CPUs work” or “How the kernel works”
Thank you very much jeff, I have been a landscaper for the last ten years, for 6 months I watch at least one of your videos a day, thanks to you tomorrow I have my first interview as a software engineer
I'm a senior in HS and I've taken CS for the past 2 years, & I'm so glad I can confidently say I know over 85% of the concepts shown here :)) Great video !
4:40 it's actually called a float because the decimal point is 'floating' instead of 'fixed'. That is float gives you variable decimal precision instead of fixed point numbers that give you fixed decimal precision.
I did CS in college for a year as a sophomore. I ended up doing a medical drop due to my health and it has been about 4 years since. I had to get on disability because I couldn't work, so I eventually decided to try and do a bootcamp, to at least hopefully start a career remotely that I can do whether I am sick or not. All that to say I chose a part time 6 month Fullstack Academy web dev bootcamp and it has taught me so much in a very short amount of time. I learned far more in the 2+ months I've been in it than the full year of CS classes. My CS classes used Java and they did not teach you how to use it at all. It had to be self taught and I did not expect that going into it. It was a huge challenge trying to keep up with learning the language while completing the required work. Most of the students had experience coding already which made their ability to absorb what was being taught way easier. After 4 years I had basically forgotten most of what I had learned syntax wise. So starting the bootcamp I was essentially a noob. But man not to advertise for them, but my instructors are awesome and like I said I have learned so much more than I ever could have alone. At least in a short amount of time like this. I'd say the course itself has taught 95% of these concepts. But I am only 2 months in out of 6 months. So here's hoping my coding career is fruitful and I can get my life back on track. Good luck to anyone else trying to get into this field!
Not gonna lie, I’ve been feeling that hard imposter syndrome with learning to code lately, even after finishing freeCodeCamp’s JS course and feeling a bit lost but going through this entire video I can confidently say that I understand and know how to code 80% of what you mentioned here which has helped substantially with boosting my confidence that I’m on the right path. Thank you for always making such high quality, humor filled, and easy to understand videos on these topics. I also can’t overstate how helpful it is having code, images and graphics to relay such complex concepts. You’re a legend mate! 🍻
@@rodrigobostelmann8137 Definitely on my coming up list, I’ve been shuffling between following along to Traversy Media’s JavaScript playlist/walkthroughs and doing FCC’s courses but the Odin Project looks fantastic and already got it bookmarked to check out soon! Thank you for the recommendation! 🙌🏼
Well, programming is such an unbelievably small part of computer science. What he lists here has almost nothing to do with it after turing machines and basic notions of numeric representations. Truth be told, without a few years of dedicated study on things far more complicated than scripting, you almost have a right to be feeling like an imposter. Because you are, until you develop yourself. It's cool you are working on this, but you have a long, long way to go before you can call yourself anything more than a hobbyist.
look into CS50, it is completely free and available online, taught by Harvard/Yale every year it is their intro to computer science course, and will provide a very strong foundation. better than what you'd get in person at most highly ranked universities intro cs course actually it is really good for people with zero programming experience, or someone who has had just maybe a AP computer science/intro to programming class
I'm about 2 years into teaching myself programming alongside my full time job and this is one of the best videos I've ever seen! It's the background language and contexts we don't get from tutorials or experimentation, thank you so much!
@@aethrya im 7 months in and plan to start applying for jobs maybe in another 3 months, just practicing all the concepts everyday, its boring, stressful, you need a reason to do this, I have one.
5:09 I think there may be an error, the same image was used twice. I believe with little endian its actually 67, 45, 23, 01 from left to right (0x100 to 0x103)
As someone with a Bachelors in Computer Science this video is pretty accurate and summarizes my college lessons pretty well in addition to giving me a confidence boost as I already learned 90%+ of these concepts. However, one area I definitely struggle in is printers as everyone expects me to be able to understand and fix their printers😂 Great video as always!
I knew most of it as a hobbyist without any CS degree, by just having a C64 (with a lot of computer basics in the manual already) since the 80s and later having picked up some C and web programming.
IT (Information Technology) is the study of how to fix broken computers. Computer Science is the study of how use a computer which is already in good working order. Comp Sci people are like race-car drivers and IT people are like car mechanics. If you learn both skills, then you can be a God among men.
I start my first day as a Software Developer tomorrow and looking at the concepts was refreshing and made me feel ready. I liked the explanations of each of the concepts because even someone with no prior knowledge can have an idea of what you are talking about. Great teacher 👍
Nice summary! I would just add one more concept about recursion and the call stack at 8:03 which is that some programming languages (mostly the functional ones) include something called tail recursion (or tail call optimization). Tail recursion doesn't keep pushing onto the call stack; instead it overwrites the last call on the stack with the recursive call, which can result in potentially infinite recursion with finite memory space.
@@yousefali995 A stack frame consists of 1. The parameters to the function, 2. Memory allocated to hold all stack variables the function needs, and 3. The return address of the function that called it. In non-tail recursion, each recursive call allocates a new frame, with new parameters, new variable memory, and a new pointer that links back to the previous stack frame. But in tail recursion, the compiler optimizes it so each call just overwrites the previous parameters and variable allocations and reuses the return pointer, same as if you had just written a for-loop.
26 - “figures out the type automatically” can also refer to type inference, which is not the same as dynamic typing. Something along the lines of “figures out the type of a variable when it is used” would be more precise.
Strong/weak typing, dynamic/static typing and explicit/inferred typing have got to be THE most massively misunderstood concepts in the entirety of computer science. So much incorrect information that's confidently regurgitated around, even by popular trusted sources.
More precise? We have an average of 1 concept per 8 seconds over here. I don't believe that your wording would make any difference to the intended viewer.
I love the ending: I've been developping for over 10 years now, and still there is 3 things I hate about computers -> Printers (That stop to work for no reason) -> Email setup (and all the additional shananigans that is added to "try" to prevent spam) -> Routers (that you have to plug and unplug in a certain order otherwise they can't figure out by themself how to autoretry connection to the modem)
Printers in enterprise are a legit PITA. There's thermal receipt printers, they are their own special bit of fail, and we can go on forever about the different brands and interoperability with other brands and other OSes.
ok so I am a computer engineering major and I haven't started my 1st year yet, this lowkey and high-key scared me a bit but seeing the comments I realized that I don't have to be so mad at myself for not knowing these things because it'll eventually get to me over time and hard work
3:34 I think the important part of dynamic typing is that types are determined at runtime, and not at compile time. What you described is type inference, and it is not tied to dynamic languages.
The important point is that you can change the type of a variable. This makes it impossible to infer the type statically in all cases. So dynamic languages have the overhead of having to track the type at run-time (and can't type-check or optimize statically). It's pretty sad how popular JS & Python are while ML appeared 1973. Also crazy that TypeScript has static types and then we throw all information away and let the browser interpret JS...
@@Bwallker For the compiler it's a new variable that just uses the same name. I don't know Rust but I assume it's just shadowing the old binding or replacing it. That doesn't mean that you can change the type of a variable. In a dynamic language you could have a program point where you have a variable that has reaching definitions of different types (if random then x = 1 else x = "a") which can't happen in a static language.
@@RalfVogler *unless the language natively encompasses Union types, like Ceylon (though I think an associated definition is required or else inference fails, it's been a while since I've used Ceylon). Your point still stands though of course.
There’s a slight mixup regarding static and dynamic languages: in a dynamic language you can actually change the type of a variable mid program. This distinction is relevant for example in scala which is statically typed, but you don’t always have to declare types since it can infer the type from the provided value.
@@dawnfire82no you can't. Casting does not change the type of a _variable_ , it just allows you to put _value_ into variables of a different type. In statically typed languages, a variable (name of a memory addresses set) will have the same type during its lifetime. Most of the time you are even forbidden from creating aliases of different types to the same memory locations.
You know, I'm currently doing my Master Degree in Computer Science and sometimes I think: I haven't learned anything during all that time. Videos like that one show, how much stuff I see as self-evident in the meantime and furthermore how much besides of these basics I got to know during University. If you're thinking about studing it, do it man! It's one of the coolest and mentally demanding things you can do and the best thing: I've heard and seen a lot of arrogant and overbearing people in other courses (especially in law and business administration) - in computer sciene it feels like most of the people are waaay more relaxed, really want to help you and it often feels more like a big family of nerds helping each other out (Stack Overflow - I love you) to fix problems without all of that pointless "I am better than you" - mindset.
I am novice in computer science. I has been learning CS stuff since 1 year ago. Literally, You(Fireship) nailed it. You connects the CS JARGONS wonderfully and aesthetically. I loved it and understand it . Awesome work man.
12:13 The description here fits more to "Domain Name" instead of "URL". IP address is aliased to a domain name instead of a URL. DNS stores domain names instead of URL.
0:41 Correction: A Turing Machine cannot compute anything. There are problems that are not computable. They're called "undecidable over Turing machines"
There is an error at ~5:10. The Big and Little Endian examples are identical. EDIT: Also, at ~12:24, the IP address on the right is invalid. IPv4 addresses are limited to a maximum value of 255 (which is actually not available for unicast...).
Love the video, and it is crazy how much more detailed these topics really are. The amount of work that was put into developing all the technologies we have right now is crazy. For example, he talked about RAM and the CPU, but the computer architecture for how we access RAM ( l1 cache, l2 cache, page table etc) and the interaction with the CPU through different channels is such a mind boggling process.
This is pure gold. Straight to my reference watchlist. Thank you so much for your videos. Taking the time and effort to condensate so much knowledge into a couple of minutes. You may not go deeply into topics but these videos serve as a quick refresh for those who know, and as a starting guide for those who don't. It's really helpful for both cases and that's something I had never seen before on UA-cam so keep it up, I really hope the best for your channel mate
I'm graduating with my CS degree next Friday, but I'm still watching this video because there's absolutely no way I'm skipping a single Fireship video.
Not even 30 seconds in and this is insanely accurate, I'm laughing, I'm crying, I'm learning. I'm experiencing an entire lifetime of emotions. Amazing videos man. lol keep up the great work. Thank you so much. -noob developer/designer
They'll be an ever present concern when you're dealing with binary data formats and protocols. Also, text encoding formats that involve multi-byte characters.
Wonderful, more please! As a cs major your language videos have been great for figuring out which languages I want to try in the future, and other videos have been great review material! Thanks Fireship!
In my opinion, it's important to note that turing machines aren't able to do EVERYTHING, of course. they are able to compute anything. (at least, everything that is solveable.) This can be important to remember with turing complete languages, because they may not be able to communicate with drivers on your computer even if those drivers exist and work. Imagine a language which can calculate anything, but can't run shell commands and has no access to the filesystem. You cannot make files with this language. Or a language with no print command. You cannot make a "Hello, World!" program with this language.
Also, it is important to know that there are unsolvable problems, or at least unsolvable using a turing machine, no matter how "good of a computer scientist someone is". For some people this is obvious but in the industry is funny how many times a client asks for a software that solves the halting problem.
2 роки тому+2
And that Turing Machines require "infinite memory", rendering our current computers only "equivalent to Turing Machines up to a point"
Fairly sure he spammed a bunch of minor but obvious errors to get engagement. Calling TLS SSL is another. Difference between name and URL also got a bit confused. I attribute at least 50% of this as intentional engagement baiting rather than true mistakes :)
@@randomgeocacher To be fair SSL was more of an inacurracy than an error, since it was the protocol used before TLS and basically is the same thing. They just changed the name when the Internet Engineering Taskforce decided to improve the protocol. But technically speaking you are right.
Most of these exist in IT courses as well, such as OS, networking, memory etc.. so it's not so bad. The math parts are the real treat, with not much coding involved. Computability which involves linguistic concepts related to ability to compute problems aren't even mentioned, which started with Turing machine, expanding out to automate, regular language and all of that. That's not the point in the end. Computer science is just math course related to computers, kind of like music theory vs performance. Sure, you should know the music theory as a musician, but you can perform quite well without remembering all of the music theory concepts, because it's an entire different muscle.
When i had just started learning programming few weeks ago... I watched this video and thought "he soinds like he's just scratching the surface"... But now that I'm getting into algos and DS... Holy sh this video is GREAT. Bro you make the best programming videos... Most impressive sh I've encountered so far in this industry you're like an angel guiding us
Amazing video Loved it After a hectic day wasting all time in college and not learning anything, just to get a degree This video was somewhat like, yeah atleast I did *something* productive Maybe more videos like, you explaining solutions to some tricky questions, or explaining some data structure or algo in few minutes?
I can’t stop recommending your videos to any of the people I know who is learning programming or computer science. Generally they know a lot of the stuff you sum up already , but it’s super hard to find sum up that are that good , reliable and quick on the Internet. And when they don’t know one subject each of your video « in 100seconds » is THE best and fastest way to get started on that subject and it saves hours of work for us. I can’t imagine the amount of work you have put on your videos and for that (and the quality of your videos) I can’t thank you hard enough.
I remember watching a video like this around a year ago and not understanding a single thing that was mentioned. Now I was able to get halfway through the video roughly understanding everything until it turned back into gibberish. It's nice being able to see how far I've come
after going through an extensive 4 years of computer engineering curriculum I can say boldly that I finally understood computer after watching this video XD
10:20 the main concept of the OOP is no the class but the object, you can have OOP lenguajes that do not uses class, like JS which use prototype objects.
Not even just that, OOP is a pattern where the operators that act on your data, are together with your data. In contrast to functional where the data is generally dumb objects which can be passed into separately defined functions which operate on them.
This is the best video I've seen in the entire galaxy. The amount of information in such a small time is just amazing. I would love to watch another video like this Jeff!!
Woah, It's a year and half since I'm studying Cs. If I watch this a year ago, I'll have no clue what you're talking about (how embarrassing lol). 2024 will be my 4th semester, and I decided that I'll put more effort into this field.
i’m a senior in highschool with 2 months left of school im going into college for CS all these videos are popping up and i have understood nothing but atleast it’s quite entertaining
You forgot about concept #102 which is the ability to troubleshoot and fix all the known (and unknown) problems with grandparents/parents/family/extended family/friends laptops/desktops 😂
Woah that was one hell of an educational video on computer science is such less time . I have a masters in computer science but have forgotten a lot of the fundamentals. Thanks for igniting the fire to relearn . I appreciate you .
No one can deny that the most important CS concept in this video is 101st computer science concept. You just simply cannot let grandma down
yes... and it is the hardest...
don't forgot about toster...
I mean, you are a computer scientist, so you should be able to fix every kind of electronic device of software.
@@mustafaa.4690
F that. I had to work with MFPs in grad school teaching programming labs. Ye olde dot matrixe MFPs. I don’t know how much of the lab time was taken up by trying to get stuff to print for the students.
The only thing worse was the network delays which had a tendency to freeze students out for half the class.
I’m sure a number of times I wanted to say that I only work with software. You’re on your own for printer issues.
I had to fix the solar connection problem as well.
I saw your PFP and had to wonder what Karma Akabane would do if he knew CS and his grandma asked him for printer help.
As someone who just graduated with a CS degree, I can confidently say that you successfully condensed 4 years of my life into 13 minutes. Well done!
actaully just a gist not whole thing
not condensed but evoporate 🤣🤣
The lack of I type and J type instructions and the lack of MOVE.B type statements is something I observed..
Also the first fact already contains a mistake.
You did not learn any discrete math, stats, A.I., machine learning, Computer vision, computer security, etc? Because he only cover the surface.
We all wanted it.
1. Turing Machine
2. CPU
3. Transistors
4. Bit
5. Byte
6. Ascii Character Encoding
7. Binary
8. Hexadecimal
9. Nibble
10. Machine Code
11. RAM
12. Memory Address
13. I/O
14. Kernel
15. Shell
16. Command Line Interface
17. Secure Shell Protocol
18. Mainframe
19. Programming Language
20. Abstraction Principle
21. Interpreted
22. Compiled
23. Executable
24. Data Types
25. Variable
26. Dynamically Typed
27. Statically Typed
28. Pointer
29. Garbage Collection
30. Int
31. Signed
32. Floating Point
33. Double
34. Char
35. String
36. Big Endian
37. Little Endian
38. Data Structures
39. Array
40. Linked List
41. Stack
42. Queue
43. Hash (Triangle is horse)
44. Tree
45. Graph
46. Edge
47. Algorithm
48. Function
49. Return
50. Arguments
51. Operators
52. Boolean
53. Expression
54. Statement
55. Conditional Logic
56. While Loop
57. Iterable
58. For loop
59. Void
60. Recursion
61. Call Stack
62. Stack Overflow (E)
63. Base Condition
64. Big-O-Notation
65. Time Complexity
66. Space Complexity
67. Brute Force
68. Divide and Conquer
69. Dynamic Programming (Nice)
70. Memoization
71. Greedy
72. Dijkstra's Shortest Path
73. Backtracking
74. Declarative
75. Functional Languages
76. Imperative
77. Procedural Langauges
78. Multiparadigm Languages
79. Object-oriented
80. Class
81. Property
82. Method
83. Inheritance
84. Design Patterns
85. Instantiate
86. Heap
87. Reference
88. Threads
89. Parallelism
90. Concurrency
91. Bare Metal
92. Virtual Machine
93. Ip-address
94. URL
95. DNS
96. Transmission Control Protocol
97. Packets
98. Secure Sockets Layer
99. HTTP
100. Application Programming Interface
101. *PRINTERS* (Even I don't know how they work)
Thank
Niceeeee
Thank you bro or sis
t
1. Error: An issue or problem that occurs during the execution of a program.
2. Turing machine: A theoretical device that can compute anything that is computable.
3. Central processing unit (CPU): The brain of a computer, responsible for executing instructions.
4. Transistor: A tiny on/off switch that is an essential component of the CPU.
5. Bit: The smallest unit of information that a computer can use.
6. Byte: A group of eight bits.
7. Binary: A system for counting that uses only two digits: 1 and 0.
8. Hexadecimal: A base-16 numbering system that uses 10 numbers and 6 letters to represent a 4-bit group called a nibble.
9. Machine code: The binary format that the CPU executes.
10. Random access memory (RAM): Short-term memory used to store data for the CPU to use.
11. Operating system: A layer of software that controls the hardware resources of a computer.
12. Device driver: Software that allows an operating system to communicate with a piece of hardware.
13. Shell: A program that exposes the operating system to the user via a command line interface.
14. Secure shell (SSH) protocol: A network protocol that allows secure communication between computers.
15. Programming language: A tool that allows humans to write instructions that a computer can understand and execute.
16. Interpreted programming language: A programming language that is executed by an interpreter line by line.
17. Compiled programming language: A programming language that is converted into machine code by a compiler before execution.
18. Executable file: A file that can be run by the operating system without any extra dependencies.
19. Data type: A classification of data that determines how it can be used and what operations can be performed on it.
20. Abstraction principle: The idea of separating the details of how something works from the way it is used.
21. Syntax: The set of rules that govern the structure of a programming language.
22. Variable: A named location in memory that stores a value that can change.
23. Constant: A named location in memory that stores a value that cannot change.
24. Operator: A symbol that represents a specific operation to be performed on one or more values.
25. Control flow: The order in which instructions in a program are executed.
26. Conditional statement: A statement that executes a block of code only if a certain condition is true.
27. Loop: A block of code that is repeated until a certain condition is met.
28. Array: A data structure that stores a fixed-size sequential collection of elements of the same type.
29. Linked list: A data structure that stores a dynamic collection of elements, each of which contains a link to the next element.
30. Stack: A data structure that stores a collection of elements in a last-in, first-out (LIFO) order.
31. Queue: A data structure that stores a collection of elements in a first-in, first-out (FIFO) order.
32. Tree: A data structure that stores a hierarchical collection of elements, each of which has zero or more child elements.
33. Graph: A data structure that stores a collection of interconnected nodes and edges.
34. Hash table: A data structure that stores a collection of key-value pairs and allows efficient insertion, deletion, and lookup of values.
I can imagine how overwhelming this video would've been for me if I watched it when I was a beginner, but this works very well for people who already have some experience in programming by summarizing and also including some concepts you may not have been aware of, but could understand easily if you spent some time learning about them.
@xFTOxGold It's alright, you'll get there, one step at a time. Don't try to skip over essentials that might make your life harder later on, and you'll be fine. A lot of self taught devs might brag about being able to land jobs after just 3 months but I'd argue it's probably a full year for the average person before they're job ready (that was the case for me too), and could take longer or shorter depending on the efficiency of your learning and since we're self taught, efficiency is a huge factor and could even be a matter of luck (nobody can truly measure their own learning efficiency as they're learning).
@xFTOxGold I started when I was 23 after wasting (arguably) 5 years in university, you're way ahead of me already. :) Good luck mate.
perfectly encapsulated
If someone is new to computer science should I maybe not send this to them? Idk if it will be helpful or scary.
As a beginner, some of this was genuinely helpful, but other things went over my head!! I am trying my best and definitely not giving up!
1. Turing Machine
2. CPU
3. Transistors
4. Bit
5. Byte
6. Ascii Character Encoding
7. Binary
8. Hexadecimal
9. Nibble: 0000 for example
10. Machine Code
11. RAM
12. Memory Address
13. I/O: Maus and Monitor
14. Kernel: Linux, Mac and Windows
15. Shell: Programm, that exposes the OS to the user. Why Shell? wraps the kernel
16. Command Line Interface: Takes a line as input an gives u an output
17. Secure Shell Protocol: SSH cant connect u to remote Computers over a network
18. Mainframe: Bulk data processing Computer
19. Programming Language: to program
20. Abstraction Principle: to work with a Computer as a human by simplifying systems layer by layer
21. Interpreted: There is a program called Interpreter that execute every line of code one by one. Like Python
22. Compiled: There is a program called compiler to convert the code into machine code before the CPU attempts to execute it ⇒ executable file that can be run by the OS without any extra stuff
23. Executable: executable file that can be run by the OS without any extra stuff
24. Data Types: to represents the data we work with
25. Variable: declare variable. It attaches a Name to data Point so you can reuse it somewhere else in your code
26. Dynamically Typed: u don’t need to tell the program wich data type is assigned to a variable. It figures it out by itself. Python for example
27. Statically Typed: Like in C, you need specify the data type of a variable in your code
28. Pointer: When a variable is defined, its value is defined somewhere in the memory in the hardware. A pointer is a variable whos value is the memory address of another variable, which can be used for low-level memory control
29. Garbage Collection: to avoid a low-level memory control, it allocate and de-allocates memory when an object is no longer referenced in the program
30. Int: to represent whole numbers
31. Signed or unsigned to represent negative numbers
32. Floating Point: for decimal point
33. Double: Doubles the amount of the memory used for the number
34. Char: Typically used for a single character
35. String: commonly to represent multiple characters
36. Big Endian: Characters are stored somewhere in the memory. They have a certain order: When the order starts with the most significant byte MSB and smallest memory address it is called ”Big Endian”
37. Little Endian: When the order starts with the least significant byte L SB and smallest memory address it is called ”Little Endian”
38. Data Structures: organize data into Data Structures (in Software Engineering)
39. Array or list: Most useful. It organizes multiple data points in order. It maintains an index of integers that starts at zero an goes up for every new Item of list. U don’t actually need an index to crate a list of items.
40. Linked List: Every item has a pointer to the next item in front of it.
41. Stack: LIFO (Last In First Out)
42. Queue: FIFO (First In First Out)
43. Hash: Also called a Map or Dictionary. It is like an Array but instead o an index of integers you define the Keys that point to each item. ⇒ Key value pairs
44. Tree: To organize data in a linear way, because it doesn’t work in Hash. A Tree organizes notes together in hierarchy that can be traversed more quickly
45. Graph: To connect multiple notes together in a virtually unlimited number of ways . A graph has a node for the data and an edge for the relationship between the data points
46. Nodes and Edges: A graph has a node for the data and an edge for the relationship between the data points
47. Algorithm: A code that solve a problem
48. Function: Is block of code that takes an input then does something and returns an output.
49. Return: A function returns an output.
50. Arguments: A function has name and it can be called from other parts of your code with different input parameters called arguments
51. Operators: like =, >, 1 then it is true, if 1>2 then it is false
52. Boolean: True and false, we use so called Boolean Data Types
53. Expression: Code that produces a value
54. Statement: Code that does something
55. Conditional Logic: like if-statement: If the condition is true its going to execute this code, otherwise it will short circuit and run the code inside of the else block
56. While Loop: A common type of statements: A while loop will run over and over again until the condition in the parentheses becomes false, that
57. Iterable: to loope over iterable datatype like an array
58. For loop: to run code for each object
59. Void: A function with no return value
60. Recursion: when a function calls itself. It happens because of the Call Stack
61. Call Stack: Is a short-term chunk of memory for executing your code. When a function keeps calling itself, it the language keeps pushing frames onto the call stack until you get a stack overflow.
62. Stack Overflow: stack overflow error: When a function keeps calling itself, it the language keeps pushing frames onto the call stack until you get a stack overflow.
63. Base Condition: To avoid a stack overflow. An algorithm needs a base condition so it knows when to terminate the loop
64. Big-O-Notation: Is a standard format for approximating the performance of an algorithm
65. Time Complexity: How fast the algorithm will run
66. Space Complexity: How much memory is required to run it.
67. Brute Force: Algorithm where you loop over every possible combination to hack somebody's password :)
68. Divide and Conquer: Cutting a problem in half multiple time until you find what you are looking for
69. Dynamic Programming: Where a problem is broken down into multiple smaller sub-problem. The result of each computation is stored for later use.
70. Memorization: The technique used in dynamic programming. If a function already has been called it will use the existing value instead of recomputing it from scratch
71. Greedy: Algorithms that make the choice that is most beneficial in the short term without considering the problem as a whole one
72. Dijkstra's Shortest Path: Greedy algorithm
73. Backtracking: On the flip side of greedy algorithms we have backtracking algorithm which take more incremental aproach by looking at all the possible options. For examble: A rat in a maze exploring all the potential paths.
74. Declarative: A programming paradigm. Your code describes what the program does an what is the outcome. It doesn’t care about things like control flow
75. Functional Languages: Where you can program with declarative way. Like Haskell
76. Imperative: A programming paradigm where the code uses statements like if an while providing explicit instructions about how to produce an outcome.
77. Procedural Langauges: Like C where you doe imperative programming.
78. Multiparadigm Languages: Like the most popular languages now. They support all the paradigms mentioned
79. Object-oriented: additional paradigm
80. Class: programming using the OOP needs classes which encapsulate variables and functions. Encapsulated variables are called properties and encapsulates functions are called methods.
81. Property: Encapsulated variables are called properties
82. Method: encapsulated functions are called methods.
83. Inheritance: Classes ad OOP use it to share behavior between each other through inheritance, where a subclass can extend and override the behavior of the parent class. It makes the code reusable.
84. Design Patterns: reusable solutions to common software development problems that have been tested and proven effective over time.
85. Instantiate: A class does nothing except it is used to instantiate objects which are actual chunks of data that live in your computers memory
86. Heap: Can grow and shrink based on the application you use. It is for long live data which can’t go to the call stack. It helps to reference an object over and over in your code. It allows to pass objects by reference.
87. Reference: You can use the same object in multiple variable without increasing the memory footprint
88. Threads: It takes the physical CPU core and breaks it into virtual cores that allow it to run code simultaneously
89. Parallelism: Is supported by some programming languages. You can write code that can be executed on multiple threads at the same time.
90. Concurrency: For single-threaded languages. It implements concurrency models like an event loop or co-routines. So it can pause or delay the normal execution of code to handle multiple Jobs on a single thread at the same time.
91. Bare Metal: We rarley use it nowadays
92. Virtual Machine: Peace of software that simulate hardware. It runs on the cloud
93. Ip-address: Each machine has a unique one to identify it on the network.
94. URL: Ip-address is an alias to a URL
95. DNS: Gloabal database that is called Domain Name Service
96. Transmission Control Protocol: to establish a connection the two computers will perform a TCP Handshake :) ⇒ exchange messages
97. Packets: Messages exchanged between the two computers after the TCP
98. Secure Sockets Layer: SSL to encrypt and decrypt the messages over the network
99. HTTP: The two computers can securely share data use hypertext transfer protocol. The Client may request a web page then the server will respond with some html
100. Application Programming Interface: Modern servers provide a standardized way for a client to request data which is called API. The most common architecture is rest.
101. PRINTERS (Even I don't know how they work): Learn it at your on
Are you an ai?
Legend 🫡
Thx good sir
Great
It's fun how learning is more of a speedrun these days which acts as a very good starter, motivating us to learn the remaining stuff by ourselves and now we have something of a map which we can follow instead of blindly jumping into stuff.
That' a terrible way of learning
lol i had the same thought, i come from esports and getting my webdev cert feels like grinding rank in competitive 😅
@@aurelia8028 Why?
@@aurelia8028 A concept map to use as labels, so you can use your tests to measure your understanding of the concepts.
That's basically step 1 of Ultralearning by Scott H. Young
@@aurelia8028 having a big picture and see the mastery level versus your level is a very good way of measuring yourself.
It's mind-blowing how you're able to explain so much in a single video, while being completely accurate, easy to understand and also funny. I think you're one of the best content creators on UA-cam and this might be one of the best tech videos I've ever seen. Go Fireship!!
He's not only a good programmer but also a good teacher.
Except for IP addresses 😂
12:10
Im wrapping up my second semester as a CSE major and I was pleasantly surprised to see that I've already learned a huge chunk of these concepts. I really love this field so far and I can't wait to learn more!
Finish the degree and get a job and work five years on crappy projects and watch all that feverish passion you're feeling now evaporate into thin air as you debug the same old shitcode the hundredth time 🙄
I've done four weeks of CS50x and I got to 60. All of a sudden it went way out of my wheelhouse,
i learnt these in my school, when i was 15
@@peak_911i learned these in the womb
@@peak_911i was doing tensor analysis on manifolds as a zygote.
I could litterly see my 4 years computer science related subjects one by one, this is so amazing. Because even after knowing the subject or topic,it was very difficult for me to combine all of these and make some sense out of it. This connected dots so well for me,now I finally understood the digital,to computer organisation, data structures,class,algo, OS,Memory, Network subjects,that how all these get connected and work simultaneously. I wish I could have watched this earlier. This is by far the best video I have watched in my whole journey 🎉.
normally we are taught these things one by one and that too not in the correct order thats why we can't connect the dots simultaneously
we are taught these things in the order of their difficulty level
@@aniketsrivastava1870 I agree, I think every lecture/course should do this, the practical usage and how the subject is connected to it's large impact. Where exactly this is getting used, this is just a great story telling. This video for me was like watching an explanation video for a bad movie(my degree). I finally got the whole idea , but this should have happened while I was learning.
@@dhruvishah9077 wow looks like I found someone who literally hates there college education system just like me😄
This is like a great BBC series called CONNECTIONS that was hosted by James Burke and documented how one invention of the Industrial Revolution affected or led to another invention or even an entire industry. It threads the needle that weaves the fabric of our modern society.
I've been thinking on getting a degree in CS, Is it hard to find good jobs in that field?
This is amazingly put, I’m starting a Computer Science degree in October and this just explained one of my 600+ page course books in 13 minutes 😭🙌🏼
Textbooks, the biggest educational scam in the universe
Computer Science: An Overview?
I have a master’s degree in CS. This is surprisingly accurate and entertaining. The part about hashes could have been fleshed out a bit more. Aside from that, great!! Also, completely true about printers.
Recursion too, a global variable for a recursive functions base case seems terrible.
There is quite a lot in this video that could be fleshed out, but that's probably not the point
where i can learn these concepts in details like how cpu work, pointers, how programming languages work, how kernel work, etc. Now a days tutorials mostly focus on practical part. please recommend some book or tutorial thanks.
@@ahsanabrar880 Operating Systems: Three Easy Pieces. It's free as a PDF online. My operating systems course used it as reference material. Seems to have good reviews too
Pretty nice video indeed, but it's kinda funny how the first fact already contains a mistake. "In theory, Turing machines can compute anything" was proven wrong by the same guy who came up with Turing machines.
You’re just an absolute legend. I can’t even express the amount of help you provide people around the world with these videos. Truly one of a kind ❤️
where i can learn these concepts in details like how cpu work, pointers, how programming languages work, how kernel work, etc. Now a days tutorials mostly focus on practical part. please recommend some book or tutorial thanks.
@@ahsanabrar880 I would recommend just looking up “how X works” on UA-cam and I’m sure you’ll find helpful videos. Such as “How CPUs work” or “How the kernel works”
Fireship videos are world class!
@@jaidendechon7960 thanks, for a simple solution
I agree with you bro
thanks, legendary content. really appreciate the work you put into it
fat money.
money
money
Money
mony
Thank you very much jeff, I have been a landscaper for the last ten years, for 6 months I watch at least one of your videos a day, thanks to you tomorrow I have my first interview as a software engineer
Are you a software engineer yet?
update?
I'm a senior in HS and I've taken CS for the past 2 years, & I'm so glad I can confidently say I know over 85% of the concepts shown here :)) Great video !
From "In 100 seconds" to "100 concepts". Anime tier character development right here.
anime is cringe
@@coronaklledmebot4856 nah
@@coronaklledmebot4856 yes
@@StuckDuck yes
Time for 100 concepts in 100 seconds
Congratulations on your Guinness record for teaching 100+ things in 13 minutes
Yes... someone should make a guinness record for the same.... most cs terns explained in 100 sec... :)
I don't believe that I wasted 4 years of my life for computer science degree.
@@surkesden hopefully you degree had more concepts and teached you deeply
4:40 it's actually called a float because the decimal point is 'floating' instead of 'fixed'. That is float gives you variable decimal precision instead of fixed point numbers that give you fixed decimal precision.
He did mention that in one of his shorts.
12:10 also has an IP-Adress 456.7.... first thing ain't no byte
Also isn't it domain name system (not service)?
The decimal animation was clearly implying just this lol
@@hannes- its also refered here as a domain name server
That's literally what he said
You summed me up my entire CS career. I brought me memories! Nowadays you used to forget most of thst stuff, it hapoens the more you keep working
I did CS in college for a year as a sophomore. I ended up doing a medical drop due to my health and it has been about 4 years since. I had to get on disability because I couldn't work, so I eventually decided to try and do a bootcamp, to at least hopefully start a career remotely that I can do whether I am sick or not. All that to say I chose a part time 6 month Fullstack Academy web dev bootcamp and it has taught me so much in a very short amount of time. I learned far more in the 2+ months I've been in it than the full year of CS classes.
My CS classes used Java and they did not teach you how to use it at all. It had to be self taught and I did not expect that going into it. It was a huge challenge trying to keep up with learning the language while completing the required work. Most of the students had experience coding already which made their ability to absorb what was being taught way easier. After 4 years I had basically forgotten most of what I had learned syntax wise. So starting the bootcamp I was essentially a noob. But man not to advertise for them, but my instructors are awesome and like I said I have learned so much more than I ever could have alone. At least in a short amount of time like this. I'd say the course itself has taught 95% of these concepts. But I am only 2 months in out of 6 months. So here's hoping my coding career is fruitful and I can get my life back on track. Good luck to anyone else trying to get into this field!
Hey dude I hope things are going well.
been 4 months since you post this. hope u doing great!
Best of luck to you!
Hey i hope you're doing great, best of luck dude
Not gonna lie, I’ve been feeling that hard imposter syndrome with learning to code lately, even after finishing freeCodeCamp’s JS course and feeling a bit lost but going through this entire video I can confidently say that I understand and know how to code 80% of what you mentioned here which has helped substantially with boosting my confidence that I’m on the right path. Thank you for always making such high quality, humor filled, and easy to understand videos on these topics. I also can’t overstate how helpful it is having code, images and graphics to relay such complex concepts. You’re a legend mate! 🍻
Try The Odin Project as well!
@@rodrigobostelmann8137 Definitely on my coming up list, I’ve been shuffling between following along to Traversy Media’s JavaScript playlist/walkthroughs and doing FCC’s courses but the Odin Project looks fantastic and already got it bookmarked to check out soon! Thank you for the recommendation! 🙌🏼
Well, programming is such an unbelievably small part of computer science. What he lists here has almost nothing to do with it after turing machines and basic notions of numeric representations.
Truth be told, without a few years of dedicated study on things far more complicated than scripting, you almost have a right to be feeling like an imposter. Because you are, until you develop yourself.
It's cool you are working on this, but you have a long, long way to go before you can call yourself anything more than a hobbyist.
look into CS50, it is completely free and available online, taught by Harvard/Yale every year
it is their intro to computer science course, and will provide a very strong foundation. better than what you'd get in person at most highly ranked universities intro cs course actually
it is really good for people with zero programming experience, or someone who has had just maybe a AP computer science/intro to programming class
How does memory work, on the gates level?
I'm about 2 years into teaching myself programming alongside my full time job and this is one of the best videos I've ever seen! It's the background language and contexts we don't get from tutorials or experimentation, thank you so much!
How's it going?
@@aethrya im 7 months in and plan to start applying for jobs maybe in another 3 months, just practicing all the concepts everyday, its boring, stressful, you need a reason to do this, I have one.
@@passportbro904 What's your reason?
This is like 4 years in university if you want to resolve all errors you encounter
That was astonishingly well written, edited and generally put together. Thank you for the work you put in, Jeff. That was a trip.
if you think all this is being made by one person ive got a bridge to sell you buddy
Dude that was awesome. The way you connected all the terms...Every CS student should make a chart out of this video in my opinion. Thank you
Not just CS majors but IS majors too lol that was a ton of useful info!
@@adrianbitsinnie1537is IS information science?
Man in 5 year of CS classes i never understood dynamic programming and you just explained it to me in literally 5 seconds
5:09 I think there may be an error, the same image was used twice. I believe with little endian its actually 67, 45, 23, 01 from left to right (0x100 to 0x103)
ye little endian means the least significant bit/byte comes first, in memory/transfer order.
The image is indeed wrong.
thx for clrifying, now i can go on with one less confusion
Yup
5:08 The lower row of numbers would be swapped for little Endian notation
was looking for this comment
Was looking for this comment too
I paused the video and wondered why rows are identical
As someone with a Bachelors in Computer Science this video is pretty accurate and summarizes my college lessons pretty well in addition to giving me a confidence boost as I already learned 90%+ of these concepts. However, one area I definitely struggle in is printers as everyone expects me to be able to understand and fix their printers😂 Great video as always!
Reminds me of this - ua-cam.com/video/N9wsjroVlu8/v-deo.html&ab_channel=RP
I knew most of it as a hobbyist without any CS degree, by just having a C64 (with a lot of computer basics in the manual already) since the 80s and later having picked up some C and web programming.
IT (Information Technology) is the study of how to fix broken computers. Computer Science is the study of how use a computer which is already in good working order. Comp Sci people are like race-car drivers and IT people are like car mechanics. If you learn both skills, then you can be a God among men.
This is like the first 6 months of University, but it was definitely very accurate lol
Missing some discrete math, no?
Currently teaching myself to code and this was so helpful for solidifying ideas and concepts. Thank you
I just forgot the reason why I went to University
Me too
I start my first day as a Software Developer tomorrow and looking at the concepts was refreshing and made me feel ready. I liked the explanations of each of the concepts because even someone with no prior knowledge can have an idea of what you are talking about. Great teacher 👍
This is truly a work of art.
Compacting all the fundamentals into a 13 minute video is a miracle.
no need to schlobber all over his schlong
This broke down all the studying I have done for the last 5 years in a 13 minute video. Well done man.
Nice summary! I would just add one more concept about recursion and the call stack at 8:03 which is that some programming languages (mostly the functional ones) include something called tail recursion (or tail call optimization). Tail recursion doesn't keep pushing onto the call stack; instead it overwrites the last call on the stack with the recursive call, which can result in potentially infinite recursion with finite memory space.
If it overwrites the last call then how it returns from the call?
@@yousefali995 A stack frame consists of 1. The parameters to the function, 2. Memory allocated to hold all stack variables the function needs, and 3. The return address of the function that called it. In non-tail recursion, each recursive call allocates a new frame, with new parameters, new variable memory, and a new pointer that links back to the previous stack frame. But in tail recursion, the compiler optimizes it so each call just overwrites the previous parameters and variable allocations and reuses the return pointer, same as if you had just written a for-loop.
probably the best video about cs ive watched in months and that too wrapped in 13 mins, this aint no joke!
26 - “figures out the type automatically” can also refer to type inference, which is not the same as dynamic typing. Something along the lines of “figures out the type of a variable when it is used” would be more precise.
Strong/weak typing, dynamic/static typing and explicit/inferred typing have got to be THE most massively misunderstood concepts in the entirety of computer science. So much incorrect information that's confidently regurgitated around, even by popular trusted sources.
More precise? We have an average of 1 concept per 8 seconds over here. I don't believe that your wording would make any difference to the intended viewer.
I love the ending:
I've been developping for over 10 years now, and still there is 3 things I hate about computers
-> Printers (That stop to work for no reason)
-> Email setup (and all the additional shananigans that is added to "try" to prevent spam)
-> Routers (that you have to plug and unplug in a certain order otherwise they can't figure out by themself how to autoretry connection to the modem)
Printers in enterprise are a legit PITA. There's thermal receipt printers, they are their own special bit of fail, and we can go on forever about the different brands and interoperability with other brands and other OSes.
@@Sanchuniathon384 I remember the Linus tries Linux videos.... when Linus is surprised that his printer works out of the box on Linux!
I wish this video was existed when I was studying computer science. It is basically a visual dictionary of computer concepts. Brilliant!
Videos like this make learning a fun experience, great video!
ok so I am a computer engineering major and I haven't started my 1st year yet, this lowkey and high-key scared me a bit but seeing the comments I realized that I don't have to be so mad at myself for not knowing these things because it'll eventually get to me over time and hard work
3:34 I think the important part of dynamic typing is that types are determined at runtime, and not at compile time. What you described is type inference, and it is not tied to dynamic languages.
I came here to say the same thing. Haskell, for example, is statically typed and has type inference.
The important point is that you can change the type of a variable. This makes it impossible to infer the type statically in all cases. So dynamic languages have the overhead of having to track the type at run-time (and can't type-check or optimize statically).
It's pretty sad how popular JS & Python are while ML appeared 1973. Also crazy that TypeScript has static types and then we throw all information away and let the browser interpret JS...
@@RalfVogler This isn't entirely true either, since you can change the type of a variable in eg rust by redeclaring it.
@@Bwallker For the compiler it's a new variable that just uses the same name. I don't know Rust but I assume it's just shadowing the old binding or replacing it. That doesn't mean that you can change the type of a variable. In a dynamic language you could have a program point where you have a variable that has reaching definitions of different types (if random then x = 1 else x = "a") which can't happen in a static language.
@@RalfVogler *unless the language natively encompasses Union types, like Ceylon (though I think an associated definition is required or else inference fails, it's been a while since I've used Ceylon). Your point still stands though of course.
There’s a slight mixup regarding static and dynamic languages: in a dynamic language you can actually change the type of a variable mid program.
This distinction is relevant for example in scala which is statically typed, but you don’t always have to declare types since it can infer the type from the provided value.
The video is correct. You can change data types in static typing via casting.
@@dawnfire82no you can't. Casting does not change the type of a _variable_ , it just allows you to put _value_ into variables of a different type. In statically typed languages, a variable (name of a memory addresses set) will have the same type during its lifetime. Most of the time you are even forbidden from creating aliases of different types to the same memory locations.
You know, I'm currently doing my Master Degree in Computer Science and sometimes I think: I haven't learned anything during all that time.
Videos like that one show, how much stuff I see as self-evident in the meantime and furthermore how much besides of these basics I got to know during University.
If you're thinking about studing it, do it man! It's one of the coolest and mentally demanding things you can do and the best thing: I've heard and seen a lot of arrogant and overbearing people in other courses (especially in law and business administration) - in computer sciene it feels like most of the people are waaay more relaxed, really want to help you and it often feels more like a big family of nerds helping each other out (Stack Overflow - I love you) to fix problems without all of that pointless "I am better than you" - mindset.
Law schools have forced curves. You can't all get As, no matter how good you are.
Hi i want to srtart cs can you help me can i start cs if i am bed at maths
@@Jabarkhailkhwagano
This is my intro to comp sci course in 13 minutes instead of 16 weeks
So true😂
I am novice in computer science. I has been learning CS stuff since 1 year ago.
Literally, You(Fireship) nailed it. You connects the CS JARGONS wonderfully and aesthetically.
I loved it and understand it .
Awesome work man.
12:13 The description here fits more to "Domain Name" instead of "URL". IP address is aliased to a domain name instead of a URL. DNS stores domain names instead of URL.
0:41 Correction: A Turing Machine cannot compute anything. There are problems that are not computable. They're called "undecidable over Turing machines"
Oh wow a year of computer science just in 13 minutes.
school is for dummies.
There is an error at ~5:10. The Big and Little Endian examples are identical. EDIT: Also, at ~12:24, the IP address on the right is invalid. IPv4 addresses are limited to a maximum value of 255 (which is actually not available for unicast...).
Not for unicast but for brotcast
I’m a self taught developer and a networking IT student yet I understand all the CS concepts you discussed, i feel proud of my self 😂
My multi thousand dollar college journey in a 13 min video. 😭
Great video for topic reminders and to better inform me on other certain topics
Love the video, and it is crazy how much more detailed these topics really are. The amount of work that was put into developing all the technologies we have right now is crazy. For example, he talked about RAM and the CPU, but the computer architecture for how we access RAM ( l1 cache, l2 cache, page table etc) and the interaction with the CPU through different channels is such a mind boggling process.
You just summarized my whole 4 years in college in just 13 mins 😮, great job 👏🏻
I love how precise he explained design patterns as just "all kinds of other ideas"
The succinct style of this Computer Science summary is so refreshing compared to most of the fluff on UA-cam. Just awesome.
This is pure gold. Straight to my reference watchlist. Thank you so much for your videos. Taking the time and effort to condensate so much knowledge into a couple of minutes. You may not go deeply into topics but these videos serve as a quick refresh for those who know, and as a starting guide for those who don't. It's really helpful for both cases and that's something I had never seen before on UA-cam so keep it up, I really hope the best for your channel mate
I'm graduating with my CS degree next Friday, but I'm still watching this video because there's absolutely no way I'm skipping a single Fireship video.
Congrats bro!
Not even 30 seconds in and this is insanely accurate, I'm laughing, I'm crying, I'm learning. I'm experiencing an entire lifetime of emotions. Amazing videos man. lol keep up the great work. Thank you so much.
-noob developer/designer
As a person who is about to do cs with no prior experience, this video went in one ear and put the other without a trace.
I felt that. Not a word understood😂
The way he went through all the concepts tells us how well he knows it all.
I feel like I learned more about OS in this 13 minute video than I did an entire semester of Operating Systems...
This video taught me more than my CS teacher in school ever could. Thanks for the amazing content man!
A lot of information packed in only 13 minutes.Impressive man.
I have taken 4-5 years of my life to understand this and you just done that in 13 mins. That is awesome.
Pretty much everything I have learned in computer science but in just 13 minutes and free of cost..
great content
"It's called a shell because it wraps the kernal"
I know what a kernal and shell are, but surprisingly never realized that refrence.
I like to think of the shell as a plastic weapper around a piece of candy. 🍬
This was the whole 4 years of university explained in 13 minutes! This was fantastic!
Love how seamless the transition between concepts is. And am I the only one who just learned about big and little endian??
They'll be an ever present concern when you're dealing with binary data formats and protocols. Also, text encoding formats that involve multi-byte characters.
Literally "amazing" ! ..... i am amused to find such a crisp and clear video on pure information on a platform like UA-cam 😮😮😮🤯
I often feel like I don't know anything while learning new tech. This made me realize how much I already learned over the years
Wonderful, more please! As a cs major your language videos have been great for figuring out which languages I want to try in the future, and other videos have been great review material! Thanks Fireship!
In my opinion, it's important to note that turing machines aren't able to do EVERYTHING, of course. they are able to compute anything. (at least, everything that is solveable.) This can be important to remember with turing complete languages, because they may not be able to communicate with drivers on your computer even if those drivers exist and work. Imagine a language which can calculate anything, but can't run shell commands and has no access to the filesystem. You cannot make files with this language. Or a language with no print command. You cannot make a "Hello, World!" program with this language.
This is really important to remember with multithreading, because that's an example of something that some languages people actually use cannot do.
This is really important to remember with multithreading, because that's an example of something that some languages people actually use cannot do.
Also, it is important to know that there are unsolvable problems, or at least unsolvable using a turing machine, no matter how "good of a computer scientist someone is". For some people this is obvious but in the industry is funny how many times a client asks for a software that solves the halting problem.
And that Turing Machines require "infinite memory", rendering our current computers only "equivalent to Turing Machines up to a point"
@@jandresshade What's a funny story of one such clients?
Great video !
12:22 The server IP address, is not valid. An IP address (v4) is composed of 4 parts of 8 bits, so the biggest decimal number is 255.
Fairly sure he spammed a bunch of minor but obvious errors to get engagement. Calling TLS SSL is another. Difference between name and URL also got a bit confused. I attribute at least 50% of this as intentional engagement baiting rather than true mistakes :)
Going from OOP to Inheritance to the the gang of 4 book is another. Design patterns prefer composition over inheritance.
@@randomgeocacher To be fair SSL was more of an inacurracy than an error, since it was the protocol used before TLS and basically is the same thing. They just changed the name when the Internet Engineering Taskforce decided to improve the protocol. But technically speaking you are right.
also 12:12 domain name is a part of URL not alias to one
@@philippebaillargeon5204 People use SSL interchangeably with TLS. Or they say SSL/TLS.
I used this to understand the CS degree completely! = It has all the CS concepts! - Thanks!
1:50 damn this is one of the best explanations of RAM ever
This is such an amazing summary of information. It really is incredible how succinctly you can explain these concepts.
Most of these exist in IT courses as well, such as OS, networking, memory etc.. so it's not so bad. The math parts are the real treat, with not much coding involved. Computability which involves linguistic concepts related to ability to compute problems aren't even mentioned, which started with Turing machine, expanding out to automate, regular language and all of that. That's not the point in the end. Computer science is just math course related to computers, kind of like music theory vs performance. Sure, you should know the music theory as a musician, but you can perform quite well without remembering all of the music theory concepts, because it's an entire different muscle.
this video is so incredibly useful and informative, especially as a beginner software developer. thank you so much
I think it is so cool how computer make so many small things to work together to build one giant useful thing
Nice video keep going
When i had just started learning programming few weeks ago... I watched this video and thought "he soinds like he's just scratching the surface"... But now that I'm getting into algos and DS... Holy sh this video is GREAT. Bro you make the best programming videos... Most impressive sh I've encountered so far in this industry you're like an angel guiding us
Bro if I land a job... I swear on my life I'll try to send you a month worth of my salary
😂😂@@JohnDoe-vu5hy
This video is literally everything my CS degree taught me.
Amazing video
Loved it
After a hectic day wasting all time in college and not learning anything, just to get a degree
This video was somewhat like, yeah atleast I did *something* productive
Maybe more videos like, you explaining solutions to some tricky questions, or explaining some data structure or algo in few minutes?
even if know 99.99% of these concepts it watched the whole video it feels comfortable and it is beast work well done👌
This is EXACTLY what I needed. Precisely what I needed. Thanks!!!!
Thanks! Trying to turn teach an incoming CS student core principles isn’t as easy as some might think, unless you show them this video.
Just when you thought Jeff has no new content to feed us, he caught off guard with a new banger series.
actually in 3:48 you should use double quotes for character array
I can’t stop recommending your videos to any of the people I know who is learning programming or computer science. Generally they know a lot of the stuff you sum up already , but it’s super hard to find sum up that are that good , reliable and quick on the Internet. And when they don’t know one subject each of your video « in 100seconds » is THE best and fastest way to get started on that subject and it saves hours of work for us.
I can’t imagine the amount of work you have put on your videos and for that (and the quality of your videos) I can’t thank you hard enough.
I remember watching a video like this around a year ago and not understanding a single thing that was mentioned. Now I was able to get halfway through the video roughly understanding everything until it turned back into gibberish. It's nice being able to see how far I've come
after going through an extensive 4 years of computer engineering curriculum I can say boldly that I finally understood computer after watching this video XD
10:20 the main concept of the OOP is no the class but the object, you can have OOP lenguajes that do not uses class, like JS which use prototype objects.
JS has classes, but I get your point
Not even just that, OOP is a pattern where the operators that act on your data, are together with your data.
In contrast to functional where the data is generally dumb objects which can be passed into separately defined functions which operate on them.
@@marquez2447 But under the hood JS is still prototype object OOP lenguaje,
@@d.sherman8563 Yes the object is just an abstraction to define the encapsulation of data and function that alter that data.
Yep. Didn't understand anything
You are just dumb
This is the best video I've seen in the entire galaxy. The amount of information in such a small time is just amazing.
I would love to watch another video like this Jeff!!
Woah, It's a year and half since I'm studying Cs. If I watch this a year ago, I'll have no clue what you're talking about (how embarrassing lol). 2024 will be my 4th semester, and I decided that I'll put more effort into this field.
Hi i want to start cs can i start if i am not good at mathes
i’m a senior in highschool with 2 months left of school im going into college for CS all these videos are popping up and i have understood nothing but atleast it’s quite entertaining
You forgot about concept #102 which is the ability to troubleshoot and fix all the known (and unknown) problems with grandparents/parents/family/extended family/friends laptops/desktops 😂
Amazing job Jeff, this video can be a resource for the next 10 years. You created a new way to explain dev things
Nice video didn’t understand anything
The way this flows together is honestly really impressive
Woah that was one hell of an educational video on computer science is such less time . I have a masters in computer science but have forgotten a lot of the fundamentals. Thanks for igniting the fire to relearn . I appreciate you .