||Top page | Profile | Research|Teaching| Laboratory information||

Graduate classes
( 1 ) Software Verification and Validation
Producing reliable and efficient software systems requires effective development methods and software tools support. This class introduces the latest theory, methods, and techniques in software engineering, including formal specification techniques, refinement calculus, and various verification and validation techniques.
( 2 ) Open Seminar
This seminar introduces the latest development in our research projects. The goal is to let the graduate students in our faculty learn various problems in software engineering, ways of addressing those problems, and the latest research results in the field.
Undergraduate classes
( 1 ) Formal Engineering Methods for Software Development
Formal engineering methods offer more practical techniques than conventional formal methods for large-scale software development. They emphasize the integration of mathematically-based notation and intuitive graphical notation for constructing comprehensible specifications. After a brief introduction to the fundamental principles of formal engineering methods by comparing them to conventional formal methods, this class focuses on the issue of how to write quality specifications using SOFL (Structured Object-oriented Formal Language). In addition to modules and condition data flow diagrams used in specifications, various kinds of data types, such as set types, sequence types, map types, composite types, and their application techniques are introduced. Many small examples are used to help students understand effective ways to write and to organize formal specifications, and a small project may also be used to improve students' skills and experience of using formal engineering methods in practice.
( 2 ) Software Design and Practice
Software design is one of the key activities in software development. A good design usually leads to good structure and performance of programs. In this course we teach various design principles, methods, and representations. The principles include abstract and decomposition, modularity, encapsulation, and information hiding, while the methods include top-down methods, bottom-up methods, structured methods, and object-oriented methods. The design representations include Data Flow Diagrams, Data Dictionary, Structured English, Structure Chart, Jackson Structure Chart, Flowchart, N-S Diagrams, Production Rule Notation (PRN), Pseudecode, and UML.. Furthermore, the techniques for transforming designs into programs are also explained.
( 3 ) Software Development Techniques Practice
This class aims to teach the object-oriented programming language Java and various effective programming techniques for students with preliminary knowledge of Java. It covers the following topics: classes and objects, object-oriented programming, methods, data structures, graphics, GUI, and multthreads. A table tennis game is used as an example to explain the essential principle of object-oriented programming in Java. Students are required to understand the principle and complete a table tennis game as the result of programming practice.
( 4 ) Projects
We aim to teach the first, second, and third year students through the projects how to write programs in Java and how to test them based on formal specifications expressed using pre and postconditions. Students are given many small exercises to apply the specification-based programming and testing techniques. Furthermore, applications of the SOFL technology to the development or simulation of dependable systems, such as Intelligent Transport Systems (ITS) (e.g., Automatic Driving Systems for autombiles and trains), Medicare Systems, IC Card Systems, are also important topics of the projects.
Graduation Research Projects (for both undergraduate and postgraduate)
The graduation research projects for undergraduate students basically concentrated on two areas: (1) applications of the latest software development technologies (e.g., SOFL, UML) to the development of dependable systems, and (2) the development of support tools for SOFL.

The graduation research projects for postgraduate students mainly focus on the research and development of methods and support tools to support formal engineering methods for software engineering.