Learning software engineering principles using open source software (original) (raw)

Utilizing Open Source Software in Teaching Practice- based Software Engineering Courses

2016 IEEE Frontiers in Education Conference (FIE), 2016

— Software engineering courses face the challenge of covering all the stages of analysis, development, maintenance, and support while addressing practical issues such as dealing with large codebase. Free and open source software (FOSS) and more specifically humanitarian free and open source software (HFOSS) have been used by many educators to bring many add-ons to computer science education such as innovation and motivation. In addition, FOSS/HFOSS could give a better understanding of real world projects to students. In this work, we are looking at some activities developed for teaching upper division undergraduate and graduate software engineering courses using open source software projects and analyze the impacts of using this approach on students.

Open Source software: A source of possibilities for software engineering education and empirical software engineering

2007

Abstract Open source projects are an interesting source for software engineering education and research. By participating in open source projects students can improve their programming and design capabilities. By reflecting on own participation by means of an established research method and plan, master's students can in addition contribute to increase knowledge concerning research questions. In this work we report on a concrete study in the context of the Net-beans open source project.

Training Software Engineers Using Open-Source Software: The Professors' Perspective

2017 IEEE 30th Conference on Software Engineering Education and Training (CSEE&T)

Traditional Software Engineering (SE) courses often prioritize methodologies and concepts in small, controlled environments: naive projects used as a proof of concept instead of full-fledged real software systems. Although this strategy has clear benefits, it does not place enough care in training students to face complex, non-trivial legacy software projects. To bridge this gap, novel SE courses are leveraging the rich variety of open-source software (OSS) projects to illustrate how these methodologies and concepts are applied to existing, non-trivial software systems. To better understand the benefits, challenges, and opportunities of this transition, in this paper, we interview seven SE professors that changed their academic setting to aspire students to comprehend, maintain, and evolve OSS systems as part of their SE course. We found that there are different ways to make use of OSS projects in SE courses in terms of project choice, assessment, and learning goals. Moreover, we evidence clear benefits of this approach, including improving students' social and technical skills, and helping students enhancing their resume. Also, we observed that this strategy comes with costs: the activity demands effort and time from the professor and the barrier for one getting involved with and, therefore, placing a meaningful contribution, in an OSS community is often high. Index Terms-Open-source software; Teaching Software Engineering; Open-Source Contributions; • RQ1. What makes a good OSS project for training SE students?

Putting engineering into software engineering: Upholding software engineering principles in the classroom

Ever since it emerged in the late (nineteen) sixties, the discipline of software engineering has set itself apart from other engineering disciplines in a number of ways, including: the pervasiveness of its products; the complexity of its products and processes; the criticality of its applications; the difficulty of managing its processes and estimating its costs; the volatility of its workforce; the intractability of its process lifecycles; etc. A number of principles have emerged from recent software engineering research, that have the potential to bring a measure of control to the practice of this discipline; but they have not made it into routine practice in industry. We argue that the classroom is a good place to start acquainting students with these principles, and to start getting them into the habit of adhering to them as a matter of routine practice.

Experiences from Teaching Software Development in a Java Environment

2003

In this paper, we present our ideas for basic education in software development integrating the engineering aspect right from the start. We discuss the aspects which are crucial for such an education and summarize our experience with a four semester beginner's course at our university. Our considerations are concluded by an analysis of the role of Java within the approach.

The adherence of open source java programmers to standard coding practices

The 6th IASTED International Conference on Software …, 2002

The use of agreed-upon coding practices is believed to enhance program comprehension, which directly affects reuse and maintainability. This paper describes a controlled small-scale experiment that tries to determine how well open source Java programmers adhere to a set of well publicized coding practices. The experiment evaluated 100 arbitrarily selected open source Java classes from different programmers with respect to 16 standard coding practices. The results of this experiment indicate that open source Java programmers do not always adhere to standard coding practices. It was found that only 4% of the subject classes have no violations to any of the 16 standard coding practices and there were only 5 of 16 coding practices that all subjects followed. It was also found that there are positive correlations between the number of violations found in a class and its lines-of-code, number of methods, and number of attributes.

Experiences from Teaching Software Development in a Java

In this paper, we present our ideas for basic education in software development integrating the engineering aspect right from the start. We discuss the aspects which are crucial for such an education and summarize our experience with a four semester beginner's course at our university. Our considerations are concluded by an analysis of the role of Java within the approach.

From, By, and For the OSSD: Software Engineering Education Using an Open Source Software Approach

In searching for ways to instill the sense of community through which students learn by solving complex, ill-structured problems collaboratively, we began to examine a special type of software development community—the open source software development (OSSD) community. The OSSD community consists of a group of dedicated, professional developers and user participants who volunteer their expertise and energy in developing open source software over a long period of time toward a common goal. By utilizing online work space and communication tools, these geographically distributed participants collaborate to solve problems through continuous meaning negotiation and knowledge sharing. We believe that the OSSD approach has the potential to address the educational problems discussed above. Taking a design-based research approach, we have been conducting a series of two studies at the University of Oklahoma (OU), with one study leading into the other. In the fall of 2005, we studied an open ...

Teaching Software Evolution in Open Source

Computer, 2000

S oftware engineering courses should prepare students for industry careers by providing an experience close to real-world practice. However, in most courses students develop programs from scratch that, due to time constraints, lack the characteristics of industrial software such as large size, complex architecture, numerous features, strict code quality requirements, and various software artifacts. Moreover, with software evolution currently accounting for more than 65 percent of the total software cost, focusing on development is insufficient. Educators have become aware of this gap and now recommend that software evolution be part of the curriculum. Software evolution requires comprehension and modification of existing software systems, in which the system's sheer size forces software engineers to work only with selected parts that are most relevant to the current task. It might also require performing such evolution-specific tasks as impact analysis, refactoring, and so on. Knowledge of appropriate methods and tools is crucial.