Home / Modern Technology / Map of Computer Science

Map of Computer Science

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 lifelike 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 Nintendo’s 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 the 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 bio 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 when 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 lie time 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 theory 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 as coding theory in cryptography is obviously very important for keeping information sent over the internet secret there are many different encryption schemes or to 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 or tomato 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 drops 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 we can be a very difficult problem multi-processing helps speed things up because the CPU has several cause that can execute multiple jobs in parallel but this makes the job of the shed dealer even more complex computer architecture is how a processor is designed to perform tasks and different architectures are good at different things CPU is a general-purpose GPUs are optimized for graphics and FPGAs can be programmed to be very fast at a very narrow range of tasks 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 languages to the hardware the more difficult it is for humans to use but 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 a specific tasks and creating highly detailed and realistic graphics now we get to really cool part of computer science getting computers to solve real-world problems these technologies underlie the program’s apps and websites we use when you go 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 for 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 on art 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 a fields like computer vision trying to make computers able to see objects and 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 supercomputing which throws the way to the world’s most powerful computers at 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 try 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 or 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 are really great ways 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 used 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 OS or even better click the link in the description below because that lets them know that you come from here so thanks again for watching and I’ll be back soon with a new video

Check Also


♪ (punk rock music) ♪ – (Finebros) Okay, so we are not having you react …