Understanding how a computer "thinks" is one of the first steps to becoming an excellent computer programmer. A foundation in logic is crucial in developing this understanding. Mastering logic is more than learning a set of rules. It involves learning how to break problems into smaller chunks, figuring out how repeatable processes can save time and improve quality, and understanding how to organize problems into the right size.
In this course, you'll learn how to do all those things and use computers to make them easier. After all, logical tasks are what computers are best at doing!
This is not a programming course, but it will teach you how to approach critical thinking as both a lifestyle and an aide to better programming and testing.
1. Module 0: Introduction to the course
a. What this course is about
i. Analytic logic and its relation to computer science
ii. Critical thinking as both a lifestyle and aide to better programming and testing
iii. Note: This is not a programming course
b. Let's get started: critical thinking and logical reasoning
i. What does it mean to think critically?
ii. An overview of definition, induction, and deduction
iii. Computer programming and logical thinking
2. Module 1: Deduction and Induction
a. Deduction and deductive syllogisms
i. Validity and invalidity
ii. Argument forms
iii. Deductive arguments and computer code
b. Induction and inductive syllogisms
i. Inductive arguments and critical thinking
3. Module 2: Deductive Reasoning and Categorical Logic
a. Focus on how to discipline thinking to write better programs
b. The categorical statement
c. The categorical syllogism
d. Venn diagrams
e. Application to computer code
4. Module 3: Inductive Reasoning and Software Testing: How to think critically
a. The logic of science
b. Looking for the cause (Mill's Methods)
c. Critical thinking and modern science
d. Applying critical thinking skills to software testing
5. Final Exam