Logic for SystemsOffered this year and most years
Do you know what you want?
Do you want the right things?
Will your plans to get them work?
Questions like these have occupied philosophers for millennia. But whether you're finishing up a programming assignment, designing a processor, or arguing over the rules of Monopoly with your family, they should haunt you, too! Surely you've wondered:
- What is this algorithm meant to do, and is that what I need?
- How can I fix this code to make it correct?
- If you change the rules of the game, what would the consequences be?
In this course, you'll use industry-standard tools (e.g., model checkers and SAT solvers) to address these and other quandaries both in and outside of computer science. Among other things, you'll learn to:
* model systems and make good abstraction choices;
* reason about those systems automatically using logic; and
* build the essential algorithms behind the tools used at Amazon, Intel, and more.
Unlike other logic courses, we center the applications and learn the rest as we go along.
The course culminates in a student-proposed project that applies to a real-world system of their choice. Past projects have involved everything from distributed hash-tables to baseball games. Prerequisite: CSCI 0160, CSCI 0180, CSCI 0190, or CSCI 0200.