Assignment 3: Working on existing software systems

Proposal: 20 October, 2022

Final submission: 10 November, 2022


In the previous two assignments, you have designed and implemented your own software systems for various complex tasks. Now, you are asked to work on an existing software system, familiarize yourself with its architecture, and design and implement some substantial modifications. Specifically, you should choose some widely used open-source software that you are familiar with, propose some changes that add moderately large features or fix some far-reaching problems, and then carry them out. This way, you will get to explore the architecture of a successful and (hopefully) well-designed system made by others, gain experience in navigating and modifying such a system, and see how well its architecture supports changes not anticipated by the original designers.

Because of the open-ended nature of the assignment, we are requiring you to first submit a proposal document explaining what you plan to do. This way we can try to ensure in advance that each group is doing a comparable amount of work.


In the first 1.5 weeks of the assignment, you should choose what open-source software project to work on, and what features and/or bug fixes you plan to add to the software.

Submit a brief proposal document by 20 October, describing the following:

  1. The existing software project, what it does, and its architecture and major components.
  2. The changes you plan to make, which components of the software they will affect, and how much work will be required and why.
  3. Why the changes will be new and are not already available somewhere, with supporting evidence.

Within a few days, we will review your proposal and give you feedback on whether your planned work is acceptable or requires some changes.

Final submission

After the proposal, you will have 3 weeks to implement your proposed work, along with any modifications we suggest.

During this phase, you may still find that your proposed work is too easy (much less effort than the previous assignments) or too hard (much more effort). If it is too easy, it is your responsibility to extend the plan and do something more. If too hard, you should document in your report the difficulties you encountered, all the things you tried to overcome them, and what more would be needed for successful completion. For fairness across groups doing very different tasks, we will evaluate you less on how much of the proposed work you completed and more on how much honest effort you put in.

The final submission date is 10 November. As usual, you will submit a report describing your work in full detail, explaining the architecture of the system and your changes along with their rationale. Include relevant diagrams of the architecture and screenshots of the result.

You must also fulfil all four of the additional requirements on the course webpage. Instead of submitting the code, simply make your Git project visible and include a link to it in your report.

Submission Instructions

List all of the resources you have used in the report. Any plagiarism will be grounds for severe penalties.

Both your proposal document and your final report should be submitted as PDFs with the name <entry_numbers_of_members_separated_by_underscores>.pdf to the Moodle site for this course. Only one member should make the submission for the whole group.

Grading Policy