Skip to main content

    Birol Aygün

    As robotics becomes increasingly important in technology and therefore in our contemporary society, engineering education needs to increase its offerings related to this new discipline. Since robotics involves topics from several branches... more
    As robotics becomes increasingly important in technology and therefore in our contemporary society, engineering education needs to increase its offerings related to this new discipline. Since robotics involves topics from several branches of engineering and science, students in this branch need a synthesis of material and techniques from different areas. Our approach is to look at the project lifecycle in robotics software engineering education in the light of experience in existing branches of engineering and to focus on how a synergy can be realized to achieve success in educating students in this new discipline.
    Patterns occur in almost every aspect of life and scientific discipline. Considering the biological structure of living things, the most striking aspect is the fact that there is an external shell, which is in contact with the outside... more
    Patterns occur in almost every aspect of life and scientific discipline.  Considering the biological structure of living things, the most striking aspect is the fact that there is an external shell, which is in contact with the outside through a porous skin of some type, covering a very detailed internal structure with organs specific to certain functions. This pattern occurs in essentially all living things in many different species-specific formations.  In  science, all theories essentially try to explain or predict certain phenomena based on patterns observed; some expressed by mathematical formulae, which themselves are patterns following mathematical rules. Another area where patterns are vital is communication, where patterns are described by message formats, syntax and semantics of the language of the messages. Finally, designers and programmers use diagrams based on specific diagram patterns, such as flowcharts, UML and many others.
    The subject of our study, namely architectural patterns and design patterns, was initiated as a follow-on to the work of Christoper Alexander, a construction architect, who invented these patterns to describe buildings and created a design pattern language (Alexander,  1977). Patterns have been used very widely to describe architectural styles, pre-fabricated housing, industrial products and processes. The term "architectural pattern" refers to patterns depicting overall structures of systems.The term “design pattern” refers to design of components of the architectural pattern. We shall sometimes use the term "patterns" to refer to both kinds of patterns.
    Using design patterns in software development has been studied extensively since its main introduction in 1995. While many types of design patterns have been proposed and implemented, pattern-based development has not been accepted... more
    Using design patterns in software development has been studied extensively since its main introduction in 1995.  While many types of design patterns have been proposed and implemented, pattern-based development has not been accepted widely in industrial software projects. In this paper, we review various studies of the reasons for this reluctance and summarize an approach which can increase the benefits of design pattern based development over the project lifecycle.
    The main topic of this paper is  the roles design patterns can play in software development. The most widely used role is where the developer becomes well-acquainted with design patterns and uses them casually as coding styles in projects. Another, much less used approach is to try to determine design patterns which best characterize an existing software; which is essentially a classification problem.  The motivation for this approach may be to better understand the code structure, to document it and/or to reengineer it. Our approach will use a combination of the two, adding extensive user guidance for pattern selection and implementation.
    We believe that pattern-based development can become a new paradigm in software development practice where eventually most development may be done with the help of patterns, where the user initially selects an architectural pattern, and places components in it created by selecting design patterns and filling in their application logic, possibly including library components. Our envisioned development framework will contain facilities to discover and recommend patterns, code instrumentation, and other facilities for model-based  development. This is a continuation of the trend in programming languages, starting with hardware machine language, to progressively higher levels of languages;  analogous to trends in many manufacturing industries.
    Research Interests:
    The research underlying this report is concerned with improving the lot of the programmer in debugging, analyzing and modelling his, or others', programs. It is my belief that the area of “execution analysis tools” has been neglected in... more
    The research underlying this report is concerned with improving the lot of the programmer in debugging, analyzing and modelling his, or others', programs. It is my belief that the area of “execution analysis tools” has been neglected in the formative stages of system planning in contemporary systems. This has led to the design of many software and hardware “probes”, “performance monitors”, debugging aids, etc. which have been forced to work with uncooperative hardware and operating systems. The state of the art is especially inadequate in on-line debugging and analysis tools. Witness, for example, the difficulties of backtracking, or tracing the values of a set of core locations, or determining all the successors of a particular node in a program (a node being defined in some intuitive sense for the time being), except in several machine-simulator based systems (see (9) for some good examples). In a survey (1) of on-line debugging techniques in 1966, Evans and Darley remark that computer use is becoming “debugging-limited” rather than limited by memory size or processor speed. They further predict that this will be the state of affairs until methods for proving that programs have certain properties are successfully developed and come into wide use. I quite agree with that evaluation and further envision that “high-level execution analysis” tools will become a staple in future software engineering laboratories.
    A.K.C. Wong, T.A. Reichert, D.N. Cohen, B.O. Aygun ∗ Biotechnology Program, Carnegie-Mellon University, Pittsburgh, Pennsylvania, 15213, U.S.A. ∗Department of Computer Science, Carnegie-Mellon University. Received: June 14, 1971; Received... more
    A.K.C. Wong, T.A. Reichert, D.N. Cohen, B.O. Aygun

    Biotechnology Program, Carnegie-Mellon University, Pittsburgh, Pennsylvania, 15213, U.S.A.
    ∗Department of Computer Science, Carnegie-Mellon University.
    Received: June 14, 1971; Received in revised form: April 2, 1973;
    DOI: http://dx.doi.org/10.1016/0010-4825(74)90006-7


    The major outlines of an exhaustive algorithm which discovers the optimal correspondence of a pair of code strings from a pre-specified alphabet is presented. The measure of the quality of correspondence is the information required to effect the mutations indicated by the correspondence. This formulation is shown to lead naturally to expressions for the penalty for introducing gaps, an ad hoc feature of previous approaches.
    The limitations of earlier algorithms of this type are delineated, and a non-trivial example of the matching of two partial sequences of Tyrosyl t-RNA from E. coli and Baker's yeast is given
    The importance of projects in software engineering courses is well known. Both synthetic and real-life projects have various advantages and disadvantages. Our aim was to create a framework where students can develop projects which reflect... more
    The importance of projects in software engineering courses is well known. Both synthetic and real-life
    projects have various advantages and disadvantages. Our aim was to create a framework where students
    can develop projects which reflect some of the complexities of real-life, involving many concurrent, interacting,
    asynchronous processes, each in a di erent stage of development, with wide temporal di erences
    among them - some occurring within millisconds of each other and others executing sporadically over
    much longer periods. In this project, which was carried out in di erent arrangements in several software
    engineering courses in three universities, the students developed both the sub- and super-structures
    required, with varying degrees of success. The projects were performed in parallel with and subsequent
    to one-semester courses in software engineering. The development was performed in accordance with
    the principles established in the lectures. The sub-structure consists of a discrete-time event simulator
    and a message passing mechanism. It can support many di erent super-structures. The super-structure
    we created was an e-business community simulator where a manufacturer, its trading partners and the
    transactions among them were simulated. In this paper we summarize the project and our experiences
    during the development. A literature search for similar projects for software engineering education did
    not yield any hits. However several reported industrial projects for virtual supply chain management
    were examined. Our project on the other hand was tailored for implementation by student groups in one
    semester with the primary purpose of getting experience in complex, multi-group software development
    rather than immediate industrial use of the software.
    Research Interests:
    The importance of projects in software engineering courses is well known. Both synthetic and real-life projects have various advantages and disadvantages. Our aim was to create a framework where students can develop projects which reflect... more
    The importance of projects in software engineering courses is well known. Both synthetic and real-life projects have various advantages and disadvantages. Our aim was to create a framework where students can develop projects which reflect some of the complexities of real-life, ...