โšกโšก Welcome to COMP2511 โšกโšก

COMP2511 is a course that builds on the foundation of first-year CSE courses, and where we begin to answer the question "What does good software look like?". We're going to have a great term and we're all excited to meet you be it online or in person! COMP2511 has a teaching team of 34 passionate teaching staff - nearly all of whom have been in your shoes within the last few years. Everyone here will primarily interact with two tutors throughout this term.

Through the term you'll all be working not only with your tutors, but also with our lecturer and course admin.

Ashesh Mahidadia Nick Patrikeos

This page offers an outline of this course. Take the time to read it, as it covers everything that we expect you from this term, and everything you should expect from us!

- COMP2511 Teaching Team


Contents

1. Course Details ๐Ÿ“ฑ

Course Code COMP2511
Course Title The Art of Software Design (OO Design & Programming)
Convenor Dr Ashesh Mahidadia
Admin Nick Patrikeos
Class Account cs2511@cse.unsw.edu.au
Classes Timetable for all classes
Units of Credit 6
Course Website COMP2511 Course Website
Handbook Entry http://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) and COMP2521 (Data Structures and Algorithms).

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.

2.2 Postconditions: Learning & Education ๐Ÿ’ก

2.2.1 Student Learning Outcomes

The following are the intended learning outcomes of this course:

  1. Develop an appreciation for elegantly written software, and how to create and maintain well-designed systems ๐ŸŽจ
  2. Understand different design paradigms and methodologies, their background and application ๐Ÿ›๏ธ
  3. Understand and apply the principles of Object-Oriented Design to solve problems ๐Ÿš—
  4. Understand the role of and apply widely used Design Patterns to create extensible designs ๐Ÿฆ’
  5. Develop skills in both creating medium-scale systems from scratch, and working on existing systems as part of the Software Development Life Cycle โ™ป๏ธ
  6. Work with an enterprise programming language and IDE โš’๏ธ
  7. Explore the human factors at play in Software Design and Engineering; including ambiguity, the unknown and trade-offs ๐Ÿ‘ฝ

2.2.2 UNSW Graduate Capabilities

This course contributes to the development of the following graduate capabilities:

This course contributes to the following UNSW graduate attributes.

  • An in-depth engagement with the relevant disciplinary knowledge in its interdisciplinary context . The development of systems suitable for different user groups encourages consideration of the users of technology.
  • The capacity for analytical and critical thinking and for creative problem solving . The creation of software applications requires creative approaches to design and implementation and applying best practices.
  • The ability to engage in independent and reflective learning . Software design and implementation must be done independently and students benefit by reflecting on their experiences.
  • The skills required for collaborative and multidisciplinary work . Students gain experience in working within a collaborative environment.
  • The skills of effective communication . Through collaborative course work, students develop interpersonal communication skills and presentation and writing skills.

2.3 Course Philosophy

How to approach this course .

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 22T3 lectures will be delivered in person at the following locations:

  • Monday 4pm - 6pm, Wednesday 10am - 12pm - Central Lecture Block Theatre 7

An online alternative for lectures will be provided via Microsoft Teams . Lecture recordings will be made available via Microsoft Stream 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.

Tutorials contribute to your Coursework assessment, section Coursework (15%) below.

The tutorial questions will be available the week before each tutorial, and the solutions will be available at the end of the corresponding week.

If a you cannot attend a tutorial due to COVID-19 or other circumstances beyond your control, please email your tutor explaining your situation.

In the event of widespread difficulties that prevent students from coming onto campus such as train strikes and floods, the course will provide alternative offerings for in-person tutorials as needed.

Online tutorials and labs will be run via MS 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 to GitLab and will be assessed by your tutor. In some lab exercises, you will need to complete a reflective blog post on WebCMS outlining your thought process, approach and learnings.

Lab exercises will constitute a part of the Coursework Assessment, see the section Coursework (15%) below.

You will then need to demonstrate your work to your tutor during the following week's lab.

In the later weeks of the term, the laboratory sessions will also be used to conduct oral assessments on assignment submissions.

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.

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 email cs2511@cse.unsw.edu.au and we will take an average of your other weeks' labs for your lab mark for that week.

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. The Course Admin will also run an in-person consultation once a week on Mondays from 6-7pm following the lecture.

Online help sessions will be run via Microsoft Teams and using UNSW Hopper.

3.5 Assignments I and II

There will be three assignments .

Assignment I will be completed individually , released at the beginning of Week 2 and due at the end of Week 4.

Assignment II will be completed in pairs , released at the beginning of Week 5. Assignment II will have staggered deadlines, to enable students to choose their learning path on whether they wish to spend longer on Assignment II, or divert their attention to Assignment III.

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 II 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.

Assignment II is due on Friday of Week 8.

In both Assignments I and II, individuals and pairs respectively will be required to undertake an oral assessment (viva) with their tutor in the weeks following their submission. For Assignment I, this will occur in Weeks 5 or 7, and for Assignment II, this will occur in Weeks 8, 9 or 10. The oral assessment is not marked , but is instead an opportunity for you to present your work and receive feedback from your tutor.

