one of the most important skills you will acquire is debugging although it can be frustratingdebugging is one of the most intellectually richchallengingand interesting parts of programming debugging is also like an experimental science once you have an idea about what is going wrongyou modify your program and try again for some peopleprogramming and debugging are the same thing that isprogramming is the process of gradually debugging program until it does what you want the idea is that you should start with program that does something and make small modificationsdebugging them as you goso that you always have working program formal and natural languages natural languages are the languages people speaksuch as englishspanishand french they were not designed by people (although people try to impose some order on them)they evolved naturally formal languages are languages that are designed by people for specific applications for examplethe notation that mathematicians use is formal language that is particularly good at denoting relationships among numbers and symbols chemists use formal language to represent the chemical structure of molecules programming languages are formal languages that have been designed to express computations formal languages tend to have strict rules about syntax for example is syntactically correct mathematical statement syntax rules come in two flavorspertaining to tokens and structure tokens are the basic elements of the languagesuch as wordsnumbersand chemical elements the second type of syntax rule pertains to the structure of statementthat isthe way the tokens are arranged the statement is illegal because even though and are legal tokensyou can' have one right after the other the difference between bracketsbracesand parenthesesbrackets ]brackets are used to define mutable data types such as list or list comprehensions