Mathematical Reasoning in Software Engineering Education. Peter B. Henderson Butler University

Size: px
Start display at page:

Download "Mathematical Reasoning in Software Engineering Education. Peter B. Henderson Butler University"

Transcription

1 Mathematical Reasoning in Software Engineering Education Peter B. Henderson Butler University Introduction Engineering is a bridge between science and mathematics, and the technological needs of mankind. Engineering disciplines are fundamentally mathematical and problem solving based. Traditional engineering disciplines, such as chemical, civil, electrical and mechanical, rely heavily upon continuous rather than discrete mathematical foundations. Software engineering is an emerging discipline that applies mathematical and computer science principles to the development and maintenance of software systems. It relies primarily upon principles of discrete mathematics, especially logic. What role does mathematics play in software engineering? Consider the following two statements. Software practitioners do not need or use mathematics. Software practitioners do need to think logically and precisely. An apparent contradiction since the reasoning underlying software engineering and mathematics are similar [4]. Perhaps when a software practitioner says, I don t use mathematics this really means I don t explicitly use mathematics. Practicing engineers don t explicitly use calculus on a daily basis, but they do implicitly use mathematical reasoning all the time. Ask traditional engineers if calculus should be eliminated from undergraduate engineering curricula, and the answer would be a resounding no. There have been arguments by practicing software engineers that mathematics is not that important in software engineering education since they don t use it explicitly [5]. But which mathematics, continuous or discrete? The role of discrete mathematics and logic in software engineering is not well defined or understood by either academics or practitioners. This will change as the discipline matures, and academics and practitioners work together to develop its role - similar to the role continuous mathematics plays in traditional engineering disciplines. Differences and Similarities Between Traditional and Software Engineering Articles have been written attempting to describe the similarities and differences between traditional engineering disciplines and software engineering [8]. One of the major differences is that traditional engineers construct real artifacts and software engineers construct non-real (i.e., abstract) artifacts. The foundations of traditional engineering disciplines are mature physical sciences and continuous mathematics, whereas those of software engineering are more immature abstract computer science and discrete mathematics. In physical engineering, two main concerns for a product are cost of production and reliability measured by time to failure. In software engineering, two main concerns are cost of development and reliability measured by the number of errors per thousand lines of source code. Both disciplines require maintenance, but in different ways.

2 What are the similarities? Excluding concerns about project cost, management, personnel, etc. perhaps the most relevant is modeling. All engineering disciplines require developing and analyzing models of the desired artifact. However, the methods, tools and degree of precision differ between traditional and software engineering. Abstract modeling and analysis is mathematical. It is very mature in traditional engineering and very slowly maturing in software engineering. An example of using mathematical reasoning in both traditional and software engineering will be informative. In electrical engineering consider a resistor-capacitor (RC) circuit. The voltage decay as a function of time ( t ) is specified by the function V(t) = Vo e (-t/rc), where R is the resistance, C the capacitance and Vo the initial capacitor voltage. After taking foundational calculus and differential equations, electrical engineering students take their first electrical circuits course. Here, they develop a mathematical model of the behavior of a RC circuit using differential equations, and solve these to derive the function above. Mathematics based reasoning is used to derive and understand foundational concepts. Iteration invariants are a foundational concept few computer science or software engineering graduates understand, appreciate or can use effectively. Every iteration has a predicate I( ), the iteration/loop invariant, that captures the underlying meaning of the iteration (e.g., sum values in a list, search a tree structure, compute the tax due by all taxpayers, etc.). Mathematical logic can be used to argue that this predicate satisfies logical constraints as illustrated below for the while-do iteration ({. } represents logical assertions) : { pre-condition } Initialization code { I( ) is true } while C( ) is true do { I( ) and C( ) are true } < code for body of iteration > { I( ) is true } { I( ) and not C( ) are true } fi { post-condition } Upon termination (another mathematical issue), { I( ) and not C( ) are true } must logically imply ( fi ) the desired post-condition. Software engineering students can learn to use mathematical reasoning to derive, understand and debug software systems. With sufficient practice, the underlying mathematical concepts become intrinsic to the thought processes, supporting rather than hindering thinking. Why is Mathematics Important for Practicing Software Engineers? Below are some key reasons: 1. Software is abstract. 2. Notations, symbols, abstractions, precision are features common to both mathematics and software engineering.