3.6 Assignment III

Assignment III is only worth 5% core, with an additional 5% bonus that can be used to make up lost marks in the other assignments. Assignment III 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 III can either be completed in pairs or individually. Assignment III is due Week 10, Friday 5pm.

3.7 Final Exam

There will be a centrally timetabled final exam which will in your UNSW exam timetable.

There is no hurdle requirement for the exam.

3.8 Submission

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.9 Equitable Learning Plans

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.

4. Technology Stack ๐Ÿฅž

  • GitLab + Git for version control;
  • Confluence for course material, including lab and assignment specifications and for making blog posts - students will receive an email to register an Atlassian account to access the Confluence space;
  • WebCMS for course notices and formal course material.
  • Edstem for the course forum;
  • VSCode IDE . While students are welcome to use any IDE for their work, the course will only be able to provide support for VSCode. We highly recommend all students setup their IDE to work on their local machine . VSCode via SSH/SSHFS cause problems with VSCode extensions.
  • Java Version 11 for development. Instructions on setting up Java are provided in the Week 1 lab.
  • Gradle Version 7.2 for dependency and build management (Week 3 onwards). Instructions on setting up Gradle are provided in the Week 3 lab.
  • MS Teams for hybrid lectures and online tutorials.

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 Policy 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 , Grievance Officer , or one of the student representatives.

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 you are using these facilities. 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

The pages below describe the policies and procedures in more detail:

You should also read the following page which describes your rights and responsibilities in the CSE context:

6. Assessment โ˜‘๏ธ

Item Topic Due Core Bonus
Assignment I ๐Ÿ›ฐ๏ธ Object-Oriented Design Week 4 Friday, 5pm 20% N/A
Assignment II ๐Ÿ’€ Refactoring & Design Patterns Week 8 Friday, 5pm 25% N/A
Assignment III ๐ŸŒŠ Event-Driven &
Asynchronous Design
Week 10 Friday, 5pm 5% 5%
Coursework ๐Ÿ–‹๏ธ All All Weeks 15% N/A
Final Exam ๐ŸŽณ All Exam Period 35% N/A

6.1 Coursework (15%)

Each week there will be a series of core activities, including:

  • Tutorial attendance and participation;
  • 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.

Information on the Coursework assessment can be found in the respective page on Confluence.

6.2 Assignments (50%)

The marking criteria for the assignments will be outlined in the respective specifications.

6.3 Exam (35%)

In 22T3 the COMP2511 exam will be held in person in the CSE Labs, and invigilated .

International students who are not based in Sydney will be able to complete the exam online. Students who are in this position will need to email the class account describing their current residency. Students who are based in Sydney are required to take the exam in person, even if they have enrolled in online classes.

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

Please note the following schedule is subject to change.

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 8am
Assignment I Released - Monday
3
  • Exceptions
  • Generics & Collections
  • JUnit Testing
  • Shades of Grey
  • Design Principles
Lab 02 Due - Monday 8am
4
  • Refactoring
  • The Functional Paradigm
  • Introduction to Design Patterns
  • Strategy Pattern
  • State Pattern
Lab 03 Due - Monday 8am
Assignment I Due - Friday 5pm

5
  • Enterprise Software Engineering & The Unknown
  • Observer Pattern
  • Refactoring
  • Composite Pattern
  • Test Design
Assignment II Released - Monday
Lab 04 Due - Friday 5pm
6 Flexibility Week
7
  • Creational Patterns
  • Singleton Pattern
  • Asynchronous Design
  • Generic Programming
  • Decorator Pattern

Lab 05 Due - Monday 8am
8
  • Event Driven & Asynchronous Design
  • Iterator Pattern
  • Template Pattern
  • Adapter Pattern
  • Builder Pattern
Lab 07 Due - Monday 8am
Assignment III Released - Monday
Assignment II Due - Friday 5pm
9
  • Visitor Pattern
  • Risk Engineering
  • Advanced Type Theory (Bonus)
  • Design Patterns Case Study
  • Design Patterns Summary
Lab 08 Due - Friday 5pm
10
  • Guest Lecture
  • Introduction to Microservice Architecture
  • Course Wrap-Up
Lab 09 Due - Monday 8am
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 group project.

There are also many online resources available, and we will provide links to the most useful ones. Some are listed below. If you find others, please post links in the Comments section on the Course Outline page.

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

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.

This term we have significantly changed the assessment structure of the course by removing the team software project and moving to assignments . This change has been made to:

  • Better align the course assessment with the course learning outcomes;
  • Enable a more accurate assessment of students' performance;
  • Decrease the burden on students while maintaining quality education;
  • Enable students to focus on the design of their software in the major assessments;
  • Enable tutors and course staff more opportunities to provide feedback and guidance on design;

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.

Resource created Thursday 25 August 2022, 06:50:45 PM, last modified Thursday 15 September 2022, 10:20:51 PM.


Back to top

COMP2511 22T3 (The Art of Software Design (OO Design & Programming)) is powered by WebCMS3
CRICOS Provider No. 00098G