360 likes | 369 Views
Explore the challenges and practices of teaching Software Engineering at the Faculty of Mathematics in Belgrade, focusing on curricula design and analysis of teaching aspects.
E N D
Ivanjica 2010 Vladimir Filipović Experiences in teaching Software Engineering at Faculty of Mathematics in Belgrade
Ivanjica 2010 Outline • About Software Engineering, Software Engineering curricula, student outcome and curricula guidlines • Experiences in creating adequate curricula for studying Software Engineering at Faculty of Mathematics in Belgrade • Analysis of Software Engineering aspects of teaching process at Faculty of Mathematics in Belgrade
Ivanjica 2010 Software Engineering • There are serious problems in the cost, timeliness, and quality of many software products. • Software products are among the most complex of man-made systems, and software by its very nature has intrinsic, essential properties that are not easily addressed. • Programming techniques and processes that worked effectively for an individual or a small team to develop modest-sized programs do not scale-up well to the development of large, complex systems • The pace of change in computer and software technology drives the demand for new and evolved software products. This situation has created customer expectations and competitive forces that strain our ability to produce quality of software within acceptable development schedules.
Ivanjica 2010 Software Enginnering Software Engineering as a Computing discipline A common misconception about software engineering is that it is primarily about process-oriented activities. In the historical development of computing, computer scientists produced software and electrical engineers produced the hardware on which the software runs. By the early 1970’s, it was apparent that proper software development practices required more than just the underlying principles of computer science; they need both the analytical and descriptive tools developed within computer science and the rigor that the engineering disciplines bring to the reliability and trustworthiness of the artifacts they engineer.
Ivanjica 2010 Software Enginnering Software Engineering as a Computing discipline Software engineering thus is different in character from other engineering disciplines, due to both the intangible nature of software and to the discrete nature of software operation. It seeks to integrate the principles of Mathematics and Computer science with the engineering practices developed to produce tangible, physical artifacts.
Ivanjica 2010 Software Enginnering Software Engineering as a Engineering discipline The study and practice of software engineering is influenced both by its roots in computer science and its emergence as an engineering discipline. Thus, the discipline of software engineering can be seen as an engineering field with a stronger connection to its underlying computer science discipline than the more traditional engineering fields. There is a set of characteristics that is not only common to every engineering discipline, but is so predominant and critical that they can be used to describe the underpinnings of engineering. It is these underpinnings that should be viewed as desirable characteristics of software engineers.
Ivanjica 2010 Software Engineering Software Engineering as a Engineering discipline [1] Engineers proceed by making a series of decisions, carefully evaluating options, and choosing an approach at each decision-point that is appropriate for the current task in the current context. Appropriateness can be judged by tradeoff analysis, which balances costs against benefits. [2] Engineers measure things, and when appropriate, work quantitatively; they calibrate and validate their measurements; and they use approximations based on experience and empirical data. [3] Engineers emphasize the use of a disciplined process when creating a design and can operate effectively as part of a team in doing so.
Ivanjica 2010 Software Enginnering Software Engineering as a Engineering discipline [4] Engineers can have multiple roles: research, development, design, production, testing, construction, operations, management, and others such as sales, consulting, and teaching. [5] Engineers use tools to apply processes systematically. Therefore, the choice and use of appropriate tools is key to engineering. [6] Engineers, via their professional societies, advance by the development and validation of principles, standards, and best practices. [7] Engineers reuse designs and design artifacts.
Ivanjica 2010 Software Engineering Software Engineering as a Engineering discipline There are also some differences (not necessarily to the detriment of software engineering): • Foundations are primarily in computer science, not in natural sciences. • The focus is on discrete rather than continuous mathematics. • The concentration is on abstract/logical entities instead of concrete/physical artifacts. • There is no “manufacturing” phase in the traditional sense. • Software “maintenance” primarily refers to continued development, or evolution, and not to conventional wear and tear.
Ivanjica 2010 Software Engineering Student outcome for Software Engineering curriculum Graduates of an undergraduate SE program must be able to [1] Show mastery of the software engineering knowledge and skills, and professional issues necessary to begin practice as a software engineer. [2] Work as an individual and as part of a team to develop and deliver quality software artifacts. [3] Reconcile conflicting project objectives, finding acceptable compromises within limitations of cost, time, knowledge, existing systems, and organizations. [4] Design appropriate solutions in one or more application domains using software engineering approaches that integrate ethical, social, legal, and economic concerns.
Ivanjica 2010 Software Engineering Student outcome for Software Engineering curriculum [5] Demonstrate an understanding of and apply current theories, models, and techniques that provide a basis for problem identification and analysis, software design, development, implementation, verification, and documentation. [6] Demonstrate an understanding and appreciation for the importance of negotiation, effective work habits, leadership, and good communication with stakeholders in a typical software development environment. [7] Learn new models, techniques, and technologies as they emerge and appreciate the necessity of such continuing professional development.
Ivanjica 2010 Software Engineering Guidelines for creating Software Engineering curriculum [1] Curriculum designers and instructors must have sufficient relevant knowledge and experience and understand the character of software engineering. [2] Curriculum designers and instructors must think in terms of outcomes. [3] Curriculum designers must strike an appropriate balance between coverage of material, and flexibility to allow for innovation. [4] Many SE concepts, principles, and issues should be taught as recurring themes throughout the curriculum to help students develop a software engineering mindset.
Ivanjica 2010 Software Engineering Guidelines for creating Software Engineering curriculum [5] Learning certain software engineering topics requires maturity, so these topics should be taught towards the end of the curriculum, while other material should be taught earlier to facilitate gaining that maturity. [6] Students must learn some application domain (or domains) outside of software engineering. [7] Software engineering must be taught in ways that recognize it is both a computing and an engineering discipline. [8] Students should be trained in certain personal skills that transcend the subject matter.
Ivanjica 2010 Software Engineering Guidelines for creating Software Engineering curriculum [9] Students should be instilled with the ability and eagerness to learn. [10] Software engineering must be taught as a problem-solving discipline. [11] The underlying and enduring principles of software engineering should be emphasized, rather than details of the latest or specific tools. [12] The curriculum must be taught so that students gain experience using appropriate and up-to-date tools, even though tool details are not the focus of the learning.
Ivanjica 2010 Software Engineering Guidelines for creating Software Engineering curriculum [13] Material taught in a software engineering program should, where possible, be grounded in sound research and mathematical or scientific theory, or else widely accepted good practice. [14] The curriculum should have a significant real-world basis. [15] Ethical, legal, and economic concerns, and the notion of what it means to be a professional, should be raised frequently. [16] In order to ensure that students embrace certain important ideas, care must be taken to motivate students by using interesting, concrete and convincing examples.
Ivanjica 2010 Software Engineering Guidelines for creating Software Engineering curriculum [17] Software engineering education in the 21st century needs to move beyond the lecture format: It is therefore important to encourage consideration of a variety of teaching and learning approaches. [18] Important efficiencies and synergies can be achieved by designing curricula so that several types of knowledge are learned at the same time. [19] Courses and curricula must be reviewed and updated regularly.
Ivanjica 2010 Faculty of Mathematics Faculty of Mathematics “produce” programmers and IT people for 25+ years Theoretical aspect of computing and mathematical modeling have strong background at Faculty of Mathematics Computer science courses and disciplines have strong background at Faculty of Mathematics There are significant and widely recognized scientific effort in different fields of Mathematics and Computer Science at Faculty of Mathematics There is some lack of student’s practical experience, which is inherited from the past
Ivanjica 2010 Faculty of Mathematics In this moment, Faculty of Mathematics has two modules (within two different study programs) for computing - one with stronger mathematical background and the other that is more practically oriented. Historical reasons (tradition) and the need to maintain common course base among different modules directs that modul with stronger mathematical background lasts 4+1+2 years. New, practically oriented module doesn’t have to be “backward compatible” and it lasts 3+2+2 years. That module has plenty Software engineering aspects and it will be discussed in more detail.
Ivanjica 2010 Faculty of Mathematics Curricula for new module, named Informatics, is formally accepted at University Conceal meeting held on Jun 26. 2006. From that time it has some minor changes that are imposed due to accreditation process. There are three levels of study within study program and module Informatics: bachelor, master and doctor. Curricula is designed mainly according CC CS 2001, e.g. to cover computer science. However, recommendations from CC SE 2004 are also considered. There is a high level of electability within curricula, so student in later semesters can choose among courses that are more theoretically oriented and courses that cover aspects of Software engineering – according to his own interests.
Ivanjica 2010 Informatics - bachelor
Ivanjica 2010 Informatics - bachelor
Ivanjica 2010 Informatics - bachelor
Ivanjica 2010 Informatics - bachelor
Ivanjica 2010 Informatics - master
Ivanjica 2010 Informatics - master
Ivanjica 2010 Informatics - master
Ivanjica 2010 Informatics - experience Measure of satisfaction for Software Engineering guidelines (green– fully satisfies, yellow – partially satisfies, red – does not satisfy) [1] Curriculum designers and instructors must have sufficient relevant knowledge and experience and understand the character of software engineering. [2] Curriculum designers and instructors must think in terms of outcomes. [3] Curriculum designers must strike an appropriate balance between coverage of material, and flexibility to allow for innovation. [4]Many SE concepts, principles, and issues should be taught as recurring themes throughout the curriculum to help students develop a software engineering mindset.
Ivanjica 2010 Software Engineering Measure of satisfaction for Software Engineering guidelines (green– fully satisfies, yellow – partially satisfies, red – does not satisfy) [5] Learning certain software engineering topics requires maturity, so these topics should be taught towards the end of the curriculum, while other material should be taught earlier to facilitate gaining that maturity. [6] Students must learn some application domain (or domains) outside of software engineering. [7] Software engineering must be taught in ways that recognize it is both a computing and an engineering discipline. [8] Students should be trained in certain personal skills that transcend the subject matter.
Ivanjica 2010 Software Engineering Measure of satisfaction for Software Engineering guidelines (green– fully satisfies, yellow – partially satisfies, red – does not satisfy) [9] Students should be instilled with the ability and eagerness to learn. [10] Software engineering must be taught as a problem-solving discipline. [11] The underlying and enduring principles of software engineering should be emphasized, rather than details of the latest or specific tools. [12] The curriculum must be taught so that students gain experience using appropriate and up-to-date tools, even though tool details are not the focus of the learning.
Ivanjica 2010 Software Engineering Measure of satisfaction for Software Engineering guidelines (green– fully satisfies, yellow – partially satisfies, red – does not satisfy) [13] Material taught in a software engineering program should, where possible, be grounded in sound research and mathematical or scientific theory, or else widely accepted good practice. [14] The curriculum should have a significant real-world basis. [15] Ethical, legal, and economic concerns, and the notion of what it means to be a professional, should be raised frequently. [16] In order to ensure that students embrace certain important ideas, care must be taken to motivate students by using interesting, concrete and convincing examples.
Ivanjica 2010 Software Engineering Measure of satisfaction for Software Engineering guidelines (green– fully satisfies, yellow – partially satisfies, red – does not satisfy) [17] Software engineering education in the 21st century needs to move beyond the lecture format: It is therefore important to encourage consideration of a variety of teaching and learning approaches. [18] Important efficiencies and synergies can be achieved by designing curricula so that several types of knowledge are learned at the same time. [19] Courses and curricula must be reviewed and updated regularly.
Ivanjica 2010 Conclusion We can analyze experiences in teaching only after first generation of students finish studies. In this moment we have a generations of students that successfully finished (year-by-year) both BS and MS studies on study program Informatics. Moreover, all the students that successfully finished studies either find adequate position in IT industry or continue their education on PhD studies. We should take into account fact that the first generation is usually better than later ones In the terms of student’s outcome, those students have all necessary knowledge to successfully continue theirs work in software industry or in academic world – depending of theirs interest, working habits and intellectual capability.
Ivanjica 2010 Conclusion High level of electability within curricula allows that student can choose his own path through field of computing. If student select courses that are from Software engineering field, he will obtain enough information to fully satisfies all requests that will be put in front of him during his work in IT industry. At the same time, at least in this moment, student have enough theoretical knowledge and intellectual skills to adapt technology and organizational changes that will be faced with. Many students in Informatics get additional practical knowledge through summer practice in various IT organizations (Faculty of Mathematics organize that in last four years)
Ivanjica 2010 Conclusion Student from Informatics somehow differs to students from other studding programs on Mathematical faculty: they are more goal-oriented, with proactive attitude. They don’t hesitate to ask questions and to express unsattisfaction, to raise initiatives and so on. Many of those students has lack of necessary mathematical and CS knowledge in the beginning of theirs studding. Moreover, such students at the beginning did not understand how much have to learn just to catch-up. At the same time, they are both motivated hard workers and good negotiators. Therefore, lot of experience that teachers have with students of Mathematics does not help in this situation.
Ivanjica 2010 Conclusion Faculty of Mathematics in Belgrade was not, is not and should not be ‘easy to finish’ faculty. Students should know that fact in advance. Determining ratio between abstract and concrete knowledge that student of Informatics should obtain is almost an art of some kind – it depends on various interleaved factors… Moreover, that ratio is changing over time…
Ivanjica 2010 Thank you! My e-mail address is vladaf@matf.bg.ac.rs.