3 3. Mathematics is requisite for modeling software systems. 4. Many application domains (engineering, science, economics, etc.) are mathematically based. 5. Mathematical reasoning about software systems is essential. 1. Software is abstract: Constructing non-real (abstract) artifacts requires abstract reasoning. What endeavor of mankind has been developed to deal with abstraction? Mathematics!! Indeed, a software system is simply a mathematical model of some process or desired computation. Mathematics provides one tool for reasoning about software systems, and is the only tool available to the practitioner for rigorous reasoning and analysis. 2. Notations, symbols, abstractions, precision: y = ax + b is familiar from algebra, count == 0 from programming. Both use notations, symbols and are precise knowing the types of the data and semantics of the operations, both of which are specified mathematically. Learning a formal notation is no harder than learning a programming language. Indeed, it is often easier since the syntax and semantics are cleaner. Programming appeals to our process/imperative oriented minds and programming tools breath life into programs. Mathematics tends to be declarative and static, although tools such as Maple, Mathematica and Axiom help to mitigate this perception. 3. Modeling software systems: A model, even a mental one, must be created before beginning construction of any artifact. Much software development is like art - an initial vision slowly takes form. Planned evolution is not considered, and maintenance issues are ignored. This may be acceptable for some projects, but with software projects the more you know and understand up front, the better. Modeling is one vehicle for achieving this, and mathematics is an important tool for building, checking, analyzing and experimenting with models [2]. 4. Application Domains: Software practitioners need mathematics to communicate effectively with clients and colleagues who are engineers, scientists, mathematicians, statisticians, actuaries, economists, etc. Mathematics is pervasive and a universal language for communication. 5. Mathematical Reasoning: One definition of mathematical reasoning is: Applying mathematical techniques, concepts and processes, either explicitly or implicitly, in the solution of problems -- in other words, mathematical modes of thought that help us to solve problems in any domain [6]. In the most general interpretation, every problem solving activity is an application of mathematical reasoning. For example, consider the benefits of exercises that require students to translate English statements to propositional or predicate logic form. These modeling exercises help students to be more precise and inquisitive about the interpretation of English statements. When a client or colleague states A or B do they mean inclusive or or exclusive or? Or when they say for all do they really mean universal quantification? What is the intended meaning when this statement is vacuous?

4 What Mathematics is Important for Practicing Software Engineers? As computer science and software engineering mature, educational foundations are more easily identified. Computing Curriculum 2001 requires discrete mathematics in its core and recommends that it be taken early in the undergraduate curriculum [3]. The current ACM/IEEE undergraduate software engineering curriculum effort has adopted and extended this foundational model [9]. The topics for a two course mathematical foundations core are listed below (here E = Essential, D = Desirable, and O = Optional): Functions, Relations and Sets (E) Basic Logic (propositional and predicate) (E) Proof Techniques (direct, contradiction, inductive) (E) Basic Counting (E) Graphs and Trees (E) Discrete Probability (E) Finite State Machines, regular expressions (E) Grammars (E) Algorithm Analysis (E) Number Theory (D) Algebraic Structures (O) Other complementary foundational core material includes: 1. Abstraction a) Generalization b) Levels of Abstraction and Viewpoints c) Data types, class abstractions, generics/templates d) Composition 2. Modeling a) Principles of Modeling b) Pre & Post conditions, invariants c) Mathematical models and specification languages (Z, etc.) d) Tools for modeling and model validation e) Modeling/design languages (UML, OOD, functional, etc.) f) Syntax vs Semantics g) Explicitness (make no assumptions, or state all assumptions) Although calculus is not explicitly in the core, it is highly recommended since it enhances mathematical maturity, provides a good contrast with discrete mathematics concepts, and is used by many client and application disciplines. Other recommended mathematical courses include probability and statistics, and linear algebra. Advanced mathematical courses such as graph theory, combinatorics, theory of computing, probability theory, operations research, algebra, etc. might be required or elective courses depending upon the goals of the program and the individual student.

5 There are currently a number of mathematically oriented software engineering courses including ones with titles like, Formal specifications, Formal methods, Mathematically rigorous software design, Software verification and validation, Software models and model checking, etc. In time, it is expected that the word formal will disappear as the discipline matures. The word is rarely used in traditional engineering where formal approaches are the norm. Specific material will vary between programs. However, an important goal is to ensure that foundational mathematical concepts are used and reinforced in computer science and software engineering courses, in the same way that continuous mathematics is used and reinforced in traditional engineering courses. Achieving this will require time, dedication and rethinking the current software engineering curricula. How can Mathematics be Used? The article Why Math? in this issue illustrates several example applications of mathematics in computer science. A more detailed example of mathematical reasoning, based upon iteration invariants is presented below. Humans tend to apply familiar patterns of thought when solving problems. This works well for most in-the-box problems. Consider the following simple linear search problem: Find the location of the first instance of a specified item in a list of items. The specified item is known to be in the list. Develop an algorithm for this problem. Think about the following questions ones we hope our students would ask themselves. How many items are in the list? Can the list be empty? What happens if the specified item appears more than once? What is meant by first instance? By location? Knowing the answers to these questions and the given problem information one can formulate representative pre and post conditions - required to ensure the problem is well defined. Most graduating students would love to see such a question on a comprehensive exit exam 1. Applying a familiar pattern, or template, leads to a few lines of code simple. But do students really understand, or is this an example of rote learning? Now consider an extension of this problem, binary search. Identify the pre and post conditions, apply a somewhat fuzzier familiar pattern, and compose the algorithm. Jon Bentley used this problem with professional programmers - approximately 90% got it wrong [1]. Returning to the linear search problem, let s consider an alternative solution strategy based on the foundational concept of iteration invariants. First, what is the post condition? It can be formally specified using predicate logic, but for this discussion English will be used. The desired item = list of items [ location ] and the desired item is not found in the list before location (i.e., for all locations loc = 1, 2, 3,, location-1, desired item list of items [ loc ] ) 2. The latter leads to the iteration invariant, the desired item has not been 1 Most colleges and universities don t have such exams. 2 Start counting a 1, not 0 as in C, C++, Java.

