180 likes | 306 Views
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
E N D
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