Current TeachLogic modules:
Background: Logic is the calculus of computer science: It plays a fundamental role similar to the role of calculus in the physical sciences and traditional engineering disciplines. Indeed, logic brings a unifying view to areas of Computer Science as disparate as
The Problem
The various computer science disciplines understand the importance of logic
in their area.
Industry is recognizing the need of the use
of formal specifications and tools in producing reliable
software, hardware, and protocols.
However, CS education lags:
curricula generally fail to provide a unified presentation
of the recurring topics.
Indeed, logic is usually covered in one or two isolated classes,
and ignored in the rest.
Even in those classes, traditional logic teaching
rarely draws on computer science domains for topics or examples
(even when taught by computer scientists).
A Solution: Logic Across the Curriculum
We propose a strategy of logic across the
curriculum,
injecting logic content into application courses, and
demonstrating how the use of logic improves the design and implementation of
real systems.
Once students (and colleagues) see how much logic helps with real work, we
expect that
they use even more of it and that they learn to teach it on their own.
We are implementing this strategy by developing teaching modules -- each about 2 weeks long -- which can be integrated into existing courses, showing (a) how topics being taught are founded on concepts already learned, and (b) how logic-based tools are used by practitioners to tackle problems in the area. Teachers could then grab a module off-the-shelf and use it in their class; it would overlap with material they would teach anyway. Students would encounter the modules throughout their education, gaining a more cohesive understanding of the interrelatedness of topics. By seeing logic across the (computer science) curriculum, students learn to appreciate it as a general tool, not an isolated topic.
For example, in a database class, SQL can be presented as first-order logic augmented with tuples, providing a clean and succinct semantics for SQL. Also, logic can be used as a tool for reasoning about functional dependencies. Or, in a class on concurrent programming, students would learn how to formally state properties about their program, and use tools to verify (prove) properties of their protocols. These modules all stem from a larger three-to-four-week Base module, often included in a discrete math course.
Our hope is that ultimately, these modules might be integrated into CS curricula nationwide, addressing the current lack of logic in the curriculum, and resulting in an industry with more robust systems and software.
We also have an expanded mission statement.
The priniciple investigators of the TeachLogic project are Ian Barland (Radford University), Matthias Felleisen (Northeastern University), Phokion Kolaitis (IBM Almaden), and Moshe Vardi (Rice University). In addition, John Greiner has also been instrumental. Several others have also made contributions.
TeachLogic Home Page, | Please let us know of any suggestions. | Last modified 2007.Apr.12. | |
supported in large part by NSF grant EIA-0086264 |