6 found yet (i.e., for all locations loc = 1, 2, 3,, current_location-1, desired item list of items [ loc ] ) as illustrated pictorially in Figure 1. It can be established by iterative comparisons starting from location 1, then 2, etc....??...? _ current_location Figure 1 Start the iteration to ensure the initial invariant is valid, keep the loop iterating to ensure the invariant remains valid, and ensure it is valid at the end since it is necessary to imply the desired post condition. See Figure 2 where the predicate invariant( current_location ) is for all locations loc = 1, 2, 3,, current_location-1, desired item list of items [ loc ]. Also, note that this invariant is vacuously true prior to entering the iteration, as is often the case - a reason why students should understand this fundamental mathematical logic concept. Feel free to complete the algorithm using the red stuff to derive condition C( ) and <body of the iteration>. { there exists location loc such that desired item = list of items [ loc ] } current_location fl 1 { invariant( current_location ) } while C( ) do { invariant( current_location ) and C( current_location ) } <body of the iteration> { invariant( current_location ) } { invariant( current_location ) and not C( current_location ) } fi { invariant( current_location ) and desired item = list of items( current_location ) } Figure 2 One may argue that all this red stuff gets in the way. Perhaps, but the red stuff mimics the underlying reasoning our mind uses. It has simply been made explicit here. This is the type of reasoning, from first principles, software engineering students should be able to do. However, this does not mean they must use it all the time. It is a tool available when needed. For example, when a derived software system must be correct, or when understanding or debugging a software system. What is the iteration invariant for binary search? Intuitively, that the location of the desired item is constrained between two other locations low and high that the algorithm adjusts to converge on the potential location of the desired item (the desired item may not even be in the list). This intuitive invariant is only useful if it is used to derive a correct algorithm. What percentage of Bentley s programmers would have gotten it right if they reasoned more mathematically?

7 Conclusions Mathematical reasoning is intrinsic to both traditional engineering and software engineering; however, the foundational mathematics and its use differ. Traditional engineers primarily use continuous mathematics in a calculational mode for modeling, design and analysis (e.g., calculate load on a bridge component, compute wattage of a resistor, determine optimum weight of a car suspension system, etc.). Software engineers mainly use discrete mathematics and logic in a declarative mode for specifying and verifying system behaviors, and for analyzing system features. A resistor-capacitor circuit and iteration invariants were used to illustrate basic mathematical reasoning. Engineering is much deeper and broader. Engineers are systems architects who understand and can apply the foundational principles of the discipline. Software engineers must learn to use mathematics to construct, analyze and check models of software systems, to compose systems from components, to develop correct, efficient system components, to precisely specify the behavior of systems and components, and to be able to analyze, test and evaluate systems and components. They must understand the theoretical and practical principles of programming, and be able to learn and use new languages and tools. One area where traditional engineering has an advantage is tools for mathematical modeling, design, analysis and implementation. These include standard languages for communication (e.g, blue prints, schematic circuit diagrams, etc.) and computer-aided prototyping, design and analysis tools. Comparable tools at the software engineers disposal are slowly emerging as the discipline matures. Evidence supporting the importance of mathematics in software engineering practice is sparse. This naturally leads to claims that software practitioners don t need or use mathematics [5]. Recall the adage If {the only tool} you have {is} a hammer, everything looks like a nail. Surveys of current practices [7] simply reflect reality - many software engineers have not been educated to use discrete mathematics and logic as effective tools. Education is one key to ensuring future software engineers can use mathematics and logic as power{ful} tools for reasoning and thinking. Acknowledgements I thank David Hemmendinger, Doug Baldwin and Kim Bruce for suggestions that significantly improved the quality of this paper. References [1] Bentley, J., Programming Pearls: Writing Correct Programs, Communications of the ACM, Dec (26:12) pp [2] Clark, E.M., Grumberg, O., and Peled, D., Model Checking, MIT Press, 1999 [3] Computing Curricula 2001 : Computer Science Volume, Dec. 15, 2001.

8 [4] Devlin, K., The Real Reason Why Software Engineers Need Math, Communications of the ACM, Oct (44:10) pp [5] Glass, R.L., "A New Answer to 'How Important is Mathematics to the Software Practitioner'?", IEEE Software, November/December 2000, pp [6] Henderson, P., et. al., Striving for Mathematical Thinking, SIGCSE Bulletin - Inroads, Vol. 33, No. 4, Dec 2001, pp [7] Lethbridge, T., "What Knowledge is Important to a Software Professional?," IEEE Computer, (33:5), May 2000, pp [8] Parnas, D.L., "Software Engineering Programmes are not Computer Science Programmes", Annals of Software Engineering. Vol. 6, No. 1-4, 1998, pp [9] Sobel, A. (Editor), First Draft of the Software Engineering Education Knowledge (SEEK), Aug. 28, 2002.

COMPUTER SCIENCE STUDENTS NEED ADEQUATE MATHEMATICAL BACKGROUND

COMPUTER SCIENCE STUDENTS NEED ADEQUATE MATHEMATICAL BACKGROUND COMPUTER SCIENCE STUDENTS NEED ADEQUATE MATHEMATICAL BACKGROUND Hasmik GHARIBYAN PAULSON Computer Science Department, California Polytechnic State University, 1 Grand Avenue, San Luis Obispo, CA 93407,

More information

Introducing Formal Methods. Software Engineering and Formal Methods

Introducing Formal Methods. Software Engineering and Formal Methods Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended

More information

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT

More information

MATHEMATICS EDUCATION FOR SOFTWARE ENGINEERS: IT SHOULD BE RADICALLY DIFFERENT!

MATHEMATICS EDUCATION FOR SOFTWARE ENGINEERS: IT SHOULD BE RADICALLY DIFFERENT! MATHEMATICS EDUCATION FOR SOFTWARE ENGINEERS: IT SHOULD BE RADICALLY DIFFERENT! Franz LICHTENBERGER Research Institute for Sybolic Computation (Risc-Linz) Johannes Kepler University and Department of Software

