CS3282 semester can be divided into three stages: Stage 1: Learning, Stage 2: Contributing, Stage 3: Managing.
- Lectures
- Stage1: Learning
- Stage2: Contributing
- Stage3: Managing
- Team Structure
- Grading
- Pre-Module Preparations
THURS 1200-1400 in COM1-B103
Duration: Week 1 - 3 (3 weeks)
Objective: Learn the project’s codebase, workflows, tools, etc. under the guidance of the current developers.
- Set up the project and complete any orientation tasks specified by the project.
- Start submitting PRs.
- When choosing issues to fix, start with simpler issues and progressively move into more complex issues. Choose issues strategically so that your knowledge of the codebase expands naturally and incrementally (instead of picking unrelated issues at random).
- Pay attention to instructions provided e.g. Developer guides, troubleshooting guides, etc. Following those instructions will reduce the chances of encountering problems. When you encounter problems, try to solve yourself before asking for help.
- Your PRs will be reviewed by the developers. You are expected to learn from the review comments and improve the quality of your work as you go. You will lose marks if you keep committing the same mistake even after being corrected by the reviewer multiple times.
- Focus on learning how things are done in the project; hold back your suggestions on ‘how to do things better’ until stage 3 (i.e. until you have a more in-depth idea about the project).
Duration: Week 4 - 9 (6 weeks)
Objective: Contribute to the project based on the project’s priorities and you role in the project.
- Decide which areas (i.e. aspects, features, tools, etc. relevant to the project) of the project you want to be responsible for. Ideally, there should be at least two persons for each area (one primary, one secondary).
- Continue to contribute PRs, particularly those related to your areas.
- Get your PRs reviewed by peers (based on area division mentioned in point 1 above) before submitting them to dev team’s review.
- Pick areas that have synergy with your interests and your CS3281 deliverables. Note that your value to the project will be higher when you volunteer for ‘unpopular’ areas.
- The quality of your peer reviews will be as important to your grade as the quality of your code. If the PR is found to have problems later, those problems will count against both the author and the peer reviewer.
- Don’t always pick the same peer reviewer. The more peer reviewers you use, the more you can learn from peers.
Objective: Learn how to play a more senior role in a big project
Duration: Week 10 - 13 (4 weeks)
- Continue to submit PRs. In some cases you will be given permission to merge PRs yourself.
- Get involved in other tasks done by senior developers: e.g. refining the project workflow, making toolstack choices, mentoring new developers, triaging new issues/PRs, creating releases, dealing with users, etc.
- Take this as an opportunity to show how qualified you are for the ‘next level’. Those who perform well in this stage will be offered senior positions in the project in future.
Will be based on the project chosen. Could be subdivided into smaller teams within the project based on the specific areas you work in.
- Value added [90%] {individual}
-
Measures the quality and quantity of your work in terms of value added to the project
-
Graded weekly out of 10 marks, for weeks 2 - 13 (12 weeks). Final mark is based on the top 9 weekly scores.
-
To account for the learning curve, 10 free marks will be given for the first few weeks.
x W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12 W13 Free - 4 3 2 1 - - - - - - - - Graded out of - 6 7 8 9 10 10 10 10 10 10 10 10 Total - 10 10 10 10 10 10 10 10 10 10 10 10 -
Estimated grade based on weekly score: [9 :
A+
][8.5:A
][8 :A-
][7.5:B+
][7 :B
][6.5:B-
][6:C+
][5.5:C
] ...
-
- Professional conduct [10%] {individual}
- Measures how good your conduct was as a colleague and a team member: e.g. punctuality, reliability, participation, etc.
- Graded based on peer evaluations and instructor observations
- Dive deeper into the primary programming language of your intended project. Writing code for big projects require a lot more than a basic knowledge of the programming language.
- If you are weak in any of the main programming languages used in the project, start learning them now.
- TEAMMATES: Java, JavaScript, CSS, HTML
- SE-EDU: Java (including Java 8 features), CSS
- PowerPointLabs: C#
- Bigger code bases take time to learn. You can set up the project and start contributing before the semester starts. Even prior work can be counted for module grading later.
- All three internal projects use Git. Learn advanced Git features such as rebase, squash, blame, bisect, etc.