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 approx 1.5 yrs total relevant content cf Software Engineering degree 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 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) 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 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 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 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 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 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 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)! 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 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 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 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 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 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! 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