1,291,330 research outputs found
Recommended from our members
Introduction to the Special Issue on Software Architecture for Language Engineering
Every building, and every computer program, has an architecture: structural and organisational principles that underpin its design and construction. The garden shed
once built by one of the authors had an ad hoc architecture, extracted (somewhat painfully) from the imagination during a slow and non-deterministic process that, luckily, resulted in a structure which keeps the rain on the outside and the mower on the inside (at least for the time being). As well as being ad hoc (i.e. not informed by analysis of similar practice or relevant science or engineering) this architecture is implicit: no explicit design was made, and no records or documentation kept of the construction process. The pyramid in the courtyard of the Louvre, by contrast, was constructed in a process involving explicit design performed by qualified engineers with a wealth of theoretical and practical knowledge of the properties of materials, the relative merits and strengths of different construction techniques, et cetera. So it is with software: sometimes it is thrown together by enthusiastic amateurs; sometimes it is architected, built to last, and intended to be 'not something you finish, but something you start' (to paraphrase Brand (1994). A number of researchers argued in the early and middle 1990s that the field of computational infrastructure or architecture for human language computation merited an increase in attention. The reasoning was that the increasingly large-scale and technologically significant nature of language processing science was placing increasing burdens of an engineering nature on research and development workers seeking robust and practical methods (as was the increasingly collaborative nature of research in this field, which puts a large premium on software integration and interoperation). Over the intervening period a number of significant systems and practices have been developed in what we may call Software Architecture for Language Engineering (SALE). This special issue represented an opportunity for practitioners in this area to report their work in a coordinated setting, and to present a snapshot of the state-ofthe-art in infrastructural work, which may indicate where further development and further take-up of these systems can be of benefit
CEG 460/660: Introduction to Software Computer Engineering
This course is concerned with the techniques of designing and constructing large programs. Some of the required basic concepts necessarily have to be developed using small programs as examples. To this extent we also study programming-in-the-small. The overall objectives are to present an overview of issues in the development of sot1ware, to discuss terminology, to illustrate via example case studies, and to give sufficiently detailed advice on how to develop quality software. Hands-on experience is emphasized through the use of homework and a class project
CEG 460/660: Introduction to Software Computer Engineering
This course is concerned with the techniques of designing and constructing large programs. Some of the required basic concepts necessarily have to be developed using small programs as examples. To this extent, we also study programming-in-the-small. The overall objectives are to present an overview of issues in the development of software, to discuss terminology, to illustrate via example case studies, and to give sufficiently detailed advice on how to develop quality software. Hands-on experience is emphasized through the use of homework and a class project
Evaluating groupware support for software engineering students
Software engineering tasks, during both development and maintenance, typically involve teamwork using computers. Team members rarely work on isolated computers. An underlying assumption of our research is that software engineering teams will work more effectively if adequately supported by network-based groupware technology. Experience of working with groupware and evaluating groupware systems will also give software engineering students a direct appreciation of the requirements of engineering such systems.
This research is investigating the provision of such network-based support for software engineering students and the impact these tools have on their groupwork. We will first describe our experiences gained through the introduction of an asynchronous virtual environment  SEGWorld to support groupwork during the Software Engineering Group (SEG) project undertaken by all second year undergraduates within the Department of Computer Science. Secondly we will describe our Computer Supported Cooperative Work (CSCW) module which has been introduced into the students' final year of study as a direct
result of our experience with SEG, and in particular its role within Software Engineering. Within this CSCW module the students have had the opportunity to evaluate various
groupware tools. This has enabled them to take a retrospective view of their experience of SEGWorld and its underlying system, BSCW, one year on. We report our findings for SEG in the form of a discussion of the hypotheses we formulated on how the SEGs would use SEGWorld, and present an initial qualitative assessment of student feedback from the CSCW module
Recommended from our members
Using the Internet of Things to Teach Good Software Engineering Practice to High School Students
This paper describes a course to introduce high school students
to software engineering in practice using the Internet Of
Things (IoT). IoT devices allow students to get quick, visible
results without watering down technical aspects of
programming and networking. The course has three broad
goals: (1) to make software engineering fun and applicable,
with the aim of recruiting traditionally underrepresented
groups into computing; (2) to make young students begin to
approach problems with a design mindset; and (3) to show
students that computer science, generally, and software
engineering, specifically, is about much more than
programming. The course unfolds in three segments. The first
is a whirlwind introduction to a subset of IoT technologies.
Students complete a specific task (or set of tasks) using each
technology. This segment culminates in a “do-it-yourself”
project, in which the students implement a simple IoT
application using their basic knowledge of the technologies.
The course’s second segment introduces software engineering
practices, again primarily via hands-on practical tutorials. In
the third segment of the course, the students conceive of,
design, and implement a project that uses the technologies
introduced in the first segment, all while being attentive to the
good software engineering practices acquired in the second
segment. In addition to presenting the course curriculum, the
paper also discusses a first offering of the course in a threeweek
summer intensive program in 2017, including
assessments done to evaluate the curriculum.Cockrell School of Engineerin
CEG 460/660-01: Introduction to Software Computer Engineering
This course introduces established practices for engineering large-scale software systems. Emphasis is placed on both the technical and managerial aspects of software engineering, and the software development process. This includes techniques for requirements elicitation, analysis, design, testing, and project management. The course emphasizes object-oriented development with the Unified Modeling Language (UML). Hands-on experience is provided through individual homework problems and a partnered project
CEG 460/660-01: Introduction to Software Computer Engineering
This course is concerned with the techniques of designing and constructing large programs. Some of the required basic concepts necessarily have to be developed using small programs as examples. To this extent, we also study programming-in-the-small. The overall objectives are to present an overview of issues in the development of software, to discuss terminology, to illustrate via example case studies, and to give sufficiently detailed advice on how to develop quality software and present a way of communication via UML. Hands-on experience is emphasized through the use of homework and a class project
- …