Computer Science in 5 mins – #3 Electives

April 26, 2019


Hello and welcome. In the previous videos, we talked about some of the core classes in a typical computer science and engineering curriculum. In this video, we are going to go through some of the electives.

Let's start with machine learning, which is what this channel is mostly about. In machine learning, instead of specifying a set of rigid rules to determine a system's behavior, you build a model that learns how to behave from data. You can think of a model as a function that represents a mapping between inputs and outputs. Learning, in this context, means to tweak the parameters of this function to fit a given set of input and output pairs. And this process of finding a good set of parameters to fit a certain dataset is called training a model.

For example, you can train a model to classify images, using a set of images and their corresponding labels. You can take it a step further and detect bounding boxes as well as the object labels. You can go even a bit further and find the exact boundaries of the detected objects by using segmentation masks as labels. Those applications are all examples of where machine learning overlaps with computer vision, which is offered as a separate elective course at many universities.

Today machine learning is dominating the field of computer vision. When you see an academic paper on computer vision, chances are they use deep convolutional neural networks. And when you see an article about AI on popular media with clickbait titles such as 'Company X built AI that that outperform humans in this super cool task', it's likely that it involves either some kind of computer vision or natural language processing or both.

Computer vision is not entirely a subset of machine learning though. It also makes use of more traditional imaging techniques related to image processing, video processing, and computational photography, which I briefly introduced in my earlier videos.

Let's also talk a bit about natural language processing. As its name suggests, natural language processing focuses on processing and modeling human language. Its applications involve understanding written and spoken language, such as: analyzing the overall sentiment in a message; classifying comments and reviews into positive, negative, and neutral ones; understanding questions and answering them; having conversations with humans; summarizing articles; translating articles, and even generating articles. The state of the art language models today can produce incredibly realistic fake articles, such as unicorns being discovered, and recycling is bad for the environment. So, don't believe everything you read on the web. Well, recycling can indeed be bad as compared to reusing stuff and reducing the waste in the first place, but that's not the point.

There are also some applications at the intersection of computer vision and natural language processing, such as image captioning and visual question answering. Although computer vision and natural language processing dominate the field of AI, an introduction to Artificial Intelligence class usually doesn't focus on either of the two. A typical AI class starts with the history and foundations of artificial intelligence; discusses topics in the realm of philosophy of mind, such as different views on whether computers can be truly intelligent and self-conscious; and touches on AI's links to cognitive science and neuroscience. It also covers practical topics such as solving problems through searching among possible solutions, knowledge representation, reasoning, and decision making.

How about data science? If you are interested in a data science-related career, you might want to take a data mining class, which in fact heavily overlaps with a machine learning class. A data mining class would focus on extracting knowledge from data, using machine learning algorithms as a tool, whereas a machine learning class would focus more on those learning algorithms themselves.

If you are interested in working with large scale data, you might also want to learn more about how data is organized and handled. Database systems, big data analytics, and file organization classes cover these topics. If you are interested in building the infrastructure behind the systems that process large scale data, you may want to study distributed computing.

I know this video was a little biased towards machine learning and data science-related subjects. Because that's what I know more about. Computer science has much more to offer than only those topics though. For example, if you are interested in how programming languages work, you can take programming language theory and compilers classes. If you are curious about how search engines work, you can read about information retrieval. If you are interested in robots, you can take a robotics class. To build intelligent robots, you will still need machine learning, particularly its applications in computer vision and natural language processing. If you are interested in computer hardware and enjoyed the computer architecture class earlier, then you can also consider taking a microprocessors class. If you are interested in video games and augmented reality, you can take computer graphics and human-computer interaction classes.

If you are interested in processing audio, music, or any other type of signal, you may want to learn about digital signal processing. The class doesn't teach you how to build a synthesizer, a vocoder, or another voice effect generator, in particular. But if you know about the basics of digital signal processing, you'll have the background to easily understand how those work.

Alright, that's all for today. I hope you liked it. Subscribe for more videos. And as always, thanks for watching, stay tuned, and see you next time.