More information

Automated Theorem Proving - summary of lecture 1

Automated Theorem Proving - summary of lecture 1 Automated Theorem Proving - summary of lecture 1 1 Introduction Automated Theorem Proving (ATP) deals with the development of computer programs that show that some statement is a logical consequence of

More information

Integration of Mathematical Concepts in the Computer Science, Information Technology and Management Information Science Curriculum

Integration of Mathematical Concepts in the Computer Science, Information Technology and Management Information Science Curriculum Integration of Mathematical Concepts in the Computer Science, Information Technology and Management Information Science Curriculum Donald Heier, Kathryn Lemm, Mary Reed, Erik Sand Department of Computer

More information

Specification and Analysis of Contracts Lecture 1 Introduction

Specification and Analysis of Contracts Lecture 1 Introduction Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider gerardo@ifi.uio.no http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.

More information

Software Engineering Transfer Degree

Software Engineering Transfer Degree www.capspace.org (01/17/2015) Software Engineering Transfer Degree This program of study is designed for associate-degree students intending to transfer into baccalaureate programs awarding software engineering

More information

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1 The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions

More information

Professional Organization Checklist for the Computer Science Curriculum Updates. Association of Computing Machinery Computing Curricula 2008

Professional Organization Checklist for the Computer Science Curriculum Updates. Association of Computing Machinery Computing Curricula 2008 Professional Organization Checklist for the Computer Science Curriculum Updates Association of Computing Machinery Computing Curricula 2008 The curriculum guidelines can be found in Appendix C of the report

More information

WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT?

WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? WHAT ARE MATHEMATICAL PROOFS AND WHY THEY ARE IMPORTANT? introduction Many students seem to have trouble with the notion of a mathematical proof. People that come to a course like Math 216, who certainly

More information

A Comparison of Computer Science and Software Engineering Programmes in English Universities

A Comparison of Computer Science and Software Engineering Programmes in English Universities A Comparison of Computer Science and Software Engineering Programmes in English Universities Farid Meziane and Sunil Vadera School of Computing, Science and Engineering University of Salford, Salford M5

More information

Rigorous Software Development CSCI-GA 3033-009

Rigorous Software Development CSCI-GA 3033-009 Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical

More information

(Refer Slide Time: 01:52)

(Refer Slide Time: 01:52) Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This

More information

Verification of Imperative Programs in Theorema

Verification of Imperative Programs in Theorema Verification of Imperative Programs in Theorema Laura Ildikó Kovács, Nikolaj Popov, Tudor Jebelean 1 Research Institute for Symbolic Computation, Johannes Kepler University, A-4040 Linz, Austria Institute

More information

Structure of Presentation. Stages in Teaching Formal Methods. Motivation (1) Motivation (2) The Scope of Formal Methods (1)

Structure of Presentation. Stages in Teaching Formal Methods. Motivation (1) Motivation (2) The Scope of Formal Methods (1) Stages in Teaching Formal Methods A. J. Cowling Structure of Presentation Introduction to Issues Motivation for this work. Analysis of the Role of Formal Methods Define their scope; Review their treatment

More information

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent

More information

VDM vs. Programming Language Extensions or their Integration

VDM vs. Programming Language Extensions or their Integration VDM vs. Programming Language Extensions or their Integration Alexander A. Koptelov and Alexander K. Petrenko Institute for System Programming of Russian Academy of Sciences (ISPRAS), B. Communisticheskaya,

More information

How To Teach Software Engineering

How To Teach Software Engineering COVER FEATURE What Knowledge Is Important to a Software Professional? Efforts to develop licensing requirements, curricula, or training programs for software professionals should consider the experience

More information

Integrating Formal Models into the Programming Languages Course

Integrating Formal Models into the Programming Languages Course Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,

More information

TEACHING MODEL CHECKING TO UNDERGRADUATES

TEACHING MODEL CHECKING TO UNDERGRADUATES STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LV, Number 3, 2010 TEACHING MODEL CHECKING TO UNDERGRADUATES A.VESCAN AND M. FRENŢIU Abstract. The way program verification is taught in our faculty is firstly

More information

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011 University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011 Department Mission The Department of Computer Science in the College of Arts and Sciences

More information

Model Checking: An Introduction

Model Checking: An Introduction Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI

More information

SUBJECT-SPECIFIC CRITERIA

SUBJECT-SPECIFIC CRITERIA SUBJECT-SPECIFIC CRITERIA Relating to the accreditation of Bachelor s and Master s degree programmes in the field of mathematics (09 December 2011) The following specifications complement the ASIIN General

More information

Probability Using Dice

Probability Using Dice Using Dice One Page Overview By Robert B. Brown, The Ohio State University Topics: Levels:, Statistics Grades 5 8 Problem: What are the probabilities of rolling various sums with two dice? How can you

More information

A Reasoning Concept Inventory for Computer Science

A Reasoning Concept Inventory for Computer Science A Reasoning Concept Inventory for Computer Science Joan Krone, Joseph E. Hollingsworth, Murali Sitaraman, and Jason O. Hallstrom Technical Report RSRG-09-01 School of Computing 100 McAdams Clemson University

More information

What Is School Mathematics?

