Diary Entry — July 31st, 2024
Today, I started CS50x, one of the world’s most popular introductory courses to computer science.
Disclaimer: The layout of this article does not represent the actual order in which any content made by others was presented.
Today, I started Lecture 0 of the CS50 program’s introductory course, often called CS50x on edX. I quite liked the content of the lecture itself (or at least the part I saw today), but the introduction was certainly a surprise element that I, quite frankly, didn’t enjoy.
Enter: Week 0
The AI Instructor (not really)
At the beginning of Lecture 0, screenshots are shown of news stories about the course teachers experimenting with an AI instructor. After that, a robotic dog comes in and gives an introduction that’s apparently a landmark of the course:
This is CS50, Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming.
Then, he walks a bit towards a desk. For a second, I thought this course was now officially being taught by an AI-powered instructor, which made me feel like quitting right away. However, he does not actually arrive at the desk. He takes a few steps in that direction and then says, “I’m sorry, Dave”. Next, consecutive pictures are shown of the staff and once-students, now-alumni of the course, with the song “What About Us” playing in the background. It looked like a tribute to the faculty, which made me feel even worse. Right after that, one of the faculty in the preceding slideshow shows up on stage, which leaves me speechless. Just how far can someone go in one direction before they can no longer change to another? I thought the answer was “not much”, but maybe I should think again. These guys are shameless. In fact, it turns out professor David Malan was standing at that desk the whole time, but the light was too dim for me to see what was going on.
The Human Instructor (seriously)
Professor David J. Malan, the instructor of the course who appears in the picture above, gives the same introduction as the robot but goes much further and says more interesting things. It’s been a while since I have seen an introduction as interesting as this one, even when presented by humans. He talked about how he was going to major in government because he was familiar with that and gravitated to it as a freshman, but in sophomore year, he decided to check out CS50, which was a computer science course and therefore was something to beware at the time due to its recency. That sounds like me wanting to go to computer science class but instead deciding that I want to major in AI having absolutely no idea or lead to understand just what is in store for me. The only difference is that I never actually went to computer science before making the decision. Actually, the other difference is the irony in that I am familiar with computer science and gravitated to it more, while that was precisely what professor Malan was wary of when he was a student.
Professor Malan then talks about how he discovered that computer science was something for him. It turned out that it was this general-purpose way of thinking. More specifically, it is the study of a general-purpose approach to problem solving, and that way uses its namesake, computers, in order to implement the solutions. This is something I have heard more than once before, as I have earned a bit of experience in the field (experience not so worthy of being called such, that is). Of course, I came to take this course only because I had (and still have) absolutely no idea how to take programming courses and gain knowledge that lasts. I tried to learn programming from YouTube and then attempted a cool entrance to web development with the top-ranked web development course on Udemy, but when it was time for me to start learning JavaScript, I was out of luck. The thing didn’t make sense, and certainly, that meant the problem was on my end because I learned Python before (somewhat) and JavaScript is commonly considered by folks to be only a bit harder than Python and a language that, albeit not being the best, is one of the best programming languages to start with in computer programming, but I still had a hard time. Having heard more than once that computer science is all about problem solving, I thought it was time for me to take a course that could teach me less about a programming language and more about this problem solving and systematic thinking. Now, as I take CS50, an introduction like this is comforting. I might have just found the introduction to programming I needed long ago…
Just as I think this, the professor tells a gotcha about the course: it is going to be hard to absorb all the things that are there to be learned. He presents a “hack” made by someone (probably students) at MIT in which they connected a fire hose to a drinking fountain and hanged a sign above the fire hose that reads:
GETTING AN EDUCATION FROM MIT IS LIKE DRINKING FROM A FIRE HOSE
Yeah. Way to scare students, professor.
I mean, I am only getting on with the course and getting comfortable in my seat (at home, I wish that was on campus), some students on campus are probably just saying “Let’s flipping go! This is awesome!”, and right then and there, he says that. Good I heard things like that before. Some people would quit (at least mentally) right after. *ahem* including me *ahem*.
Anyhow, he says that it will take time for everything to sink in and students will eventually get comfortable with the concepts taught in the course with practice and time, even if it took years to do so. However, while journeying through CS50 (and likely the whole first semester, or even freshman year, or even the whole major, in Harvard’s computer science) might feel uncomfortable, professor Malan recommends that students take comfort in feeling uncomfortable.
Welcome to Class!
After talking a whole lot about the trouble in store for me and everyone else, the professor starts raising expectations for what the students are going to leave this course with. He mentions that the course used to be only about programming in C, but since then, things have changed and CS50x 2024 now teaches all of the following languages, but I suspect it teaches only the basics:
- C
- Python
- SQL
- JavaScript
What the professor is trying to say from this is that the course is going to teach students how to program. Not how to program in this programming language or that framework or how to work with technologies in that other niche, but just how to program in general. The course, professor Malan claims, is aimed at equipping students with enough concepts and practical skills that even if they never take another CS course, they will be able to learn new languages and are not going to be reliant on a course to introduce them to each idea (new ones of which show up almost every day now) in computer programming. In short, the course is going to teach me, along with my fellow students at Harvard and worldwide, how to solve problems using computers. Professor Malan then mentions that two thirds of the class have not taken a CS class before, and that there are going to be different tracks in which every kind of student will find suitable materials for their level by means of the problem sets and “sections”, or recitations of concepts and learning objectives covered in lecture by a different instructor (or a teaching fellow, I suppose). This will help students, professor Malan claims, in getting them ready for diving into computer science and STEM (abbr. for Science, Technology, Engineering and Mathematics) more generally.
Professor Malan then goes on to talk about the experience of being a CS50 student at Harvard, which does not interest me (but just might one day). What does interest me out of all this is that he described the final project, “meant as a capstone of the course”, as a “final offboarding, so that when you exit CS50, you don’t need CS50 anymore”.
That’s reassuring. It seems like I’m in the right place.
Lecture 0
Lecture 0 introduces students to the representation of various forms of information, such as numbers, letters, colors, and apparently also images, audio and videos. It also introduces writing algorithms and translating that to computer code.
Professor David Malan first presents computer science as the study of information. Specifically, it is problem solving [using information technology]. The way this is going to be approached is computational thinking, which is, as explained by professor Malan and from my own understanding, is methodical, careful analysis of information. A good analogy to computational thinking given by the professor is “thinking like a computer”.
He then introduces the concept of numeral systems, which became an interesting topic to me during my time learning how to program a computer (or at least trying to) because they are an example of the elegance of mathematics: when you write down a number like 100, you can assign meaning to each digit’s position in order to interpret the number is in many ways. The above, for example, can be interpreted as one hundred in the decimal system because it is in the hundreds place, sixty-four in the octal system because it is in the sixty-fours place, and four in the binary system because it is in the fours place, all of which are interpretations you can easily figure out by knowing that the name of the numeral system tells you its base, so that a number with a one and two zeros to the right is the value of the position (one) x the base of the numeral system raised to the position’s count minus one (in this case, the position’s count is 3, so that we multiply the one by 2² = 4, 8² = 64 or 10² = 100). Professor Malan also points to the fact that the binary numeral system was chosen to be associated with modern computers because they are electronic machines, whose state is being turned either on or off, and they can be studied directly in that numeral system. He also points out that the bit, which is a unit of measure of computer memory, can actually be extracted from “binary digit”, and that exactly describes the possible forms of a bit: a single zero or a single one. He also shows how we can represent numbers in the way computers do internally. He then claims that it is the same way that these numbers are represented that instructions to computers are represented, such as those performed by Spot, the robotic dog, to move and make sounds. He demonstrates this through asking him to shake hands and asking him questions about the representation of numbers in binary through light bulbs, which he demonstrated earlier. He then goes on to talk about how the more interesting unit of the byte, comprised of eight bits, is much more commonly used, , as it can represent numbers as large as 255.
The Final Flourish
This phrase is used by the professor while asking Spot questions about binary numerals. I am borrowing it here for the conclusion of today’s diary.
Today was fun. I have understood a lot of things about computers as someone who doesn’t know (that) much about computers, and I hope to keep going in CS50 and eventually finish it so that I can proudly say I took CS50. Thank you for tuning in and sticking around till the end. If you liked this article, please click the Clap button below as clapping comes naturally in physical environments, but I will have to remind you about it here because this is not a physical environment in which you will clap as soon as I get to the end of a presentation that you admired. If you want to keep getting more of these diaries I write every day, make sure to follow me as well. See you tomorrow!