TC 310 - Modes of Reasoning:
Applied Logic and Reasoning through Programming and Data Analysis
A Modes of Reasoning course in the Plan II program at the University of Texas at Austin.
Course Syllabi
Course Description
Computers and digital technology are endemic to everyday life, impacting the ways we communicate, the ways we learn, and the ways we work. These sophisticated machines, and the software that operates them, have radically altered many aspects of life from even just the turn of the century. Yet, at their core, these machines operate using a relatively small vocabulary of basic instructions, from which amazing complexity is produced.
This course introduces logic and reasoning through computer programming, with an examination of the reasoning power and potential of machines themselves. It is meant to form a foundation for continued learning and practical use through your college career and beyond. During this course, you will learn how to think about logic problems, particularly as they apply to our increasingly digital world. Along the way, you will also encounter the basic principles used to provide instructions to a computer, and you will learn to apply them to solve problems, assist your research and help present your findings. You will be able to generalize the concepts from this class to your work as you progress through Plan II (and any other major(s) you might pursue!) and into your post-collegiate life wherever it might take you.
Required and Optional Texts
We will use readings from these four books to motivate our exploration and discussion of applied logic. Please acquire them (legally!). They are all worth owning and can be found for reasonable prices online. Silver, Mitchell and Lubanovic are all available in digital formats as well.
- Douglas Hofstadter. Gödel, Escher, Bach: An Eternal Golden Braid. ISBN 978-0465026562. Amazon link
- Nate Silver. The Signal and the Noise: Why So Many Predictions Fail - but Some Don't. ISBN 978-1594204111. Amazon link
- Melanie Mitchell. Artificial Intelligence: A Guide for Thinking Humans. ISBN 978-0374257835. Amazon link
- Bill Lubanovic. Introducing Python: Modern Computing in Simple Packages (2nd Edition). ISBN 978-1492051367. Amazon link
The three books below are optional, but recommended. Later in the course, we will use Pandas for Python-based data analysis, and Python for Data Analysis will help with those details (it is written by the author of Pandas itself!). Hello World provides an accessible presentation of the impact of machine learning across our modern lives. I would love to make it required, but we likely have enough as it is! On Writing Well is an excellent guide to improving your writing, for this course and beyond. I wish I had read it as an undergraduate, and I am offering you the opportunity to benefit from my hindsight. It is not strictly required either, but it is worth owning and re-reading occasionally as you advance in your career. Each of these are also available at reasonable prices online and in digital formats.
- Wes McKinney. Python for Data Analysis (2nd Edition). ISBN 978-1491957660. Amazon link
- Hannah Fry. Hello World: Being Human in the Age of Algorithms. ISBN 978-0393357363. Amazon link
- William Zinsser. On Writing Well: The Classic Guide to Writing Nonfiction. ISBN 978-0060891541. Amazon link
Additional Resources
We will use UT's Canvas website for most class-related functions. To accommodate uncertainties and to improve flexibility under the ongoing COVID-19 pandemic, each lecture will be simulcast on UT Zoom and will be recorded for later (re-)viewing. These will be hosted within the course Canvas site.
We will also use several popular software development technologies to give you experience with them, and to enable you to claim familiarity with them for future opportunities.
- We have a Slack workspace for the class. Slack is an instant messaging service popular in the tech industry (and increasingly elsewhere). It provides direct messaging as well as channels, group chats, and more. It will be the most effective means of contacting me for questions, and I hope it will also provide a productive forum for discussion outside of class. If you join the Slack workspace, you agree to abide by the Student Rights & Responsibilities there as well.
- We will use Python for assignments and projects in this class. There are many web-based resources of varying quality about Python. Here are the official Python docs and a good tutorial to get started with Python concepts.
- We will use Jupyter Notebooks for our Python environment. There are several web-based options, such as Google Collaboratory (requires a Google account). You can install Python and Jupyter locally with miniconda on Windows, MacOS and Linux.
- The assignments for this course will be posted on Canvas and at my GitHub site.
Course Requirements
Your grade in this course will be determined by a combination of short programming assignments, a longer course project, and class participation.
- Short Assignments: The best way to learn anything is to do it. In that spirit, these short assignments will ask you to exercise logic, reasoning and programming concepts from class. There will be four short assignments over the Fundamentals and Algorithms sections of the course. These will be used to reinforce material covered in class and to build your comfort and familiarity with covered concepts. Short assignments will be performed in small groups. Given the uncertainties around the ongoing COVID-19 pandemic, you are encouraged to conduct group work in well-ventilated areas, outdoors, or over Zoom, in accordance with your personal comfort level and the comfort levels of your partners. The course Slack workspace also provides asynchronous chats for one-on-one and group messaging, please use it!
- Course Project: The final course section will apply your skills to perform data analysis and deep learning techniques on real-world data, either individually or as part of a small group. The project will be broken into parts to assist you in maintaining development momentum and to address any challenges early in the process. This is an excellent opportunity to contribute to your Plan II thesis, if you have a topic, or to test-drive potential topics. In addition to the project code, you will submit a 5+ page summary of your work and findings and present a lightning talk (5-10 minutes) to class.
- Class Participation: Class will cover logic, reasoning and programming concepts through examples and analysis, and it will be an opportunity to address any questions or issues that arise. You will be expected to actively participate in discussion and in-class activities to aid your classmates (and your instructor!) in achieving a better understanding of the material. Your participation will be measured via peer-review from group work as well as instructor impressions from class, drop-in hours, Slack, etc.