1 / 18

Design of a Software Development Major

Design of a Software Development Major. Alan Fekete Bob Kummerfeld (University of Sydney). Our Challenge. To construct a coherent education for a future software developer distinct from education for sysadmin, systems analyst, etc Stay within the scope of a major in a generalist degree

toril
Télécharger la présentation

Design of a Software Development Major

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design of a Software Development Major Alan Fekete Bob Kummerfeld (University of Sydney)

  2. Our Challenge • To construct a coherent education for a future software developer • distinct from education for sysadmin, systems analyst, etc • Stay within the scope of a major in a generalist degree • approx 1.5 yrs total relevant content • cf Software Engineering degree

  3. Generalist degrees • University of Sydney has a tradition of broad degrees with lots of choice • was BSc, BA, BCom; now also BCST • Student must pick one relevant major • about half the degree (1.5 yrs) • also choose 0.5 yrs from the general area • approx 1 yr is completely free

  4. Multiple IT majors • IT Professions are quite diverse • they need diverse preparation • content and approach differ • As a field, “IT” is as widespread/important as “Science” • there is no “Science” major; instead we have Physics, Chemistry, Biology etc • cf “Computer Science” major from ACM CC2001 which gives common core of topics (with bias to theory)

  5. Software Development • We focus on knowledge and skills needed to develop sophisticated OO software • work in small groups (< dozen people) • varied, unpredictable, changing projects • for a small company or splinter group • job titles: “Java Developer”, “Ecommerce Application Developer”, etc • cf traditional DP applications • cf safety-critical systems, with high assurance, high cost approaches

  6. Context • A research-intensive university • ~30 academic staff • Large student numbers • 1200 EFTS • 900 in first year programming • 150-200 each year choose to major in IT, in many different generalist degrees • plus 150 software/computer engineers

  7. First Year: core software subjects • 2 semesters of Programming • agile process with “design by contract” • Problem Based Learning pedagogy • 3 projects on simulation, information storage/retrieval, language processing • technical content (using Java) • objects-early, collections, inheritance, exceptions, recursion • scalability, file I/O, ethics/access control, Composite pattern, grammars/parsing

  8. First Year: support subjects • 2 semesters of Mathematics • linear algebra and calculus • discrete mathematics and statistics • this amount of maths (though not specific topics) are enforced by degree rules in BSc, BIT, BCST

  9. Second Year • 6 subjects each 1/6th of a full semster! • 2 core software subjects • Software Development Methods • Concurrent Programming • 2 subjects shared with information systems • 2 recommended support subjects

  10. Second Year: software subjects • Software Development Methods • memory handling issues in C • testing regimes • use of scripts to combine existing tools • Concurrent programming • multithreaded programs in Java • esp in GUIs • synchronisation issues

  11. Second Year: shared subjects • Systems Analysis & Design • requirements elicitation • process models • ought to be more OO in approach (UML)! • Database Management • relational model and SQL • data modeling and normalisation • ought to have more coding (JDBC)!

  12. Second Year: support subjects • Computer System Organisation • from Networks major • Data Structures & Algorithms • from Principles of CS major • these are recommended but not enforced for Software Development majors

  13. Third Year • 6 subjects each 1/6th of a full semester! • 3 core software process subjects • design, coding, testing • 1 of 4 domain-specific subjects • UI, distributed objects, client-server database applications, network programming • a double weight group project

  14. Third Year: process subjects • Design • patterns, architectures, sophisticated UML features • Coding • complexities of C++ (templates, namespaces, etc), version control, personal process • Testing and V&V • coverage methods, automated testing tools

  15. Third Year: domain subjects • User Interfaces • both design and programming • Distributed Object Systems • components and middleware • Network Programming • socket-level, from Networks major • Database Applications • client-server, from Information Systems major

  16. Third Year: project • counts as two subjects • students form own groups (4-5 students per group) • students choose from a list of possible topics • supervised by academic staff or externally • assessment covers process, product, and reflection

  17. Status • first year in Java in 2001 • similar approach, content taught in Blue for several years • second year will be taught in 2002 • third year subjects taught from 2003 • some (eg UI) already taught in existing curriculum • first graduates at end of 2003!

  18. Conclusion • we have chosen topics that seem most beneficial to producing students who will be good software developers for sophisticated applications in fluid situations • we have kept total content to only 1.5 years • we can’t cover all SWEBOK • but students have room for other topics that interest them

More Related