chapter Share on Development of Correct Programs Author: David Gries View Profile Authors Info & Claims Edsger Wybe Dijkstra: His Life,Work, and LegacyJuly 2022 Pages 141–168https://doi.org/10.1145/3544585.3544594Published:13 July 2022Publication History 0citation4DownloadsMetricsTotal Citations0Total Downloads4Last 12 Months4Last 6 weeks1 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my Alerts New Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access
Here, the authors strive to change the way logic and discrete math are taught in computer science and mathematics: while many books treat logic simply as another topic of study, this one is unique in its willingness to go one step further. The book traets logic as a basic tool which may be applied in essentially every other area.
NOTE: The first page of text has been automatically extracted and included below in lieu of an abstract CPAS: On the Structure and Usability of a Course Planning and Audit System Abstract We present CPAS, a system that allows students and their advisors to track progress in an academic program. Our design is able to perform a semi-automatic audit of degree requirements; the only human-approved components are ones that require discretion. The underlying mechanism is based on robust propositional logic with extensions that make the entry, interpretation, and audit of complex degree requirements straightforward. The system also includes support for human-approved requirements due to the natural discretion that must be applied when evaluating certain requirements, such as multiple courses with a “cohesive theme”. Additionally, we demonstrate an implementation, which focuses on providing a clear, straightforward interface for all users while maintaining the appropriate level of security and privacy. To the best of our knowledge, CPAS is the first degree audit system that was designed with a web-based, graphical interface from the start. CPAS indicates in simple terms how a student is progressing in the degree and allows students to explore other academic programs offered at their university. We also address several key software engineering research questions, such as the storage of complex major requirements and the design of lucid user interfaces for a variety of users. Considering the number of academic institutions and the variety of academic programs offered, quantifying and collecting correct expressions for major requirements in our system is a nontrivial problem. We explore the possibility of using a collaborative social network, with appropriate security and quality controls, for this purpose. We show how CPAS was used to enter the major requirements of complete academic programs and present a visualization functionality that illustrates such programs. CPAS is a fundamental contribution to education research since it provides a way for academic programs to be mapped out in a generalized ontology. Thus, it allows students to maximally utilize the academic resources of their university, and it allows faculty members and departments to plan and represent programs and to advise students effectively. 1 Introduction Traditionally, course selection and degree audits at Cornell and many other higher education institutions have been performed with paper and pencil tools or individually designed spreadsheets used by both students and departments. A fully automated solution is impossible, since some requirements need approval of the advisor or involve vague guidelines only, for example, that two courses must be “in related disciplines”. Our Course Planning and Audit System (CPAS) integrates automatically auditable requirements with those that must be manually approved in a straightforward way using a simple, well-designed web-based interface. CPAS allows degree requirements to be easily specified by department staff in a very general way. It was used in a prototype system to define the computer science degree requirements in the Engineering and Arts & Sciences colleges at Cornell and several majors at other universities.
One big challenge of teaching discrete mathematics/structures ("discrete math" from here on) is not students' appreciation of the material but the timing of this appreciation. Some (many?) students ask "Why do we have to learn all this?" as they study sequences, mathematical induction, counting, probability, etc., relatively early in their college years. Unfortunately, the most convincing answer comes during the subsequent semesters, and it comes in many iterations. Aside from the courses that obviously depend on this branch of mathematics (i.e. Algorithms, Data Structures, etc.), concepts and notation first introduced in discrete math are utilized in technical treatments of computer networking ([1], [5]), computer organization [2], natural language processing (for probabilistic arguments), web sciences (for network structure arguments [3]), modeling, etc.
There has been debate about whether OO should, or even can, be taught first in CS1 (using Java). We claim that OO can be taught successfully, provided certain principles are followed. These principles lead to the requirement of an appropriate model for classes and objects, which we provide.
Teaching our students how to think about the programming process would increase our effectiveness as teachers and make our curriculum more efficient
Dennis M. Volpano合作论文数Department of Computer Science2
Paul Pritchard合作论文数Cornell Univ., Ithaca, NY2