This is an intermediate level course in formal logic. We will explore issues such as how formal logic attempts to clarify the notion of deductive arguments and notions such as consequence and consistency. We will look at propositional and predicate logic. We will explore how one can justify the formal system by seeing how provability in our formal system is connected to validity of arguments. We will also see some ways in which it has been claimed that logic is a foundation for mathematics and look at formal arguments about the limitations of the formal systems themselves.