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 is data 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.
