Transcript for:
Journey Through CS50: A Coding Adventure

Psst! Hey! Hey you! Do you want to learn how to code? Are you having trouble finding where to start? Well, you're just like me. For real. Coding is a great skill to have and coming into university, I did not know a single thing about it. So, like everyone else, I searched up how to code and I kept on stumbling upon this free course Harvard offers online called CS50. Alright! This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the arts of programming. My name is David Malan and I... So I decided, why not do it? And I'm here to tell you that it's a great course. But there's just one little caveat which I'll get into later. Right now I'm gonna break down each week of this course for you guys, so if you're planning on trying it out, this will give you a good idea on what to expect. This course starts at week zero where we learn about the basics of computer science and programming in this language called Scratch. We learned about stuff like functions, loops, conditionals, variables. So let me hit the green flag. Alright, so nice! Each week we also get a lab and problem set that we have to do and this week we had to make a game on Scratch. It was pretty fun and it got me used to all the new concepts taught in this lecture. This was my game by the way, basically you had to dodge all the space debris for a certain amount of time. The coin gives you a short speed boost. This lesson was mostly about getting used to the syntax and learning about the VS Code IDE. The problem set this week wasn't too bad. Sometimes you had the option to do an easier or a harder version, depending on how comfortable you are. I personally always did. the easier version. But if you want to go into a software related career, then I recommend doing the harder ones just so you have a solid grasp on all the content, you know? Week two was the introduction to arrays. We also learned some debugging techniques and a bunch of other smaller stuff. The lab and problem set was a little challenging, but it was doable. After this week though, everything gets so hard. So... So hard. This week dove more deeply into algorithms, more specifically sorting algorithms. Oh my god. Weeks three, four, and five were so difficult and I suffered through them so, so much. The problems that Tiedemann, or Tiedemann, however you say it, is notorious for being difficult. There's even a shirt for it. So suppose that you really, really Didn't like, let's say, Tiedemann was a little challenging if you adopt, if you tackle that more comfortable problem. Of course I didn't do it, I did the easier runoff, but I'm telling you runoff was still so hard. But once you get over this hurdle, fear not, there's only a couple more. Week four was about memory and oh my gosh, this lesson. So painful. In C, you have to manage your own memory, but in higher-level programming languages like Python, you don't have to. So it always felt like we were learning something we didn't need to know. Which is not true. This topic is important. But still, it sucked. And for some reason, I always had memory issues with my code. I just, for the life of me, couldn't figure out the memory issues I had. Even Stack Overflow and Reddit didn't help me. This was the last week in C, thank god, and we dove deeper into data structures. Queues, stacks, linked lists, trees, binary search trees, hash tables, tries. I'm just reading off my notes, I didn't memorize all that. This lesson was easier than algorithms and memory. The problem set was to implement and optimize a program that spellchecks a file using a hash table. You were able to mess around and try and get the fastest time. I was able to get a- Pretty fast time just by messing around with the numbers. I'm not sure why it works, but oh well. This week, we learned a new language. Finally, all the annoying quirks in C were gone. Memory allocation, pointers, curly brackets, all gone. All gone. A lot of the lecture was just redoing previous problems, and the problem set was also like that as well. We had to do a bunch of previous problem sets we already done, this time in Python. The good thing is we got to reference our previous code, so we didn't have to figure out how to implement the functions. We just had to apply the new syntax. This week focuses on SQL and databases. This week was probably my favorite week. Just because all the content felt very intuitive and the problem set was really fun. We basically had to solve a mystery using a SQL database given to us and it felt like a game, you know? It didn't feel like homework I had to do. The focus this week was on HTML, CSS, and JavaScript. Sorry, I need water. As I was saying, we started learning the basics on how to make a website. It was enjoyable because just like SQL, everything felt pretty intuitive. I gotta say though, this lecture was very HTML and CSS heavy. They flew by JavaScript so fast, they spent like a minute on the syntax, which makes sense because it's very similar to C. But after that, I felt like I was thrown into the deep end with JavaScript. Here is the corresponding JavaScript code as of today. It's pretty much identical to C with the syntax here. And it was really nice making something that wasn't just a program in our terminal. It's something we can actually, you know, see. You know, there's color. Does that make sense? This week's lab and problem set was pretty fun. We basically had to make a homepage about ourselves, and we could get really creative with it. Flask is a third-party library that lets you host web applications using the Flask framework within Python. We learned how to make pages more dynamic instead of static like we did last week. Basically, new HTML files are created on the fly based on things like user input. It was cool because we also got to use some SQL again. The problem set was pretty annoying to be honest. I, for some reason, couldn't get one thing to work, which messed up a bunch of other things. So I got a couple marks off, but what can you do? The actual lecture this week isn't that important. It was mostly just a recap and talking about emojis. It's fun, but not necessary. What is necessary though, is the final project. You had a lot of freedom on what you could do as long as you applied the knowledge you learned from this course. I had a lot of inspiration from the web development weeks, so I decided to make a portfolio website showcasing the projects I've worked on. So yeah, that's the entire course. There's a lot of content, and that's the one caveat I had with this. It takes a long time to do. Two hour lectures, labs, problem sets, understanding the material, and doing that 11 times is a lot of work. If you have the patience and determination to do all of this, it will all be worth it in the end. Trust me. The lectures are packed with material, and although the problem sets are difficult, you'll come out of this enlightened and enriched in knowledge. Just like me. I think. But in all seriousness, I'm glad I took this course. I went from knowing nothing about coding, to having a solid foundation on a variety of topics. So if you're on the fence about doing this course, just do it! Do this course! Do it! Alright, that's all I have to say. See you guys later.