My Entire Computer Science Degree in 14 Minutes

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] i went to rice university and spent six figures in tuition studying computer science i made this video so you won't have to today i'm going to go through every single computer science course i took at rice and share the main learnings and i'm not going to go through the syllabus and tell you everything i was taught rather i'm going to tell you what i remember which in many ways is the most important part because if i learned something but don't use it and don't remember it then is it even worth sharing thanks to scaler for sponsoring this video let's get right to it in the first semester of my freshman year i took comp 140 computational thinking the introductory freshman class that all computer science majors had to take even if you came in with ap credit or had previous coding knowledge and as much as i hate to admit it i didn't know everything so in comp 140 i learned a thing or two maybe even more than a thing or two the idea of the course was not to learn how to code but rather how to problem solve how to think it was drilled into us from day one that computer science is not about coding rather it's about solving these problems at scale problems that are so complex that without the help of computers it would take you years if not lifetimes to get to those solutions so code is simply a tool to solve problems it's one of many potential tools and that has stuck with me ever since but even though the class was about general problem-solving fundamentals and frameworks we applied that knowledge in python so in many ways this class was an introductory to python course the first thing we learned actually had nothing to do with coding or python at all it was the idea of recipes which is just another way to say pseudo code or writing down the steps to your algorithm much like baking a cake first you do this then you do that and so on the idea here is that if you spend time to investigate to fully flesh out your thoughts understand the steps it will take to solve the problem when you actually touch the keyboard and start writing code you're less likely to make a mistake and this is the second lesson that i still think of every day write down the steps to your solution before you code as for python we started off with the absolute basics you know variables and then slowly making your way to functions and loops foreign while loops if else statements so basic control flow logic boolean logic and or not kind of all that fun stuff but then also data structures like arrays maps sets tuples graphs trees you know all of that shabang and the entire class was taught through this virtual ide called codesculptor which our professor actually built himself which is kind of cool and if anything i just talked about in this course was interesting to you i'd highly encourage you to go check out harvard cs50 which is their version of our comp 140 an introductory computer science course that is great super structured great curriculum and online so 100 free in the second semester of my freshman year i took comp 182 algorithmic thinking and this was the infamous weed out class to get through the projects was already difficult to pass the exams was insanely difficult and to end up with an a was i don't want to say impossible but close to impossible very very difficult each project took 15 to 20 hours of work and i had to go through multiple ta sessions it was the first time in my life that i performed consistently below average on every exam i took but i was able to finish every single project i never turned in unfinished work and that's something i'm really proud of it's the first time in my life i realized that i could compensate for my lack of intelligence with pure hard work if i was willing to do just a little bit more work than everyone else i could get to the same place it might be harder for me but that's okay comp 182 was a combination of data structures algorithms and discrete math i know it's a lot in fact if you were trying to transfer to rice from somewhere else like university of texas at austin you would need three separate classes to get credit for this one class because at other universities data structures algorithms and discrete maths are separate classes we learned all the data structures from comp 140 so arrays graphs trees you know all that but in the context of famous algorithms like breadth first search depth first search merge sort binary search and dynamic programming just to name a few i learned a lot of the core theory required to pass technical coding interviews but i can't say i use that knowledge in my day-to-day so it really only helps to get the job not really at the job which kind of sucks the only thing i do use at the job are some data structures but even then only really maps and arrays if you want to learn all this stuff you can pick up a textbook obviously but online i'd recommend google's dev guide it's super comprehensive 100 free and covers a lot of the curriculum we discussed in comp 182 and then of course there's other online courses in youtube so plenty of resources if you want to get started in comp 182 we also learned how to write proofs and think about runtime so big o notation for proofs we use mathematical induction and contradiction and a variety of other methods but there's actually one thing i still think about today and it's kind of the opposite it's the idea that to disprove something all you need is one counter example maybe i should rename this video how to win arguments all in all i made it through this class sometimes barely and it broke my spirit more times than one but it's also where i found some of my closest friends and i recommitted to computer science understanding that not every day would be easy but if i stuck with it if i just worked hard enough i could get there at the end and that idea was very satisfying to me it's what keeps me going every day even now bottom line surround yourself with smart people and it'll make you smarter too all right now we're at sophomore year and this was the year when i started taking only computer science classes along with whatever else i needed to graduate but i no longer had to take those pesky engineering requirements like intro physics and differential equations i could finally just focus on my passion during the fall i took comp 215 introduction to program design and comp 330 tools and models for data science introduction to program design was a course on functional programming taught in java and don't ask me why we had to use java rather than an actual functional programming language like scala or o camel or haskell but java it was and that to only the professor's written library so it was like an entirely closed ecosystem anyways the tl dr on functional programming is it's when you code without modifying stuff so coding without mutation and what i mean by that is let's say for example you have a list of things right and you want to change the third thing to something else well in imperative programming in like you know java or traditional java or python you would just write a for loop kind of go through change the third element and your list is modified you've mutated that original list while in functional programming what you would do is you would return an entirely new list with the third element changed so you don't modify that original list does that make sense in this class i learned about functional concepts like maps and filters and thinking about problems recursively that actually leads to a lesson that i learned that i think about fairly often now and that's that if there's a problem that can be solved recursively it can also be solved imperatively because recursion under the hood uses a stack so if you just use a stack data structure imperatively with four or while loops you can usually get to the same solution nowadays i don't ever really write functional code unless you consider the front end with javascript callbacks and promises as functional programming i don't use recursion i rarely use maps and filters but i will say that there are companies out there that code functionally coursera for example uses scala jane street uses ocaml i think brex uses erlang which i think is functional a bunch of different languages that are functional and functional programming has a lot of benefits it's just hard sometimes to wrap your head around concurrently with comp 215 i took comp 330 tools and models of data science and this was everything sql both declarative and imperative but also all the other data science tools like hadoop and spark and tensorflow the class was a great overview into modern data science stacks and it's when i realized that data science is way more complicated than just databases and sql there's a lot of other stuff too in this class i learned very quickly sql can get really complicated really fast so it's very hard to get good at but it's also a very valuable skill and it's when i finally understood why we have an entire world called data analysts who interface with the databases and provide these insights in this class i wrote a lot of sql and various degrees of difficulty in fact for one project i implemented pagerank which is the algorithm that google search uses entirely in sql it's also when i realized debugging sql is so difficult because the interpreter will just give you vague error messages like error near from clause and you have no idea why you just have to go and figure it out of everything i learned in this class including some basic natural language processing and machine learning the only thing i still use today is that sql knowledge to interface with the database write some queries or some database migrations but even then the sql i write is pretty basic if it's ever getting complicated like a bunch of joins and nested sub queries that's when i start asking for help because i'm way in over my head for this class i'll leave you with one lesson 99 of data science work is extracting and cleaning data not really analyzing it so that was the first year and a half of my computer science bachelor's degree in college at least everything i can remember and i'll never say i regret going to college i'm here today because of college and i learned a lot but the amazing thing today is that you have so many other resources at your disposal one great option is scalar an online platform that's kind of like this video a viable alternative to college an education system that is just as comprehensive but way more practical rather than sitting through linear algebra or introductory physics just because your college major requires it you can dive right into programming constructs data structures and algorithms and work on real-world projects and then of course you learn the ins and outs of how to design systems that scale so you're getting a great theoretical foundation a lot of practice and getting ready for technical interviews the instructors are industry veterans and it's just like college there are teaching assistants you can ask questions and there are problem sets and a great accountability system but more than accountability there's an amazing support system for you and a real sense of community who wants you to succeed and they've built their entire platform in-house which is a really impressive engineering feed so you can be sure the entire experience is geared towards seeing you succeed sign up for the next cohort at scalar.com now let's finish up the last semester of my bachelor's during my spring semester i took the most computer science classes at this point three i think which in other words just means i had no life i took comp 310 advanced object oriented programming comp 321 introduction to computer systems and comp 322 introduction to parallel programming advanced object oriented programming was what you think of as core java so oop in its truest form you know inheritance abstraction polymorphism all that good stuff it was also the class about balls yes balls literally project one to seven i think was about balls you started with one ball you know a shape of which a ball was an instance then you had multiple balls then you could paint balls on a canvas then balls were colliding and you had like physics introduced it was a whole thing but it was essentially ball world from project one to seven we also learned about design patterns like host visitor model view controller a bunch of stuff i don't really use anymore but this idea stayed with me this idea of design patterns in general that people have come across similar problems have figured out efficient ways to solve them to structure their stuff to design these systems so we can learn from them if i ever have a problem i need to solve i should go out there and research before i try to reinvent the wheel and more likely than not fail at this reinvention the one design pattern i do use relatively often is the singleton design pattern so check that out if you're interested for whatever reason the class felt really old school like we were back in the 2000s we had to use eclipse we made uml diagrams just a bunch of stuff i've never seen in industry since also for what it's worth the class went from zero to a hundred so quickly like we were just playing with some nice little shapes making balls collide and suddenly project eight was a chat server like how it was like exponential growth super wild at the same time as comp 310 i took introduction to computer systems which was an introduction to low-level programming and all things c it's also where i started learning how to do the other practical stuff like navigating on my terminal sshing into remote machines coding in virtual environments a bunch of stuff i should have known by this point but didn't and actually a lot of stuff i still use at my day job so really thankful for this class i'm not gonna lie i got carried through this class so i probably didn't learn as much as i should have somehow even though i was carried i got really tight with the professor though so i kind of miss him i learned and take that word lightly about pointers memory allocations everything that happens when memory is leaked a bunch of stuff that i just took for granted with higher level languages like python and java c is hard and honestly more power to all the c developers out there is just not for me i do not like low-level programming i will say though the projects we implemented in that class were really cool and project one was actually done solo so i got carried but hey your boy knows some stuff we implemented a word counter from scratch and the rest of the projects that we did do in partners were still really cool we built a shell we built a proxy we wrote our own memory allocation system just like some very insanely cool stuff i got carried so hard that not that i have to prove it to you when i took the final exam which was five hours continuous but open book i got exactly 50 because for the theoretical part which was half the exam i could just look up stuff in the textbook and i'm pretty good at that but then for the other half which was practical my c code didn't even compile i turned in non-compiling c code just think about that for a second the last class i took in the spring of my sophomore year was introduction to parallel programming and this was all things about parallel programming about efficiency really because if you're trying to parallelize things then you're trying to be as efficient as possible there's a lot of stuff i apparently learned that i don't remember and i have to read them out to you futures task parallelism undirected and directed synchronization data parallelism divide and conquer parallelism and mapreduce honestly i don't remember most of this but if it says i learned it i must have learned it of all this again the closest thing i still use is promises and async awaits in the front end so if you consider that parallel programming then that but now i try to parallelize my life i try to have stuff running in the background schedule my day in a way that i'm being most efficient i'm using my time wisely and there you have it all the knowledge that i remember from my bachelor's degree in computer science from rice and if you've made it this far then you're an unofficial college graduate so congrats believe it or not i finished my bachelor's and master's in four years so two years bachelor's two years masters so this video covered the first two years i'll be making another video that covers all my graduate level coursework that's all i have till next time cheers
Info
Channel: Namanh Kapur
Views: 36,560
Rating: undefined out of 5
Keywords: computer science, computer science degree, computer science major, computer science student, Devon Crawford, How to learn programming, University, Computer Science, tech with Tim, nick white, joma tech, Java programming, 10 years of coding, C Programming, assembly, stack, program counter, programming, Coding interviews, my computer science degree, how to learn programming, cs degree, computer science degree in 8 minutes, computer science for beginners, namanh kapur, jason, pooja
Id: GMLpGT0ddTU
Channel Id: undefined
Length: 14min 12sec (852 seconds)
Published: Thu Aug 25 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.