Published May 16, 2023, 5:20 a.m. by Violet Harris
Domain of science is a map of computer science. It is a tool for visualizing the relationships between different areas of computer science. The map is organized into four main areas: theory, programming, systems, and applications. Each area is subdivided into subareas, and each subarea is represented by a node on the map. The nodes are connected by edges, which represent the relationships between the subareas.
Theory is the foundation of computer science. It includes the subareas of mathematics, logic, and algorithms. The mathematics subarea includes the study of algorithms, data structures, and complexity theory. The logic subarea includes the study of formal methods, verification, and model checking. The algorithms subarea includes the study of algorithm design and analysis.
Programming is the process of designing and implementing algorithms. It includes the subareas of programming languages, compilers, and software engineering. The programming languages subarea includes the study of programming language design and implementation. The compilers subarea includes the study of compiler design and implementation. The software engineering subarea includes the study of software development methodology, tools, and techniques.
Systems is the study of the design and implementation of computer systems. It includes the subareas of operating systems, distributed systems, and database systems. The operating systems subarea includes the study of operating system design and implementation. The distributed systems subarea includes the study of distributed system design and implementation. The database systems subarea includes the study of database system design and implementation.
Applications is the study of the use of computer systems to solve problems. It includes the subareas of artificial intelligence, computer vision, and natural language processing. The artificial intelligence subarea includes the study of algorithms for solving problems, knowledge representation, and reasoning. The computer vision subarea includes the study of algorithms for image understanding. The natural language processing subarea includes the study of algorithms for understanding and generating speech and text.
You may also like to read about:
[Music]
we built computers to expand our brains
originally scientists built computers to
solve arithmetic but they turn out to be
incredibly useful for many other things
as well
running the entire internet life like
graphics artificial brains
or simulating the universe but amazingly
all of it boils down to just flipping
zeros and ones computers have become
smaller and more powerful
and an incredible rate there's more
computing power in your cell phone than
there was in the entire world in the
mid-1960s
and the entire apollo moon landing could
have been run on a couple of nintendos
computer science is a subject that
studies what computers can do
it's a diverse and overlapping field but
i'm gonna split it into three parts the
fundamental theory of computer science
computer engineering and applications
we'll start with the father of
theoretical computer science alan turing
who formalized the concept of a turing
machine
which is a simple description of a
general purpose computer
people came up with other designs for
computing machines but they're all
equivalent to a turing machine which
makes it the foundation of computer
science
a turing machine contains several parts
an infinitely long tape
that's split into cells containing
symbols there's also a head that can
read and write symbols to the tape
a state register that stores the state
of the head and a list of possible
instructions
in today's computers the tape is like
the working memory or ram
the head is the central processing unit
and the list of instructions is held in
the computer's memory
even though a turing machine is a simple
set of rules it's incredibly powerful
and this is essentially what all
computers do nowadays although
our computers obviously have a few more
parts like permanent storage and all the
other components
every problem that's computable by a
turing machine is computable using
lambda calculus which is the basis of
research in programming languages
computability theory attempts to
classify what is and isn't computable
there are some problems that due to
their very nature can never be solved by
a computer a famous example is the
halting problem where you try and
predict whether a program will stop
running or carry on forever there are
programs where this is impossible to
answer by a computer or a human
many problems are theoretically solvable
but in practice take
too much memory or more steps than the
lifetime of the universe to solve and
computational complexity
attempts to categorize these problems
according to how they scale
there are many different classes of
complexity and many classes of problem
that fall into each type
there are a lot of real world problems
that fall into these impossible to solve
categories but fortunately computer
scientists have a bunch of sneaky tricks
where you can
fudge things and get pretty good answers
but you'll never know if they're the
best
answer an algorithm is a set of
instructions independent of the hardware
or programming language
designed to solve a particular problem
it's kind of like a recipe of how to
build a program
and a lot of work is put into developing
algorithms to get the best out of
computers
different algorithms can get to the same
final result like sorting a random set
of numbers into order but
some algorithms are much more efficient
than others this is studied in
algorithmic complexity information
theorist studies the properties of
information and how it can be measured
stored and communicated
one application of this is how well you
can compress data making it take up less
memory while preserving all or most of
the information
but there are lots of other applications
related to information theory is coding
theory
and cryptography is obviously very
important for keeping information sent
over the internet secret
there are many different encryption
schemes which scramble data and usually
rely on some very complex mathematical
problem to keep the information
locked up these are the main branches of
theoretical computer science although
there are many more that i didn't have
time to go into like logic
graph theory computational geometry
automata theory
quantum computation parallel programming
formal methods and data structures but
let's move on to computer engineering
designing computers is a challenge
because they have to do so many
different things
designers need to try and make sure that
they're capable of solving many
different kinds of problems as optimally
as possible
every single task that runs on a
computer goes through the core of the
computer the cpu
when you're doing lots of different
things at the same time the cpu needs to
switch back
and forth between these jobs to make
sure everything gets done in a
reasonable time
this is controlled by a scheduler which
chooses what to do and when and tries to
get through the tasks in the most
efficient way which can be a very
difficult problem
multi-processing helps speed things up
because the cpu has several cores that
can execute multiple jobs in parallel
but this makes the job of the scheduler
even more complex
computer architecture is how a processor
is designed to perform
tasks and different architectures are
good at different things
cpus are general purpose gpus are
optimized for graphics and fpgas can be
programmed to be very fast at a very
narrow range of task
on top of the raw hardware there are
many layers of software written by
programmers using many different
programming languages
a programming language is how humans
tell a computer what to do and they vary
greatly depending on the job at hand
from low-level languages like assembly
through to high-level languages like
python or javascript
for coding websites and apps in general
the closer language is to the hardware
the more difficult it is for humans to
use
at all stages of this hierarchy the code
that programmers write needs to be
turned into raw cpu instructions
and this is done by one or several
programs called compilers
designing programming languages and
compilers is a big deal because they are
the tool that software engineers use to
make everything
so they need to be as easy to use as
possible but also versatile enough to
allow programmers to build their crazy
ideas
the operating system is the most
important piece of software on the
computer is it's what we interact with
and it controls how all of the other
programs are run on the hardware
and engineering a good operating system
is a huge challenge
this brings us to software engineering
writing bundles of instructions telling
the computer what to do
building good software is an art form
because you have to translate your
creative ideas
into these logical instructions in a
specific language
make it as efficient as possible to run
and as free of
errors as you can so there are many best
practices and design philosophies that
people follow
some other important areas are getting
many computers to communicate and work
together to solve problems
storing and retrieving large amounts of
data determining how well computer
systems are performing at specific tasks
and creating highly detailed and
realistic graphics
now we get to a really cool part of
computer science getting computers to
solve real world problems
these technologies underlie a lot of the
programs apps and websites we use
when you're going on vacation you want
to get the best trip for the money
you're solving an optimization problem
optimization problems appear everywhere
and finding the best path or most
efficient combination of parts can save
businesses millions of dollars
this is related to boolean
satisfiability where you attempt to work
out if a logic
formula can be satisfied or not this was
the first problem proved to be np
complete and so widely considered to be
impossible to solve
but amazing development of new sat
solvers means that huge sap problems are
solved routinely today especially in
artificial intelligence
computers extend our brains and multiply
our cognitive abilities
the forefront of computer science
research is developing computer systems
that can think for themselves
artificial intelligence there are many
avenues that ai research takes the most
prominent of which is machine learning
which aims to
develop algorithms and techniques to
enable computers to learn from large
amounts of data
and then use what they've learned to do
something useful like make decisions or
classify things
and there are many different types of
machine learning closely related are
fields like computer vision
trying to make computers able to see
objects in images like we do
which uses image processing techniques
natural language processing aims to get
computers to understand and communicate
using human language or to process large
amounts of data in the form of words for
analysis
this commonly uses another field called
knowledge representation where data is
organized according to their
relationships like
words with similar meanings are
clustered together machine learning
algorithms have improved because of the
large amount of data we give them
big data looks at how to manage and
analyze large amounts of data and get
value from it
and we'll get even more data from the
internet of things adding data
collection and communications to
everyday objects
hacking is not a traditional academic
discipline but definitely worth
mentioning
trying to find weaknesses and computer
systems and take advantage of them
without being noticed
computational science uses computers to
help answer scientific questions from
fundamental physics to neuroscience and
often makes use of super computing which
throws the way to the world's most
powerful computers of very large
problems
often in the area of simulation then
there is human computer interaction
which looks at how to design computer
systems to be easy and intuitive to use
virtual reality augmented reality and
telepresence
enhancing or replacing our experience of
reality
and finally robotics which gives
computers a physical embodiment from a
roomba
to trying to make intelligent human-like
machines
so that is my map of computer science a
field that's still developing as fast as
it ever has
despite the fact that the underlying
hardware is hitting some hard limits as
we struggle to miniaturize transistors
anymore
so lots of people are working on other
kinds of computers to try and overcome
this problem
computers have had an absolutely huge
impact on human society so it's going to
be interesting to see where this
technology goes in the next hundred
years
who knows perhaps one day we'll all be
computers
as per usual if you want to get hold of
this map as a poster
i've made it available so check in the
description below for some links
and also if you want to find out more
about computer science i recommend you
check out the sponsor for this video
brilliant.org
people often ask me how to go about
learning more about the kind of subjects
i
cover in these videos and as well as
watching videos a really great way is to
get down and solve some real
problems and brilliant does an excellent
job at this
it's a really cool website and also an
app which helps you learn by
getting you to solve interesting
problems in science mathematics and
computer science
and each of the courses starts off kind
of easy and fun and then gets more and
more challenging
as you master the concepts if you want
to learn specifically about computer
science they've got whole courses built
around topics
in this video like logic algorithms
machine learning
artificial intelligence so if you want
to check that out
just type in brilliant.org slash d
o s or even better click the link in the
description below
because that lets them know that you've
come from here
so thanks again for watching and i'll be
back soon with a new video
2CUTURL
Created in 2013, 2CUTURL has been on the forefront of entertainment and breaking news. Our editorial staff delivers high quality articles, video, documentary and live along with multi-platform content.
© 2CUTURL. All Rights Reserved.