Formal methods in software engineering course outline

Dit271 formal methods in software development at gu. Predicate calculus and natural deduction, inductive definitions of data types as a basis for. Formal methods in software engineering course formal methods in software engineering formal methods of software design. The software engineering community has applied formal methods to improve software reliability and dependability to specify, design, analyze, and implement a hardware or software system. Course outline we explore selected formal methods for the description, construction and analysis of software systems. Please enrol for the course intended for your degree program. Teaching formal methods for software engineering 3 context of process algebra, are also to be found in temporal logics, which again are closely connected to automata theory, and are applied, e. The formal methods used during the development process provide a mechanism for eliminating problems, which are difficult to overcome using other software process. Formal methods for software development about this course. Course description this course covers the fundamentals of formal methods and can be used as a breadth course for software engineering and information security.

Software engineering application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. The formal methods model is an approach to software engineering that applies mathematical methods or techniques to the process of developing complex software systems. Seng1031 is a prerequisite for this course, and comp2111 is a corequisite. Introducing formal methods formal methods for software specification and analysis. The course will combine a strong technical focus with a capstone project. Be able to specify software using program logics such as temporal logic. Formal methods in software engineering course outline search this guide search. Bachelor of software engineering, distance learning degree programs for adult learners at the bachelors, masters, and doctoral level. Course outline introduction to software engineering.

Course summary this course teaches practical techniques for computer program development that help us to proceed from informal but precise requirements, via more formal and precise specifications through to implementations that are correct and easy to understand and. As a nontraditional university, self paced programs taken online, by correspondence or home study. We will examine techniques for modeling and formally analyzing computing systems and will consider applications in software, hardware, and security. The course will focus on two particular styles of formal methods for. An overview l 5 2 software engineering and formal methods nevery software engineering methodology is based on a recommended development process proceeding through several phases. In the graduate program, the course wa formal methods. Using z carnegie mellon school of computer science. Mike hinchey formal methods formal methods are mathematically based techniques for specification, development and verification of systems, both hardware and software. Elements of discrete mathematics, formal mechanisms for specifying and verifying the correctness, reliability and efficiency of software systems, finite state machines, regular expression, assertions, algebraic and model based specification techniques including. Their objective is software reliability in applications where failure is unacceptable, e. Comp sci 7405 research methods in software engineering. The course will cover techniques applicable to each of the steps of a research project, including formulating research questions, theory building, data analysis using both qualitative and quantitative methods, building evidence, assessing validity, and publishing.

Almost certainly, it will be modified and updated as the semester progresses. It introduces concepts such as software processes and agile methods, and essential software development activities, from initial specification through to system maintenance. Software engineering course descriptions ecs 1200 introduction to engineering and computer science 2 semester hours introduction to the engineering and computing professions, professional ethics. This course covers formal methods used in the development of software. Understand the role of abstraction in formal methods and its uses to simplify models and make verification feasible. Advanced topics in formal methods and software architecture. Since knowledge in all disciplines and fields is expanding at a fast. The purpose of formal methods is to enable the construction of highly reliable software. This course will prepare students for advanced research by examining how to plan, conduct and report on empirical investigations. Acm transactions on software engineering and methodology 61.

The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing. National university of sciences and technology nust is a national institution imparting highquality higher education at both undergraduate and postgraduate levels in the disciplines of electrical engineering, aerospace engineering, construction engineering, mechanical engineering. This preliminary syllabus can be expected to change as the course progresses. This course provides a handson introduction to formal methods for software engineering.

Develop a scientific understanding of algorithmic verification techniques, including the underlying concepts for stateoftheart tools. The following areas of study constitute the backbone of the course. In software engineering, formal methods are a particular kind of mathematically based techniques for the specification, development and verification of software and hardware systems. In contrast to other design systems, formal methods use mathematical proof as a complement to system testing in order to ensure correct behavior. This course provides a general introduction to software engineering. Quizzes take place during the normal class periods. This course outline contains important information that may affect your grade. Formal methods is a generic term for system design, analysis, and implementation methods that are described and used with mathematical rigor.

Overview of ecs curricula, connections among ecs fields. Formal methods courses have been taught at universite du quebec a montreal uqam, montreal, pq, canada, since 1996. Teaching formal methods for software engineering ten. Course curriculum national university of sciences and. You should retain it throughout the semester as you will be assumed to be familiar with the rules specified in this document. In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically rigorous techniques for the specification, development and verification of software and hardware systems. Bachelor of software engineering, course outline online. This book contains enough material for three courses of study. These platform independent specifications serve as an initial technical contract between the programmer and client, and subsequently guide the creation, verification, and documentation of the software. Cs 533 formal methods in software engineering 3 credit. Course contents introduction, limitations of testing and need for formal verification, overview of logic and propositional calculus, calculational logic, logical connectives, boolean equality, continued equivalence, disjunction, conjunction, implication, introduction to hoares logic, weakest precondition, the assignment axiom, calculating assignments, sequential composition, conditional.

The formal methods model is concerned with the application of a mathematical technique to design and implement the software. This material can be adapted in a number of ways, to support other courses or as part of a programme of selfpaced learning. Course goals the overall goal of this course is to learn software engineering methods, both formal and informal, and to practice their use in designing, building, and validating verifying, testing practical software systems. Course outline 19 common computing core courses 19. The use of formal methods approaches can help to eliminate errors early in the design process.

Fast track affordable degree programs allow professional adults to finish college earn a degree and advance their careers. Advanced software engineering open courses by atlantic. This course gives a survey on the use of formal methods for the development of reliable software. Motivation for program specification and verification book 4. Formal methods are system design techniques that use rigorously specified mathematical models to build software and hardware systems. The universitys open courses are free and do not require any. Comp sci 1106 introduction to software engineering. Formal methods electrical and computer engineering at.

The following course in advanced software engineering is provided in its entirety by atlantic international universitys open access initiative which strives to make knowledge and education readily available to those seeking advancement regardless of their socioeconomic situation, location or other previously limiting factors. The need for these methods is rooted in the desire to create robust and reliable computer programs. The standard course outline is given in the anu handbook here is an approximate draft schedule of lectures, tutorials and assignments. More specifically, we deal with specifying sequential programs and concurrent systems, computersupported verification, extended static checking, model checking. Formal methods and software engineering springerlink. It studies languages for objectoriented modeling, such as the unified modeling language uml along with its object constraint language ocl and action semantics extensions.

The conference focuses in all areas related to formal engineering methods, such as veri. Fall 20 page 6 of 6 cse program outcomes outcome description of outcome 1 an ability to apply knowledge of computing, mathematics, science, and engineering 2 an ability to design and conduct experiments, as well as to analyze and interpret data 3 an ability to design, implement, and evaluate a computerbased system, process. Course outline formal methods in software engineering. National university of sciences and technology nust is a national institution imparting highquality higher education at both undergraduate and postgraduate levels in the disciplines of engineering, leadership, peace and conflict studies. Within a discipline, there are often attempts to unify structural. The following outline is provided as an overview of and topical guide to software engineering. This course presents some formal notations that are commonly used for the description of computation and of computing systems, for the specification of software and for mathematically rigorous arguments about program properties. This course covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools. Please check with me if you wish to reproduce or adapt any of this material. This model lays the foundation for developing a complex system and supporting the program development.