Category Archives: computing

The P Versus NP Problem Is One of Computer Science’s Biggest Unsolved Problems


In the world of theoretical computer science, P vs. NP is something of a mythical unicorn. It’s become notorious, since it remains an unsolved problem. It basically asks this: If it is easy to check that a solution to a problem is correct, is it also easy to solve that problem? Get back to us when you have an answer. (

Why Is This So Hard?

In the P vs. NP problem (, the P stands for polynomial and the NP stands for nondeterministic polynomial time. Did we lose you? Let’s back up. In simpler terms, P stands for problems that are easy for computers to solve, and NP stands for problems that are not easy for computers to solve, but are easy for them to check. Here’s when an example might be helpful: “A farmer wants to take 100 watermelons of different masses to the market. She needs to pack the watermelons into boxes. Each box can only hold 20 kilograms without breaking. The farmer needs to know if 10 boxes will be enough for her to carry all 100 watermelons to market.” (

Behnam Esfahbod / WIkipedia ()

This sample problem is not easy to solve; it requires you to go through every dang possible combination. Checking the final answer, however, is pretty easy. All P problems are also NP problems (if a computer can easily solve it, the computer can also easily check it). The question remains open: Are P problems and NP problems the same type of problem? Or, are there are some problems that are easily verified but not easily solved?

Who Wants To Be A Millionaire—From Math?

You may be wondering who really cares about this sort of thing. Well, if someone could show that P is equal to NP, it would make difficult real-world problems a piece of cake for computers to solve. Oh, and the person who solves this problem would also get $1 million from the Clay Mathematics Institute. The P vs. NP Problem is one of six unsolved Millennium Problems that hold a million-dollar prize for whoever cracks it.

Want to dive even further into the world's toughest math problems? Check out "The Millennium Problems: The Seven Greatest Unsolved Mathematical Puzzles Of Our Time" by Keith J. Devlin. We handpick reading recommendations we think you may like. If you choose to make a purchase, Curiosity will get a share of the sale.

Watch And Learn:
Why is P vs NP Important?

In this video,He explain perhaps the most famous problem in all of Computer Science. Does P = NP? He define the terms and give examples of each. We also programmatically go through the traveling salesman problem. He experiment with a little bit of mixed reality in this video as well.

Sources and References:



Demystifying Modern Sorcery (Coding)

90s kids thought that this was what programming looked like…
Coding (or programming/black magic/delete as appropriate) is one of those things everyone talks about, acknowledges that everyone needs to know something about, but barely anyone actually does. Coders have this weirdly conflicting aura; they are the kingmakers, modern day sorcerers who, with seemingly an incomprehensible wave of the hand, can conjure a piece of software out of thin air, and in many cases, a billion dollar IPO at the blink of an eye. Yet at the same time, there persists the stigma of a loner nerd with dark rings under his eyes, eliciting vast worlds from his fingertips yet barely able to keep a conversation going after the first sentence. Is this image problem accurate in these days of teenage billionaires?
Some time ago, I started thinking that I should learn how to code because one thing is clear in 2016; much of how the modern world works depends on lines of code and people with the ability to create it. Unfortunately, perhaps the combination of its seemingly high barrier to entry (do I need to be brilliant at maths? Do I have to be a savant? Those numbers and symbols and colons look scary) coupled with the aforementioned image problem might be a little off-putting for many, despite the almost limitless job prospects and high salaries.
I have no problem being around nerds since I am one myself, so that poindexter cliche never mattered to me anyway. Coding, though, was something I always presumed was forever out of my reach. It just looked so alien, like descending into an ancient cave and stumbling upon some lost civilisation’s hieroglyphics. Code is a pure kind of distillation of logic, and our common spoken/written languages rarely adhere to logic because they’ve been devised, deconstructed, remodelled and butchered according to our needs over thousands of years. Coding languages do not undergo this process of entanglement, but iterate based on what might make it simple work better or more elegantly, and always with its end game (i.e. whatever it was designed to work with, whether that’s an ugly database or a lovely piece of software with a beautiful GUI).
…and this was what a hacker looked like
It was this article from Lifehacker that made want to give it a go, so I took its advice and plunged headfirst into Zed Shaw’s freely available book, deceptively titled ‘Learn Python the Hard Way’. Shaw’s withering, no-nonsense approach to the fundamentals of code has allowed me to drop all the fear and magical thinking I had built up about what is essentially an exercise in learning to apply logic, problem solve, and become adept at proof reading my own work. Yes, it gets increasingly difficult and complex the deeper you go, as with any new skill, but Shaw manages to be both a reassuring and strict master, telling us not to worry if a piece of code makes no sense right now, but reserving no sympathy for anyone who tries to shortcut their way through it either.
I can look at a clump of python code and at least have a grasp at what it’s trying to achieve. I mightn’t be quite ready to churn out the next Windows, but I’ve passed that sticky point where it all seemed crazy hard and confusing to  feeling like I actually know what I’m doing. I remember watching this video about why people should learn to code, and Gabe Newell recalls the first time he ran a piece of code that produced the words ‘Hello World’ onto a console. That tiny spark of creation is the magic inside code at work, and if you want to think of it that way then I would recommend reading this article on why coding is so often compared with magic, which hints that computer code may provide more clues as to the nature of reality than we think.
Here are some great resources for fearful coding n00bs like me:
  • ‘Learn Python the Hard Way’ by Zed Shaw, available for free here
  • Code Academy, which offers free courses on many languages with an easy to follow, gamified learning system.
  • Google’s Python Class
  • Github – a repository for programmers to store and share their open source code with the world. Worth a rummage to find beginners’ projects, figure out what others are up to, or just see what kinds of things are possible
It might take years to become a whizz kid programmer extraordinaire (at which point i’ll be more likely nicknamed something like ‘that old whizz man’), but my point is that learning enough to at least know what the hell is making everything happen is nowhere near as abstract as you had built it up to be.

Tips to a faster computer

Does your computer feel slower than it used to be? Does it take longer to start up or for programs to load? If so, chances are your computer has accumulated some “digital dust” and needs a little spring cleaning.
To better understand what causes your computer to slow down over time (and what you can do about it), here are ten sources of “digital dust.” The tips are based on a blog post Agent Wiebusch did a couple years ago on reasons your computer may be running slow. I have updated the advice a bit.
1) Too many programs running at the same time.Over the lifespan of a computer it is common for users to download programs, applications and other data that ends up “running in the background.” Many of these programs start automatically and you may not be aware they are open. The more things that run in the background, the less “attention span” your computer has to do other things you are asking it to do. Here are instructions for viewing programs running on your Windows machine. If you are using a Mac, these are some instructions for seeing what’s running on your device.
Try to avoid downloading too many web browser-helpers like internet-search bars, programs that claim to “speed up” your internet or your computer, or multiple anti-malware programs. One or two may be fine, but too many will result in slow performance. Uninstall programs that you do not use. Once this deadwood is trimmed, you may notice you machine has become more responsive.
2) Not enough free RAM.“RAM” is what your computer uses for temporary working and thinking space. The more you have the merrier your computer will be. If you look back to reason 1 in this article and have determined you need all those programs running, perhaps your computer doesn’t have enough RAM to do that effectively. The hard drive inside your computer may make a lot of noise, accompanied by slow operation, if you are out of RAM.
RAM is a piece of hardware that can be added to your machine. Four gigabytes (4GB) is the least you want in newer computers, but the rule of thumb is to add as much as is affordable for you.
3) Virus/Malware infection.Virus or malware programs running in the background can divert your computer’s attention away from what you want it to do. Internet slowdowns and general slow operation of the entire computer can be one of the symptoms of an infection. You should have the computer scanned for a malware infection to determine if this is the cause. We have a free virus and spyware scanner available from our website.
4) Low hard drive space.This generally applies to older computers. Hard drives, which store all of your computer’s information, only have a finite amount of space. Once filled up the computer no longer has the ability to manipulate your files. The computer will slow down, eventually becoming unusable.
Generally, Windows will alert you to “low disk space” if this is the case. Moving some of your less-used files such as pictures, music, and movies to an external hard drive would be a viable solution to regaining hard drive space. You can usually install a bigger hard drive as well. Deleting temporary files and performing a disk cleanup are also good ways to reclaim wasted space.
5) Due for a restart.So, this computer has not been restarted in…um, I don’t know how long. Yes, every once in a while it is a good idea to restart your computer. Some updates cannot be completed until you restart. In addition, restarting your computer can free up some resources that could be getting bogged down by buggy programs.
6) Sharing a wireless network.“My internet is slow, but the computer is running fast!” There are many possible reasons this can be happening. If you are on a wireless network, check to see if anyone else on your wireless is streaming video, downloading music or playing online games. Those activities tend to suck up a lot of bandwidth. You should also make sure your wireless network is secure so someone else isn’t stealing your internet bandwidth. Wireless network security is your first line of defense against fraudsters and you should make sure you network is password-protected..
7) Too many bells and whistles.
Sure, that animated pointer and hi-resolution image of your favorite supercar look nice, but those kind of things can also slow your computer down. Animations and images must be loaded into memory every time you start your PC, leaving less memory available for other, more important tasks.
8 ) Scanning programs running.
Check to make sure your antivirus program, anti-spyware program or automatic backup program is not the reason for the slowdown. If it is, I suggest you wait it out. Usually this type of activity is a necessity. Manufacturers of these types of software try to make everyday operations unobtrusive to you. There are times, however, when an update must be done or scanning must take place. Your computer will be a little slow to respond to you when this is happening.
Remember it is not necessary to scan your entire computer every single day for viruses and spyware. Once per week should be fine. The same applies for data backups. A complete system backup doesn’t need to run every single day for the average home user.
9) Not meeting software requirements.
Software usually has a list of requirements called out in the product description or other accompanying literature. Things such as processor speed, operating system, memory (RAM), hard drive space, and minimum video card requirements usual appear with the product description somewhere. Please note that these are minimum requirements. These specifications are the absolute minimum to make the software run. Run it will – run well it may not. Try and meet or surpass the system “recommendations” of your software, not just barely make the “requirements.”
10) A “fragmented” hard drive.
This is becoming less of an issue with newer computers, but if you have an older PC it is worth a mention. Perhaps your hard drive needs a “defrag.”
Imagine a jigsaw puzzle. Computers like to store pieces of a file together, like a completed puzzle. Over time, with normal use these pieces can get scattered all over the hard drive; Similar to when your puzzle first came out of the box. The computer has to look to find all the pieces before it can access the file. This is not a problem if only a few files are fragmented. Once multiplied over several thousand files, however, we have a cumulative slowdown of your computer. Defragmenting your hard drive organizes all these pieces and puts them back together again.