Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Education of a Software Engineer Mehdi Jazayeri Presented by Matthias Hauswirth.

Similar presentations


Presentation on theme: "The Education of a Software Engineer Mehdi Jazayeri Presented by Matthias Hauswirth."— Presentation transcript:

1 The Education of a Software Engineer Mehdi Jazayeri Presented by Matthias Hauswirth

2 The Problem Practitioners’ vs. educators’ opinions on required skills of a software engineer Software engineers need (according to practitioners?) –Formal knowledge –Good judgment and taste –Experience –Ability to interact with clients –Ability to understand the needs of clients Teaching all this is hard –Especially in only one or two courses of SE

3 Classic SE Education “Formal knowledge” One project –Requirements pre-specified by instructor –Infrastructure predetermined –Schedule fixed –Project size trimmed –No compatibility or legacy requirements

4 Solution Design a new curriculum That is, USI’s Bachelor’s curriculum

5 Challenges of Teaching SE Practice vs. theory –Current state of practice vs. idealized theory? –Brooks’ accidental vs. essential complexity Development vs. management –Module design vs. group communication –Parnas: Same concepts apply to both Product vs. process –Design issues vs. development process issues Formal vs. empirical –Learning by studying vs. learning by doing –SE as mathematical science vs. empirical science

6 Trends Impacting SE Education Distribution –Teach communication, synchronization, caching, security, fault tolerance Pervasive computing –Requires dynamic systems (vs. simpler static systems) Internet –Execution & development platform –Platform for educational contents (eLearning) Proliferation of software tools and environments –Teach how to quickly pick up skills needed for new tools Software evolution –How to teach this, given that problems are in big (not toy) systems Software quality –Teach responsibilities of a professional software engineer Computing platform –What middleware platform to teach Interdisciplinary informatics –Teach abstraction and modeling skills

7 Required Non-Technical Skills Communication –With clients, peers, managers, suppliers, … –Basis for requirements engineering –Abstraction and modeling skills Ability to work in a team –Making room for others –Making compromises –Asserting oneself –Accepting others’ judgements Experience Good judgment –Comes from making many mistakes

8 Solution Project-Focused Curriculum Create a real-world environment at the university –Enable learning technical and non-technical skills in a formal way –In context of carefully designed projects Integrative and comprehensive Not just associated with a single course –Student time Half classroom learning Half projects

9 Goal of Projects Show application of theory in practice Integrate material from various subjects Teach proper use of tools Show relationship between accidental and essential complexity Enhance teamworking ability including communication skills Atelier

10 Example: Teaching of Programming Include issues with –Compilation –Editing –Testing –Configuration management –Defect tracking –Help system –Documentation generation Systematically teach students about the whole programming environment

11 Our Curriculum Structure Theory –For the identification, specification, analysis of problems –Discrete math, logic, analysis, statistics, theoretical computer science Technology –Programming languages, operating systems, middleware, programming environments System approach –Building large systems, predicting their behavior and impact Interdisciplinary applications –Teach models and modeling techniques of other disciplines –Interdisciplinary projects and teams Communication and teamwork –Group project –Building architecture encouraging teamwork

12 Our Teaching Methodology In general, project-based learning –Engages student –Increases motivation –For certain fields/crafts, learning by doing is most effective For informatics, also: –Projects integrate different issues –Apply system-level thinking –See technologies in use –Appreciate difficulties and benefits of teamwork

13 Our Course Structure First year –Programming Fundamentals –Computer Architecture –Discrete Structures I –Computer Network Architecture –Mathematics –Technology Lab –Semester Projects Second year –Discrete Structures II –Algorithms and Data Structures –Software Design –Net-Centric Computing –Software Development –Information and Knowledge Management I –Life Sciences Models –Technology Lab –Semester Projects Third year –Hardware and Software Co-Design –The Business of Software –Information and Knowledge Management II –Technology Lab –Economics and Business Models –Informatics Elective –Semester Projects –Final Project Notes Technology Lab –E.g. by distance learning Software Design –Examples of good design –Lectures by good designers Software Development –Tools and processes Net-Centric Computing –Distributed Systems view –Resource management (OS) Information and Knowledge Management –Databases –Artificial Intelligence –Programming Languages Business of Software –Ethics –Professional issues –Licensing models

14 Discussion Questions Is there a problem at all? Is a new curriculum really the solution for the problem? Is teaching all these “soft skills” possible/effective/useful? Is spending 50% of student time on problem-based learning the right approach?


Download ppt "The Education of a Software Engineer Mehdi Jazayeri Presented by Matthias Hauswirth."

Similar presentations


Ads by Google