This document discusses formal language time complexity. It begins by defining deterministic Turing machines and how they decide languages. It then defines different time complexity classes based on the maximum time required for a Turing machine to decide strings of different lengths. These include classes like P for polynomial time and NP for non-deterministic polynomial time. It discusses NP-complete problems, which are NP problems that are at least as hard as any other NP problem. The satisfiability problem is shown to be NP-complete via Cook's theorem. It is noted that whether P=NP is a major open problem in computer science.