Skip to content

Home

This is my opinionated reference material to the Software Engineering 11–12 Syllabus for NSW. I aim to cover the entire syllabus and then some with detailed information, references to further reading, tutorials, worked examples and solutions.

There are several reasons for creating this material:

  1. As of writing there is no Software Engineering textbook
  2. Students have asked for more details that they can refer to, above and beyond class slides and worksheets.
  3. Not everything on the Internet is true (shock horror) and students should be provided with accurate reference material as a base so as their own research will be more informed.
  4. I have 24 years of software engineering knowledge so why not give something back to the next generation of software engineers.
  5. The Syllabus is dense, lacks information, contradicts itself, has some outdated ideas and is somewhat poorly organised.
  6. Teachers do a great job with what they know but from my experience there is a very wide spectrum of teacher knowledge.
  7. Students shouldn't be disadvantaged based on their access to good, reliable information that can also be easily converted into their primary language.

Who Am I?

My name is Aaron Beverley and I have had a long and varied career in Software Engineering working for:

  • MASC a research division of Motorola working on a parasitics database for chip design, Verilog-AMS compiler and a breaking control system for the BMW 5 Series
  • CISRA a research division of Canon working on a document management system, UI for a Canon TV and Document control system for printing
  • Optiver a High Frequency Trading company, working and managing teams to build their back-end finance and middle office systems, trading platform and big data solution
  • The Trade Desk a programmatic advertising company where I helped build the APAC region to 70+ developers, built and managed a team focused on functionality crucial to the APAC advertising experience and managed a team improving the developer experience, the CI/CD build process and weekly release.

Prior to this I was a scientist working for QML and before that a few part time jobs bartending, merchandising, warehouse work and at a bowling alley. I have 2 graduate degrees, a Bachelor of Science in Microbiology and Biochemistry from The University of Queensland and a Bachelor of Information Technology from Griffith University. Over the past 20+ years I have gather some knowledge, managed some great people and made mistakes. I am at a cross road and have decided to head in a different direction and apply my knowledge to teaching Software subjects in NSW Secondary Schools. I am half way through a Masters in Teaching (Secondary) at Macquarie University. My hope is that I can help the next generation with learning and understanding the craft of software development and technology.

I have many hobbies, including gardening and have grown about 50 varieties of fruit and vegetables, I used to be a avid Ten Pin Bowler, I am always up for a grind in some open world PvE game, and when I have some spare time I tinker in my study with electronics, code or 3d printing.

Conventions

All sections tagged with a are directly related to the syllabus.

Where possible I will include several different coding languages in examples. The syllabus does require Python and when taught clearly students should not have much difficult apply the same principles to other languages. By providing several languages it may give those students that have programmed in something different a handy reference of how to code in the pythonic way.

Contributions

This documentation was started as a solo effort but everyone is welcome to contribute. I don't profess to know everything about Software Engineering, or what is expected of students or teachers in delivering the syllabus described by NESA. Please, if you feel you have something to add, submit a GitHub request or if something small create a GitHub issue. I will do my best to get the addition incorporated quickly but I am working as a teacher and have my own priorities to address. I may also push back or ask for further input or clarity before accepting the change.

Feedback

For any feedback, questions, issues or minor corrections please raise an issues ticket via github.