What Is School Mathematics? What Is School Mathematics? Lisbon, Portugal January 30, 2010 H. Wu *I am grateful to Alexandra Alves-Rodrigues for her many contributions that helped shape this document. The German conductor Herbert

More information

Component visualization methods for large legacy software in C/C++

Component visualization methods for large legacy software in C/C++ Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University mcserep@caesar.elte.hu

More information

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and

More information

model-driven development

model-driven development focus model-driven development What Models Mean Ed Seidewitz, InteliData Technologies If today s software developers use models at all, they use them mostly as simple sketches of design ideas, often discarding

More information

Applied Mathematics and Mathematical Modeling

Applied Mathematics and Mathematical Modeling Applied Mathematics and Mathematical Modeling Joseph Malkevitch, York College (CUNY), Chair Ricardo Cortez, Tulane University Michael A. Jones, Mathematical Reviews Michael O Neill, Claremont McKenna College

More information

The Role of Modelling in Teaching Formal Methods for Software Engineering

The Role of Modelling in Teaching Formal Methods for Software Engineering The Role of Modelling in Teaching Formal Methods for Software Engineering A. J. Cowling Department of Computer Science University of Sheffield Sheffield, England A.Cowling@dcs.shef.ac.uk Abstract. This

More information

Execution of A Requirement Model in Software Development

Execution of A Requirement Model in Software Development Execution of A Requirement Model in Software Development Wuwei Shen, Mohsen Guizani and Zijiang Yang Dept of Computer Science, Western Michigan University {wwshen,mguizani,zijiang}@cs.wmich.edu Kevin Compton

More information

Datavetenskapligt Program (kandidat) Computer Science Programme (master)

Datavetenskapligt Program (kandidat) Computer Science Programme (master) Datavetenskapligt Program (kandidat) Computer Science Programme (master) Wolfgang Ahrendt Director Datavetenskap (BSc), Computer Science (MSc) D&IT Göteborg University, 30/01/2009 Part I D&IT: Computer

More information

A GENERAL CURRICULUM IN MATHEMATICS FOR COLLEGES W. L. DUREN, JR., Chairmnan, CUPM 1. A report to the Association. The Committee on the Undergraduate

A GENERAL CURRICULUM IN MATHEMATICS FOR COLLEGES W. L. DUREN, JR., Chairmnan, CUPM 1. A report to the Association. The Committee on the Undergraduate A GENERAL CURRICULUM IN MATHEMATICS FOR COLLEGES W. L. DUREN, JR., Chairmnan, CUPM 1. A report to the Association. The Committee on the Undergraduate Program in Mathematics (CUPM) hereby presents to the

More information

Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl

Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl Domain Specific Languages for Business Users Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl Sheet 2 Background Experience Business DSLs Insurance Product Modeling (structure) Pattern

More information

Writing in the Computer Science Major

Writing in the Computer Science Major Writing in the Computer Science Major Table of Contents Introduction... 2 Statement of Purpose... 2 Revision History... 2 Writing Tasks in Computer Science... 3 Documentation... 3 Planning to Program:

More information

WOLLONGONG COLLEGE AUSTRALIA. Diploma in Information Technology

WOLLONGONG COLLEGE AUSTRALIA. Diploma in Information Technology First Name: Family Name: Student Number: Class/Tutorial: WOLLONGONG COLLEGE AUSTRALIA A College of the University of Wollongong Diploma in Information Technology Final Examination Spring Session 2008 WUCT121

More information

School of Engineering Department of Electrical and Computer Engineering

School of Engineering Department of Electrical and Computer Engineering 1 School of Engineering Department of Electrical and Computer Engineering 332:223 Principles of Electrical Engineering I Laboratory Experiment #4 Title: Operational Amplifiers 1 Introduction Objectives

More information

[Refer Slide Time: 05:10]

[Refer Slide Time: 05:10] Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture

More information

A Comparison of System Dynamics (SD) and Discrete Event Simulation (DES) Al Sweetser Overview.

A Comparison of System Dynamics (SD) and Discrete Event Simulation (DES) Al Sweetser Overview. A Comparison of System Dynamics (SD) and Discrete Event Simulation (DES) Al Sweetser Andersen Consultng 1600 K Street, N.W., Washington, DC 20006-2873 (202) 862-8080 (voice), (202) 785-4689 (fax) albert.sweetser@ac.com

More information

Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm

Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm Introduction to Formal Methods Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm Outline Introduction Formal Specification Formal Verification Model Checking Theorem Proving Introduction Good papers to

More information

Quotes from Object-Oriented Software Construction

Quotes from Object-Oriented Software Construction Quotes from Object-Oriented Software Construction Bertrand Meyer Prentice-Hall, 1988 Preface, p. xiv We study the object-oriented approach as a set of principles, methods and tools which can be instrumental

More information

Overview. Essential Questions. Precalculus, Quarter 4, Unit 4.5 Build Arithmetic and Geometric Sequences and Series

Overview. Essential Questions. Precalculus, Quarter 4, Unit 4.5 Build Arithmetic and Geometric Sequences and Series Sequences and Series Overview Number of instruction days: 4 6 (1 day = 53 minutes) Content to Be Learned Write arithmetic and geometric sequences both recursively and with an explicit formula, use them

More information

FACTORING POLYNOMIALS IN THE RING OF FORMAL POWER SERIES OVER Z

FACTORING POLYNOMIALS IN THE RING OF FORMAL POWER SERIES OVER Z FACTORING POLYNOMIALS IN THE RING OF FORMAL POWER SERIES OVER Z DANIEL BIRMAJER, JUAN B GIL, AND MICHAEL WEINER Abstract We consider polynomials with integer coefficients and discuss their factorization

