Author(s): Hayden Smith
Fundamentals of software engineering.
COMP1511: Learning programming by writing code to solve problems
COMP1531: Learning how to be a software engineer by architecting and building software in a team.
How this fits into your program
What's the difference between Computer Science and Software Engineering?
Computer Science is concerned with understanding how computers work and function - i.e. making a computer do things
Software Engineering is where we focus on building the right software for the right people, and making sure it's maintainable over time as it grows and people working on it change.
What's the difference between Computer Science and Software Engineering?
A genius sitting in their garage alone writing code and Instagram's developers might both be engaging equally in areas of computer science, but vastly differ in areas of software engineering.
What's the difference between Computer Science and Software Engineering?
No
Software Engineering:"The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software." (IEEE definition)
We want all of you to be good software engineers. That means we want you to be able to:
Being a software engineer is about realising that even though the code you write is intended for machines to use, it's even more important to consider other humans who read it.
And the reason that we want you to be a good software engineer is simple.
Software engineers are employed by organisations. Organisations have an interest in de-risking themselves in the long term.
Good software engineers apply what they know to help make teams and software last for the long term. And it helps reduce big hiccups.
Software Engineering
These topics are all about helping us iterate through the software development life cycle whilst building quality software and working well with others.
Requirements focus on understanding a problem we're trying to solve. If we don't do this right, we might build something that works well for the wrong purpose. We learn about requirements engineering, use cases, and validation.
Good design is about setting up good architecture for our system but also trying to write elegant code. We'll try and model systems and their complexity as well as write graceful and thoughtful code.
We need to actually code "the thing", and in this course we're using Javascript. We'll learn about Javascript's language features in multi-file projects.
Software needs to be verifiably correct as much as possible. We need confidence that it's doing "the thing" correctly. We'll learn about testing code statically and dynamically, exceptions, code coverage, and linting.
Code lives on more than just your computer. Code you use will be written by others, and code you write will need to be given to others. We learn about how to manage multi-package projects, and ensure that we have a continuous and automated way to integrate multiple people's code and deploy that to "users".
Teamwork is both about people and about tools. We'll learn about how to work with version control software between people, as well as how to function as a group of programmers.
Many software projects are now web-based and have frontends and backends. We'll be working in similar systems using HTTP and data layers to write a functioning server.
For this term every piece of COMP1531 content and code has been either written from scratch or modified from a previous term in a minor or major way.
We've done this to bring you new exciting content and also make the course smaller and easier.
We appreciate your patience throughout term as we make slight adjustments.