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. |
|
|