CENTESIMO SEXAGESIMO NONO
VITAE POUYAE
A CS curriculum at a liberal arts institution must achieve two distinct but overlapping purposes: develop knowledge, skills, and professional competencies in preparation for further study or a career in computing and nurture a range of thinking skills applicable across many contexts.
A liberal arts history major may not become a historian, just as a CS major may not become a computer scientist, but they both build a foundation for their future work and lives
Liberal arts students often have significant educational goals beyond the completion of a major. These goals are supported by the construction of “flexible pathways,” a distinguishing characteristic of liberal arts CS curricula
Liberal arts programs not only make space for student experiences outside of computer science, but value and prioritize those experiences.
Where previous ACM-IEEE curriculum guidelines distinguished only between core and elective content, the CS2013 Body of Knowledge is divided into Core-Tier 1 and Core-Tier 2 topics, requiring coverage of only 80% of Core-Tier 2. This structure recognized that some computing curricula will include more or different required content than others
The most common approach to spiral education works through lectures, covering the same topics at different depths in multiple courses. This approach is used at Creighton in teaching essential concepts in computability.
[...] We first introduce Turing machines as a simple model of computation, and describe how Turing used that model to prove that there are limitations on computation (which apply to modern computers as well). The Halting Problem is then described in more familiar terms, as the attempt to define a program that determines whether another program halts on a given input. That is, HaltsOn (program, input) would return false if running program on input produces an infinite loop (otherwise true). However, if the HaltsOn program could be written, then the Opposite program below yields a logical contradiction (when called with its own source code as input, Opposite loops forever precisely when the HaltsOn function says it does not).
After presenting some code While most students grasp only the basic idea of the Halting Problem from this first exposure, they are more prepared to appreciate it when it is later revisited. In the subsequent CS course, we remind them of the Halting Problem in the context of debugging loops. If their program runs for a very long time, we ask how they can know if it is in an infinite loop or just in a protracted computation that might terminate soon.