These slides emphasize on teaching the course on Software Engineering through different teaching approaches to make a positive impact on learning which has now got reduced to monotonous lecturing.
2. Six main chapters
1. Introduction
2. Problems with current and traditional teaching
approaches
3. Different trends to teaching software
engineering
4. Key issues
5. Curriculum Design and Delivery
6. Different Approaches to teaching software
engineering
3. Software Engineering
Software Engineering is defined as the “application of
a systematic, disciplined, quantifiable ap-proach to the
development, operation and maintenance of software”
(Petkovic, Thompson, & Todtenhoefer, 2006, p. 294).
The need to teach software engineering in colleges has
been identi-fied for decades.
4. Problems :
Nurkkala & Brandle (2011) summarize the problems
Short duration – single semester, or two-semester, courses impose an artificial time
constraint .
High turnover – new students each semester means the talent pool remains shallow
and student skills are not developing based on previous experience
Low complexity – by necessity given time constraints and skill sets
In terms of the delivery medium, the educator can deliver the message via the “board-
and- talk” method
Jordanian Universities SE Analysis
There are great inconsistencies among the SE courses taught at the different
universities.
Most of the learning is theoretical and there is no incorporation of real projects or case
Studies from the Jordanian or global software market.
6. For many years since early 1970’s, the “waterfall model” life-cycle
was considered the most successful for a structured approach to
software development. Popular textbooks espoused its techniques
and students were taught its methods.
Subsequently, focus was placed on more incremental approaches
such as spiral development (Clinton, 1998) and rapid prototyping
(Boehm, 2006).
More recently, techniques such as extreme programming (LeJeune,
2006), agile programming (Lu & DeClue, 2011), and software
performance in programming (Dugan, 2004) have been incorporated
in the educational experience.
Some universities have courses which focus on programming
techniques versus software engineering processes and team work
(Petkovic et al., 2006).
7. Callele et al., (2006) recommend a “stealth approach” of teaching
underlying software engineering principles, such as requirements
engineering, early in the students education without labeling it as
software engineering.
Razmov & Anderson (2006) present a more overt approach to
creating a positive atmosphere by incorporating innovative
technology, such as tablet PC’s, in the classroom to mo-tivate
students.
Offutt(2013) mentioned that engineering education must focus on
multiple quality attributes and mentioned that the following subject
should be in the core courses in study plan: usability, testing,
security, design modelling, project management, quality control,
standards, architecture, and so on.
Perez and Alonso (2003) Proposed a SE curriculum composed of
two levels, the first level provides the students with the basic
knowledge of SE that may help students to start developing
software, in the second level the students got the knowledge on the
development stage such as software architecture, reengineering or
components
8. Key Issue
Computer Science Curricula 2013, Curriculum Guidelines for Undergraduate Degree Programs in
Computer Science, The Joint Task Force on Computing Curricula Association for Computing
Machinery (ACM) IEEE Computer Society
9. For example, specialized systems include:
• Real time systems
• Client-server systems
• Distributed systems
• Games
Domain specific software (e.g., scientific computing or business
applications)
Issues raised by each of these specialized systems demand
specific treatments in each phase of software engineering so
that there is no software crisis.
10. Key Issue
Stiller, E., & LeBlanc, C. (2002). Effective software engineering pedagogy. Journal of Computing
Sciences in Colleges, 17(6), 124-134.
11. Stiller and LeBlanc (2002) suggest that the complex and
challenging nature of software engineering make the
effectiveness of such courses difficult and outline six steps to
convince students of the importance of effective software
engineering approaches: make it real, make it fun, make it
critical, make it accessible, make it successful, and speak with a
clear consistent voice in outlining strategies for students.
They suggest that it is the responsibility of the faculty to sell
the students on the value of software engineering by
convincing them that it is not a boring subject.
13. Lesson plan
consists of
P. Desai, G.H. Joshi, Activity Based Teaching Learning in Software
Engineering – An Experience, IEEE International Conference on Engineering Education:
Innovative Practices and Future Trends, 2012
14. Courses
Computer Science Curricula 2013, Curriculum Guidelines for Undergraduate Degree Programs in
Computer Science, The Joint Task Force on Computing Curricula Association for Computing
Machinery (ACM) IEEE Computer Society
15. Learning Outcomes :
Example(Software Requirement)
1. List the key components of a use case or similar description of
some behavior that is required for a system.
2. Describe how the requirements engineering process supports the
elicitation and validation of behavioral requirements.
3. Interpret a given requirements model for a simple software system.
4. Describe the fundamental challenges of and common techniques
used for requirements elicitation.
5. List the key components of a data model (e.g., class diagrams or
ER diagrams).
6. Identify both functional and non-functional requirements in a given
requirements specification for a software system.
7. Conduct a review of a set of software requirements to determine
the quality of the requirements with respect to the characteristics of
good requirements
16. Analyzing the percentages of SE courses to non SE courses at
each SE department at the Jordanian Universities as well as a
sample of UK and USA universities.
S. Hanna, H. Jaber, F. Jaber, T. Shalaby, A. Almasalmeh,” Enhancing the Software
Engineering Curriculums: A Case Study of the Jordanian Universities”, 978-1-4799-
4970- IEEE,2014
17. The Average percentages of the core SE course in the SE
departments are almost similar among Jordanian and UK
Universities which is about 34%, however the USA universities has a
higher percentages of about 50% of the courses.
The Average percentages of the CS course in the SE departments
are almost similar among Jordanian and USA Universities which is
about 30%, however the UK universities has a higher percentages of
about 56% of the courses.
There is over emphasis of the non Computers relates course in the
Jordanian Universities; 33.5% of courses comparing to only 21% and
9% in USA and UK Universities respectively.
19. 1. Activity Based Teaching Learning in Software
Engineering
The theory course on
Software Engineering was
redesigned by tightly coupling
a Mini project course with it.
Different activities are
designed along with Class
room teaching to make
Software Engineering as
joyful course for the students.
P. Desai, G.H. Joshi, Activity Based Teaching Learning in Software Engineering – An Experience, IEEE International Conference
on Engineering Education: Innovative Practices and Future Trends, 2012
20. Results:
The feedback is taken for the class strength of 140 students. This curriculum
is successfully implemented for consecutive years.
21. The approach followed helped to improve their performance in
Continuous Internal Exams (CIE) and Semester End Exams (SEE)
both in theory and mini project course, 80% of the students have
got marks above 50. Performance in SEE is shown in Fig. This
indicate that students passing percentage in Software Engineering
theory is 96% and in mini projects results is 99% which is better
compared to previous year results.
22. 2. Project based Approach
A common approach to providing this type of experience to students
is to assign projects to small teams of students to complete during a
one-semester SE class.
Project-based approaches are commonly used, but these
approaches have the weakness of creating an artificial "one man
shop" in which all aspects of the project are designed by one or a
small group of students to work on a single project throughout the
semester .
A weakness of the "one project" design is that there is little or no
requirement to communicate technical details of the project to
another person or group.
This "one man team“ structure does not accurately reflect the "real
world" of software development In many software development
companies as different groups are tasked with developing
requirements, selecting, installing, and maintaining hardware,
database management, overall system design, testing,
documentation, and support.
23. AN INNOVATIVE PROJECT STRUCTURE
FOR TEACHING SOFTWARE ENGINEERING
They present a project structure that provides students the opportunity
to engage in all aspects of the software development life cycle while
also requiring that they produce clear documentation of their outputs at
each stage and communicate effectively with other teams who are
working on the same project.
Hawker [1] identified a similar need for a SE project design that more
closely replicates the experience of working on a "real world" software
project. His approach was also based on the idea of having students
fulfill different roles within different projects at the same time.
T. Rishel, “An innovative project structure for teaching software engineering”, CCSC,
Southeastern Conference, University of Southern Mississippi Gulf Coast, 2012
24. Project Design:
The basic structure of the project is a N x N x N matrix involving N
applications, N groups of students, and N tasks in the software
development process. For the structure to work as designed, the
number of projects, number of groups, and number of tasks all need to
be equal.
Other changes to the course included :
How projects were selected : brainstorming session
who acted the role of “customer : The group that developed the
requirements document was also designated as the "customer" for the
application throughout the project lifecycle, so if there was ever a
question of general design or implementation of a feature the "customer"
group served as a resource to resolve the question.)
25. Cont..
The SE tasks were organized into a sequential order following a
general design framework. The order used was:
1. Requirements Data
2. Design/Architecture
3. Classes/Component
4. User Interface
5. Test Plan
26.
27. Benefits:
It required all groups to complete all phases of a SE project.
The proposed project structure motivated students to do their best
work as It is required each group to document their work not only for
evaluation by the instructor, but to actually pass their output to their
peers in the class.
The peer-centric design of this project structure also emulates
working conditions in the software development industry. How
software design operates in the real world and gave the students a
realistic experience of interacting with others throughout the SE
process.
Promotes "best-practices" within the class, encourage learning and
using proper terminology, and motivate students to seek out
documentation techniques that encourage clear and concise
communication of technical details of a project.
It enhance the teamwork performance by Consider and adopt
suggestions from others, providing help and ask to other team
members and Completing assignments on time.
28. Assessing Teamwork Skills:
Independent observation
Evaluating the evidence of individual team member contributions
Conduct peer reviews
29. Peer Evaluation Form
R. W. Lingard, “Teaching and Assessing Teamwork Skills in Engineering and Computer
Science” , VOLUME 8 - NUMBER 1, ISSN: 1690-4524, California State University, Northridge,
2010
30. 3. Teaching using Open Source Development
Tools
Regardless of the specific pedagogical approach taken, many software
engineering educators have noted the importance of teaching students
the use of tools in software development, both to familiarize students
with current industry practices as well as to aid their own development
effort.
Some offerings use existing development tools such as:
• project planning software
• Integrated Development Environments (IDE’s)
• Configuration management tools.
• UML Modeling Tools
• Testing Tools
• Personal Assistant for Software Engineers (PASE) for project and
metric tracking.
• Facebook and Google Docs, to promote team communication and
collabo-ation
S. Teel, D. Schweitzer, S. Fulton , “Teaching Undergraduate Software Engineering Using Open Source
Development Tools ”, vol. 9,2012, United States Air Force Academy, Colorado, USA
31. Wiki Tab to create Wiki pages for their projects and use Google
Project Hosting Wiki feature to document their project. Wiki based
web-tools are popular for creating and sharing project documents
enabling collaboration and team-work. All the members of the
project team had permissions to add, modify and delete their
respective project related documents and were helpful in knowledge
management and project communication.
32. Readmine:
It is an open source which provides both Project Management and Project
Communication capabilities for all student project teams.
Multiple projects support
Each project had the following built-in features: Wiki, News,
Document/Files, Forums, Issue tracking (requirements, bugs, tasks,
and enhancements) with associated scheduling, versioning, time-
tracking, calendar, and Gantt charts,Feeds & email notifications.
Instructors find that it is much easier to monitor the status of each
project team on a regular basis -- and can provide mentoring to more
teams than previously With a single click.
A central, web-accessible project information repository that provides
an easy-to-update and reference location for all students wherever
they are, whenever they need.
This approach also helps enforce the need to keep project
documents continually up-to-date -- rather than the common
approach of “wait until later” which can result in extremely out-of-date
documentation.
33. Who uses Readmine?
Education & Research
Quality & Usability Lab, Technische Universität Berlin
Thiagarajar College of Engineering
Ukrainia University Linux Competence Center at
Chernigiv State Technological University and Students '
Team work site of CS department
Michigan State University, MSU Hydrogeology Lab
Companies and others
alaTest, Product Reviews
Applidium, iPad and iPhone application development
Puppet Labs
35. 4. Emphasizing Experiences in Teaching
Software Engineering Courses
Although universities put much effort into preparing students for
software industry, a great portion of employers complain about level
of readiness of university graduates for working in this industry. They
are usually unsatisfied with lack of graduates' knowledge and
expertise in some aspects such as requirement engineering, team
working, testing, and measuring.
This approach focused on instructing engineering practices and
principles and helping students to perceive their applications and
advantages through properly designed experiments.
If we think that software is a product that can be engineered, it has to
be developed with the help of scientific hand outs, we have to use
tools in all stages of development and we have to evaluate our final
and intermediate products according to some well-defined standards.
S. Hosseinabadi, Z. Aghakasiri, A. Sadeghi, P. Delfani, M. Ghandehari, “Emphasizing
Experiences in Teaching Software Engineering Courses”, 2nd International Conference on
Education Technology and Computer (ICETC), IEEE, 2010
36. 5. The Company Approach to Software
Engineering Project Courses
Teaching larger software engineering project courses at
the end of a computing curriculum is a way for students to
learn some aspects of real-world jobs in industry. Such
courses, often referred to as capstone courses, are
effective for learning how to apply the skills they have
acquired in, for example, design, test, and configuration
management. However, these courses are typically
performed in small team.
The company approach describes the general ideas and
concepts in the form of a course template, i.e., a generic
description from which a specific software engineering
course can be designed.
D. Broman, K. Sandah, M. Baker, “The Company Approach to Software Engineering Project
Courses”, ACCEPTED TO IEEE TRANSACTIONS ON EDUCATION, VOLUME 55, ISSUE 4, 2012,IEEE
37. Teaching/learning activities of the methodology:
1. Role selection
2. Company meetings
3. Requirements elicitation
4. Preliminary study and business meetings
5. Iteration planning and reviews
6. Time reporting and project planning
7. Transformation of organizational structure
8. Retrospectives and process improvements
9. Release planning and expo
10. Self reflection and experience documentation
38.
39. Assessing and grading project-based
courses
For the current course (2011) a new concept is being tested where
students also write individual reports during the project. These reports
include:
(1) what the student claims he/she has contributed with in the project, and
(2) what are the most important things that he/she learned during the
project.
A particular component of the company approach assumed to help
with the individual assessment is the individual time budgets and time
reporting. The key idea of using constrained time budgets is to
achieve the learning outcome that student realize that resources are
limited and therefore prioritization is necessary.
40.
41. 6. Studio-Based Instruction Model
A.Sureka, M. Gupta, D. Sarkar, V. Chaudhary, “A Case-Study on Teaching Undergraduate-
Level
Software Engineering Course Using Inverted-Classroom, Large-Group, Real-Client and
Studio-Based Instruction Model”
Software Studio is a studio-based learning (SBL) curriculum
designed to train students as professional software engineers.
Traditional software engineering courses remain important, but suffer
significant gaps in preparing students for professional engagement.
The seating arrangement was different than the lecture-based model
and is motivated by studio-based learning model applied in
architecture schools.
42. Survey result:
A.Sureka, M. Gupta, D. Sarkar, V. Chaudhary, “A Case-Study on Teaching Undergraduate-Level Software
Engineering Course Using Inverted-Classroom, Large-Group, Real-Client and Studio-Based Instruction Model”
43. References
1. ACM, IEEE. (2008). Computer science curriculum 2008, An interim revision of CS 2001. Retrieved
March 14, 2012 from http://www.acm.org/education/curricula/ComputerScience2008.pdf
2. A.Sureka, M. Gupta, D. Sarkar, V. Chaudhary, “A Case-Study on Teaching Undergraduate-Level
Software Engineering Course Using Inverted-Classroom, Large-Group, Real-Client and Studio-
Based Instruction Model”
3. Callele, D., & Makaroff, D. (2006). Teaching requirements engineering to an unsuspecting
audience. ACM SIGCSE Bulletin, 38(1), 433-437.
4. Claypool, K., & Claypool, M. (2005). Teaching software engineering through game design.
Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer
science educa-tion (ITiCSE '05), 123-127.
5. Clinton J. (1998). Tight spiral projects for communicating software engineering concepts.
Proceedings of the 3rd Australasian conference on Computer science education (ACSE '98), 136-
144.
6. Computer Science Curricula 2013, Curriculum Guidelines for Undergraduate Degree Programs in
Computer Science, The Joint Task Force on Computing Curricula Association for Computing
Machinery (ACM) IEEE Computer Society
7. C. Wohlin, B. Regnell, "Strategies for industrial relevance in software engineering education", The
Journal of Systems and Software, vol. 49, 1999,pp. 125-134.
8. D. Broman, K. Sandah, M. Baker, “The Company Approach to Software Engineering Project
Courses”, ACCEPTED TO IEEE TRANSACTIONS ON EDUCATION, VOLUME 55, ISSUE 4,
2012,IEEE
44. 9. Lingard, R. and Berry, E., “Improving Team Performance in Software Engineering”, Selected Papers from the 11th
International Conference on College Teaching and Learning, Chambers, C. (ed.), Florida Community College at
Jacksonville, 2000.
10. Lu, B., & DeClue, T. (2011). Teaching agile methodology in a software engineering capstone course. Jour-nal of
Computing Sciences in Colleges, 26(5), 293-299.
11. P. Desai, G.H. Joshi, Activity Based Teaching Learning in Software Engineering – An Experience, IEEE
International Conference on Engineering Education: Innovative Practices and Future Trends, 2012
12. Petkovic, D., Thompson, G., & Todtenhoefer, R. (2006). Teaching practical software engineering and global
software engineering: evaluation and comparison. ACM SIGCSE Bulletin, 38(3), 294-298.
13. Razmov, V., & Anderson, R. (2006). Pedagogical techniques supported by the use of student devices in teaching
software engineering. ACM SIGCSE Bulletin, 38(1) 344-348.
14. R. Conn, "Developing software engineers at the C-BOJ software factory", IEEE Software, vol. 19,2002, pp. 25 -
29.
15. R. W. Lingard, “Teaching and Assessing Teamwork Skills in Engineering and Computer Science” , VOLUME 8 -
NUMBER 1, ISSN: 1690-4524, California State University, Northridge, 2010
16. S. Mirian-Hosseinabadi, Z .Aghakasiri, A. Sadeghi, P. Delfani, M. Ghandehari, “Emphasizing Experiences in
Software engineering Courses”, International Conference on Education Technology and Computer (ICETC),
IEEE, 978-1-4244-6370-11.
17. T. Rishel, “An innovative project structure for teaching software engineering”, CCSC, Southeastern Conference,
University of Southern Mississippi Gulf Coast, 2012