More information

COMPUTER SCIENCE. Department of Mathematics & Computer Science

COMPUTER SCIENCE. Department of Mathematics & Computer Science Department of Mathematics & Computer Science COMPUTER SCIENCE This document is meant as a planning guide only. Students are advised to consult with the Chair of the Department if they have specific questions

More information

Linear Equations in One Variable

Linear Equations in One Variable Linear Equations in One Variable MATH 101 College Algebra J. Robert Buchanan Department of Mathematics Summer 2012 Objectives In this section we will learn how to: Recognize and combine like terms. Solve

More information

Formally speaking: How to apply OCL

Formally speaking: How to apply OCL Page 1 of 6 Copyright IBM Corporation 2004 http://www-106.ibm.com/developerworks/rational/library/5390.html Search for: within All of dw Use + - ( ) " " Search help IBM home Products & services Support

More information

Software Specification and Testing

Software Specification and Testing Software Specification and Testing Using UML and OCL Jonathan Milley Faculty of Engineering and Applied Science MUN St. John s, Newfoundland Email: jmilley@engr.mun.ca Dr. Dennis K. Peters Faculty of Engineering

More information

THE MATHEMATICS EDUCATION FOR THE ENGINEERING STUDENTS OF 21ST CENTURY

THE MATHEMATICS EDUCATION FOR THE ENGINEERING STUDENTS OF 21ST CENTURY THE MATHEMATICS EDUCATION FOR THE ENGINEERING STUDENTS OF 21ST CENTURY Figen Uysal Bilecik University Faculty of Science and Letter Mathematics Department figen.uysal@bilecik.edu.tr Abstract: Engineering

More information

HANDBOOK FOR THE APPLIED AND COMPUTATIONAL MATHEMATICS OPTION. Department of Mathematics Virginia Polytechnic Institute & State University

HANDBOOK FOR THE APPLIED AND COMPUTATIONAL MATHEMATICS OPTION. Department of Mathematics Virginia Polytechnic Institute & State University HANDBOOK FOR THE APPLIED AND COMPUTATIONAL MATHEMATICS OPTION Department of Mathematics Virginia Polytechnic Institute & State University Revised June 2013 2 THE APPLIED AND COMPUTATIONAL MATHEMATICS OPTION

More information

Verifying Specifications with Proof Scores in CafeOBJ

Verifying Specifications with Proof Scores in CafeOBJ Verifying Specifications with Proof Scores in CafeOBJ FUTATSUGI, Kokichi 二 木 厚 吉 Chair of Language Design Graduate School of Information Science Japan Advanced Institute of Science and Technology (JAIST)

More information

COURSE TITLE COURSE DESCRIPTION

COURSE TITLE COURSE DESCRIPTION COURSE TITLE COURSE DESCRIPTION CS-00X COMPUTING EXIT INTERVIEW All graduating students are required to meet with their department chairperson/program director to finalize requirements for degree completion.

More information

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent

More information

Theory of Automated Reasoning An Introduction. Antti-Juhani Kaijanaho

Theory of Automated Reasoning An Introduction. Antti-Juhani Kaijanaho Theory of Automated Reasoning An Introduction Antti-Juhani Kaijanaho Intended as compulsory reading for the Spring 2004 course on Automated Reasononing at Department of Mathematical Information Technology,

More information

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent

More information

Comparison of Gaps in Mathematics in Engineering Curricula

Comparison of Gaps in Mathematics in Engineering Curricula Comparison of Gaps in Mathematics in Engineering Curricula Lecturer Department of Interdisciplinary Studies Faculty of Engineering, University of Ruhuna, Sri Lanka ABSTRACT Students entering the engineering

More information

Design by Contract beyond class modelling

Design by Contract beyond class modelling Design by Contract beyond class modelling Introduction Design by Contract (DbC) or Programming by Contract is an approach to designing software. It says that designers should define precise and verifiable

More information

Using Patterns and Composite Propositions to Automate the Generation of Complex LTL

Using Patterns and Composite Propositions to Automate the Generation of Complex LTL University of Texas at El Paso DigitalCommons@UTEP Departmental Technical Reports (CS) Department of Computer Science 8-1-2007 Using Patterns and Composite Propositions to Automate the Generation of Complex

More information

Master of Arts in Mathematics

Master of Arts in Mathematics Master of Arts in Mathematics Administrative Unit The program is administered by the Office of Graduate Studies and Research through the Faculty of Mathematics and Mathematics Education, Department of

More information

DOVER-SHERBORN HIGH SCHOOL PROGRAM OF STUDIES

DOVER-SHERBORN HIGH SCHOOL PROGRAM OF STUDIES DOVER-SHERBORN HIGH SCHOOL PROGRAM OF STUDIES 2014-2015 Educational Technologies Intro to Computer Applications Computer Graphics Astronomy Web Design & Development Intro to Programming (Visual Basic)

More information

New Tracks in B.S. in Mathematics

New Tracks in B.S. in Mathematics New Tracks in B.S. in Mathematics The University has approved the introduction of several tracks in the BS degree in Math. Starting Fall 2015, there will be a Comprehensive Track; an Applied Math Track;

More information

Computation Beyond Turing Machines

Computation Beyond Turing Machines Computation Beyond Turing Machines Peter Wegner, Brown University Dina Goldin, U. of Connecticut 1. Turing s legacy Alan Turing was a brilliant mathematician who showed that computers could not completely

