📚 Course OutlinePublic
The course outline for COMP2511 25T1. This page contains information you need to know about the course, including the course details, preconditions, teaching strategies, technology stack, student conduct, assessment, course schedule, and resources for students.
1. Course Details 📱
Info
The official course outline can be found on the Course Outline Finder.
Course Code | COMP2511 |
---|---|
Course Title | The Art of Software Design (OO Design & Programming) |
Course Convenor | Dr Ashesh Mahidadia |
Admin Team | Alvin Cherk Sai Nair Grace Kan Daniel Khuu Michael Mospan |
Class Account | cs2511@cse.unsw.edu.au |
Classes | Timetable for all classeshttps://timetable.unsw.edu.au/2025/COMP2511.html |
Units of Credit | 6 |
Course Website | COMP2511 Course Websitehttps://cgi.cse.unsw.edu.au/~cs2511 |
Handbook Entry | Handbook Entryhttp://www.handbook.unsw.edu.au/undergraduate/courses/current/COMP2511.html |
2. Course Summary 🧭
This course aims to introduce students to the foundational principles of designing software that is flexible, reusable and maintainable. Students are exposed to the Object-Oriented Programming paradigm and explore how OOP attempts to solve the problem of good software design, while learning of other paradigms such as the functional paradigm. Students explore fundamental Design Patterns in writing and testing of software and their role in architecture of software, applying these solutions to both theoretical and real-world problems. The course teaches an appreciation for elegantly written code, problem solving and finding well-designed solutions to problems that have longevity of software systems in mind.
2.1. Preconditions: Assumed Knowledge 🧠
Students are expected to have taken COMP1531 (Software Engineering Fundamentals)https://www.handbook.unsw.edu.au/undergraduate/courses/2025/COMP1531 and COMP2521 (Data Structures and Algorithms)https://www.handbook.unsw.edu.au/undergraduate/courses/2025/COMP2511.
It is also assumed that students taking this course are in their second year of study or further, and are comfortable with programming languages and thinking computationally.
It is generally not recommended that students take this course while in their first year of study, as the course is best taken with a level of technical and educational maturity beyond what would be considered average for a first-year student.
3. Teaching Strategies and Rationale
3.1. Lectures (4 hours each week)
Lectures will be used to present key concepts and practical examples of design techniques taught in this course.
In 25T1 lectures will be delivered in person at the following locations:
- Monday 9am - 11 am, in person at Mathews Theatre A (K-D23-201) or online on Teams
- Wednesday 11am - 1pm, in person at Physics Theatre (K-K14-19) or online on Teams
An online alternative for lectures will be provided via Microsoft Teams. Lecture recordings will be made available via Echo360 after the lecture.
3.2. Tutorials
Every week there is a one hour tutorial, which is scheduled before the lab. Tutorials serve the purpose of:
- Clarifying concepts discussed in lectures;
- Working through practical examples and demonstrations;
- Facilitating discussion and interactive learning;
You should make sure that you use them effectively by examining in advance the material to be covered in each week's tutorial, by asking questions, by offering suggestions and by generally participating.
The tutorial questions will be available the week before each tutorial, and the solutions will be available at the end of the corresponding week.
Online tutorials and labs will be run via Microsoft Teams.
All tutorials start in Week 1.
3.3. Laboratory Classes & Weekly Labs
Following the tutorial class each week, there will be a two-hour laboratory class, during which you will work on a variety of practical exercises that will enable you to apply the concepts taught in the lectures.
Each week, there will be several exercises to work on. The exercises will need to be submitted and will be assessed by your tutor. You will need to demonstrate your work to your tutor during the following week's lab. In some lab exercises, you may need to complete a reflective blog post outlining your thought process, approach and learnings.
In the later weeks of the term, the laboratory sessions may also be used to conduct oral assessments on assignment submissions.
Your coursework marks will be based on your lab marks; read the Coursework (15%) section below for further information.
As this course has a significant practical component, the weekly labs are important to help you acquire the necessary skills in the relevant tools and frameworks that will be used in the implementation of the assignments and also prepare you for the Final Exam. If you do not put a good amount of effort into the weekly labs you risk failing the Assignments and the Final Exam.
Solutions are not released for lab exercises due to plagiarism and educational reasons. Instead, more complex labs will have a retrospective 'walkthrough' video released.
Lab Marking Policy
All labs must be marked within two weeks of the due date. For example, the week 2 lab must be marked by week 4.
There are no late extensions on lab exercises, since we release the retrospectives directly following when the labs are due. Students who have extenuating circumstances and cannot complete their lab on time will need to apply for Special Consideration. If approved, the lab marks will be re-weighted based on the average of your other weeks' lab marks.
3.4. Help sessions
Help sessions are unprepared drop-in "clinics" where students and groups can go to seek help about course related matters, whether that be the project, tutorials, or labs. Current tutors will supervise each help session.
There will be a mix of online and in-person help sessions each week.
Online help sessions will be run via Microsoft Teams and using UNSW Hopper.
3.5. Assignments
There will be three assignments.
3.5.1. Assignments 1 and Assignments 2
Assignment I will be completed individually, released at the beginning of Week 2 and due at the end of Week 5.
Assignment II will be completed in pairs, released in the middle of Week 5 and is due at the end of Week 9.
All pairs must be from the same tutorial / lab. In classes where there are odd numbers, the tutor will form one group of three. Pairs for Assignment 2 will be formed in Week 3 and finalised in Week 4.
Both members of the pair must contribute to the completion of Assignment II; pairs with unequal contribution will have their mark individually adjusted. Students are expected to communicate proactively (while the assignment is being worked on) with their tutor regarding issues in contribution, rather than after the assignment is complete.
3.5.2. Assignment 3
Assignment 3 is an entirely bonus assignment that can be used to make up lost marks in the other assignments. Assignment 3 is designed for students who are looking to extend themselves and are interested in going deeper on the course concepts, working on real-world software. Students who do not wish to do this assignment aren't obliged to, and can simply complete Assignments I and II to achieve satisfactory completion of the course.
Assignment 3 can either be completed in pairs or individually. Assignment 3 is due Week 10 Sunday.
3.6. Final Exam
There will be a centrally timetabled in person (face-to-face) final exam which will be in your UNSW exam timetable. Please note that all students are required to take the exam in person, even if they have enrolled in online classes.
In order to pass the course, it is required for the student to achieve a minimum of 40% (20 out of 50) marks in the final exam.
3.7. Submission of Work
All work for the assignments and labs will only be considered for assessment if pushed/uploaded to the platform specified in the assessment specification. This includes that only work pushed/uploaded to the correct platform will be considered for determining contribution levels; and the owner of the account pushing/uploading the work will be deemed the sole author of the work.
3.8. Equitable Learning Plan (ELP)
Students who have an Equitable Learning Plan should email their plan to cs2511@cse.unsw.edu.au at the beginning of the term. Appropriate allowances to assessments for individual students will be made based on their ELP.
Please visit Equitable Learning Planhttps://cgi.cse.unsw.edu.au/~cs2511/25T1/els-spec-cons for more information about how we handle provisions in COMP2511.
4. Technology Stack 🥞
- GitLab + Git for version control
- Edstem for the course forum
- Visual Studio Code (VSCode) as the recommended IDE. This will be the editor available in the final exam.
- Java JDK 17 for development. Instructions on setting up Java are provided in the Week 1 lab.
- Gradle 8.8 for dependency and build management. Instructions on setting up Gradle are provided in the Week 1 lab.
- Microsoft Teams for hybrid lectures, online tutorials and online help sessions.
5. Student Conduct
The Student Code of Conduct (Information, Policy) sets out what the University expects from students as members of the UNSW community. As well as the learning, teaching and research environment, the University aims to provide an environment that enables students to achieve their full potential and to provide an experience consistent with the University's values and guiding principles. A condition of enrolment is that students inform themselves of the University's rules and policies affecting them, and conduct themselves accordingly.
In particular, students have the responsibility to observe standards of equity and respect in dealing with every member of the University community. This applies to all activities on UNSW premises and all external activities related to study and research. This includes behaviour in person, as well as behaviour on social media, for example Facebook groups set up for the purpose of discussing UNSW courses or course work. Behaviour that is considered in breach of the Student Code of Conduct as discriminatory, sexually inappropriate, bullying, harassing, invading another's privacy, or causing any person to fear for their personal safety is serious misconduct and can lead to severe penalties, including suspension or exclusion from UNSW.
If you have any concerns, you may raise them with your lecturer, or approach the School Ethics Officer (ethics-officer@cse.unsw.edu.au), the School Grievance Officer (grievance-officer@cse.unsw.edu.au), or one of the student representatives.
5.1. Plagiarism
Plagiarism is defined as using the words or ideas of others and presenting them as your own. UNSW and CSE treat plagiarism as academic misconduct, which means that it carries penalties as severe as being excluded from further study at UNSW. There are several on-line sources to help you understand what plagiarism is and how it is dealt with at UNSW:
Make sure that you read and understand these. Ignorance is not accepted as an excuse for plagiarism. In particular, you are also responsible that your assignment files are not accessible by anyone but you by setting the correct permissions in your CSE directory and code repository, if using. Note also that plagiarism includes paying or asking another person to do a piece of work for you, and then submitting it as your own work.
UNSW has an ongoing commitment to fostering a culture of learning informed by academic integrity. All UNSW staff and students have a responsibility to adhere to this principle of academic integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defined as using the words or ideas of others and passing them off as your own.
If you haven't done so yet, please take the time to read the full text of UNSW's policy regarding academic honesty and plagiarism.
6. Assessment ☑️
Item | Topic | Due | Core | Bonus |
---|---|---|---|---|
Assignment 1 🛰️ | Object-Oriented Design | Week 5 Friday, 3pm | 15% | N/A |
Assignment 2 💀 | Refactoring & Design Patterns | Week 9 Friday, 3pm | 20% | N/A |
Assignment 3 🌊 | Event-Driven & Asynchronous Design | Week 10 Friday, 3pm | 0% | 8% |
Coursework 🖋️ | All | All Weeks | 15% | N/A |
Final Exam 🎳 | All | Exam Period | 50% | N/A |
6.1. Coursework (15%)
Each week there will be a series of core activities, consisting of a series of Design & Programming lab exercises. In addition to these core activities, students will have the opportunity to undertake choice activities and provide further engagement via the course forum.
There are seven labs, each worth ten marks. We will cap total coursework marks at 60 (which will translate to 15%), leaving one lab's worth of marks as a buffer. We will add all seven lab marks and cap the total coursework marks to 60. The specific marking criteria for each lab will be outlined in the respective specifications. You can find a general guide for the critiera your tutor/lab assistant will use to assess you below.
6.2. Assignments (35%)
The marking criteria for the assignments will be outlined in the respective specifications.
6.3. Final Exam (50%)
In 25T1 the COMP2511 exam will be held in person in the CSE Labs, and invigilated. All the students are required to take the exam in person, even if they have enrolled in online classes.
In order to pass the course, it is required for the student to achieve a minimum of 40% (20 out of 50) marks in the final examination.
Students are eligible for a Supplementary Exam if and only if:
- Students cannot attend the final exam due to illness or misadventure. Students must formally apply for a special consideration, and it must be approved by the respective authority.
7. Course Schedule 📅
Warning
Week | Topic | Assessments |
---|---|---|
1 | Course Introduction Introduction to Java The Object-Oriented Paradigm | |
2 | Encapsulation Inheritance & Polymorphism Abstract Classes & Interfaces Domain Modelling Design by Contract | Lab 01 Due - Monday 10am Assignment I Released |
3 | Exceptions Generics & Collections JUnit Testing Design Principles | Lab 02 Due - Monday 10am |
4 | Refactoring The Functional Paradigm Introduction to Design Patterns Strategy Pattern State Pattern | Lab 03 Due - Monday 10am |
5 | Observer Pattern Refactoring Composite Pattern Test Design | Lab 04 Due - Monday 10am Assignment I Due - Friday 5pm Assignment II Released |
6 | Flexibility Week | |
7 | Creational Patterns Generic Programming Decorator Pattern | Lab 05 Due - Monday 10am |
8 | Event Driven Design Iterator Pattern Template Pattern Adapter Pattern Builder Pattern | Lab 07 Due - Monday 10am Assignment III Released |
9 | Visitor Pattern Risk Engineering Design Patterns Summary | Lab 08 Due - Monday 10am Assignment II Due - Friday 5pm |
10 | Guest Lecture Introduction to Microservice Architecture Course Wrap-Up | Assignment III Due - Friday 5pm |
11 | Exam Revision |
8. Resources for Students
There is no single text book that covers all of the material in this course at the right level of detail. The lectures should provide sufficient detail to introduce topics, and you will then study them in further depth in the labs and assignments.
Some suggestions for books that cover at least some of the topics in this course
- Head First Design Patterns, by Elisabeth Freeman and Kathy Sierra, The State University of New Jersey
- Refactoring: Improving the design of existing code, by Martin Fowler
There are also many online resources available.
9. Course Evaluation and Development 🦀
This course is evaluated each session using the myExperience system.
However, during the term students are encouraged to provide feedback both during lectures, during tutorials, and generally to course staff via email.
Students are always welcome to provide feedback at any point in the term on their experience by emailing the course account or completing the feedback form linked in the sidebar.
In response to the previous term's feedback, we introduced an in-person sample exam in the Week 10 lab and developed a framework to promote greater engagement during tutorials and laboratories.
Last updated on