I tried to get random students hired at Google in 90 days: th-cam.com/video/UxKrTcnMPWw/w-d-xo.html Mislabeling Binary Search Tree was just a simple miscommunication with my editor!
You have 427% grow in views and 244% in subs for last 30 days. Checking some YT dedicated plugins looks like you've already been blessed with algorithmic blessing, lacking only in number/length of tags, and shares on Facebook/other social media sites. But if you keep up with high engage vids like this one, I'm betting these numbers can make you bold by the end of this month (a week earlier than your suggested date). #ShaveJasonsHead
It really depends on whether you are studying at a college or a university how theoretical it gets. I just completed my bachelors of computer science at a university, and basically programming is not being taught to you (just very very minimally). You are expected to do learn it yourself on your own (and everyone does so anyways). It is more a tool that you use for other courses, than what you are learning towards. I had a lot of theoretical courses in maths, theoretical computer science (complexity theory), technical computer science (Transistors and stuff), and practical computer science (Algorithms and Datastructures). You can use your programming skills everywhere to solve tasks, and that is the beauty of it.
It also depends of the particular University and the approach they use. In my country the "best" university for CS is very theoretical, and you have to go through at least a year of science and math before having your first programming course. Meanwhile the "second best" university for CS has a more practical approach, where you learn the basics of programming in the first semester and then you start building on top of that. By the second year most of your courses require you to make an actual project, so you can apply the theory you learn right away.
This is exactly how it works in my country. Nobody here goes to computer science, very rare ... Computer engineering is the way to go if you want to become a software engineer. Where I live computer science is maths + a looot of theory.
@@andrewnorris5415 What the hell do you mean only data-structures and algorithms are useful, lmao. If you go into system design or microcontrollers (even their software), you need to have know about technical computer science. If you go into theoretical research, or even when facing some problems, knowledge of complexity theory is extremely useful (is this problem even solvable practically?). You do not learn about the algorithmic foundations of data science in software engineering. You are basing your viewpoint of the fact, that all people studying computer science will end up as software engineers…. You are missing every other sub field of computer science here! And I do absolutely not agree with you, that programming is harder to learn than the other stuff. I think you would agree with me, if you would take a look at something like the background of the Page Rank algorithm, which has its roots in Linear Algebra and Stocastics, Monte Carlo Markov Chains. Or just look at Satisfiability Checking, Mathematical Logic (the basis of maths - first order logic), complexity theory… But I would happy to hear your reasons back from you, after you have looked up those things I listed above.
@@mr.norris3840 I was talking about programming! Which is hardly taught at uni. It takes years of experience to get good. Took me a looong time before I become a professional games coder for the biggest companies working on game engines. The only thing useful for my employment I was taught at uni was algorithms and data structures. Very few people do theoretical research. When hiring we want people who have had experience coding. And have something good to show. As it really makes a difference. Not the theoretical stuff I got taught at uni many years ago. When first started coding games professionally it was on the SNES and then the PS1. The tiny course we did on assembly at uni ( 2 days) came in handy. But I had already taught myself all that by then and far more in my own hobby projects.
I AM GOING TO LEARN EVERY SECOND OF THIS VIDEO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Finishing up my CS degree this year, was very pleased with how basic some of the explanations seemed to me so I must have come far. Best of luck man if I can do it so can you!
5:40 Another advantage of two's complement is that addition, subtraction, and multiplication on it are simpler. You just do the same as with unsigned values. One way to explain that is using modular arithmetic: unless you use long arithmetic, numbers are computed modulo 2 to the power of the number of bits in an integer, and the numbers that the same bit string represents in unsigned types and in two's complement are equivalent
0:26 That's a binary search tree (BST) and not a general tree. General trees need not be binary and follow that left=smaller and right=larger property.
Which video please provide the name of that video? The one where he says how he got into faang? Or the one where he says I m bad at coding but MS still hired him?
@@strength4147 I promise it’s nothing to do with intelligence and everything to do with hard work. It all seems impossible at the start but nothing is actually hard, it’s just very very boring to sit down and learn the stuff you need to know to understand. That’s why so many people drop out, not because they weren’t smart enough.
I liked the video, but there are a few places I'd like mention to help expand on some of the points: 0:18 Trees don't need to store numbers. They're an abstraction that represents some connection between states represented as nodes (usually formally called vertices), this state can in theory be anything. Trees happen to be nice structures where we can order those states with numbers too. 0:47 Structs (sometimes called structures or records) store data more or less contiguously. This means that the actual values of the objects are placed next to each other in memory and the structure essentially just covers all those memory addresses (There is usually a bit of padding and stuff going on in the backround to ensure that the memory stays aligned). 1:07 Would be nice to mention tail recursion optimizations. 3:53 There's a bit more to this actually. C++ is in fact a bloated, object oriented mess of conflicting versions and specifications that will drag you into the pits of hell whence none return. Use Rust instead. 4:43 There's actually a few other variants that are useful for this analysis as well. Such as small o and big/small theta. Something for someone to look into, albeit big O is most common, it essentially means the maximum bound of a function. 4:49 There are a few kinds of queues. Namely, what you might think of as a classical queue in a grocery store, called a double ended queue, and a priority queue, which actually orders elements and returns the highest element first. This is usually achieved through a binary heap data structure. 5:07 Linked Lists are directed unary trees (one branch per node more or less). Although in practice they can be cyclic and point to themselves (but so can trees if you abuse them). Surprised graphs weren't mentioned. 5:21 Transistors don't run on binary numbers, they run on voltage outputs which are either high (binary 1) or low (binary 0). The machine code essentially generates the correct sequence of electric pulses on the circuit to activate the right transistors which generate more transistors, etc. etc. 5:35 Assembly is actually a family of language variants, and there is usually a different flavour of assembly depending on the chip manufacturer. 6:55 This is not always true in compiled languages when optimizers are involved. Compiler optimizations can actually reorder your instructions in any way it wants, making highly optimized code sometimes not run exactly how you wrote it, but it will be faster because of this reordering. The CPU is also agnostic as to which instructions it chooses to perform as well in a lot of cases if two instructions don't rely on each other. 8:23 In current practice modern ML is done on very deep neural networks, however in general machine learning is actually a class of self-correcting algorithms that converge to statistically optimal solutions. A very trivial example is a Simple Linear Regression which is a Machine Learning algorithm but doesn't actually require any neural nets. Other examples are Support Vector Machines (SVM) and K-Nearest Neighbours, which are classical models in machine learning but don't require any neural networks and Google Cloud servers. There were maybe a few other places you could have mentioned as well. You mentioned trees but I really feel like you should have mentioned graphs and graph algorithms, primarily DFS and BFS. Pretty much every problem can be solved in computer science by representing it's different states as a graph and then performing DFS over all the possible states. This is essentially what it means to brute force a solution. You also did not mention dynamic programming, which ultimately resolves to finding the shortest path on a Directed Acyclic Graph, where the vertices (nodes) and edges represent the different choices for the state we want to optimize. A few other niceties would have been a brief tour of linear algebra, particularly matrices since these do occasionally show up. I also feel like modular arithmetic should have been included since it can be used to reduce a lot of problems into simpler expressions. Also you could have maybe mentioned different paradigms briefly, such as Object Oriented Programming (you did mention classes once), and Functional Programming, and what they're differences are, pros/cons. Also I can't believe you didn't mention Monads! I know this is totally unnecessary and a bit pedantic, but hopefully a few people learn from it. Again no hate to the creator, just a few little expansions for people who want to get a fuller picture. I like your energy and hope you hit 100K soon man, great content :P
I used to be a Computer Science student here in Brazil, but had to pause my studies and start to focus on finding a job deal to the pandemic. I got lost in my studies and just couldn't find a way to go on with it. I felt really inspired by the content you presented in your video, and for that I'm really grateful! Awesome video dude! I can see how much you enjoy doing what you're doing.
Where's the computer architecture? Formal Grammer/logic class? Runtime analysis? Advanced algebras and calculus? I know this isn't literally trying to summate a college education but wanted to ensure people don't get too whimsical about the seriousness and value of a collegiate education. I worry for future generations of coders there is still research to be done that has certain pre requisites. Computer programming is accessible and that's awesome but a college degree is more than that.
The more you know, the more you realize just how miniscule programming languages are in the grand scheme of things. I've been self teaching on and off since I was in middle school (now 21). I plan to start a CS degree to break into the industry, but you do just encounter most of this stuff naturally (including the math) by being curious and writing/reading code and documentation. For instance, to learn compiled languages, you should prob understand the compiler toolchain, to understand the compiler toolchain, you should probably understand the role of OS kernel & cpu architecture, etc.. Want to make a game engine? Now you will want to learn about the architecture of GPUs, linear algebra, and more specialized/complex data structures. Then doing things over networks requires a whole bunch more of knowledge to understand what's going on. NIC, OSI, Sockets, Protocols, DNS Resolution. I disagree with the idea that college is valuable for the education aspect. If you are disciplined you can get a comprehensive understanding of all of CS online for free. Problem is; you don't really know how much content CS actually covers until you start questioning how things work. If you're not someone who does that, then perhaps college would be beneficial to learn CS.
Great introduction into CS; just a few minor notes: 0:26 not necessarily; depends on the kind of tree 0:44 not "until" but rather "while" (as the name of the loop implies) 2:12 "malloc" is not a keyword in C but rather a function in the C standard library 2:27 you can use them interchangeably in C but technically they are different types 3:14 that's up to personal taste and not true in general 3:29 "bash" is just the shell (the tool reading your inputs and interpreting them); there are also many others (zsh or fish for example) 4:41 it's actually called the big O notation or the Landau notation; O(n) is just a variant of it, others are O(n!), O(log n) and O(1) for example 5:18 transistors are electrical components and use voltage. The presence or absence of this voltage can be interpreted as a zero or one
Also neurons in neural networks don't output either 1 or 0. Nowerdays the neurons don't even output values between 0 and 1 because almost noone uses sigmoid activation anymore and with ReLU you get values in the range between 0 and infinity and with PReLU or LeakyReLU you get values in the range between minus and plus infinity...
5:18 there is no full circle, these are the layers from electronics through to high level languages. Assembly is slightly above the machine code implicit in the Instruction Set Architecture. While C sits above the others, it’s not even certain to be included, for example absent from high performance coding for most of the original 8 bit processors during that era. C and C++ are of course now quite common for 8 bit Arduino projects. And compiler advances now make the higher level languages a productive choice there.
This helped me feel more confident that I'm indeed learning stuff. Even though I still have a long road ahead, it was good to realize half of the concepts already feel familiar. If I may suggest a video idea: you could do something similar to this but about frameworks, libs, deployers, package managers, compilers, git, docker and all that other tools and weirdly named-stuff that comes with learning a language, because as a beginner all those names are really overwhelming 😥 Thanks for another great content, you're really good explaining stuff!
I've been in computing for over 20 years now and I *still* learn new stuff. Even "oh dang that's stupidly obvious, how did I not know about this until just now?" things, on occasion. I like to remind myself: The goal is not to learn everything, as that's impossible, but to learn how to learn and to keep my brain sharp so I can pick up new skills quickly when I need them. Wishing you the best in your journey! I promise the road is not as long as it seems. And CS is a big field with lots of interrelated concepts, so if something is frustrating or just isn't clicking, go ahead and focus on something else for a while - eventually the same concept will come up again in a different way and you'll suddenly "get" it.
^ You can safely ignore this guy, and sadly will have to get pretty good at it. The tech field is full of people who are insecure in their own abilities and feel threatened by perspectives that differ from their own, often moreso they're the perspectives of women. It's one of the only things I don't like about the tech industry.
What a well laid out video! I'm starting a master's programme in CS at the end of the month after graduating as a BSc in physics, and this video really helped in assuring myself that I'm not in over my head and am actually surprisingly familiar with the topics to come. Of course, I don't mean to underestimate the amount of work to come, but at least I'm more confident now.
@Nymph Yes I study cs, not all schools are very math intensive and a lot of math classes can be taken at community college. I had to take calc 2 and discrete 1 and 2. Do-able for sure!
I am actually really happy that I understood almost everything in this video, as a first-year major student I was stressing out on the work I would be blasted with and this helped me feel a little better, also that coroutine trick was pretty cool, I didn't know about it.
A huge thank you from Peru 😄 I am an aspiring software engineer and sometimes I feel lost because I haven´t taken Computer Science courses/undergrad. Thanks for explaining it with pens, in the editor, with examples. For me, those details help a lot. Many success in this channel and may it continue to grow.
0:24 That is a special kind of a tree -> Binary Search Tree, 1:29 Since the stack is a Last in First Out Data structure push/pop is (usually) shown the other way round,4:43 Just Big O Notation (one of the 3 asymptotic notations used in complexity analysis of algos ), 5:52 That's called sign-magnitude form, there's also 1's complement form and 2's complement form (mentioned in the video) -> watch Ben Eater's video for more clarity on this topic
It is definitely usually shown the other way around for learning and understanding (plus it makes more sense), but he's right to have the stack grow downwards because that's actually how stacks grow in memory. He's correct.
@@moonman8567 to be more precise, the stack growth direction depends on the architecture. Also, in his stack frame drawing he indicates that the stack grows upward based on the 0x8 and 0x84 addresses.
I thought maybe I dont know much about my very own field, but now after watching how you have presented everything in a a nice order am more confident that I have good knowledge of things, i just need to practice more.
Some (slight) corrections in the machine learning part: 1) A neuron doesn't have to produce a 1 or a 0. It can, theoretically, produce any real number, but it does depend on what kind of a (non-linear) function it's using (like ReLU, Sigmoid etc.). 2) The output of a neural network also depends on the kind of output layer. What you said is true for Softmax (that all categories sum up to one, indicating a real probability for each of them) , but not necessarily for, for example, a one-hot layer using sigmoid. Otherwise a really good video, besides what others pointed out, but of course it's really hard to sum up such a large topic in so little time that some mistakes are inevitable :) .
Sick video. Small correction. Nodes in a nerual network do not return either 0 or 1. Like you said they return the sum of the nodes multiplied by their respective weights. This sum could be -5, 100, 3.552323, or any number. Then the sum is ran through what is called an activation function. It is possible that for some obscure application the function squashes the sum to be 0 or 1 (like a step function), but realistically actual neural networks these days use a variety of activation functions, even different functions in different layers. A step function is seldom used, if ever. A Relu function squishes values to fit between [ 0 , infinity) A Sigmoid function squishes values fit anywhere between [0, 1] (for example .95 could mean the model is 95% confident the picture is a dog) A Tanh function squishes values to fit between [-1,1] For anyone interested in neural networks, you can imagine that the data flow from layer to layer through the weights (with raw data is the first layer). After the data flows through the weights, it arrives in the nodes. Each node sums up the data that landed in it, then it squishes the data so that it doesn't go to infinity(explanation below). Then it becomes the data for the next layer and then flows through those weights. You can imagine if we had a table of data and then we multiplied all of it and then added it together, then multiplied and added, then multiplied and added, eventually the number would get too huge to even calculate. This is why each node squashes the data. However, the squishing is rarely to force the number to be either 1 or 0, rather we just squish it to fit in some range while still somewhat preserving the ratios. We still want the stronger weights to have a strong influence, and the weak ones to remain weak, they just get scaled into our range. The big idea is that if we had millions, billions of weights, we could theoretically tune them to model any pattern or any set of data. Lucky for us calculus allows us to tune all the weights at the same time and in the right direction.
Yeah, I was going to comment exactly that. I don't know where this 0/1 output came from and I never used this kind of activation in any neural network I ever worked with or developed.
I use the terminal a bit as a new Cs Student and at first I was like meh, then I installed a C++ compiler and the flutter SDK, and man I felt like a demigod
Haven't watched this yet, but I love the entire idea of teaching an entire degree in a short video - gives you a quick taste of what's most relevant, and with that, you can choose where to dig deeper
Excellent video! Happy to say I did understand every concept after self studying various computer science/engineering bits over the last 5 years. Still nice to hear it all run through so concisely though, and gives people a good idea of what a CS degree fundamentally covers. Thanks!
3:55 - Not really, C++ is much more complex than C, you have the standard template library(STL), templates (check std::enable_if for example), different methods of casting (C-style cast, static_cast, dynamic_cast, reinterpret_cast), RTTI (run time type information), concepts and constraints (some kind of traits) (concept and require keywords), range-based for loops, rvalues and lvalues, lambda expressions, std::launder (I don't know what "memory laundering" is), and more. Using C++ with standard C functions is a anti-pattern. Same for using C++ as "C with classes" as it was initially created.
some asterisks 0:18 tree is an umbrella term for linked data structure that can look like branching trees, and they don't have to contain numbers. 8:21 neurons in neural networks can output range of values, not just ones and zeros. In fact ones that output ones and zeros are special cases.
asterisks for my asterisks * some trees are not necessarily linked, and they are stored on an array like binary heap. * neurons that output range of values does so with floating point numbers, which are represented by ones and zeroes.
This is amazing, thank you so much!! I'm in my first year of CS and I'm writing all of this down for me to look it all up later in more detail, whether I'm gonna see it in future classes or not. Thanks a lot!!
I have seen other videos like this, but this is my favorite. I am trying to learn a lot of topics that are taught in computer science degree programs but it is good to have a general overview like this before you start learning more in-depth.
You are the best fucking teacher ever. Honestly, I can tell you struggled at first with coding because you can explain everything so easily. It's like you found the right words to explain complex concepst.
This is not how I learned computer science. I learned back in the 70s, so the method then - and I still believe the best method - was to learn machine code/assembly language first. This taught you how the CPU executes code. It is THE most basics of computers. You don't need to know about the heap at this stage because you're not in the world of high-level languages yet. Once you have a good grasp of assembler, you quickly learn that it's a difficult way to write any meaningful application but it teaches you the lowest level including the program counter (PC) and the Stack Pointer and you should see how much is going on just to do the simplest of tasks like calling a subroutine and returning. You learn how a linker produces your executable code (statically linked) from all the individual sections of object code and you can see how you can build on just about everything you produce. You can then move on to C and learn how C compiles to assembly language - or Pascal etc - and then how the object code is produced from the C source. You can also look at which parts of your code are running slow and you can work to speed them up and even produce assembly routes to speed up the parts that the compiler can't make any more efficient i.e. the C version can't be made more efficient. You can then appreciate how much easier it is to use C than assembly and you appreciate how much the compiler does for you. Then, you learn how libraries work. You learn how you don't need the source code of a library to make use of it - you just need to understand how the library code gets called from your code at runtime i.e. you learn about dynamic linking as opposed to static linking. Using C, you learn how the compiler maintains the heap for you and you learn how this is mapped onto a computer i.e. it's just a big chunk of contiguous memory that the malloc library looks after for you and you can just grab and release chunks as needed. You learn how memory leaks can occur. You then start to understand how all of the C/C++ code operates on a CPU directly without a supporting environment like an interpreter or a VM. You can trace the direct relationship from C/C++ code to a piece of hardware as it operates and you can debug it in-situ using specialised software and hardware like in-circuit emulators. Once you move into the world of Java - which uses a VM - and interpreted languages like Perl or Python, you move further away from the hardware of the machine that runs it and you lose the ability to make use of traditional debugging on the hardware. This is how I would teach programming. You don't have to spend a lot of time on assembler - just enough for people to understand the very basic operation of a computer program - and then quickly move 'up the stack'
Each node in a neural network doesn't output a binary 0 or 1 but rather a float; they take a sum of the previous nodes' outputs times the corresponding weights and pass this through an activation function (reLU, sigmoid, etc).
One more thing I just watched this complete video, and I'm getting into computer science stream in college,( completed 12th grade this year only) thanks for guiding. Your subscriber
As a CS major, this was a nice refresher. Obviously there were a lot of humorous things missing, like. "Well X is just Y but with classes" (without explaining classes). Or explaining stack frames without what returning means. Not adressing dereferencing and passing by reference with pointers and the list goes on. BUT the bit at the end, where you say its the first percent, wrapped it all up neatly for me. Very nice video, well done.
I am a senior in software engineering and I am amazed at how I could remember learning everything he said in college. Low key kind of proud. Cool video!
Thanks for putting this video together. I'm working on a computer science AS. Last semester I learned Python in Programming 1 and now I'm learning C++ in Programming 2 and it's definitely much more challenging.
I'm learning Web Development self-taught, having a background in Psychology and I have to say this is an awesome video. Now I just gotta watch it 10 more times 😂
At university we learned that web development is the most insecure field of them all, as there are a lot of ways to build a poor overall system, with it being the most obvious and accessible form. In general, the theory at uni is also taken from books. Many professors work with one or two books in particular which they go through, so if you get a good and recommended book, you won't miss out on anything. But I recommend checking them out, as it can avoid serious problems in the future.
C++ was first named D, they went to C++ cause D wasn't grabbing enough attention. Which means C++ is not directly referring to C += 1 but instead refers to D and C# to E (if you'd follow the naming conventions of programming languages up to that point)
I don't have a CS degree, but have worked in IT for ~10 years. This was a fun video to see what I've been missing from a formal CS education. Thank you!
@@gamespecies yes I do, only because I'd love to have a bullet point on the "Education" section of my resume that shows I earned a degree. I don't have that, so I'm always going to be self conscious about my lack of formal education. But as you say, you gain a practical education by doing real-life projects and that has been enough for me to be fully employed, earning a solid income in a low cost of living state. I hope my reply helps you!
@@davidcondit388 How many years have you been programming? I'm doing my degree and paid courses from Udemy to help get a high paying job as soon as I'm out
This is one of the best or the best video i have seen... I was expecting to hear about your journey but hearing about different concepts in software engineering is just awesome...thanks
Really awesome video. The clarity and preciseness of your explanations show that you are an excellent developer and can put a complex subjects into few and simple words. I'm a Junior Developer and really enjoyed learning about these topics. Hoping for more videos like this!
this rapid fire style is fantastic, thank you! take the same style and apply it to one focused subject in computer science, i.e. one of the ones you mentioned in this video
With 2 years in AP classes in high school and currently in College, this video is excellent and does a fantastic job at laying down the basics to the more in depth and maybe complicated subjects. Thank you!
I did both my Computer Science degrees in Germany and I really think 90% of it was absolute useless and only to pass the tests. For example it is less than 10% actual projects, let alone coding. I think this is one of the few points were the US really do better and I really regret not going to an US college.
no words to describe how big of an overstatement your title is, not sure if you covered 1% of what my degree has covered so far and I haven't even finished it yet!
Also "you're going to run most of your code from bash" so this hypothetical CS degree at no point mentions IDEs... Or any data structures beyond arrays... Or any algorithms... Or object oriented programming
Just re-enrolled to go back and get my Computer Programming degree. Even though I love computers, it can be quite overwhelming at first glance. I AM SO GRATEFUL that you put out this video in a bid to help anyone getting into the field. Thank you very much you sir have got a new sub!
I'm really happy because as a self taught programmer I knew all of these topics pretty in depth. I never went to college and it looks like I don't need it. Thanks for the morale boost!
Hey Jason, I'm a Beginner and I would like to start learning to code, firstly I would like to learn coding websites and was wondering what are some languages I must learn and will be helpful to me and what programs should I use for coding
With web development I would start off with either HTML & CSS or java script as these are used on almost any website. Java script would probably be better for learning how to code as you can do alot more with it and has more uses outside of web development.
This guy is legit so underrated, I dropped out of CS but after watching his videos I just started coding at my own pace and hoping to get good good pretty soon, keep up the good work.You’re my favorite coding channel ❤️❤️
This is pretty much 4/5 out of the 20+ classes, and most of this stuff even though you learn during classes, a lot and by a lot I do mean it, you have to learn by yourself. Truth is, the exercises you do in classes to set you up for projects are pretty much a tiny bit of the whole thing and 90% of your time is actually spent doing research stuck with problems. For example, I had to do a project that ended up being roughly 2000-3000 lines of assembly (a sizable fraction of it were for the displays so, lets say over 1000 lines of code), but during the 4+ months of classes prior to this project, only about a month of it was about assembly with ~4 classes of coding itself that turned out to be probably 150-250 lines of code total. So it's one thing to do a small coding exercise about adding and subtracting (which is what the classes teach you), but then a completely different thing when a teacher tells you "Make me an assembly weight scale that calculates kcals of 30 different ingredients that could be selected together into a meal", (with 10+ other functionalities that I am not even gonna list because they still bring me nightmares to this day), my brain at the time said to itself, I've been learning for a month or so, I don't think I am capable of doing any of that, and then followed up by a couple of hours a day for the next few weeks to get it done on time, most of them not even coding but trying to spot where I was making critical mistakes that would warrant all that progress of work to be evaluated as a '0' if the whole thing doesn't boot up and work as intended.
I'm getting my bachelor's degree in 2 weeks and I think that the collection of all the topics you brought doesn't cover even only measly 10% of the whole set of topics I learned, my degree took 4 years and a half and I feel that all the topics you brought I learned through my first year only, second tops for some specific ones like ANN. Even though, great video 👍, my only criticism is that you should put a disclaimer about what I said.
Nice video! To hear the differences between C languages explained in a simple, direct way by Jason, not only demystifies them, but proves the point that HOW you communicate MATTERS no matter the industry or setting. Jason will surpass more capable programmers because he doesn't scream and yell like a nerd with a chemical imbalance, triggering the worst in others, making everything fall to shit. I remember myself and my whole class freaking out in our OS class when the professor said, "All of you have had a course in C already," but we didn't. We had a course in C++ which for all we knew was completely different. On the second class meeting, after you could drop a course with a refund, the professor said, "If you're not comfortable with C, drop the course." Well that comment basically reduced 16 weeks of potential growth to just going through the motions. Which tone would be more conducive to a productive semester? The free one on TH-cam. A professor has finite upside especially since most of them are adjuncts just trying to get the mortgage paid and most really perform like it. A TH-camr can get virtually unlimited subscriptions and ad revenue and more importantly, recognition and increased opportunities instead of being siloed off from the world in a college.
@@3333218 It's a shame, because people quit when they think, "Am I really going to have to work in this kind of environment?" Maybe it's better once you're hired, but my degree from an accredited college certainly didn't make me prepared for a technical interview. It was a learning experience of what career not to pursue, at least not without seeking a do over somewhere else. CS can't be learned in a classroom any more than soccer can. You need to be in the field learning with others day in day out until you're ready for the stadium.
But C and C++ are actually completely different. They share a lot of syntax, but the semantics are treacherously different. It is a common misconception that C++ is just C with added things.
@@jbird4478 not really man. C++ was made to be compatible with C, but honestly, it makes no sense, and with the way it's going, one day C++ won't even be anything like C.
Thank you for this video. Stuff like this more than anything else helped me decide if doing computer science at university was really for me. No vague generalisations, just straight up diving into concepts and what computer science is really all about.
Years ago, when dealing with programmers at work who screw up a lot, we would say "their stack ran into their heap." We meant imply they weren't very smart overall, and trying to BS their way through the project. It didn't refer to a specific bug. Separately, the stuff at 6:29 is what I do for a living, process optimization in jagged cost domains.
I'm not sure I would call that an "entire" computer science degree. In fact, much of the "science" wasn't really discussed. That's more of a software engineering overview. A pretty good sampling though. I give it an A for effort, and a C- for delivering on the stated objective ("An Entire Computer Science Degree in 12 Minutes").
Very rarely do I see TH-cam videos where concepts are described so clearly. I have a bachelor of computer science but I need to revisit some of these topics and this is a great place to start. Just subscribed.
I tried to get random students hired at Google in 90 days: th-cam.com/video/UxKrTcnMPWw/w-d-xo.html
Mislabeling Binary Search Tree was just a simple miscommunication with my editor!
#ShaveJasonsHead
#ShaveJasonHead
Copy that.
You have 427% grow in views and 244% in subs for last 30 days. Checking some YT dedicated plugins looks like you've already been blessed with algorithmic blessing, lacking only in number/length of tags, and shares on Facebook/other social media sites. But if you keep up with high engage vids like this one, I'm betting these numbers can make you bold by the end of this month (a week earlier than your suggested date). #ShaveJasonsHead
#DontShaveJasonsHead ❤️
Interviewer: How long was your CS program
Me: 12 Minutes
😂😂😂
Well, 12 min 34 seconds to be precise.
*instant salary raise*
son of a biscuit, you're hired!
Me: 4min and 34s.
jokes on you i watched this on 2x speed
It really depends on whether you are studying at a college or a university how theoretical it gets. I just completed my bachelors of computer science at a university, and basically programming is not being taught to you (just very very minimally). You are expected to do learn it yourself on your own (and everyone does so anyways). It is more a tool that you use for other courses, than what you are learning towards.
I had a lot of theoretical courses in maths, theoretical computer science (complexity theory), technical computer science (Transistors and stuff), and practical computer science (Algorithms and Datastructures). You can use your programming skills everywhere to solve tasks, and that is the beauty of it.
It also depends of the particular University and the approach they use. In my country the "best" university for CS is very theoretical, and you have to go through at least a year of science and math before having your first programming course.
Meanwhile the "second best" university for CS has a more practical approach, where you learn the basics of programming in the first semester and then you start building on top of that. By the second year most of your courses require you to make an actual project, so you can apply the theory you learn right away.
This is exactly how it works in my country. Nobody here goes to computer science, very rare ... Computer engineering is the way to go if you want to become a software engineer. Where I live computer science is maths + a looot of theory.
@@andrewnorris5415 What the hell do you mean only data-structures and algorithms are useful, lmao. If you go into system design or microcontrollers (even their software), you need to have know about technical computer science. If you go into theoretical research, or even when facing some problems, knowledge of complexity theory is extremely useful (is this problem even solvable practically?). You do not learn about the algorithmic foundations of data science in software engineering.
You are basing your viewpoint of the fact, that all people studying computer science will end up as software engineers…. You are missing every other sub field of computer science here!
And I do absolutely not agree with you, that programming is harder to learn than the other stuff. I think you would agree with me, if you would take a look at something like the background of the Page Rank algorithm, which has its roots in Linear Algebra and Stocastics, Monte Carlo Markov Chains. Or just look at Satisfiability Checking, Mathematical Logic (the basis of maths - first order logic), complexity theory…
But I would happy to hear your reasons back from you, after you have looked up those things I listed above.
What’s the most fascinating thing you came across?
@@mr.norris3840 I was talking about programming! Which is hardly taught at uni. It takes years of experience to get good. Took me a looong time before I become a professional games coder for the biggest companies working on game engines. The only thing useful for my employment I was taught at uni was algorithms and data structures. Very few people do theoretical research. When hiring we want people who have had experience coding. And have something good to show. As it really makes a difference. Not the theoretical stuff I got taught at uni many years ago. When first started coding games professionally it was on the SNES and then the PS1. The tiny course we did on assembly at uni ( 2 days) came in handy. But I had already taught myself all that by then and far more in my own hobby projects.
I AM GOING TO LEARN EVERY SECOND OF THIS VIDEO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Good luck zak G
Bruh, learn every nanosecond
@@O.Reagano Likewise :)
@@phuanhuynh8888 😂😂
Finishing up my CS degree this year, was very pleased with how basic some of the explanations seemed to me so I must have come far. Best of luck man if I can do it so can you!
5:40 Another advantage of two's complement is that addition, subtraction, and multiplication on it are simpler. You just do the same as with unsigned values. One way to explain that is using modular arithmetic: unless you use long arithmetic, numbers are computed modulo 2 to the power of the number of bits in an integer, and the numbers that the same bit string represents in unsigned types and in two's complement are equivalent
Amen
0:26 That's a binary search tree (BST) and not a general tree. General trees need not be binary and follow that left=smaller and right=larger property.
i was thinking the same thing
I like this guy's videos, I probably watched his journey to becoming a Microsoft engineer 5 times
Very relatable and inspiring stuff for your everyday engineer.
Thank you! Really appreciate the comment and glad that you resonated with the story :)
@@invictuz4803 😀
Which video please provide the name of that video? The one where he says how he got into faang? Or the one where he says I m bad at coding but MS still hired him?
@@samratashish9979 Well Microsoft is not part of faang, and MS is short for Microsoft.
This is shockingly good. Have finished my cs degree but this was a fantastic reminder of all the little things I hoped I’d never need again
LOL never wanna deal with pointers and heap memory allocation ever again
I hope i will be able to study CS too but i always have this fear that i'm not smart enough
@@strength4147 I promise it’s nothing to do with intelligence and everything to do with hard work. It all seems impossible at the start but nothing is actually hard, it’s just very very boring to sit down and learn the stuff you need to know to understand. That’s why so many people drop out, not because they weren’t smart enough.
@@Foxtrot6624 thank you so much for the kind motivating words! I will give my best!
@@strength4147 dw loads of stupid people do computer science
I liked the video, but there are a few places I'd like mention to help expand on some of the points:
0:18 Trees don't need to store numbers. They're an abstraction that represents some connection between states represented as nodes (usually formally called vertices), this state can in theory be anything. Trees happen to be nice structures where we can order those states with numbers too.
0:47 Structs (sometimes called structures or records) store data more or less contiguously. This means that the actual values of the objects are placed next to each other in memory and the structure essentially just covers all those memory addresses (There is usually a bit of padding and stuff going on in the backround to ensure that the memory stays aligned).
1:07 Would be nice to mention tail recursion optimizations.
3:53 There's a bit more to this actually. C++ is in fact a bloated, object oriented mess of conflicting versions and specifications that will drag you into the pits of hell whence none return. Use Rust instead.
4:43 There's actually a few other variants that are useful for this analysis as well. Such as small o and big/small theta. Something for someone to look into, albeit big O is most common, it essentially means the maximum bound of a function.
4:49 There are a few kinds of queues. Namely, what you might think of as a classical queue in a grocery store, called a double ended queue, and a priority queue, which actually orders elements and returns the highest element first. This is usually achieved through a binary heap data structure.
5:07 Linked Lists are directed unary trees (one branch per node more or less). Although in practice they can be cyclic and point to themselves (but so can trees if you abuse them). Surprised graphs weren't mentioned.
5:21 Transistors don't run on binary numbers, they run on voltage outputs which are either high (binary 1) or low (binary 0). The machine code essentially generates the correct sequence of electric pulses on the circuit to activate the right transistors which generate more transistors, etc. etc.
5:35 Assembly is actually a family of language variants, and there is usually a different flavour of assembly depending on the chip manufacturer.
6:55 This is not always true in compiled languages when optimizers are involved. Compiler optimizations can actually reorder your instructions in any way it wants, making highly optimized code sometimes not run exactly how you wrote it, but it will be faster because of this reordering. The CPU is also agnostic as to which instructions it chooses to perform as well in a lot of cases if two instructions don't rely on each other.
8:23 In current practice modern ML is done on very deep neural networks, however in general machine learning is actually a class of self-correcting algorithms that converge to statistically optimal solutions. A very trivial example is a Simple Linear Regression which is a Machine Learning algorithm but doesn't actually require any neural nets. Other examples are Support Vector Machines (SVM) and K-Nearest Neighbours, which are classical models in machine learning but don't require any neural networks and Google Cloud servers.
There were maybe a few other places you could have mentioned as well. You mentioned trees but I really feel like you should have mentioned graphs and graph algorithms, primarily DFS and BFS. Pretty much every problem can be solved in computer science by representing it's different states as a graph and then performing DFS over all the possible states. This is essentially what it means to brute force a solution.
You also did not mention dynamic programming, which ultimately resolves to finding the shortest path on a Directed Acyclic Graph, where the vertices (nodes) and edges represent the different choices for the state we want to optimize.
A few other niceties would have been a brief tour of linear algebra, particularly matrices since these do occasionally show up. I also feel like modular arithmetic should have been included since it can be used to reduce a lot of problems into simpler expressions.
Also you could have maybe mentioned different paradigms briefly, such as Object Oriented Programming (you did mention classes once), and Functional Programming, and what they're differences are, pros/cons.
Also I can't believe you didn't mention Monads!
I know this is totally unnecessary and a bit pedantic, but hopefully a few people learn from it. Again no hate to the creator, just a few little expansions for people who want to get a fuller picture. I like your energy and hope you hit 100K soon man, great content :P
@@ymmuh glad I could help
@0xff yeah I have to be honest that I a bit disappointed there was no mention of graphs since they are arguably just as ubiquitous as trees are to CS.
@0xff well technically FP is still evaluated line by line. It's just one really long line ;p
yea the first point irked me a bit especially, because what he's describing is a binary search tree, not just a standard tree data structure
so many topic covered really succinctly and understandable. Nice work Jason!
Thanks Kevin 🙏
I used to be a Computer Science student here in Brazil, but had to pause my studies and start to focus on finding a job deal to the pandemic. I got lost in my studies and just couldn't find a way to go on with it. I felt really inspired by the content you presented in your video, and for that I'm really grateful!
Awesome video dude! I can see how much you enjoy doing what you're doing.
Where's the computer architecture? Formal Grammer/logic class? Runtime analysis? Advanced algebras and calculus? I know this isn't literally trying to summate a college education but wanted to ensure people don't get too whimsical about the seriousness and value of a collegiate education. I worry for future generations of coders there is still research to be done that has certain pre requisites. Computer programming is accessible and that's awesome but a college degree is more than that.
The more you know, the more you realize just how miniscule programming languages are in the grand scheme of things. I've been self teaching on and off since I was in middle school (now 21).
I plan to start a CS degree to break into the industry, but you do just encounter most of this stuff naturally (including the math) by being curious and writing/reading code and documentation.
For instance, to learn compiled languages, you should prob understand the compiler toolchain, to understand the compiler toolchain, you should probably understand the role of OS kernel & cpu architecture, etc..
Want to make a game engine? Now you will want to learn about the architecture of GPUs, linear algebra, and more specialized/complex data structures.
Then doing things over networks requires a whole bunch more of knowledge to understand what's going on. NIC, OSI, Sockets, Protocols, DNS Resolution.
I disagree with the idea that college is valuable for the education aspect. If you are disciplined you can get a comprehensive understanding of all of CS online for free. Problem is; you don't really know how much content CS actually covers until you start questioning how things work. If you're not someone who does that, then perhaps college would be beneficial to learn CS.
Great introduction into CS; just a few minor notes:
0:26 not necessarily; depends on the kind of tree
0:44 not "until" but rather "while" (as the name of the loop implies)
2:12 "malloc" is not a keyword in C but rather a function in the C standard library
2:27 you can use them interchangeably in C but technically they are different types
3:14 that's up to personal taste and not true in general
3:29 "bash" is just the shell (the tool reading your inputs and interpreting them); there are also many others (zsh or fish for example)
4:41 it's actually called the big O notation or the Landau notation; O(n) is just a variant of it, others are O(n!), O(log n) and O(1) for example
5:18 transistors are electrical components and use voltage. The presence or absence of this voltage can be interpreted as a zero or one
Absolutely!!!
He's actually using zsh in the example lol (though I guess it's an extension of bash).
Also neurons in neural networks don't output either 1 or 0. Nowerdays the neurons don't even output values between 0 and 1 because almost noone uses sigmoid activation anymore and with ReLU you get values in the range between 0 and infinity and with PReLU or LeakyReLU you get values in the range between minus and plus infinity...
🤓
5:18 there is no full circle, these are the layers from electronics through to high level languages.
Assembly is slightly above the machine code implicit in the Instruction Set Architecture.
While C sits above the others, it’s not even certain to be included, for example absent from high performance coding for most of the original 8 bit processors during that era. C and C++ are of course now quite common for 8 bit Arduino projects. And compiler advances now make the higher level languages a productive choice there.
This helped me feel more confident that I'm indeed learning stuff. Even though I still have a long road ahead, it was good to realize half of the concepts already feel familiar.
If I may suggest a video idea: you could do something similar to this but about frameworks, libs, deployers, package managers, compilers, git, docker and all that other tools and weirdly named-stuff that comes with learning a language, because as a beginner all those names are really overwhelming 😥
Thanks for another great content, you're really good explaining stuff!
Best way to fight the impostor's syndrome. ftw
Good ideas and glad this helped :)
I've been in computing for over 20 years now and I *still* learn new stuff. Even "oh dang that's stupidly obvious, how did I not know about this until just now?" things, on occasion.
I like to remind myself: The goal is not to learn everything, as that's impossible, but to learn how to learn and to keep my brain sharp so I can pick up new skills quickly when I need them.
Wishing you the best in your journey! I promise the road is not as long as it seems. And CS is a big field with lots of interrelated concepts, so if something is frustrating or just isn't clicking, go ahead and focus on something else for a while - eventually the same concept will come up again in a different way and you'll suddenly "get" it.
You aren't. Read books. 2,3 and red-black trees should've been on the 10th second
^ You can safely ignore this guy, and sadly will have to get pretty good at it. The tech field is full of people who are insecure in their own abilities and feel threatened by perspectives that differ from their own, often moreso they're the perspectives of women. It's one of the only things I don't like about the tech industry.
What a well laid out video! I'm starting a master's programme in CS at the end of the month after graduating as a BSc in physics, and this video really helped in assuring myself that I'm not in over my head and am actually surprisingly familiar with the topics to come. Of course, I don't mean to underestimate the amount of work to come, but at least I'm more confident now.
Really glad to hear that! Good luck with your masters. Keep us updated’
I have a bachelor in CS and yes these are the very basics. I can imagine this is really helpful for people that start their CS study.
What is your job?
@Nymph Yes I study cs, not all schools are very math intensive and a lot of math classes can be taken at community college. I had to take calc 2 and discrete 1 and 2. Do-able for sure!
I am actually really happy that I understood almost everything in this video, as a first-year major student I was stressing out on the work I would be blasted with and this helped me feel a little better, also that coroutine trick was pretty cool, I didn't know about it.
A huge thank you from Peru 😄 I am an aspiring software engineer and sometimes I feel lost because I haven´t taken Computer Science courses/undergrad. Thanks for explaining it with pens, in the editor, with examples. For me, those details help a lot. Many success in this channel and may it continue to grow.
Appreciate the support all the way from Peru! Wishing you all the luck in the world
Keep going! :D
0:24 That is a special kind of a tree -> Binary Search Tree, 1:29 Since the stack is a Last in First Out Data structure push/pop is (usually) shown the other way round,4:43 Just Big O Notation (one of the 3 asymptotic notations used in complexity analysis of algos ), 5:52 That's called sign-magnitude form, there's also 1's complement form and 2's complement form (mentioned in the video) -> watch Ben Eater's video for more clarity on this topic
I thought this was a joke at first because he made such an obvious mistake 20 seconds into the video...
It is definitely usually shown the other way around for learning and understanding (plus it makes more sense), but he's right to have the stack grow downwards because that's actually how stacks grow in memory. He's correct.
@@moonman8567 to be more precise, the stack growth direction depends on the architecture. Also, in his stack frame drawing he indicates that the stack grows upward based on the 0x8 and 0x84 addresses.
@@stewartzayat7526 Definitely and good catch. Most common I've seen is growing down though, at least historically. Didn't notice the addresses
@@moonman8567 yeah, most do grow downwards
I thought maybe I dont know much about my very own field, but now after watching how you have presented everything in a a nice order am more confident that I have good knowledge of things, i just need to practice more.
I have a bachelors in Computer Science, and I still learned things from this video
What did you learn from this video as a bachelors in CS?
@@kaluk1321 would interrest me too :D
Bullshit!
Your description on transistors -> 1's and 0's -> instructions -> machine code -> assembly -> C langauge is amazing!
Some (slight) corrections in the machine learning part: 1) A neuron doesn't have to produce a 1 or a 0. It can, theoretically, produce any real number, but it does depend on what kind of a (non-linear) function it's using (like ReLU, Sigmoid etc.). 2) The output of a neural network also depends on the kind of output layer. What you said is true for Softmax (that all categories sum up to one, indicating a real probability for each of them) , but not necessarily for, for example, a one-hot layer using sigmoid. Otherwise a really good video, besides what others pointed out, but of course it's really hard to sum up such a large topic in so little time that some mistakes are inevitable :) .
there is a little more to Computer science than programming.
Sick video. Small correction. Nodes in a nerual network do not return either 0 or 1. Like you said they return the sum of the nodes multiplied by their respective weights. This sum could be -5, 100, 3.552323, or any number. Then the sum is ran through what is called an activation function. It is possible that for some obscure application the function squashes the sum to be 0 or 1 (like a step function), but realistically actual neural networks these days use a variety of activation functions, even different functions in different layers. A step function is seldom used, if ever.
A Relu function squishes values to fit between [ 0 , infinity)
A Sigmoid function squishes values fit anywhere between [0, 1] (for example .95 could mean the model is 95% confident the picture is a dog)
A Tanh function squishes values to fit between [-1,1]
For anyone interested in neural networks, you can imagine that the data flow from layer to layer through the weights (with raw data is the first layer). After the data flows through the weights, it arrives in the nodes. Each node sums up the data that landed in it, then it squishes the data so that it doesn't go to infinity(explanation below). Then it becomes the data for the next layer and then flows through those weights.
You can imagine if we had a table of data and then we multiplied all of it and then added it together, then multiplied and added, then multiplied and added, eventually the number would get too huge to even calculate. This is why each node squashes the data. However, the squishing is rarely to force the number to be either 1 or 0, rather we just squish it to fit in some range while still somewhat preserving the ratios. We still want the stronger weights to have a strong influence, and the weak ones to remain weak, they just get scaled into our range.
The big idea is that if we had millions, billions of weights, we could theoretically tune them to model any pattern or any set of data. Lucky for us calculus allows us to tune all the weights at the same time and in the right direction.
Yeah, I was going to comment exactly that. I don't know where this 0/1 output came from and I never used this kind of activation in any neural network I ever worked with or developed.
I use the terminal a bit as a new Cs Student and at first I was like meh, then I installed a C++ compiler and the flutter SDK, and man I felt like a demigod
Your every video is amazing and I’m learning and I doing my best faster in computer science. Thank you sir!
Glad to hear that!
I new the stuff till around the 5 min mark and im not even in uni yet. Pretty cool didnt expect it tbh
Haven't watched this yet, but I love the entire idea of teaching an entire degree in a short video - gives you a quick taste of what's most relevant, and with that, you can choose where to dig deeper
Excellent video! Happy to say I did understand every concept after self studying various computer science/engineering bits over the last 5 years. Still nice to hear it all run through so concisely though, and gives people a good idea of what a CS degree fundamentally covers. Thanks!
3:55 - Not really, C++ is much more complex than C, you have the standard template library(STL), templates (check std::enable_if for example), different methods of casting (C-style cast, static_cast, dynamic_cast, reinterpret_cast), RTTI (run time type information), concepts and constraints (some kind of traits) (concept and require keywords), range-based for loops, rvalues and lvalues, lambda expressions, std::launder (I don't know what "memory laundering" is), and more.
Using C++ with standard C functions is a anti-pattern. Same for using C++ as "C with classes" as it was initially created.
The "C++ is C with classes" hasn't been a thing for a long time. Bjarne envisioned it like that but it's evolved from that conception.
some asterisks
0:18 tree is an umbrella term for linked data structure that can look like branching trees, and they don't have to contain numbers.
8:21 neurons in neural networks can output range of values, not just ones and zeros. In fact ones that output ones and zeros are special cases.
asterisks for my asterisks
* some trees are not necessarily linked, and they are stored on an array like binary heap.
* neurons that output range of values does so with floating point numbers, which are represented by ones and zeroes.
This is amazing, thank you so much!! I'm in my first year of CS and I'm writing all of this down for me to look it all up later in more detail, whether I'm gonna see it in future classes or not. Thanks a lot!!
I have seen other videos like this, but this is my favorite. I am trying to learn a lot of topics that are taught in computer science degree programs but it is good to have a general overview like this before you start learning more in-depth.
I just started learning python recently and this video was incredibly helpful. It actually blew my mind how expertly you described these concepts
You are the best fucking teacher ever. Honestly, I can tell you struggled at first with coding because you can explain everything so easily. It's like you found the right words to explain complex concepst.
This is not how I learned computer science. I learned back in the 70s, so the method then - and I still believe the best method - was to learn machine code/assembly language first. This taught you how the CPU executes code. It is THE most basics of computers. You don't need to know about the heap at this stage because you're not in the world of high-level languages yet. Once you have a good grasp of assembler, you quickly learn that it's a difficult way to write any meaningful application but it teaches you the lowest level including the program counter (PC) and the Stack Pointer and you should see how much is going on just to do the simplest of tasks like calling a subroutine and returning. You learn how a linker produces your executable code (statically linked) from all the individual sections of object code and you can see how you can build on just about everything you produce. You can then move on to C and learn how C compiles to assembly language - or Pascal etc - and then how the object code is produced from the C source. You can also look at which parts of your code are running slow and you can work to speed them up and even produce assembly routes to speed up the parts that the compiler can't make any more efficient i.e. the C version can't be made more efficient. You can then appreciate how much easier it is to use C than assembly and you appreciate how much the compiler does for you. Then, you learn how libraries work. You learn how you don't need the source code of a library to make use of it - you just need to understand how the library code gets called from your code at runtime i.e. you learn about dynamic linking as opposed to static linking. Using C, you learn how the compiler maintains the heap for you and you learn how this is mapped onto a computer i.e. it's just a big chunk of contiguous memory that the malloc library looks after for you and you can just grab and release chunks as needed. You learn how memory leaks can occur. You then start to understand how all of the C/C++ code operates on a CPU directly without a supporting environment like an interpreter or a VM. You can trace the direct relationship from C/C++ code to a piece of hardware as it operates and you can debug it in-situ using specialised software and hardware like in-circuit emulators. Once you move into the world of Java - which uses a VM - and interpreted languages like Perl or Python, you move further away from the hardware of the machine that runs it and you lose the ability to make use of traditional debugging on the hardware. This is how I would teach programming. You don't have to spend a lot of time on assembler - just enough for people to understand the very basic operation of a computer program - and then quickly move 'up the stack'
Each node in a neural network doesn't output a binary 0 or 1 but rather a float; they take a sum of the previous nodes' outputs times the corresponding weights and pass this through an activation function (reLU, sigmoid, etc).
My man making the same comment 8 minutes earlier than me. Was also nagging me that he put such an emphasis on them being exactly 1 or 0.
One more thing I just watched this complete video, and I'm getting into computer science stream in college,( completed 12th grade this year only) thanks for guiding.
Your subscriber
Thank you for subscribing!
its rare that someone earns my sub in 11 minutes, well done. not a single wasted moment or second of over explanation.
Jason I have been searching for your videos this morning it's been a month since your last video.
As a CS major, this was a nice refresher. Obviously there were a lot of humorous things missing, like. "Well X is just Y but with classes" (without explaining classes). Or explaining stack frames without what returning means. Not adressing dereferencing and passing by reference with pointers and the list goes on. BUT the bit at the end, where you say its the first percent, wrapped it all up neatly for me.
Very nice video, well done.
I am a senior in software engineering and I am amazed at how I could remember learning everything he said in college. Low key kind of proud. Cool video!
Thanks for putting this video together. I'm working on a computer science AS. Last semester I learned Python in Programming 1 and now I'm learning C++ in Programming 2 and it's definitely much more challenging.
I'm learning Web Development self-taught, having a background in Psychology and I have to say this is an awesome video. Now I just gotta watch it 10 more times 😂
At university we learned that web development is the most insecure field of them all, as there are a lot of ways to build a poor overall system, with it being the most obvious and accessible form. In general, the theory at uni is also taken from books. Many professors work with one or two books in particular which they go through, so if you get a good and recommended book, you won't miss out on anything. But I recommend checking them out, as it can avoid serious problems in the future.
That was fantastic, I’m self learning how to code at 40 and I’m encouraged that I was able to keep up with this video.
This was an awesome vid!! Really well made 😀
Thank you!
Really Interesting video.
Thank you!!
C++ was first named D, they went to C++ cause D wasn't grabbing enough attention. Which means C++ is not directly referring to C += 1 but instead refers to D and C# to E (if you'd follow the naming conventions of programming languages up to that point)
This video made me subscribe. I've seen a few of your videos, as a sophomore cs student, you made it click and come full circle for me.
I don't have a CS degree, but have worked in IT for ~10 years. This was a fun video to see what I've been missing from a formal CS education. Thank you!
Do you wish you had a CS degree? It feels like programming from courses where you do real-life projects are much more beneficial to me.
@@gamespecies yes I do, only because I'd love to have a bullet point on the "Education" section of my resume that shows I earned a degree. I don't have that, so I'm always going to be self conscious about my lack of formal education. But as you say, you gain a practical education by doing real-life projects and that has been enough for me to be fully employed, earning a solid income in a low cost of living state. I hope my reply helps you!
@@davidcondit388 How many years have you been programming? I'm doing my degree and paid courses from Udemy to help get a high paying job as soon as I'm out
This is one of the best or the best video i have seen... I was expecting to hear about your journey but hearing about different concepts in software engineering is just awesome...thanks
This video is incredibly informative. I love how you explained neural networks. Amazing!
Thanks! Glad you liked it :)
Really awesome video. The clarity and preciseness of your explanations show that you are an excellent developer and can put a complex subjects into few and simple words. I'm a Junior Developer and really enjoyed learning about these topics. Hoping for more videos like this!
Going into my 3rd year of Computer Science @ University and this was a nice refresher since you covered all the topics I have learnt! Cheers 😂
same!!😂😂
And the ones you don't
There is a mistake in this video at 1:34. Stack grows down. When you call a function, next frame address decreases.
this rapid fire style is fantastic, thank you! take the same style and apply it to one focused subject in computer science, i.e. one of the ones you mentioned in this video
Thank you’! And thanks for the suggestion! 😀
With 2 years in AP classes in high school and currently in College, this video is excellent and does a fantastic job at laying down the basics to the more in depth and maybe complicated subjects. Thank you!
Really interesting video. I think I learned a few new concepts that I wanna delve deeper into later. Cheers.
Great 😊
I did both my Computer Science degrees in Germany and I really think 90% of it was absolute useless and only to pass the tests. For example it is less than 10% actual projects, let alone coding. I think this is one of the few points were the US really do better and I really regret not going to an US college.
no words to describe how big of an overstatement your title is, not sure if you covered 1% of what my degree has covered so far and I haven't even finished it yet!
Also "you're going to run most of your code from bash" so this hypothetical CS degree at no point mentions IDEs... Or any data structures beyond arrays... Or any algorithms... Or object oriented programming
no shit Sherlock
Just re-enrolled to go back and get my Computer Programming degree. Even though I love computers, it can be quite overwhelming at first glance. I AM SO GRATEFUL that you put out this video in a bid to help anyone getting into the field. Thank you very much you sir have got a new sub!
I'm really happy because as a self taught programmer I knew all of these topics pretty in depth. I never went to college and it looks like I don't need it. Thanks for the morale boost!
Alright I've got a carton of smashed eggs, whats next?
You deserve more attention
Thank you!!
Usually these “Entire thing in 10 min!” Videos are dumb but this one was relieving to watch
I understood prob. about half of it after being almost done with my first python programming class (summer) in community college.
That’s great to hear! Keep it up and come back after you learn more to see how you compare!
This was amazing. Great job and thank you!
Hey Jason, I'm a Beginner and I would like to start learning to code, firstly I would like to learn coding websites and was wondering what are some languages I must learn and will be helpful to me and what programs should I use for coding
Check out my last video! I go into detail on that
With web development I would start off with either HTML & CSS or java script as these are used on almost any website. Java script would probably be better for learning how to code as you can do alot more with it and has more uses outside of web development.
@@ryomoseley5869 he didnt ask fr your opinion mate.
@@madhatter2744 yes he did...?
@@dgzzz999 he asked Jason for his opinion, not the other guy.
Feels good to realize I am familiar with 90% of the topic mentioned in the video. A lot to learn but feels like I am on the right path.
Tons of errors. Starts with claiming all trees are Binary search trees. They are not. Tree a defined more general. And the list goes on
This is absolutely brilliant. 100% accurate representation and not clickbait.
I'm going to start AI & CS very soon and I am actually pretty fimiliar with half the topics you covered here :)
I didn't even finished off primary school and yet I'm familiar with all the topics. Guess im gonna obtain a Master's degree then
I used to think computer's are extremely complex and that I would never know how they work. I'm 14 now, and I'm tryna design an 8 bit cpu because yes
For the "simplifying logic part" you can say the mathematical law behind it : De Morgan's Law ! Very nice video though !
oh statistics...
I completely forgot the name! Thank you for reminding me!
you really explained neural networks well i have seen other longer videos but by far this was most understandable
Every cs kid needs to watch this 😄 Super well made video, and thoughtful explanations
Thanks Linda!
Your tutorial videos are amazing. I decided to go back to creating soft after 16 years. soft soft is so easy to get into, but also offers
This guy is legit so underrated, I dropped out of CS but after watching his videos I just started coding at my own pace and hoping to get good good pretty soon, keep up the good work.You’re my favorite coding channel ❤️❤️
This is pretty much 4/5 out of the 20+ classes, and most of this stuff even though you learn during classes, a lot and by a lot I do mean it, you have to learn by yourself. Truth is, the exercises you do in classes to set you up for projects are pretty much a tiny bit of the whole thing and 90% of your time is actually spent doing research stuck with problems.
For example, I had to do a project that ended up being roughly 2000-3000 lines of assembly (a sizable fraction of it were for the displays so, lets say over 1000 lines of code), but during the 4+ months of classes prior to this project, only about a month of it was about assembly with ~4 classes of coding itself that turned out to be probably 150-250 lines of code total.
So it's one thing to do a small coding exercise about adding and subtracting (which is what the classes teach you), but then a completely different thing when a teacher tells you "Make me an assembly weight scale that calculates kcals of 30 different ingredients that could be selected together into a meal", (with 10+ other functionalities that I am not even gonna list because they still bring me nightmares to this day), my brain at the time said to itself, I've been learning for a month or so, I don't think I am capable of doing any of that, and then followed up by a couple of hours a day for the next few weeks to get it done on time, most of them not even coding but trying to spot where I was making critical mistakes that would warrant all that progress of work to be evaluated as a '0' if the whole thing doesn't boot up and work as intended.
I'm getting my bachelor's degree in 2 weeks and I think that the collection of all the topics you brought doesn't cover even only measly 10% of the whole set of topics I learned, my degree took 4 years and a half and I feel that all the topics you brought I learned through my first year only, second tops for some specific ones like ANN. Even though, great video 👍, my only criticism is that you should put a disclaimer about what I said.
I think it's a joke bud
Dude, you are literally god-level. I subscribed to you from all of my accounts. Thank you for the great help!
Nice video! To hear the differences between C languages explained in a simple, direct way by Jason, not only demystifies them, but proves the point that HOW you communicate MATTERS no matter the industry or setting. Jason will surpass more capable programmers because he doesn't scream and yell like a nerd with a chemical imbalance, triggering the worst in others, making everything fall to shit.
I remember myself and my whole class freaking out in our OS class when the professor said, "All of you have had a course in C already," but we didn't. We had a course in C++ which for all we knew was completely different. On the second class meeting, after you could drop a course with a refund, the professor said, "If you're not comfortable with C, drop the course." Well that comment basically reduced 16 weeks of potential growth to just going through the motions.
Which tone would be more conducive to a productive semester? The free one on TH-cam. A professor has finite upside especially since most of them are adjuncts just trying to get the mortgage paid and most really perform like it. A TH-camr can get virtually unlimited subscriptions and ad revenue and more importantly, recognition and increased opportunities instead of being siloed off from the world in a college.
Can relate. So many shitty CS professors who just made everything much harder than it should!
@@3333218 It's a shame, because people quit when they think, "Am I really going to have to work in this kind of environment?" Maybe it's better once you're hired, but my degree from an accredited college certainly didn't make me prepared for a technical interview. It was a learning experience of what career not to pursue, at least not without seeking a do over somewhere else. CS can't be learned in a classroom any more than soccer can. You need to be in the field learning with others day in day out until you're ready for the stadium.
@@austinmillbarge8731 Very well said!
But C and C++ are actually completely different. They share a lot of syntax, but the semantics are treacherously different. It is a common misconception that C++ is just C with added things.
@@jbird4478 not really man. C++ was made to be compatible with C, but honestly, it makes no sense, and with the way it's going, one day C++ won't even be anything like C.
Some of the topics I've been studied and now I'm trying to learn data structures and algorithms. The video given an insight on these topics.
Thank you
#shavejasonshead
👩🦲
Thank you for this video. Stuff like this more than anything else helped me decide if doing computer science at university was really for me. No vague generalisations, just straight up diving into concepts and what computer science is really all about.
Most of this is not really focused on by a CS degree. Maybe in one or two classes.
Good stuff! Was happy you included assembly
please make more of these this was fantastic my dude
Years ago, when dealing with programmers at work who screw up a lot, we would say "their stack ran into their heap." We meant imply they weren't very smart overall, and trying to BS their way through the project. It didn't refer to a specific bug. Separately, the stuff at 6:29 is what I do for a living, process optimization in jagged cost domains.
I'm not sure I would call that an "entire" computer science degree. In fact, much of the "science" wasn't really discussed. That's more of a software engineering overview. A pretty good sampling though. I give it an A for effort, and a C- for delivering on the stated objective ("An Entire Computer Science Degree in 12 Minutes").
Extremely underrated channel!!! Thanks!
this is the best methode i have ever encounted yet (knowing what you will learn before diving into a new toppic)
i am currently in my 3rd semester of computer science and it made me really happy that i understood almost everything here xD
5:17 worth noting that ones and zeroes are electric high current (1) and low (0) which is why we use binary.
I'm in a fullstack bootcamp right now and this video really helped to illuminate the bigger picture of compsci, which I find interesting. Good stuff!
Well done for fitting all of the content in that video in 12 minutes!
I love the efforts you put in all your videos! Very informative and well thought video Jason.
Im currently at third year of Software engineering and you just resumed everything i studied till now!
Amazingly done! Love the memes too!
Very rarely do I see TH-cam videos where concepts are described so clearly. I have a bachelor of computer science but I need to revisit some of these topics and this is a great place to start.
Just subscribed.