More information

Opportunities in Computer Science

Opportunities in Computer Science Opportunities in Computer Science Andrew Mertz William Slough Nancy Van Cleave Eastern Illinois University Department of Mathematics & Computer Science What is Computer Science? Computer science spans

More information

SUBJECT-SPECIFIC CRITERIA

SUBJECT-SPECIFIC CRITERIA SUBJECT-SPECIFIC CRITERIA Relating to the accreditation of Bachelor s and Master s degree programmes in electrical engineering and information technology (09 December 2011) The following specifications

More information

Core Curriculum to the Course:

Core Curriculum to the Course: Core Curriculum to the Course: Environmental Science Law Economy for Engineering Accounting for Engineering Production System Planning and Analysis Electric Circuits Logic Circuits Methods for Electric

More information

Verifying Semantic of System Composition for an Aspect-Oriented Approach

Verifying Semantic of System Composition for an Aspect-Oriented Approach 2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach

More information

Teaching HCI in SE Curriculum

Teaching HCI in SE Curriculum Proceedings of the 4th WSEAS/IASME International Conference on Engineering Education, Agios Nikolaos, Crete Island, Greece, July 24-26, 2007 236 Teaching HCI in SE Curriculum KRISTINA MOROZ LAPIN, SAULIUS

More information

Constructing Contracts: Making Discrete Mathematics Relevant to Beginning Programmers

Constructing Contracts: Making Discrete Mathematics Relevant to Beginning Programmers Constructing Contracts: Making Discrete Mathematics Relevant to Beginning Programmers TIMOTHY S. GEGG-HARRISON Winona State University Although computer scientists understand the importance of discrete

More information

Engineering: Electrical Engineering

Engineering: Electrical Engineering Engineering: Electrical Engineering CRAFTY Curriculum Foundations Project Clemson University, May 4 7, 2000 Ben Oni, Report Editor Kenneth Roby and Susan Ganter, Workshop Organizers Summary This report

More information

A demonstration of Numbas, an assessment system for mathematical disciplines

A demonstration of Numbas, an assessment system for mathematical disciplines A demonstration of Numbas, an assessment system for mathematical disciplines Christian Perfect Newcastle University, Newcastle upon Tyne, UK christian.perfect@ncl.ac.uk Abstract. Numbas is a free and open-source

More information

A Concrete Introduction. to the Abstract Concepts. of Integers and Algebra using Algebra Tiles

A Concrete Introduction. to the Abstract Concepts. of Integers and Algebra using Algebra Tiles A Concrete Introduction to the Abstract Concepts of Integers and Algebra using Algebra Tiles Table of Contents Introduction... 1 page Integers 1: Introduction to Integers... 3 2: Working with Algebra Tiles...

More information

Curriculum Map. Discipline: Computer Science Course: C++

Curriculum Map. Discipline: Computer Science Course: C++ Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code

More information

Programming Languages

Programming Languages Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately

More information

Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns.

Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns. Volume 4, Issue 5, May 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Functional and Non-Functional

More information

How To Be A Mathematically Proficient Person

How To Be A Mathematically Proficient Person REPRODUCIBLE Figure 4.4: Evaluation Tool for Assessment Instrument Quality Assessment indicators Description of Level 1 of the Indicator Are Not Present Limited of This Indicator Are Present Substantially

More information

WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math

WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math Textbook Correlation WESTMORELAND COUNTY PUBLIC SCHOOLS 2011 2012 Integrated Instructional Pacing Guide and Checklist Computer Math Following Directions Unit FIRST QUARTER AND SECOND QUARTER Logic Unit

More information

Computer Science Information Sheet for entry in 2016. What is Computer Science?

Computer Science Information Sheet for entry in 2016. What is Computer Science? Computer Science Information Sheet for entry in 2016 What is Computer Science? Computer Science is about understanding computer systems and networks at a deep level. Computers and the programs they run

More information

STUDENT OUTCOMES ASSESSMENT PLAN (SOAP)

STUDENT OUTCOMES ASSESSMENT PLAN (SOAP) MS PROGRAM IN C OMPUTER SCIENCE DEPARTMENT OF C OMPUTER SCIENCE College of Science and Mathematics STUDENT OUTCOMES ASSESSMENT PLAN (SOAP) I. Mission Statement The mission of the Department of Computer

More information

3. Mathematical Induction

3. Mathematical Induction 3. MATHEMATICAL INDUCTION 83 3. Mathematical Induction 3.1. First Principle of Mathematical Induction. Let P (n) be a predicate with domain of discourse (over) the natural numbers N = {0, 1,,...}. If (1)

More information

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements Questions? Assignment Why is proper project management important? What is goal of domain analysis? What is the difference between functional and non- functional requirements? Why is it important for requirements

More information

Software Design. Software Design. Software design is the process that adds implementation details to the requirements.

Software Design. Software Design. Software design is the process that adds implementation details to the requirements. Software Design Software Design Software design is the process that adds implementation details to the requirements. It produces a design specification that can be mapped onto a program. It may take several

More information

2.2. Instantaneous Velocity

2.2. Instantaneous Velocity 2.2. Instantaneous Velocity toc Assuming that your are not familiar with the technical aspects of this section, when you think about it, your knowledge of velocity is limited. In terms of your own mathematical

More information

Degrees Major in Computer Science Minor in Computer Science Major in Software Engineering

