Welcome to SOFTENG 281!

Here’s a quick overview of the key things for this course.




Prerequisites

It is assumed you have done ENGGEN 131.

We will be building on your general C programming knowledge:

  • Basic data types,
  • Functions (but we mostly call them “methods” in Java),

This course will be using the Java programming language to learn object-oriented programming (OOP):

  • Unlike in C (and C++), pointers will be less of a thing for us. However, Java does have object references, which will be important for us.
  • The focus will be on designing (and of course writing) beautiful code! This is one of the things you will appreciate about OOP.

We will in-passing review the general programming introductory topics above.

What if you haven’t done ENGGEN 131, or you forgot it all?

  • Not such a big deal!
  • Make sure you put in the time and effort to learn the Java code, and take advantage of support offered in this course:
    • Ed Discussion forum,
    • Drop-in labs that run multiple times every week,
    • Pay attention to all course announcements (sent as Canvas announcements, which should come through to your email),
    • Make sure you carefully follow the content and resources recommended on this website,
    • Plus there are plenty of additional online tutorials available for you.




Why this course?

In this course, we will be doing lots of coding… Yet, this course is NOT “about coding”!

SOFTENG 281 is about teaching you the art of software development. Yes, that’s right… it’s an art!

We will take an Engineering approach to develop software.

While it involves some technicalities surrounding the coding, developing complex software is more about:

  • Modeling a problem,
  • Designing a solution, and
  • Building a quality software product to address that problem.




Assessments

Edit


SOFTENG 281 is a very practical course.

Pretty much every major assessment involves practical programming tasks, including the invigilated tests.

For a list of all the assessments due in this course, see the Assessments page.


Due dates

Due dates are listed on the Assessments page.

You can also see them in the high-level overview of the course Calendar page.

Note that those dates are concrete:

  • According to University regulations, dates cannot change past the second week.
  • So please plan your coursework accordingly across all your courses.




Academic Integrity

Student Academic Conduct Statute

Available from the University website.

The University takes academic misconduct VERY SERIOUSLY.

It maintains a Register of Misconduct, which is kept at least a year after your graduation!

The following are just some examples:

  • Plagiarism (using work of others without acknowledgment or referencing),
  • Copying from another student’s work (with or without their knowledge),
  • Fabrication or falsification of data,
  • (plus many more)…

Regardless of who “copied from who”, all students involved get a ZERO for that assignment as part of the misconduct process.

Do we check for plagiarism?

Yes we do, and it’s very easy to pick out anything suspicious.

We use large-scale software similarity detection tools – they are specialised tools to detect structural similarity in code. It requires no human effort at all to detect.

If you think you “sneaked through” in an early assignment, do not assume you are safe to repeat for the next assignment. In particular, the larger assignments are the ones where it’s even easier to detect plagiarism. What’s more, when we find one suspicious case, we will retrospectively check all your previous assignments and have an even closer look at your code.

No matter how much an attempt is made to “shuffle code around” to make it look different, or “rename all variables”, the automated tools will simply ignore those changes!

Such changes are considered far too minor, and the tools still pick up on the general similarity of the overall program.

This is also why it’s important you use GitHub for all your assignments, and make frequent commits. This is so we can see the progress of your work. Any mysterious “big jumps” in your code will raise suspicion.




Useful (and hopefully fun) applications to help you learn

We have a range of ways to help you enjoy and learn in this course!

See the Resources section.




Assignments: GitHub

  • Our first activity is due early next week!
    • It’s worth 2%.
    • It’s easy.
    • It’s to make sure you have all the software you need set up.
    • It’s to make sure you understand how to use GitHub for all the following (and larger) assignments.
  • All assignments in this course must be using GitHub with frequent commits.
  • How frequent?
    • A good guideline is to make a commit for every significant change or progress you make, such that you are able to write a meaningful commit message for it. At the very least, you should be making a commit for every hour of work you put in, or every time you pass a new test case (at the very least). If you do more often, it’s better — especially if you are making “fast progress”.
  • You must use the GitHub repo cloned from the course’s GitHub Classroom invitations (link will be provided in the assignment instructions).
  • You can code in any IDE or operating system you want (but only VS Code is “supported” if you have questions).
  • Be sure to follow the instructions here: https://digitaledu.ac.nz/teaching/tutorials/github.


Edit

Don’t raise suspicion: Use Git properly!

Make sure you understand the expectations of Git etiquette for your assignments.

This is an essential aspect of assignments, otherwise you run the risk of not only losing marks, but also raising suspicion of potential plagiarism.




After Hello GitHub, it’s time for Assignment 1, and it’s straight into it!

  • Assignment 1 is composed of two checkpoints.
  • It’s substantially much more work than Hello GitHub.
  • The first checkpoint is due in just a few weeks!
  • Make the most of the TA help in the labs, especially if there are some things you aren’t understanding about Java.
    • But a friendly reminder:
      • TAs in labs can help with Java and OOP questions to help you understand the programming concepts.
      • If you want clarification on assignment “specifications” (i.e., an interpretation of the handout wording), then please address such clarifications to Ed Discussion instead.
  • Make a start as soon as you can, working on Assignment 1 while you are learning the relevant material.
  • Don’t rely on starting it only once you have “learnt everything”.
  • The aim of Checkpoint #1 is to get your coding early on in the course, because Checkpoint #2 will be a step up!