Degrees Major in Computer Science Minor in Computer Science Major in Software Engineering LT400, Independent Study: Directed reading registering. (U)(1). LT401, Independent Study: Directed reading registering. (U)(2). LT402, Independent Study: Directed reading registering. (U)(3). LT499, Honors

More information

Ontological Representations of Software Patterns

Ontological Representations of Software Patterns Ontological Representations of Software Patterns Jean-Marc Rosengard and Marian F. Ursu University of London http://w2.syronex.com/jmr/ Abstract. This paper 1 is based on and advocates the trend in software

More information

C. Wohlin, "Managing Software Quality through Incremental Development and Certification", In Building Quality into Software, pp. 187-202, edited by

C. Wohlin, Managing Software Quality through Incremental Development and Certification, In Building Quality into Software, pp. 187-202, edited by C. Wohlin, "Managing Software Quality through Incremental Development and Certification", In Building Quality into Software, pp. 187-202, edited by M. Ross, C. A. Brebbia, G. Staples and J. Stapleton,

More information

3 Extending the Refinement Calculus

3 Extending the Refinement Calculus Building BSP Programs Using the Refinement Calculus D.B. Skillicorn? Department of Computing and Information Science Queen s University, Kingston, Canada skill@qucis.queensu.ca Abstract. We extend the

More information

Software Verification and Testing. Lecture Notes: Temporal Logics

Software Verification and Testing. Lecture Notes: Temporal Logics Software Verification and Testing Lecture Notes: Temporal Logics Motivation traditional programs (whether terminating or non-terminating) can be modelled as relations are analysed wrt their input/output

More information

A New MSc Curriculum in Computer Science and Mathematics at the University of Zagreb

A New MSc Curriculum in Computer Science and Mathematics at the University of Zagreb A New MSc Curriculum in Computer Science and Mathematics at the University of Zagreb Robert Manger, Goranka Nogo, Mladen Vuković Department of Mathematics, University of Zagreb Bijenička cesta 30, 10000

More information

An Innocent Investigation

An Innocent Investigation An Innocent Investigation D. Joyce, Clark University January 2006 The beginning. Have you ever wondered why every number is either even or odd? I don t mean to ask if you ever wondered whether every number

More information

High School Algebra Reasoning with Equations and Inequalities Solve equations and inequalities in one variable.

High School Algebra Reasoning with Equations and Inequalities Solve equations and inequalities in one variable. Performance Assessment Task Quadratic (2009) Grade 9 The task challenges a student to demonstrate an understanding of quadratic functions in various forms. A student must make sense of the meaning of relations

More information

California State Polytechnic University. Department of Electrical and Computer Engineering ASSESSMENT PLAN. Spring, 2001 - 1 -

California State Polytechnic University. Department of Electrical and Computer Engineering ASSESSMENT PLAN. Spring, 2001 - 1 - California State Polytechnic University Department of Electrical and Computer Engineering ASSESSMENT PLAN Spring, 2001-1 - Table of Contents 1. Introduction 3 2. Goals of assessment in ECE department 3

More information

Implementation of hybrid software architecture for Artificial Intelligence System

Implementation of hybrid software architecture for Artificial Intelligence System IJCSNS International Journal of Computer Science and Network Security, VOL.7 No.1, January 2007 35 Implementation of hybrid software architecture for Artificial Intelligence System B.Vinayagasundaram and

More information

One LAR Course Credits: 3. Page 4

One LAR Course Credits: 3. Page 4 Course Descriptions Year 1 30 credits Course Title: Calculus I Course Code: COS 101 This course introduces higher mathematics by examining the fundamental principles of calculus-- functions, graphs, limits,

More information

Eðlisfræði 2, vor 2007

Eðlisfræði 2, vor 2007 [ Assignment View ] [ Print ] Eðlisfræði 2, vor 2007 30. Inductance Assignment is due at 2:00am on Wednesday, March 14, 2007 Credit for problems submitted late will decrease to 0% after the deadline has

More information

CHAPTER 3. Methods of Proofs. 1. Logical Arguments and Formal Proofs

CHAPTER 3. Methods of Proofs. 1. Logical Arguments and Formal Proofs CHAPTER 3 Methods of Proofs 1. Logical Arguments and Formal Proofs 1.1. Basic Terminology. An axiom is a statement that is given to be true. A rule of inference is a logical rule that is used to deduce

More information

How To Improve Software Quality

How To Improve Software Quality Software Qualities Quality Assurance Maintainer Go Documentation Readable Ce Go Design Functionality Ease of use Ease of learning User Reliability Correctness Efficiency Low Cost Portability Increased

More information

From Workflow Design Patterns to Logical Specifications

From Workflow Design Patterns to Logical Specifications AUTOMATYKA/ AUTOMATICS 2013 Vol. 17 No. 1 http://dx.doi.org/10.7494/automat.2013.17.1.59 Rados³aw Klimek* From Workflow Design Patterns to Logical Specifications 1. Introduction Formal methods in software

More information

SYLLABUSES FOR THE DEGREE OF BACHELOR OF ENGINEERING (BENG)

SYLLABUSES FOR THE DEGREE OF BACHELOR OF ENGINEERING (BENG) BEng-1 E30/812 SYLLABUSES FOR THE DEGREE OF BACHELOR OF ENGINEERING (BENG) General Engineering courses (applicable to candidates admitted in the academic year 2012-13 to the three-year curriculum) General

More information