This site is from a past semester! The current version will be here when the new semester starts.
CS2103/T 2020 Aug-Dec
  • Full Timeline
  • Week 1 [Mon, Aug 10th]
  • Week 2 [Fri, Aug 14th]
  • Week 3 [Fri, Aug 21st]
  • Week 4 [Fri, Aug 28th]
  • Week 5 [Fri, Sep 4th]
  • Week 6 [Fri, Sep 11th]
  • Week 7 [Fri, Sep 18th]
  • Week 8 [Fri, Oct 2nd]
  • Week 9 [Fri, Oct 9th]
  • Week 10 [Fri, Oct 16th]
  • Week 11 [Fri, Oct 23rd]
  • Week 12 [Fri, Oct 30th]
  • Week 13 [Fri, Nov 6th]
  • Textbook
  • Admin Info
  • Dashboards
  •  Individual Project (iP):
  • Individual Project Info
  • iP Upstream Repo
  • iP Showcase
  • iP Code Dashboard
  • iP Progress Dashboard

  •  Team Project (tP):
  • Team Project Info
  • Addressbook-level3
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • Report Bugs
  • Forum
  • Gitter (Chat)
  • Instructors
  • Announcements
  • Files
  • Tutorial Schedule
  • Java Coding Standard
  • Git Conventions
  • Forum Activities Dashboard
  • Participation Dashboard
  • Week 4 [Fri, Aug 28th] - Project

    iP:

    1. Review some peer PRs counted for participation
    2. Learn from others (optional)
    3. Add Increments as branches: A-Gradle, A-CheckStyle, Level-10, A-Varargs

    tP:

    1. Start weekly project meetings
    2. Start a collaborative doc to take project notes before the tutorial
    3. Decide on an overall project direction (user profile, problem addressed) before the tutorial

    iP

    1 Review some peer PRs counted for participation

    Please wait till Mon, Aug 31st to start this task, to give others a few extra days to create the PR if they haven't done so yet.

    This task is worth 2x2=4 participtaion points.

    • Learn how you should review PRs in this task:
    Video

    The PR review stage is a dialog between the PR author and members of the repo that received the PR, in order to refine and eventually merge the PR.

    Given below are some steps you can follow when reviewing a PR.

    1. Locate the PR:

    1. Go to the GitHub page of the repo.
    2. Click on the Pull requests tab.
    3. Click on the PR you want to review.

    2. Read the PR description. It might contain information relevant to reviewing the PR.

    3. Click on the Files changed tab to see the diff view.

    4. Add review comments:

    1. Hover over the line you want to comment on and click on the icon that appears on the left margin. That should create a text box for you to enter your comment.
      To mark multiple lines, click-and-drag the icon.
    2. Enter your comment.
      This page @SE-EDU/guides has some best practices PR reviewers can follow.
    3. After typing in the comment, click on the Start a review button (not the Add single comment button. This way, your comment is saved but not visible to others yet. It will be visible to others only when you have finished the entire review.

    4. Repeat the above steps to add more comments.

    5. Submit the review:

    1. When there are no more comments to add, click on the Review changes button (on the top right of the diff page).
    2. Type in an overall comment about the PR, if any. e.g.,
      Overall, I found your code easy to read for the most part except a few places
      where the nesting was too deep. I noted a few minor coding standard violations
      too. Some of the classes are getting quite long. Consider splitting into smaller
      classes if that makes sense.
      LGTM is often used in such overall comments, to indicate Looks good to merge.
      nit is another such term, used to indicate minor flaws e.g., LGTM, almost. Just a few nits to fix..
    3. Choose Approve, Comment, or Request changes option as appropriate and click on the Submit review button.

    • Step 1 Note these additional guidelines:

      • Read the Best practices for reviewing PRs @SE-EDU/guides. You are expected to follow all of them.
      • If the PR has received some review comments already, feel free to confirm/complement/question those comments in your review. Also, look for things the previous reviewers may have missed.
      • At the end of the review, choose Comment (i.e., not Approve or Request changes)
    • Step 2 Do the first PR review as follows.

      • Comment on coding standard violations only.
      • The review allocation is given in the panel below.
    Tutorial Reviewer First PR to review Backup PR to review
    CS2103-F09 sc-arecrow plosslaw sigmund-c
    CS2103-F09 jayarengam josuaaah rtshkmr
    CS2103-F09 theodoreleebrant lerxcl jerrylchong
    CS2103-F09 HCY123902 HynRidge kerkpy
    CS2103-F09 richardcom bowei-yu Vielheim
    CS2103-F09 Caiyi34777 jayarengam josuaaah
    CS2103-F09 davidsqf richardcom bowei-yu
    CS2103-F09 Stefan-Jiang sun-yitao cx0810
    CS2103-F09 Vielheim angrybunny123 Rahul0506
    CS2103-F09 CodyChew Anthony6401 pennhanlee
    CS2103-F09 jflim98 Wong-ZZ youyingfeng
    CS2103-F09 josuaaah rtshkmr claraadora
    CS2103-F09 xnmng HCY123902 HynRidge
    CS2103-F09 Jargonx therizhao mgiang2015
    CS2103-F09 tigerting98 cupofjoee yejiadong
    CS2103-F09 youyingfeng chrystalquek abdurrahmanfaqihiskandar
    CS2103-F09 cx0810 esmanda3w raysonkoh
    CS2103-F09 Syasyazman TanLeYang jonasngs
    CS2103-F09 constancensq bchenghi hyngkng
    CS2103-F09 esmanda3w raysonkoh theodoreleebrant
    CS2103-F10 plosslaw sigmund-c shadowezz
    CS2103-F10 abdurrahmanfaqihiskandar CodyChew Anthony6401
    CS2103-F10 jeminsieow constancensq bchenghi
    CS2103-F10 sudogene gloon99 luciatirta
    CS2103-F10 WangZijun97 foojingyi kevnw
    CS2103-F10 sigmund-c shadowezz royleochan
    CS2103-F10 youaremysky99 luo-git urieltan
    CS2103-F10 gloon99 luciatirta Syasyazman
    CS2103-F10 therizhao mgiang2015 justacasul
    CS2103-F10 kerkpy pangpuncake aqcd
    CS2103-F10 royleochan LeeEnHao Stefan-Jiang
    CS2103-F10 nopenotj kwannoel ducbinh2611
    CS2103-F10 Whleee tnsyn murtubak
    CS2103-F10 yejiadong nopenotj kwannoel
    CS2103-F10 EkamSinghPandher sagarsureka sudogene
    CS2103-F10 WhiteLio chuyiting tankangliang
    CS2103-F10 Jillzyt chrisgzf gabztcr
    CS2103-F10 wakululuu li-s khenghun
    CS2103-F10 tnsyn murtubak MerlinLim
    CS2103-F10 jerrylchong michael-setia printinghelloworld
    CS2103-T14 XIA-LIYI FizzyAgent Robinho98
    CS2103-T14 timjkong sogggy dextertanyj
    CS2103-T14 jeannetoh99 Elgoh iamjamestan
    CS2103-T14 UnicornJin ureshiiYing ruilingk
    CS2103-T14 Perpetual09 kkangs0226 drake25122000
    CS2103-T14 jzwoo keanecjy wengfaing
    CS2103-T14 drake25122000 erinmayg gan-jw
    CS2103-T14 florenciamartina patricktan6 Perpetual09
    CS2103-T14 erinmayg gan-jw yanchenglee98
    CS2103-T14 justintzuriel vigneshbhuvan-nus IlyaRin
    CS2103-T14 lyeyixian moyj01 WM71811
    CS2103-T14 jiaweiteo pengxiangg akgrenSoar
    CS2103-T14 Zhang-Yunjie fall9x hanweic53
    CS2103-T14 mehak24k kelvinvin limkoonkiat
    CS2103-T14 onglijin nicholas-gcc teekoksiang
    CS2103-T14 underthehai IronBiscuit Lysire
    CS2103-T14 jialin7878 khinkhinn halcon-blanco
    CS2103-T14 zeying99 shaokiat tanweijie123
    CS2103-T14 gan-jw yanchenglee98 kimberlyohq
    CS2103-T14 CalistaIo Sruthisarav ZhangWanlin98
    CS2103-T16 WeiJie96 ChenXJ98 claracheong4
    CS2103-T16 ijavierja hakujitsu raythx98
    CS2103-T16 danadi7 davidliew9 Wincenttjoi
    CS2103-T16 Raymond0212 ethan-l-m-e FH-30
    CS2103-T16 e0316059 nuovonatura theyifan
    CS2103-T16 chloelee767 shawn-nyk Diwu-Yi
    CS2103-T16 Joven-Heng kunnan97 zhiayang
    CS2103-T16 jetnew MarcTzh khoodehui
    CS2103-T16 KendrewChan duckmoon99 tanzhuoyao-nus
    CS2103-T16 Ebolaeater augustinekau siqiang-ng
    CS2103-T16 duckmoon99 tanzhuoyao-nus yanbingtao
    CS2103-T16 mkeoliya KohHanMing minzzelo
    CS2103-T16 Lysire zeranium97 siangernlow
    CS2103-T16 ernestlim8 Ashley-Lau florenciamartina
    CS2103-T16 JingYenLoh jiaweiteo pengxiangg
    CS2103-T16 MorningLit BobbyZhouZijian KendrewChan
    CS2103-W14 jeffreytjs rgabelarde tanwayne890
    CS2103-W14 zhengweii yuming7144 lamlaaaam
    CS2103-W14 lebencwb Hazel1603 Asuraxsoul
    CS2103-W14 Criss-Wang liuyxxy jacetjy
    CS2103-W14 tohyuting hogantan yanlynnnnn
    CS2103-W14 hakiem526 wayne987 fanminj
    CS2103-W14 marcus2k erisjacey gsmoon97
    CS2103-W14 Marcon2509 wilinetan Ben-Hanan
    CS2103-W14 munharsha iamgenechua lll-jy
    CS2103-W14 iamgenechua lll-jy Rogerlys
    CS2103-W14 dianneloh9 ethanso56 AlexCQY
    CS2103-W14 Christopher-LM kormingsoon LeeMingDe
    CS2103-W14 kormingsoon LeeMingDe raymondge
    CS2103-W14 shermz-lim galvinleow LinkedInk
    CS2103-W14 Jaylenlee Nauman-S bangyiwu
    CS2103-W14 SherryWu178 kswk nweiyue
    CS2103-W14 zeling595 eugene3231 theyellowfellow
    CS2103-W14 maxxyh TheSpaceCuber simonteozw
    CS2103-W14 Hazel1603 Asuraxsoul JunCheng98
    CS2103-W14 qlchan24 itssodium EthanTheGoondu
    CS2103T-F11 raysonkoh theodoreleebrant lerxcl
    CS2103T-F11 tankangliang MatthiasLHK rnmy
    CS2103T-F11 qwoprocks tigerting98 cupofjoee
    CS2103T-F11 chrisgzf gabztcr rolandyuwy
    CS2103T-F11 kwannoel ducbinh2611 PrestonTYR
    CS2103T-F11 MerlinLim Caiyi34777 jayarengam
    CS2103T-F11 claraadora petrickjerico blackonyyx
    CS2103T-F11 minhhhnguyen2000 divakarmal davidcaiqifan
    CS2103T-F11 printinghelloworld jonahtanjz EkamSinghPandher
    CS2103T-F11 rtshkmr claraadora petrickjerico
    CS2103T-F11 hyngkng WhiteLio chuyiting
    CS2103T-F11 sun-yitao cx0810 esmanda3w
    CS2103T-F11 LeeEnHao Stefan-Jiang sun-yitao
    CS2103T-F11 gabztcr rolandyuwy jflim98
    CS2103T-F11 shadowezz royleochan LeeEnHao
    CS2103T-F11 andreatanky Ma-Yueran qwoprocks
    CS2103T-F11 Rishi5154 WangZijun97 foojingyi
    CS2103T-F11 ChooJiaXin Jillzyt chrisgzf
    CS2103T-F11 chrystalquek abdurrahmanfaqihiskandar CodyChew
    CS2103T-F11 rnmy davidsqf richardcom
    CS2103T-F12 ducbinh2611 PrestonTYR sc-arecrow
    CS2103T-F12 urieltan Whleee tnsyn
    CS2103T-F12 murtubak MerlinLim Caiyi34777
    CS2103T-F12 luo-git urieltan Whleee
    CS2103T-F12 li-s khenghun Jargonx
    CS2103T-F12 MatthiasLHK rnmy davidsqf
    CS2103T-F12 davidcaiqifan youaremysky99 luo-git
    CS2103T-F12 lerxcl jerrylchong michael-setia
    CS2103T-F12 Ma-Yueran qwoprocks tigerting98
    CS2103T-F12 kevnw SONGYI98 andreatanky
    CS2103T-F12 Anthony6401 pennhanlee jeminsieow
    CS2103T-F12 luciatirta Syasyazman TanLeYang
    CS2103T-F12 michael-setia printinghelloworld jonahtanjz
    CS2103T-F12 caleblyx wakululuu li-s
    CS2103T-F12 jonasngs minhhhnguyen2000 divakarmal
    CS2103T-F12 chuyiting tankangliang MatthiasLHK
    CS2103T-F12 cupofjoee yejiadong nopenotj
    CS2103T-F12 bowei-yu Vielheim angrybunny123
    CS2103T-F12 petrickjerico blackonyyx ChooJiaXin
    CS2103T-F12 HynRidge kerkpy pangpuncake
    CS2103T-F13 rolandyuwy jflim98 Wong-ZZ
    CS2103T-F13 blackonyyx ChooJiaXin Jillzyt
    CS2103T-F13 SONGYI98 andreatanky Ma-Yueran
    CS2103T-F13 pangpuncake aqcd caleblyx
    CS2103T-F13 khenghun Jargonx therizhao
    CS2103T-F13 bchenghi hyngkng WhiteLio
    CS2103T-F13 justacasul wang-jun-hao Rishi5154
    CS2103T-F13 jonahtanjz EkamSinghPandher sagarsureka
    CS2103T-F13 pennhanlee jeminsieow constancensq
    CS2103T-F13 aqcd caleblyx wakululuu
    CS2103T-F13 TanLeYang jonasngs minhhhnguyen2000
    CS2103T-F13 PrestonTYR sc-arecrow plosslaw
    CS2103T-F13 mgiang2015 justacasul wang-jun-hao
    CS2103T-F13 angrybunny123 Rahul0506 xnmng
    CS2103T-F13 foojingyi kevnw SONGYI98
    CS2103T-F13 divakarmal davidcaiqifan youaremysky99
    CS2103T-F13 Rahul0506 xnmng HCY123902
    CS2103T-F13 wang-jun-hao Rishi5154 WangZijun97
    CS2103T-F13 Wong-ZZ youyingfeng chrystalquek
    CS2103T-F13 sagarsureka sudogene gloon99
    CS2103T-T09 geoboom GabriellaTeh CalistaIo
    CS2103T-T09 Robinho98 vanGoghhh Ziyang-98
    CS2103T-T09 mhdsyfq JoeyToh lettuceman4
    CS2103T-T09 iqbxl sgn00 Raymond0212
    CS2103T-T09 gabrielsimbingyang YangYue128-helen nicholasyeo
    CS2103T-T09 vigneshbhuvan-nus IlyaRin ZoroarkDarkrai
    CS2103T-T09 limkoonkiat g-erm leeyorktat
    CS2103T-T09 silvernitro timjkong sogggy
    CS2103T-T09 shaokiat tanweijie123 GilbertTan19
    CS2103T-T09 khor-jingqian chloelee767 shawn-nyk
    CS2103T-T09 yan-soon zeying99 shaokiat
    CS2103T-T09 nicholasyeo samlsm Persdre
    CS2103T-T09 Licheng-Wu UnicornJin ureshiiYing
    CS2103T-T09 peter-yeh WeiJie96 ChenXJ98
    CS2103T-T09 leeyorktat gabrielsimbingyang YangYue128-helen
    CS2103T-T09 patricktan6 Perpetual09 kkangs0226
    CS2103T-T09 yuxuanxc chuyouchia dhafinrazaq
    CS2103T-T09 IlyaRin ZoroarkDarkrai orzymandias
    CS2103T-T10 dextertanyj underthehai IronBiscuit
    CS2103T-T10 hanweic53 xnoobftw hjl99
    CS2103T-T10 seowalex geoboom GabriellaTeh
    CS2103T-T10 ethan-l-m-e FH-30 EkChinHui
    CS2103T-T10 boundtotheearth wenhaogoh joshtyf
    CS2103T-T10 pr4aveen iqbxl sgn00
    CS2103T-T10 junlong4321 howtoosee ijavierja
    CS2103T-T10 yingqi0607 ya0-yuan Ebolaeater
    CS2103T-T10 zhiayang mhdsyfq JoeyToh
    CS2103T-T10 samlsm Persdre mkeoliya
    CS2103T-T10 hjl99 jetnew MarcTzh
    CS2103T-T10 ruixuantan schoolex peter-yeh
    CS2103T-T10 ypinhsuan pr4aveen iqbxl
    CS2103T-T10 kkangs0226 drake25122000 erinmayg
    CS2103T-T10 fall9x hanweic53 xnoobftw
    CS2103T-T10 cwenling josiahkhoo hopinxian
    CS2103T-T10 claracheong4 Zhang-Yunjie fall9x
    CS2103T-T10 ruilingk BreadPeanutButter silvernitro
    CS2103T-T10 Trav1sT LimZeWeiDennis Door-oof
    CS2103T-T10 khoodehui AudreyFelicio e0316059
    CS2103T-T11 FizzyAgent Robinho98 vanGoghhh
    CS2103T-T11 AaronnSeah Joven-Heng kunnan97
    CS2103T-T11 Asthenosphere maguireong JingYenLoh
    CS2103T-T11 sebastiantoh pongzers foongsq
    CS2103T-T11 schoolex peter-yeh WeiJie96
    CS2103T-T11 yu-ming-chen justintzuriel vigneshbhuvan-nus
    CS2103T-T11 teekoksiang jzwoo keanecjy
    CS2103T-T11 yanchenglee98 kimberlyohq Avalionnet
    CS2103T-T11 athuyaoo AaronnSeah Joven-Heng
    CS2103T-T11 wenhaogoh joshtyf jmleong666
    CS2103T-T11 sogggy dextertanyj underthehai
    CS2103T-T11 jmleong666 jeannetoh99 Elgoh
    CS2103T-T11 davidliew9 Wincenttjoi rachel170
    CS2103T-T11 lowjiefeng1998 onglijin nicholas-gcc
    CS2103T-T11 IronBiscuit Lysire zeranium97
    CS2103T-T11 Elgoh iamjamestan kc-98
    CS2103T-T11 EkChinHui pockii xz0127
    CS2103T-T11 Door-oof JinHao-L nicktohzyu
    CS2103T-T11 hakujitsu raythx98 cwenling
    CS2103T-T11 howtoosee ijavierja hakujitsu
    CS2103T-T12 nuovonatura theyifan MorningLit
    CS2103T-T12 YangYue128-helen nicholasyeo samlsm
    CS2103T-T12 Avalionnet ruixuantan schoolex
    CS2103T-T12 wengfaing boundtotheearth wenhaogoh
    CS2103T-T12 zeranium97 siangernlow jordanyoong
    CS2103T-T12 halcon-blanco amylzting Asthenosphere
    CS2103T-T12 Wincenttjoi rachel170 hhdqirui
    CS2103T-T12 yanbingtao seowalex geoboom
    CS2103T-T12 xnoobftw hjl99 jetnew
    CS2103T-T12 dearvae zhaolingshan pooty3
    CS2103T-T12 ZhangWanlin98 yingqi0607 ya0-yuan
    CS2103T-T12 MarcTzh khoodehui AudreyFelicio
    CS2103T-T12 ureshiiYing ruilingk BreadPeanutButter
    CS2103T-T12 BobbyZhouZijian KendrewChan duckmoon99
    CS2103T-T12 GabriellaTeh CalistaIo Sruthisarav
    CS2103T-T12 JinHao-L nicktohzyu Licheng-Wu
    CS2103T-T12 xz0127 junlong4321 howtoosee
    CS2103T-T12 WM71811 lowjiefeng1998 onglijin
    CS2103T-T12 Diwu-Yi ameliatjy ernestlim8
    CS2103T-T12 Persdre mkeoliya KohHanMing
    CS2103T-T13 hopinxian xyzhangg yuxuanxc
    CS2103T-T13 KohHanMing minzzelo sebastiantoh
    CS2103T-T13 siangernlow jordanyoong mehak24k
    CS2103T-T13 josiahkhoo hopinxian xyzhangg
    CS2103T-T13 jordanyoong mehak24k kelvinvin
    CS2103T-T13 ChenXJ98 claracheong4 Zhang-Yunjie
    CS2103T-T13 Ziyang-98 jialin7878 khinkhinn
    CS2103T-T13 joshtyf jmleong666 jeannetoh99
    CS2103T-T13 GilbertTan19 cheoksuanne Trav1sT
    CS2103T-T13 benclmnt athuyaoo AaronnSeah
    CS2103T-T13 FH-30 EkChinHui pockii
    CS2103T-T13 kelvinvin limkoonkiat g-erm
    CS2103T-T13 tanweijie123 GilbertTan19 cheoksuanne
    CS2103T-T13 nicholas-gcc teekoksiang jzwoo
    CS2103T-T13 DreamerDragon lyeyixian moyj01
    CS2103T-T13 hhdqirui dearvae zhaolingshan
    CS2103T-T13 cheoksuanne Trav1sT LimZeWeiDennis
    CS2103T-T13 maguireong JingYenLoh jiaweiteo
    CS2103T-T13 lettuceman4 ypinhsuan pr4aveen
    CS2103T-T13 dhafinrazaq DreamerDragon lyeyixian
    CS2103T-T15 iamjamestan kc-98 seanjyjy
    CS2103T-T15 shawn-nyk Diwu-Yi ameliatjy
    CS2103T-T15 pengxiangg akgrenSoar yan-soon
    CS2103T-T15 chuyouchia dhafinrazaq DreamerDragon
    CS2103T-T15 seanjyjy XIA-LIYI FizzyAgent
    CS2103T-T15 pooty3 yu-ming-chen justintzuriel
    CS2103T-T15 ZoroarkDarkrai orzymandias benclmnt
    CS2103T-T15 AudreyFelicio e0316059 nuovonatura
    CS2103T-T15 nicktohzyu Licheng-Wu UnicornJin
    CS2103T-T15 rachel170 hhdqirui dearvae
    CS2103T-T15 Sruthisarav ZhangWanlin98 yingqi0607
    CS2103T-T15 orzymandias benclmnt athuyaoo
    CS2103T-T15 theyifan MorningLit BobbyZhouZijian
    CS2103T-T15 LimZeWeiDennis Door-oof JinHao-L
    CS2103T-T15 Ashley-Lau florenciamartina patricktan6
    CS2103T-T15 ya0-yuan Ebolaeater augustinekau
    CS2103T-T15 foongsq khor-jingqian chloelee767
    CS2103T-T15 keanecjy wengfaing boundtotheearth
    CS2103T-T15 kc-98 seanjyjy XIA-LIYI
    CS2103T-T15 amylzting Asthenosphere maguireong
    CS2103T-T17 akgrenSoar yan-soon zeying99
    CS2103T-T17 sgn00 Raymond0212 ethan-l-m-e
    CS2103T-T17 moyj01 WM71811 lowjiefeng1998
    CS2103T-T17 tanzhuoyao-nus yanbingtao seowalex
    CS2103T-T17 kunnan97 zhiayang mhdsyfq
    CS2103T-T17 xyzhangg yuxuanxc chuyouchia
    CS2103T-T17 raythx98 cwenling josiahkhoo
    CS2103T-T17 pongzers foongsq khor-jingqian
    CS2103T-T17 augustinekau siqiang-ng danadi7
    CS2103T-T17 kimberlyohq Avalionnet ruixuantan
    CS2103T-T17 JoeyToh lettuceman4 ypinhsuan
    CS2103T-T17 siqiang-ng danadi7 davidliew9
    CS2103T-T17 g-erm leeyorktat gabrielsimbingyang
    CS2103T-T17 khinkhinn halcon-blanco amylzting
    CS2103T-T17 pockii xz0127 junlong4321
    CS2103T-T17 ameliatjy ernestlim8 Ashley-Lau
    CS2103T-T17 zhaolingshan pooty3 yu-ming-chen
    CS2103T-T17 vanGoghhh Ziyang-98 jialin7878
    CS2103T-T17 BreadPeanutButter silvernitro timjkong
    CS2103T-T17 minzzelo sebastiantoh pongzers
    CS2103T-W10 fyshhh qlchan24 itssodium
    CS2103T-W10 chan-j-d zhengweii yuming7144
    CS2103T-W10 lll-jy Rogerlys juandavinlie
    CS2103T-W10 T-Fang TianYong-Goh ianyong
    CS2103T-W10 lucastai98 jonfoocy solkim-83
    CS2103T-W10 bangyiwu zhaojj2209 chunyongg
    CS2103T-W10 LinkedInk jiaqi20 fyshhh
    CS2103T-W10 BILLXYR euzintan dcchan98
    CS2103T-W10 GeNiaaz KishenKumarrrrr yyutong
    CS2103T-W10 TCQian tjwjoe caitlinjee
    CS2103T-W10 daongochieu2810 CodingCookieRookie ChengJiyuqing
    CS2103T-W10 TianYong-Goh ianyong YangJiyu98
    CS2103T-W10 caitlinjee Liu-2001 thutahw
    CS2103T-W10 jiaqi20 fyshhh qlchan24
    CS2103T-W10 tanwayne890 tohyuting hogantan
    CS2103T-W10 yuanxing-y Nikhilalalalala Lingy12
    CS2103T-W10 yuming7144 lamlaaaam tengjianling
    CS2103T-W10 solkim-83 w-yeehong kaitlynng
    CS2103T-W10 oliviajohansen porkeypine lucastai98
    CS2103T-W10 yyutong AdithyaNarayan zhaohuanqdcn
    CS2103T-W11 Michaeliaaa siddarth2824 jeffreytjs
    CS2103T-W11 afroneth nguyendqminh soaza
    CS2103T-W11 junhui-phoon joshualiangxy xinyee20
    CS2103T-W11 eugene3231 theyellowfellow chewypiano
    CS2103T-W11 soaza joeychensmart marcus2k
    CS2103T-W11 gordonfgz aizatazhar justweihong
    CS2103T-W11 hoperawr jiaax T-Fang
    CS2103T-W11 ngzhenteng seantaysl KOH-ZHE-HAO
    CS2103T-W11 peironggg yuanxing-y Nikhilalalalala
    CS2103T-W11 chshen1998 BILLXYR euzintan
    CS2103T-W11 Asuraxsoul JunCheng98 afroneth
    CS2103T-W11 wayne987 fanminj nottiffchan
    CS2103T-W11 ethanso56 AlexCQY daongochieu2810
    CS2103T-W11 ktaekwon000 successs404 jimvae
    CS2103T-W11 yeohhq jianhandev yongping827
    CS2103T-W11 jiaax T-Fang TianYong-Goh
    CS2103T-W11 jimvae wireseo joshruien
    CS2103T-W11 wilinetan Ben-Hanan maxxyh
    CS2103T-W11 gsmoon97 zhizhizhizhizhi SherryWu178
    CS2103T-W11 wireseo joshruien todoge
    CS2103T-W12 kaitlynng ngzhenteng seantaysl
    CS2103T-W12 raymondge VaishakAnand StopTakingAllTheNames
    CS2103T-W12 theyellowfellow chewypiano csiongn
    CS2103T-W12 fanminj nottiffchan oliviajohansen
    CS2103T-W12 LeeMingDe raymondge VaishakAnand
    CS2103T-W12 jianhandev yongping827 yuki-cell
    CS2103T-W12 thutahw chiamyunqing Michaeliaaa
    CS2103T-W12 ryanlimjr hansebastian hakiem526
    CS2103T-W12 chunyongg Criss-Wang liuyxxy
    CS2103T-W12 seantaysl KOH-ZHE-HAO aidoxe-123
    CS2103T-W12 EthanTheGoondu GabrielTeo munharsha
    CS2103T-W12 juandavinlie chshen1998 BILLXYR
    CS2103T-W12 euzintan dcchan98 Nahoyhp
    CS2103T-W12 w-yeehong kaitlynng ngzhenteng
    CS2103T-W12 xinyee20 wltan yongmingyang
    CS2103T-W12 chiamyunqing Michaeliaaa siddarth2824
    CS2103T-W12 Nijnxw rayasamhr the-reefshark
    CS2103T-W12 porkeypine lucastai98 jonfoocy
    CS2103T-W12 itssodium EthanTheGoondu GabrielTeo
    CS2103T-W12 successs404 jimvae wireseo
    CS2103T-W13 khoongwk Hou-Rui gordonfgz
    CS2103T-W13 justweihong Royxuzeng TCQian
    CS2103T-W13 nguyendqminh soaza joeychensmart
    CS2103T-W13 nottiffchan oliviajohansen porkeypine
    CS2103T-W13 hansebastian hakiem526 wayne987
    CS2103T-W13 TheSpaceCuber simonteozw m0nggh
    CS2103T-W13 galvinleow LinkedInk jiaqi20
    CS2103T-W13 UncleGrandpa925 chiabs PhongTran98
    CS2103T-W13 yuki-cell khoongwk Hou-Rui
    CS2103T-W13 RuiFengg Jaylenlee Nauman-S
    CS2103T-W13 rgabelarde tanwayne890 tohyuting
    CS2103T-W13 yanlynnnnn duynguyen24501 Nauw1010
    CS2103T-W13 ysr25 jh123x hoperawr
    CS2103T-W13 jacetjy Christopher-LM kormingsoon
    CS2103T-W13 liuyxxy jacetjy Christopher-LM
    CS2103T-W13 IsaacTin UncleGrandpa925 chiabs
    CS2103T-W13 Ben-Hanan maxxyh TheSpaceCuber
    CS2103T-W13 simonteozw m0nggh Nijnxw
    CS2103T-W13 Nikhilalalalala Lingy12 Ringo1225
    CS2103T-W13 Hou-Rui gordonfgz aizatazhar
    CS2103T-W15 Ringo1225 leeweiminsg Marcon2509
    CS2103T-W15 csiongn GeNiaaz KishenKumarrrrr
    CS2103T-W15 lamlaaaam tengjianling MarcusTw
    CS2103T-W15 AlexCQY daongochieu2810 CodingCookieRookie
    CS2103T-W15 Cedo8 RuiFengg Jaylenlee
    CS2103T-W15 yongmingyang YuunoKun dianneloh9
    CS2103T-W15 chiabs PhongTran98 zeling595
    CS2103T-W15 jonfoocy solkim-83 w-yeehong
    CS2103T-W15 hogantan yanlynnnnn duynguyen24501
    CS2103T-W15 todoge shermz-lim galvinleow
    CS2103T-W15 StopTakingAllTheNames zhXchD chan-j-d
    CS2103T-W15 ChengJiyuqing koonweee Cedo8
    CS2103T-W15 VaishakAnand StopTakingAllTheNames zhXchD
    CS2103T-W15 joshruien todoge shermz-lim
    CS2103T-W15 m0nggh Nijnxw rayasamhr
    CS2103T-W15 tengjianling MarcusTw ramenmen
    CS2103T-W15 aizatazhar justweihong Royxuzeng
    CS2103T-W15 koonweee Cedo8 RuiFengg
    CS2103T-W15 JunCheng98 afroneth nguyendqminh
    CS2103T-W15 GabrielTeo munharsha iamgenechua
    CS2103T-W16 wltan yongmingyang YuunoKun
    CS2103T-W16 ianyong YangJiyu98 yeohhq
    CS2103T-W16 MarcusTw ramenmen xxzz-tt
    CS2103T-W16 erisjacey gsmoon97 zhizhizhizhizhi
    CS2103T-W16 YangJiyu98 yeohhq jianhandev
    CS2103T-W16 kswk nweiyue peironggg
    CS2103T-W16 YuunoKun dianneloh9 ethanso56
    CS2103T-W16 KOH-ZHE-HAO aidoxe-123 lebencwb
    CS2103T-W16 yongping827 yuki-cell khoongwk
    CS2103T-W16 CodingCookieRookie ChengJiyuqing koonweee
    CS2103T-W16 zhaojj2209 chunyongg Criss-Wang
    CS2103T-W16 ramenmen xxzz-tt ryanlimjr
    CS2103T-W16 nweiyue peironggg yuanxing-y
    CS2103T-W16 rayasamhr the-reefshark ktaekwon000
    CS2103T-W16 zhizhizhizhizhi SherryWu178 kswk
    CS2103T-W16 tjwjoe caitlinjee Liu-2001
    CS2103T-W16 siddarth2824 jeffreytjs rgabelarde
    CS2103T-W16 AdithyaNarayan zhaohuanqdcn ysr25
    CS2103T-W16 xxzz-tt ryanlimjr hansebastian
    CS2103T-W16 zhaohuanqdcn ysr25 jh123x
    CS2103T-W17 dcchan98 Nahoyhp jazerler
    CS2103T-W17 Royxuzeng TCQian tjwjoe
    CS2103T-W17 Lingy12 Ringo1225 leeweiminsg
    CS2103T-W17 Nauw1010 junhui-phoon joshualiangxy
    CS2103T-W17 zhXchD chan-j-d zhengweii
    CS2103T-W17 Liu-2001 thutahw chiamyunqing
    CS2103T-W17 joeychensmart marcus2k erisjacey
    CS2103T-W17 Nauman-S bangyiwu zhaojj2209
    CS2103T-W17 Nahoyhp jazerler IsaacTin
    CS2103T-W17 jh123x hoperawr jiaax
    CS2103T-W17 chewypiano csiongn GeNiaaz
    CS2103T-W17 the-reefshark ktaekwon000 successs404
    CS2103T-W17 joshualiangxy xinyee20 wltan
    CS2103T-W17 Rogerlys juandavinlie chshen1998
    CS2103T-W17 aidoxe-123 lebencwb Hazel1603
    CS2103T-W17 duynguyen24501 Nauw1010 junhui-phoon
    CS2103T-W17 PhongTran98 zeling595 eugene3231
    CS2103T-W17 leeweiminsg Marcon2509 wilinetan
    CS2103T-W17 jazerler IsaacTin UncleGrandpa925
    CS2103T-W17 KishenKumarrrrr yyutong AdithyaNarayan

    If the student you have been allocated to review has not created a PR (or the PR has a trivial amount of code), you can review the Backup PR to review provided in the allocation table. Failing both, review another PR allocated to another student in your own tutorial but not in your team.

    Tip for future reference: GitHub allows you to filter PRs/Issues using various criteria such as author:AuthorUsername (example -- see the filters text box in the target page).

    Alternatively, you can use PR labels (if any) to filter PRs/Issues.

    FAQ: How many comments should I add? Answer: Depends on the code being reviewed but we expect most PRs would warrant at least 4-5 comments. If the PR is huge, you can stop when you think you've put in a fair amount of time on the job (~15 minutes) and added enough comments for the PR author to receive some value.

    • Step 3 Do the second PR review as follows.
      • Comment on other code quality guidelines (see the section Naming in this textbook chapter) you have learned so far. It's optional to comment on coding standard violations in this PR review.
      • The review allocation is given in the panel below.
    Tutorial Reviewer Second PR to review Backup PR to review
    CS2103-F09 sc-arecrow shadowezz royleochan
    CS2103-F09 jayarengam claraadora petrickjerico
    CS2103-F09 theodoreleebrant michael-setia printinghelloworld
    CS2103-F09 HCY123902 pangpuncake aqcd
    CS2103-F09 richardcom angrybunny123 Rahul0506
    CS2103-F09 Caiyi34777 rtshkmr claraadora
    CS2103-F09 davidsqf Vielheim angrybunny123
    CS2103-F09 Stefan-Jiang esmanda3w raysonkoh
    CS2103-F09 Vielheim xnmng HCY123902
    CS2103-F09 CodyChew jeminsieow constancensq
    CS2103-F09 jflim98 chrystalquek abdurrahmanfaqihiskandar
    CS2103-F09 josuaaah petrickjerico blackonyyx
    CS2103-F09 xnmng kerkpy pangpuncake
    CS2103-F09 Jargonx justacasul wang-jun-hao
    CS2103-F09 tigerting98 nopenotj kwannoel
    CS2103-F09 youyingfeng CodyChew Anthony6401
    CS2103-F09 cx0810 theodoreleebrant lerxcl
    CS2103-F09 Syasyazman minhhhnguyen2000 divakarmal
    CS2103-F09 constancensq WhiteLio chuyiting
    CS2103-F09 esmanda3w lerxcl jerrylchong
    CS2103-F10 plosslaw royleochan LeeEnHao
    CS2103-F10 abdurrahmanfaqihiskandar pennhanlee jeminsieow
    CS2103-F10 jeminsieow hyngkng WhiteLio
    CS2103-F10 sudogene Syasyazman TanLeYang
    CS2103-F10 WangZijun97 SONGYI98 andreatanky
    CS2103-F10 sigmund-c LeeEnHao Stefan-Jiang
    CS2103-F10 youaremysky99 Whleee tnsyn
    CS2103-F10 gloon99 TanLeYang jonasngs
    CS2103-F10 therizhao wang-jun-hao Rishi5154
    CS2103-F10 kerkpy caleblyx wakululuu
    CS2103-F10 royleochan sun-yitao cx0810
    CS2103-F10 nopenotj PrestonTYR sc-arecrow
    CS2103-F10 Whleee MerlinLim Caiyi34777
    CS2103-F10 yejiadong ducbinh2611 PrestonTYR
    CS2103-F10 EkamSinghPandher gloon99 luciatirta
    CS2103-F10 WhiteLio MatthiasLHK rnmy
    CS2103-F10 Jillzyt rolandyuwy jflim98
    CS2103-F10 wakululuu Jargonx therizhao
    CS2103-F10 tnsyn Caiyi34777 jayarengam
    CS2103-F10 jerrylchong jonahtanjz EkamSinghPandher
    CS2103-T14 XIA-LIYI vanGoghhh Ziyang-98
    CS2103-T14 timjkong underthehai IronBiscuit
    CS2103-T14 jeannetoh99 kc-98 seanjyjy
    CS2103-T14 UnicornJin BreadPeanutButter silvernitro
    CS2103-T14 Perpetual09 erinmayg gan-jw
    CS2103-T14 jzwoo boundtotheearth wenhaogoh
    CS2103-T14 drake25122000 yanchenglee98 kimberlyohq
    CS2103-T14 florenciamartina kkangs0226 drake25122000
    CS2103-T14 erinmayg kimberlyohq Avalionnet
    CS2103-T14 justintzuriel ZoroarkDarkrai orzymandias
    CS2103-T14 lyeyixian lowjiefeng1998 onglijin
    CS2103-T14 jiaweiteo yan-soon zeying99
    CS2103-T14 Zhang-Yunjie xnoobftw hjl99
    CS2103-T14 mehak24k g-erm leeyorktat
    CS2103-T14 onglijin jzwoo keanecjy
    CS2103-T14 underthehai zeranium97 siangernlow
    CS2103-T14 jialin7878 amylzting Asthenosphere
    CS2103-T14 zeying99 GilbertTan19 cheoksuanne
    CS2103-T14 gan-jw Avalionnet ruixuantan
    CS2103-T14 CalistaIo yingqi0607 ya0-yuan
    CS2103-T16 WeiJie96 Zhang-Yunjie fall9x
    CS2103-T16 ijavierja cwenling josiahkhoo
    CS2103-T16 danadi7 rachel170 hhdqirui
    CS2103-T16 Raymond0212 EkChinHui pockii
    CS2103-T16 e0316059 MorningLit BobbyZhouZijian
    CS2103-T16 chloelee767 ameliatjy ernestlim8
    CS2103-T16 Joven-Heng mhdsyfq JoeyToh
    CS2103-T16 jetnew AudreyFelicio e0316059
    CS2103-T16 KendrewChan yanbingtao seowalex
    CS2103-T16 Ebolaeater danadi7 davidliew9
    CS2103-T16 duckmoon99 seowalex geoboom
    CS2103-T16 mkeoliya sebastiantoh pongzers
    CS2103-T16 Lysire jordanyoong mehak24k
    CS2103-T16 ernestlim8 patricktan6 Perpetual09
    CS2103-T16 JingYenLoh akgrenSoar yan-soon
    CS2103-T16 MorningLit duckmoon99 tanzhuoyao-nus
    CS2103-W14 jeffreytjs tohyuting hogantan
    CS2103-W14 zhengweii tengjianling MarcusTw
    CS2103-W14 lebencwb JunCheng98 afroneth
    CS2103-W14 Criss-Wang Christopher-LM kormingsoon
    CS2103-W14 tohyuting duynguyen24501 Nauw1010
    CS2103-W14 hakiem526 nottiffchan oliviajohansen
    CS2103-W14 marcus2k zhizhizhizhizhi SherryWu178
    CS2103-W14 Marcon2509 maxxyh TheSpaceCuber
    CS2103-W14 munharsha Rogerlys juandavinlie
    CS2103-W14 iamgenechua juandavinlie chshen1998
    CS2103-W14 dianneloh9 daongochieu2810 CodingCookieRookie
    CS2103-W14 Christopher-LM raymondge VaishakAnand
    CS2103-W14 kormingsoon VaishakAnand StopTakingAllTheNames
    CS2103-W14 shermz-lim jiaqi20 fyshhh
    CS2103-W14 Jaylenlee zhaojj2209 chunyongg
    CS2103-W14 SherryWu178 peironggg yuanxing-y
    CS2103-W14 zeling595 chewypiano csiongn
    CS2103-W14 maxxyh m0nggh Nijnxw
    CS2103-W14 Hazel1603 afroneth nguyendqminh
    CS2103-W14 qlchan24 GabrielTeo munharsha
    CS2103T-F11 raysonkoh jerrylchong michael-setia
    CS2103T-F11 tankangliang davidsqf richardcom
    CS2103T-F11 qwoprocks yejiadong nopenotj
    CS2103T-F11 chrisgzf jflim98 Wong-ZZ
    CS2103T-F11 kwannoel sc-arecrow plosslaw
    CS2103T-F11 MerlinLim josuaaah rtshkmr
    CS2103T-F11 claraadora ChooJiaXin Jillzyt
    CS2103T-F11 minhhhnguyen2000 youaremysky99 luo-git
    CS2103T-F11 printinghelloworld sagarsureka sudogene
    CS2103T-F11 rtshkmr blackonyyx ChooJiaXin
    CS2103T-F11 hyngkng tankangliang MatthiasLHK
    CS2103T-F11 sun-yitao raysonkoh theodoreleebrant
    CS2103T-F11 LeeEnHao cx0810 esmanda3w
    CS2103T-F11 gabztcr Wong-ZZ youyingfeng
    CS2103T-F11 shadowezz Stefan-Jiang sun-yitao
    CS2103T-F11 andreatanky tigerting98 cupofjoee
    CS2103T-F11 Rishi5154 kevnw SONGYI98
    CS2103T-F11 ChooJiaXin gabztcr rolandyuwy
    CS2103T-F11 chrystalquek Anthony6401 pennhanlee
    CS2103T-F11 rnmy bowei-yu Vielheim
    CS2103T-F12 ducbinh2611 plosslaw sigmund-c
    CS2103T-F12 urieltan murtubak MerlinLim
    CS2103T-F12 murtubak jayarengam josuaaah
    CS2103T-F12 luo-git tnsyn murtubak
    CS2103T-F12 li-s therizhao mgiang2015
    CS2103T-F12 MatthiasLHK richardcom bowei-yu
    CS2103T-F12 davidcaiqifan urieltan Whleee
    CS2103T-F12 lerxcl printinghelloworld jonahtanjz
    CS2103T-F12 Ma-Yueran cupofjoee yejiadong
    CS2103T-F12 kevnw Ma-Yueran qwoprocks
    CS2103T-F12 Anthony6401 constancensq bchenghi
    CS2103T-F12 luciatirta jonasngs minhhhnguyen2000
    CS2103T-F12 michael-setia EkamSinghPandher sagarsureka
    CS2103T-F12 caleblyx khenghun Jargonx
    CS2103T-F12 jonasngs davidcaiqifan youaremysky99
    CS2103T-F12 chuyiting rnmy davidsqf
    CS2103T-F12 cupofjoee kwannoel ducbinh2611
    CS2103T-F12 bowei-yu Rahul0506 xnmng
    CS2103T-F12 petrickjerico Jillzyt chrisgzf
    CS2103T-F12 HynRidge aqcd caleblyx
    CS2103T-F13 rolandyuwy youyingfeng chrystalquek
    CS2103T-F13 blackonyyx chrisgzf gabztcr
    CS2103T-F13 SONGYI98 qwoprocks tigerting98
    CS2103T-F13 pangpuncake wakululuu li-s
    CS2103T-F13 khenghun mgiang2015 justacasul
    CS2103T-F13 bchenghi chuyiting tankangliang
    CS2103T-F13 justacasul WangZijun97 foojingyi
    CS2103T-F13 jonahtanjz sudogene gloon99
    CS2103T-F13 pennhanlee bchenghi hyngkng
    CS2103T-F13 aqcd li-s khenghun
    CS2103T-F13 TanLeYang divakarmal davidcaiqifan
    CS2103T-F13 PrestonTYR sigmund-c shadowezz
    CS2103T-F13 mgiang2015 Rishi5154 WangZijun97
    CS2103T-F13 angrybunny123 HCY123902 HynRidge
    CS2103T-F13 foojingyi andreatanky Ma-Yueran
    CS2103T-F13 divakarmal luo-git urieltan
    CS2103T-F13 Rahul0506 HynRidge kerkpy
    CS2103T-F13 wang-jun-hao foojingyi kevnw
    CS2103T-F13 Wong-ZZ abdurrahmanfaqihiskandar CodyChew
    CS2103T-F13 sagarsureka luciatirta Syasyazman
    CS2103T-T09 geoboom Sruthisarav ZhangWanlin98
    CS2103T-T09 Robinho98 jialin7878 khinkhinn
    CS2103T-T09 mhdsyfq ypinhsuan pr4aveen
    CS2103T-T09 iqbxl ethan-l-m-e FH-30
    CS2103T-T09 gabrielsimbingyang samlsm Persdre
    CS2103T-T09 vigneshbhuvan-nus orzymandias benclmnt
    CS2103T-T09 limkoonkiat gabrielsimbingyang YangYue128-helen
    CS2103T-T09 silvernitro dextertanyj underthehai
    CS2103T-T09 shaokiat cheoksuanne Trav1sT
    CS2103T-T09 khor-jingqian Diwu-Yi ameliatjy
    CS2103T-T09 yan-soon tanweijie123 GilbertTan19
    CS2103T-T09 nicholasyeo mkeoliya KohHanMing
    CS2103T-T09 Licheng-Wu ruilingk BreadPeanutButter
    CS2103T-T09 peter-yeh claracheong4 Zhang-Yunjie
    CS2103T-T09 leeyorktat nicholasyeo samlsm
    CS2103T-T09 patricktan6 drake25122000 erinmayg
    CS2103T-T09 yuxuanxc DreamerDragon lyeyixian
    CS2103T-T09 IlyaRin benclmnt athuyaoo
    CS2103T-T10 dextertanyj Lysire zeranium97
    CS2103T-T10 hanweic53 jetnew MarcTzh
    CS2103T-T10 seowalex CalistaIo Sruthisarav
    CS2103T-T10 ethan-l-m-e pockii xz0127
    CS2103T-T10 boundtotheearth jmleong666 jeannetoh99
    CS2103T-T10 pr4aveen Raymond0212 ethan-l-m-e
    CS2103T-T10 junlong4321 hakujitsu raythx98
    CS2103T-T10 yingqi0607 augustinekau siqiang-ng
    CS2103T-T10 zhiayang lettuceman4 ypinhsuan
    CS2103T-T10 samlsm KohHanMing minzzelo
    CS2103T-T10 hjl99 khoodehui AudreyFelicio
    CS2103T-T10 ruixuantan WeiJie96 ChenXJ98
    CS2103T-T10 ypinhsuan sgn00 Raymond0212
    CS2103T-T10 kkangs0226 gan-jw yanchenglee98
    CS2103T-T10 fall9x hjl99 jetnew
    CS2103T-T10 cwenling xyzhangg yuxuanxc
    CS2103T-T10 claracheong4 hanweic53 xnoobftw
    CS2103T-T10 ruilingk timjkong sogggy
    CS2103T-T10 Trav1sT JinHao-L nicktohzyu
    CS2103T-T10 khoodehui nuovonatura theyifan
    CS2103T-T11 FizzyAgent Ziyang-98 jialin7878
    CS2103T-T11 AaronnSeah zhiayang mhdsyfq
    CS2103T-T11 Asthenosphere jiaweiteo pengxiangg
    CS2103T-T11 sebastiantoh khor-jingqian chloelee767
    CS2103T-T11 schoolex ChenXJ98 claracheong4
    CS2103T-T11 yu-ming-chen IlyaRin ZoroarkDarkrai
    CS2103T-T11 teekoksiang wengfaing boundtotheearth
    CS2103T-T11 yanchenglee98 ruixuantan schoolex
    CS2103T-T11 athuyaoo kunnan97 zhiayang
    CS2103T-T11 wenhaogoh jeannetoh99 Elgoh
    CS2103T-T11 sogggy IronBiscuit Lysire
    CS2103T-T11 jmleong666 iamjamestan kc-98
    CS2103T-T11 davidliew9 hhdqirui dearvae
    CS2103T-T11 lowjiefeng1998 teekoksiang jzwoo
    CS2103T-T11 IronBiscuit siangernlow jordanyoong
    CS2103T-T11 Elgoh seanjyjy XIA-LIYI
    CS2103T-T11 EkChinHui junlong4321 howtoosee
    CS2103T-T11 Door-oof Licheng-Wu UnicornJin
    CS2103T-T11 hakujitsu josiahkhoo hopinxian
    CS2103T-T11 howtoosee raythx98 cwenling
    CS2103T-T12 nuovonatura BobbyZhouZijian KendrewChan
    CS2103T-T12 YangYue128-helen Persdre mkeoliya
    CS2103T-T12 Avalionnet peter-yeh WeiJie96
    CS2103T-T12 wengfaing joshtyf jmleong666
    CS2103T-T12 zeranium97 mehak24k kelvinvin
    CS2103T-T12 halcon-blanco maguireong JingYenLoh
    CS2103T-T12 Wincenttjoi dearvae zhaolingshan
    CS2103T-T12 yanbingtao GabriellaTeh CalistaIo
    CS2103T-T12 xnoobftw MarcTzh khoodehui
    CS2103T-T12 dearvae yu-ming-chen justintzuriel
    CS2103T-T12 ZhangWanlin98 Ebolaeater augustinekau
    CS2103T-T12 MarcTzh e0316059 nuovonatura
    CS2103T-T12 ureshiiYing silvernitro timjkong
    CS2103T-T12 BobbyZhouZijian tanzhuoyao-nus yanbingtao
    CS2103T-T12 GabriellaTeh ZhangWanlin98 yingqi0607
    CS2103T-T12 JinHao-L UnicornJin ureshiiYing
    CS2103T-T12 xz0127 ijavierja hakujitsu
    CS2103T-T12 WM71811 nicholas-gcc teekoksiang
    CS2103T-T12 Diwu-Yi Ashley-Lau florenciamartina
    CS2103T-T12 Persdre minzzelo sebastiantoh
    CS2103T-T13 hopinxian chuyouchia dhafinrazaq
    CS2103T-T13 KohHanMing pongzers foongsq
    CS2103T-T13 siangernlow kelvinvin limkoonkiat
    CS2103T-T13 josiahkhoo yuxuanxc chuyouchia
    CS2103T-T13 jordanyoong limkoonkiat g-erm
    CS2103T-T13 ChenXJ98 fall9x hanweic53
    CS2103T-T13 Ziyang-98 halcon-blanco amylzting
    CS2103T-T13 joshtyf Elgoh iamjamestan
    CS2103T-T13 GilbertTan19 LimZeWeiDennis Door-oof
    CS2103T-T13 benclmnt Joven-Heng kunnan97
    CS2103T-T13 FH-30 xz0127 junlong4321
    CS2103T-T13 kelvinvin leeyorktat gabrielsimbingyang
    CS2103T-T13 tanweijie123 Trav1sT LimZeWeiDennis
    CS2103T-T13 nicholas-gcc keanecjy wengfaing
    CS2103T-T13 DreamerDragon WM71811 lowjiefeng1998
    CS2103T-T13 hhdqirui pooty3 yu-ming-chen
    CS2103T-T13 cheoksuanne Door-oof JinHao-L
    CS2103T-T13 maguireong pengxiangg akgrenSoar
    CS2103T-T13 lettuceman4 iqbxl sgn00
    CS2103T-T13 dhafinrazaq moyj01 WM71811
    CS2103T-T15 iamjamestan XIA-LIYI FizzyAgent
    CS2103T-T15 shawn-nyk ernestlim8 Ashley-Lau
    CS2103T-T15 pengxiangg zeying99 shaokiat
    CS2103T-T15 chuyouchia lyeyixian moyj01
    CS2103T-T15 seanjyjy Robinho98 vanGoghhh
    CS2103T-T15 pooty3 vigneshbhuvan-nus IlyaRin
    CS2103T-T15 ZoroarkDarkrai athuyaoo AaronnSeah
    CS2103T-T15 AudreyFelicio theyifan MorningLit
    CS2103T-T15 nicktohzyu ureshiiYing ruilingk
    CS2103T-T15 rachel170 zhaolingshan pooty3
    CS2103T-T15 Sruthisarav ya0-yuan Ebolaeater
    CS2103T-T15 orzymandias AaronnSeah Joven-Heng
    CS2103T-T15 theyifan KendrewChan duckmoon99
    CS2103T-T15 LimZeWeiDennis nicktohzyu Licheng-Wu
    CS2103T-T15 Ashley-Lau Perpetual09 kkangs0226
    CS2103T-T15 ya0-yuan siqiang-ng danadi7
    CS2103T-T15 foongsq shawn-nyk Diwu-Yi
    CS2103T-T15 keanecjy wenhaogoh joshtyf
    CS2103T-T15 kc-98 FizzyAgent Robinho98
    CS2103T-T15 amylzting JingYenLoh jiaweiteo
    CS2103T-T17 akgrenSoar shaokiat tanweijie123
    CS2103T-T17 sgn00 FH-30 EkChinHui
    CS2103T-T17 moyj01 onglijin nicholas-gcc
    CS2103T-T17 tanzhuoyao-nus geoboom GabriellaTeh
    CS2103T-T17 kunnan97 JoeyToh lettuceman4
    CS2103T-T17 xyzhangg dhafinrazaq DreamerDragon
    CS2103T-T17 raythx98 hopinxian xyzhangg
    CS2103T-T17 pongzers chloelee767 shawn-nyk
    CS2103T-T17 augustinekau davidliew9 Wincenttjoi
    CS2103T-T17 kimberlyohq schoolex peter-yeh
    CS2103T-T17 JoeyToh pr4aveen iqbxl
    CS2103T-T17 siqiang-ng Wincenttjoi rachel170
    CS2103T-T17 g-erm YangYue128-helen nicholasyeo
    CS2103T-T17 khinkhinn Asthenosphere maguireong
    CS2103T-T17 pockii howtoosee ijavierja
    CS2103T-T17 ameliatjy florenciamartina patricktan6
    CS2103T-T17 zhaolingshan justintzuriel vigneshbhuvan-nus
    CS2103T-T17 vanGoghhh khinkhinn halcon-blanco
    CS2103T-T17 BreadPeanutButter sogggy dextertanyj
    CS2103T-T17 minzzelo foongsq khor-jingqian
    CS2103T-W10 fyshhh EthanTheGoondu GabrielTeo
    CS2103T-W10 chan-j-d lamlaaaam tengjianling
    CS2103T-W10 lll-jy chshen1998 BILLXYR
    CS2103T-W10 T-Fang YangJiyu98 yeohhq
    CS2103T-W10 lucastai98 w-yeehong kaitlynng
    CS2103T-W10 bangyiwu Criss-Wang liuyxxy
    CS2103T-W10 LinkedInk qlchan24 itssodium
    CS2103T-W10 BILLXYR Nahoyhp jazerler
    CS2103T-W10 GeNiaaz AdithyaNarayan zhaohuanqdcn
    CS2103T-W10 TCQian Liu-2001 thutahw
    CS2103T-W10 daongochieu2810 koonweee Cedo8
    CS2103T-W10 TianYong-Goh yeohhq jianhandev
    CS2103T-W10 caitlinjee chiamyunqing Michaeliaaa
    CS2103T-W10 jiaqi20 itssodium EthanTheGoondu
    CS2103T-W10 tanwayne890 yanlynnnnn duynguyen24501
    CS2103T-W10 yuanxing-y Ringo1225 leeweiminsg
    CS2103T-W10 yuming7144 MarcusTw ramenmen
    CS2103T-W10 solkim-83 ngzhenteng seantaysl
    CS2103T-W10 oliviajohansen jonfoocy solkim-83
    CS2103T-W10 yyutong ysr25 jh123x
    CS2103T-W11 Michaeliaaa rgabelarde tanwayne890
    CS2103T-W11 afroneth joeychensmart marcus2k
    CS2103T-W11 junhui-phoon wltan yongmingyang
    CS2103T-W11 eugene3231 csiongn GeNiaaz
    CS2103T-W11 soaza erisjacey gsmoon97
    CS2103T-W11 gordonfgz Royxuzeng TCQian
    CS2103T-W11 hoperawr TianYong-Goh ianyong
    CS2103T-W11 ngzhenteng aidoxe-123 lebencwb
    CS2103T-W11 peironggg Lingy12 Ringo1225
    CS2103T-W11 chshen1998 dcchan98 Nahoyhp
    CS2103T-W11 Asuraxsoul nguyendqminh soaza
    CS2103T-W11 wayne987 oliviajohansen porkeypine
    CS2103T-W11 ethanso56 CodingCookieRookie ChengJiyuqing
    CS2103T-W11 ktaekwon000 wireseo joshruien
    CS2103T-W11 yeohhq yuki-cell khoongwk
    CS2103T-W11 jiaax ianyong YangJiyu98
    CS2103T-W11 jimvae todoge shermz-lim
    CS2103T-W11 wilinetan TheSpaceCuber simonteozw
    CS2103T-W11 gsmoon97 kswk nweiyue
    CS2103T-W11 wireseo shermz-lim galvinleow
    CS2103T-W12 kaitlynng KOH-ZHE-HAO aidoxe-123
    CS2103T-W12 raymondge zhXchD chan-j-d
    CS2103T-W12 theyellowfellow GeNiaaz KishenKumarrrrr
    CS2103T-W12 fanminj porkeypine lucastai98
    CS2103T-W12 LeeMingDe StopTakingAllTheNames zhXchD
    CS2103T-W12 jianhandev khoongwk Hou-Rui
    CS2103T-W12 thutahw siddarth2824 jeffreytjs
    CS2103T-W12 ryanlimjr wayne987 fanminj
    CS2103T-W12 chunyongg jacetjy Christopher-LM
    CS2103T-W12 seantaysl lebencwb Hazel1603
    CS2103T-W12 EthanTheGoondu iamgenechua lll-jy
    CS2103T-W12 juandavinlie euzintan dcchan98
    CS2103T-W12 euzintan jazerler IsaacTin
    CS2103T-W12 w-yeehong seantaysl KOH-ZHE-HAO
    CS2103T-W12 xinyee20 YuunoKun dianneloh9
    CS2103T-W12 chiamyunqing jeffreytjs rgabelarde
    CS2103T-W12 Nijnxw ktaekwon000 successs404
    CS2103T-W12 porkeypine solkim-83 w-yeehong
    CS2103T-W12 itssodium munharsha iamgenechua
    CS2103T-W12 successs404 joshruien todoge
    CS2103T-W13 khoongwk aizatazhar justweihong
    CS2103T-W13 justweihong tjwjoe caitlinjee
    CS2103T-W13 nguyendqminh marcus2k erisjacey
    CS2103T-W13 nottiffchan lucastai98 jonfoocy
    CS2103T-W13 hansebastian fanminj nottiffchan
    CS2103T-W13 TheSpaceCuber Nijnxw rayasamhr
    CS2103T-W13 galvinleow fyshhh qlchan24
    CS2103T-W13 UncleGrandpa925 zeling595 eugene3231
    CS2103T-W13 yuki-cell gordonfgz aizatazhar
    CS2103T-W13 RuiFengg bangyiwu zhaojj2209
    CS2103T-W13 rgabelarde hogantan yanlynnnnn
    CS2103T-W13 yanlynnnnn junhui-phoon joshualiangxy
    CS2103T-W13 ysr25 jiaax T-Fang
    CS2103T-W13 jacetjy LeeMingDe raymondge
    CS2103T-W13 liuyxxy kormingsoon LeeMingDe
    CS2103T-W13 IsaacTin PhongTran98 zeling595
    CS2103T-W13 Ben-Hanan simonteozw m0nggh
    CS2103T-W13 simonteozw rayasamhr the-reefshark
    CS2103T-W13 Nikhilalalalala leeweiminsg Marcon2509
    CS2103T-W13 Hou-Rui justweihong Royxuzeng
    CS2103T-W15 Ringo1225 wilinetan Ben-Hanan
    CS2103T-W15 csiongn yyutong AdithyaNarayan
    CS2103T-W15 lamlaaaam ramenmen xxzz-tt
    CS2103T-W15 AlexCQY ChengJiyuqing koonweee
    CS2103T-W15 Cedo8 Nauman-S bangyiwu
    CS2103T-W15 yongmingyang ethanso56 AlexCQY
    CS2103T-W15 chiabs eugene3231 theyellowfellow
    CS2103T-W15 jonfoocy kaitlynng ngzhenteng
    CS2103T-W15 hogantan Nauw1010 junhui-phoon
    CS2103T-W15 todoge LinkedInk jiaqi20
    CS2103T-W15 StopTakingAllTheNames zhengweii yuming7144
    CS2103T-W15 ChengJiyuqing RuiFengg Jaylenlee
    CS2103T-W15 VaishakAnand chan-j-d zhengweii
    CS2103T-W15 joshruien galvinleow LinkedInk
    CS2103T-W15 m0nggh the-reefshark ktaekwon000
    CS2103T-W15 tengjianling xxzz-tt ryanlimjr
    CS2103T-W15 aizatazhar TCQian tjwjoe
    CS2103T-W15 koonweee Jaylenlee Nauman-S
    CS2103T-W15 JunCheng98 soaza joeychensmart
    CS2103T-W15 GabrielTeo lll-jy Rogerlys
    CS2103T-W16 wltan dianneloh9 ethanso56
    CS2103T-W16 ianyong jianhandev yongping827
    CS2103T-W16 MarcusTw ryanlimjr hansebastian
    CS2103T-W16 erisjacey SherryWu178 kswk
    CS2103T-W16 YangJiyu98 yongping827 yuki-cell
    CS2103T-W16 kswk yuanxing-y Nikhilalalalala
    CS2103T-W16 YuunoKun AlexCQY daongochieu2810
    CS2103T-W16 KOH-ZHE-HAO Hazel1603 Asuraxsoul
    CS2103T-W16 yongping827 Hou-Rui gordonfgz
    CS2103T-W16 CodingCookieRookie Cedo8 RuiFengg
    CS2103T-W16 zhaojj2209 liuyxxy jacetjy
    CS2103T-W16 ramenmen hansebastian hakiem526
    CS2103T-W16 nweiyue Nikhilalalalala Lingy12
    CS2103T-W16 rayasamhr successs404 jimvae
    CS2103T-W16 zhizhizhizhizhi nweiyue peironggg
    CS2103T-W16 tjwjoe thutahw chiamyunqing
    CS2103T-W16 siddarth2824 tanwayne890 tohyuting
    CS2103T-W16 AdithyaNarayan jh123x hoperawr
    CS2103T-W16 xxzz-tt hakiem526 wayne987
    CS2103T-W16 zhaohuanqdcn hoperawr jiaax
    CS2103T-W17 dcchan98 IsaacTin UncleGrandpa925
    CS2103T-W17 Royxuzeng caitlinjee Liu-2001
    CS2103T-W17 Lingy12 Marcon2509 wilinetan
    CS2103T-W17 Nauw1010 xinyee20 wltan
    CS2103T-W17 zhXchD yuming7144 lamlaaaam
    CS2103T-W17 Liu-2001 Michaeliaaa siddarth2824
    CS2103T-W17 joeychensmart gsmoon97 zhizhizhizhizhi
    CS2103T-W17 Nauman-S chunyongg Criss-Wang
    CS2103T-W17 Nahoyhp UncleGrandpa925 chiabs
    CS2103T-W17 jh123x T-Fang TianYong-Goh
    CS2103T-W17 chewypiano KishenKumarrrrr yyutong
    CS2103T-W17 the-reefshark jimvae wireseo
    CS2103T-W17 joshualiangxy yongmingyang YuunoKun
    CS2103T-W17 Rogerlys BILLXYR euzintan
    CS2103T-W17 aidoxe-123 Asuraxsoul JunCheng98
    CS2103T-W17 duynguyen24501 joshualiangxy xinyee20
    CS2103T-W17 PhongTran98 theyellowfellow chewypiano
    CS2103T-W17 leeweiminsg Ben-Hanan maxxyh
    CS2103T-W17 jazerler chiabs PhongTran98
    CS2103T-W17 KishenKumarrrrr zhaohuanqdcn ysr25

    If the allocated PR is not suitable, use the same strategy as before to find an alternative PR to review.

    • Step 4 [When you receive reviews for your own PR] Respond to comments received. You are recommended to (but not obliged to) respond to comments received from peers, especially if the PR reviewer asked you for more info. As mentioned in these guidelines, do not get into arguments with PR reviewers/authors.

    2 Learn from others (optional)

    • You can use the iP Code Dashboard to view others' iP code, using the Links → iP Code Dashboard item in the top navigation menu. Click on the </> icon corresponding to a student name to see the code written by that person. We encourage you to read others’ code and learn from them. If you adopt solutions from others (also encouraged), please follow our reuse policy.

    Policy on reuse

    Reuse is encouraged. However, note that reuse has its own costs (such as the learning curve, additional complexity, usage restrictions, and unknown bugs). Furthermore, you will not be given credit for work done by others. Rather, you will be given credit for reusing work done by others.

    • You are allowed to reuse work from your classmates, subject to following conditions:
      • The work has been shared publicly by us or the authors.
      • You clearly give credit to the original author(s).
    • You are allowed to reuse work from external sources, subject to following conditions:
      • The work comes from a source of 'good standing' (such as an established open source project). This means you cannot reuse code written by an outside 'friend'.
      • You clearly give credit to the original author. Acknowledge use of third party resources clearly e.g. in the welcome message, splash screen (if any) or under the 'about' menu. If you are open about reuse, you are less likely to get into trouble if you unintentionally reused something copyrighted.
      • You do not violate the license under which the work has been released. Please  do not use 3rd-party images/audio in your software unless they have been specifically released to be used freely. Just because you found it in the Internet does not mean it is free for reuse.
      • Always get permission from us before you reuse third-party libraries. Please post your 'request to use 3rd party library' in our forum. That way, the whole class get to see what libraries are being used by others.

    Giving credit for reused work

    Given below are how to give credit for things you reuse from elsewhere. These requirements are specific to this module i.e., not applicable outside the module (outside the module you should follow the rules specified by your employer and the license of the reused work)

    If you used a third party library:

    • iP/tP: Mention in the README file (under the Acknowledgements section)
    • tP: Mention in the Project Portfolio Page if the library has a significant relevance to the features you implemented

    If you reused code snippets found on the Internet e.g. from StackOverflow answers or
    referred code in another software or
    referred project code by current/past student:

    • If you read the code to understand the approach and implemented it yourself, mention it as a comment
      Example:
      //Solution below adapted from https://stackoverflow.com/a/16252290
      {Your implmentation of the reused solution here ...}
    • If you copy-pasted a non-trivial code block (possibly with minor modifications renaming, layout changes, changes to comments, etc.), also mark the code block as reused code (using @@author tags with the -reused suffix)
      Format:
      //@@author {yourGithubUsername}-reused
      //{Info about the source...}

      {Reused code (possibly with minor modifications) here ...}

      //@@author
      Example of reusing a code snippet (with minor modifications):
      persons = getList()
      //@@author johndoe-reused
      //Reused from https://stackoverflow.com/a/34646172 with minor modifications
      Collections.sort(persons, new Comparator<CustomData>() {
      @Override
      public int compare(CustomData lhs, CustomData rhs) {
      return lhs.customInt > rhs.customInt ? -1 : 0;
      }
      });
      //@@author
      return persons;

    Giving credit to AB3 code: If your project started with the AB3 code and your new code follows a design similar to AB3, that doesn't mean you need to credit AB3 -- this is because new code is expected to follow existing code where possible, in the interest of consistency. However, don't take credit for existing AB3 code (i.e., ensure such code doesn't appear under your name in the tP code dashboard) unless you have modified them substantially.

     

    Adding @@author tags indicate authorship

    • Mark your code with a //@@author {yourGithubUsername}. Note the double @.
      The //@@author tag should indicates the beginning of the code you wrote. The code up to the next //@@author tag or the end of the file (whichever comes first) will be considered as was written by that author. Here is a sample code file:

      //@@author johndoe
      method 1 ...
      method 2 ...
      //@@author sarahkhoo
      method 3 ...
      //@@author johndoe
      method 4 ...
    • If you don't know who wrote the code segment below yours, you may put an empty //@@author (i.e. no GitHub username) to indicate the end of the code segment you wrote. The author of code below yours can add the GitHub username to the empty tag later. Here is a sample code with an empty author tag:

      method 0 ...
      //@@author johndoe
      method 1 ...
      method 2 ...
      //@@author
      method 3 ...
      method 4 ...
    • The author tag syntax varies based on file type e.g. for java, css, fxml. Use the corresponding comment syntax for non-Java files.
      Here is an example code from an xml/fxml file.

      <!-- @@author sereneWong -->
      <textbox>
      <label>...</label>
      <input>...</input>
      </textbox>
      ...
    • Do not put the //@@author inside java header comments.
      👎

      /**
      * Returns true if ...
      * @@author johndoe
      */

      👍

      //@@author johndoe
      /**
      * Returns true if ...
      */

    What to and what not to annotate

    • Annotate both functional and test code There is no need to annotate documentation files.

    • Annotate only significant size code blocks that can be reviewed on its own e.g., a class, a sequence of methods, a method.
      Claiming credit for code blocks smaller than a method is discouraged but allowed. If you do, do it sparingly and only claim meaningful blocks of code such as a block of statements, a loop, or an if-else statement.

      • If an enhancement required you to do tiny changes in many places, there is no need to annotate all those tiny changes; you can describe those changes in the Project Portfolio page instead.
      • If a code block was touched by more than one person, either let the person who wrote most of it (e.g. more than 80%) take credit for the entire block, or leave it as 'unclaimed' (i.e., no author tags).
      • Related to the above point, if you claim a code block as your own, more than 80% of the code in that block should have been written by yourself. For example, no more than 20% of it can be code you reused from somewhere.
      • GitHub has a blame feature and a history feature that can help you determine who wrote a piece of code.
    • Do not try to boost the quantity of your contribution using unethical means such as duplicating the same code in multiple places. In particular, do not copy-paste test cases to create redundant tests. Even repetitive code blocks within test methods should be extracted out as utility methods to reduce code duplication. Individual members are responsible for making sure code attributed to them are correct. If you notice a team member claiming credit for code that he/she did not write or use other questionable tactics, you can email us (after the final submission) to let us know.

    • If you wrote a significant amount of code that was not used in the final product,

      • Create a folder called {project root}/unused
      • Move unused files (or copies of files containing unused code) to that folder
      • use //@@author {yourGithubUsername}-unused to mark unused code in those files (note the suffix unused) e.g.
      //@@author johndoe-unused
      method 1 ...
      method 2 ...

      Please put a comment in the code to explain why it was not used.

    • If you reused code from elsewhere, mark such code as //@@author {yourGithubUsername}-reused (note the suffix reused) e.g.

      //@@author johndoe-reused
      method 1 ...
      method 2 ...
    • You can use empty @@author tags to mark code as not yours when RepoSense attribute the code to you incorrectly.

      • Code generated by the IDE/framework, should not be annotated as your own.

      • Code you modified in minor ways e.g. adding a parameter. These should not be claimed as yours but you can mention these additional contributions in the Project Portfolio page if you want to claim credit for them.

     

    At the end of the project each student is required to submit a Project Portfolio Page.

    PPP Objectives

    • For you to use (e.g. in your resume) as a well-documented data point of your SE experience
    • For evaluators to use as a data point for evaluating your project contributions

    PPP Sections to include

    • Overview: A short overview of your product to provide some context to the reader. The opening 1-2 sentences may be reused by all team members. If your product overview extends beyond 1-2 sentences, the remainder should be written by yourself.
    • Summary of Contributions --Suggested items to include:
      • Code contributed: Give a link to your code on tP Code Dashboard. The link is available in the Project List Page -- linked to the icon under your profile picture.
      • Enhancements implemented: A summary of the enhancements you implemented.
      • Contributions to documentation: Which sections did you contribute to the UG?
      • Contributions to the DG: Which sections did you contribute to the DG? Which UML diagrams did you add/updated?
      • Contributions to team-based tasks :
      • Review/mentoring contributions: Links to PRs reviewed, instances of helping team members in other ways
      • Contributions beyond the project team:
        • Evidence of helping others e.g. responses you posted in our forum, bugs you reported in other team's products,
        • Evidence of technical leadership e.g. sharing useful information in the forum

    Team-tasks are the tasks that someone in the team has to do.

    Here is a non-exhaustive list of team-tasks:

    1. Setting up the GitHub team org/repo
    2. Necessary general code enhancements e.g.,
      1. Work related to renaming the product
      2. Work related to changing the product icon
      3. Morphing the product into a different product
    3. Setting up tools e.g., GitHub, Gradle
    4. Maintaining the issue tracker
    5. Release management
    6. Updating user/developer docs that are not specific to a feature e.g. documenting the target user profile
    7. Incorporating more useful tools/libraries/frameworks into the product or the project workflow (e.g. automate more aspects of the project workflow using a GitHub plugin)

    Keep in mind that evaluators will use the PPP to estimate your project effort. We recommend that you mention things that will earn you a fair score e.g., explain how deep the enhancement is, why it is complete, how hard it was to implement etc..

    • [Optional] Contributions to the Developer Guide (Extracts): Reproduce the parts in the Developer Guide that you wrote. Alternatively, you can show the various diagrams you contributed.
    • [Optional] Contributions to the User Guide (Extracts): Reproduce the parts in the User Guide that you wrote.

    PPP Format

    To convert the UG/DG/PPP into PDF format, go to the generated page in your project's github.io site and use this technique to save as a pdf file. Using other techniques can result in poor quality resolution (will be considered a bug) and unnecessarily large files.

    Ensure hyperlinks in the pdf files work. Your UG/DG/PPP will be evaluated using PDF files during the PE. Broken/non-working hyperlinks in the PDF files will be considered as bugs and will count against your project score. Again, use the conversion technique given above to ensure links in the PDF files work.

    The icon indicates team submissions. Only one person need to submit on behalf of the team but we recommend that others help verify the submission is in order i.e., the responsibility for (and any penalty for problems in) team submissions are best shared by the whole team rather than burden one person with it.

    The icon indicates individual submissions.

    PPP Page Limit

    Content Recommended Hard Limit
    Overview + Summary of contributions 0.5-1 2
    [Optional] Contributions to the User Guide 1
    [Optional] Contributions to the Developer Guide 3
    • The page limits given above are after converting to PDF format. The actual amount of content you require is actually less than what these numbers suggest because the HTML → PDF conversion adds a lot of spacing around content.

    3 Add Increments as branches: A-Gradle, A-CheckStyle, Level-10, A-Varargs

    • Do each enhancement in a separate branch and merge to the master branch only when ready (if you push incomplete features into the master branch, it can confuse others reviewing your PR). There is no need to do the increments as parallel branches though i.e., you can do one increment and merge that branch before starting on the next one.
      If you have completed any of them in previous weeks, just add the corresponding tag (no need to create a branch).
    Duke A-Gradle: Use Gradle

    A-Gradle

         Automate project builds using Gradle

    Use Gradle to automate some of the build tasks of the project.

    Refer to the Gradle tutorial @SE-EDU to learn how to use Gradle.

    Gradle support is provided as a separate branch (named add-gradle-support) in the Duke repo. Therefore, you can follow the scenario 2 in the above guide.

    • Minimal: Set up gradle so that you can build and run Duke using gradle.
    • Recommended: Set up gradle to run unit tests.
    • Stretch Goal: Use gradle to automate more things in your project.
    Duke A-CheckStyle: Use CheckStyle optional

    A-CheckStyle

         Use CheckStyle

    Use checkStyle to detect coding style violations.

    Refer the tutorial Using Checkstyle @SE-EDU/guides to learn how to use Checkstyle.

    Duke Level-10: GUI

    Level 10. GUI

    Add a GUI to Duke. Use the JavaFX technology to implement the GUI.



    Refer to the JavaFX tutorial @SE-EDU/guides to learn how to get started with JavaFX.

    • Note that you no longer need to keep the text-based UI after adding a GUI. Similarly, there is no need to use the I/O redirection style automated testing anymore (that technique is suited for text UIs only).
    Duke A-Varargs: Use Varargs if-applicable

    A-Varargs

         Use var-args

    Use Java varargs feature, if applicable.

    tP: Set direction

    1 Start weekly project meetings

    • We recommend you start weekly project meetings now. You can use the meeting to do tP tasks, but also help each other do iP tasks. On a related note, it is also acceptable to discuss weekly post-lecture quiz (if any) together with team members as you do the quiz i.e., discuss and decide the answer collectively, but you should not give away your answers to someone who was not part of that discussion.

    2 Start a collaborative doc to take project notes before the tutorial

    • Keep project notes in easy-to-use collaborative docs (Recommended: use a GoogleDoc). This document will be checked by the tutor at various points.
      Remember to choose a tool that allow public view access (not write access) e.g., GoogleDoc can be shared via a public link so that the document can be viewed by others. You'll be asked to submit this link to us in the next week.
      Make sure all you current and future project notes (if split into in multiple documents) are reachable via links given in this document and are viewable by the public.

    3 Decide on an overall project direction (user profile, problem addressed) before the tutorial

    • Decide project direction, target user profile, and problem addressed: Use your first project meeting to discuss with your team members and decide your project direction, target user profile, and the value proposition of the product, as described in the panels below:

    As we are still at the early stages of identifying a problem to solve, do not think of the product (i.e., the solution) yet. That is, do not discuss the product features, UI, command format, and implementation details, etc. unless they are pertinent to the decision of the project direction.

    project expectations

    Outcomes

    The high-level learning outcome of the team project (tP):

    Can contribute production quality SE work to a small/medium software project

    Accordingly, the tP is structured to resemble an intermediate stage of a non-trivial real-life brownfield software project in which you will,

    1. conceptualize and implement enhancements to a given product, and,
    2. have it ready to be continued by future developers

    The focus of the tP is to learn the following aspects:

    • coding
    • working in a team
    • process/workflow
    • documentation
    • scheduling and tracking project progress, meeting delivery deadline
    • quality assurance

    Direction

    The tP uses a generic application called AddressBook-Level3 (AB3) (from https://se-education.org) as the starting point.

    You may develop any product provided it is meant for users who can type fast, and prefer typing over mouse/voice commands. Therefore, Command Line Interface (CLI) is the primary mode of input.

    Constraint-Typing-Preferred

    The product should be targeting users who can type fast and prefer typing over other means of input.
    Reason: to increase comparability of products, and to make feature evaluation easier for peer evaluators.

    Recommendation-CLI-First

    Following from the Constraint-Typing-Preferred, if the app is optimized for the target user (graded under the product design criterion), a user who can type fast should be able to accomplish most tasks faster via CLI, compared to a hypothetical GUI-only version of the app. For example, adding a new entity via the CLI should be faster than entering the same data through a GUI form.
    Therefore, the input to the app needs to be primarily CLI. The GUI is used primarily to give visual feedback to the user. While we don't prohibit non-CLI inputs, note that such inputs will reduce the suitability of the product to target users. Therefore, give CLI alternatives to mouse/GUI inputs, if applicable.
    Also keep in mind:

    • Regular typing is usually faster than using key combinations.
    • typing the full command and hitting ENTER will complete the taskOne-shot commands are faster over prompting the user to input one parameter at a timemulti-step commands. If you provide a multi-step command to help new users, you can also provide a one-shot equivalent for regular/expert users.

    • Direction 1: Evolve AddressBook-Level3AB3 into a more powerful or more optimized contact management app.
      • Some examples:
        • Manage more entity types related to contacts e.g. Tasks allocated to contacts
        • Contact managing optimized for a specific type of user e.g. a sales person managing client contacts
    • pros: less changes to existing code at the start of the project (i.e., progress will be smoother at the start), can result in a more mature product with deeper features as the product functionality will be moving forward from the start
    • cons: less flexibility in product design, less differentiation with other team's projects
    • Direction 2: Morph AB3 any direction you wish.
      • For example, an app to manage one of these:
        • Bookmarks of websites
        • Tasks/Schedule
        • Location info
        • Thing to memorize i.e. flash cards, trivia
        • Forum posts, news feeds, Social media feeds
        • Online projects or issue trackers that the user is interested in
        • Emails, possibly from different accounts
        • Multiple types of related things e.g. Contacts and Tasks (if Tasks are allocated to Contacts)
        • ...
    • pros: more flexibility in the project direction, more room to differentiate from other teams' projects
    • cons: more changes to the existing code at the start while you are still not very familiar with the code base

    Weigh the pros/cons and choose the one that suits you.

    Target User & Value Proposition

    You are expected to:

    • Define a very specific target user profile.
      We require you to narrow down the target user profile as opposed to trying to make it as general as possible. Here is an example direction of narrowing down target user: anybody → teachers → university teachers → tech savvy university teachers → CS2103/T instructors.

      Be careful not to contradict given project constraints when defining the user profile e.g. the target user should still prefer typing over mouse actions.
    • It is an opportunity to exercise your product design skills because optimizing the product to a very specific target user requires good product design skills.
    • It minimizes the overlap between features of different teams which can cause plagiarism issues. Furthermore, higher the number of other teams having the same features, less impressive your work becomes especially if others have done a better job of implementing that feature.

    The size of the target market is not a grading criterion. You can make it as narrow as you want. Even a single user target market is fine as long as you can define that single user in a way others can understand (reason: project evaluators need to evaluate the project from the point of view of the target users).

    • Define a clear value proposition that matches the target user profile i.e., what problem does the product solve? how does it make the user's life easier?
      You should also define the scope clearly i.e., boundary beyond which the app will not help e.g., the app will help to manage tasks within a single project only (no support for multiple projects).
    • Optimize the product to the chosen target users i.e., add features that are especially/only applicable for target users (to make the app especially attractive to them).
      • Example 1: If the product targets CS2103/T instructors, there can be features that are applicable to them only, such as the ability to see a link to a student's project on GitHub

      • Example 2: If your app manages contacts, you can optimize its features based on,

        • the profession of the target user e.g. doctors, salesmen, teachers, etc.
        • the nature/scale of contacts e.g. huge number of contacts (for HR admins, user group admins), mostly incomplete contacts, highly volatile contact details, contacts become inactive after a specific period (e.g. contract employees)
        • what users do with the contacts e.g. organize group events, share info, do business, do analytics

        Your project will be graded based on how well the features match the target user profile and how well the features fit-together.

    Functionality Expectations

    The expected level of functionality to be added by a 5-person team is roughly the equivalent effort taken to create AB3 functionality. Furthermore, we expect a team to reach that level if each member puts in an effort equivalent to the effort they put into the iP. Some examples meeting that criterion:

    • Example 1: A fictional contact management app optimized for a specific target user group:
      • Existing AB3 features are optimized to the new target user group.
      • Person objects are enhanced to contain more details.
      • There are a 4-5 new functionality that are specific to the target user group.
    • Example 2: a FooBar app that keeps track of two different types of entities Foo entities and Bar entities.
      • Foo and Bar entities are tightly-connected e.g., a Foo entity can contain Bar entities. Each type is similar to AB3 Person objects in terms of complexity.
      • In addition to Creat Read Update DeleteCRUD for Foo and Bar entities, there are a 4-5 FooBar-specific functionality, some of which involves both Foo and Bar entities e.g., link a Foo entity to a Bar entity.

    You will get full marks for implementation effort if you meet the expectation stated above. There are no extra marks for exceeding that bar. You are better off spending that effort in improving other aspects of the project.

    If you wish to add the following features to your app, we recommend (but not require) you to follow similar features in AB4 in order to reduce the effort required.

    One semester ago, we reduced the tP functionality expectations by about 40-50% compared to the previous semesters, in order to reduce your workload. Keep that in mind in case you receive advice about project from seniors who did this module more than one semester ago.

    Team Expectations

    • Expectation Preserve product integrity i.e. ensure,
      1. features fit together to form a cohesive product,
      2. documentation follows a consistent style and presents a cohesive picture to the reader, and
      3. final project demo presents a cohesive picture to the audience.
    • Expectation Maintain product quality i.e. prevent breaking other parts of the product as it evolves. Note that bugs local to a specific feature will be counted against the author of that feature. However, if a new enhancement breaks the entire product, the whole team will have to share the penalty.
    • Expectation Manage the project i.e. ensure workflow, code maintenance, integration, releases, etc. are done smoothly.

    Individual Expectations

    Individual Expectations on Implementation

    • Expectation Contribute to the functional code of the product.
      • User-visible features are preferred, but it is not a strict requirement.:
      • The enhancement(s) should fit with the rest of the software (and the target user profile) and should have the consent of the team members. You will lose marks if you go 'rogue' and add things that don't fit with the product.

    Some examples:

    • Add a new feature e.g. add the ability to view statistics
    • Enhance an existing features in a major way e.g. make the command syntax more user friendly and closer to natural language
    • A redesign of the GUI e.g. make it work like a chat application (note: chat is a form of CLI)
    • A redesign of the code e.g. Improve the design to improve the code quality.

    • Tip: Contribute to all aspects of the project e.g. write backend code, frontend code, test code, user documentation, and developer documentation. Reason: If you limit yourself to certain aspects only, you could lose marks allocated for the aspects you did not do. In addition, the final exam assumes that you are familiar with all aspects of the project.

    • Tip: Do all the work related to your enhancement yourself. Reason: If there is no clear division of who did which enhancement, it will be difficult to divide project credit (or assign responsibility for bugs detected by testers) later.

    • Tip: Divide the components of the product among team members. Notwithstanding the above, you are still recommended to divide the components of the product among team members so that each team member is in charge of one or more components. While others will be modifying those components to fit their features, your role as the in charge of a component is to guide others modifying that component (reason: you are supposed to be the most knowledgeable about that component) and protect that component from degrading e.g., you can review others' changes to your component and suggest possible changes.

    Individual Expectations on Documentation

    • Objective: showcase your ability to write both user-facing documentation and developer-facing documentation.
    • Expectation Update the User Guide (UG) and the Developer Guide (DG) parts that are related to the enhancements you added. The minimum requirement is given below. (Reason: Evaluators will not be able to give you marks unless there is sufficient evidence of your documentation skills.)
      • UG: 1 or more pages
      • DG: 3 or more pages
    • Tip: If the UG/DG updates for your enhancements are not enough to reach the above requirements, you can make up the shortfall by documenting 'proposed' features and alternative designs/implementations.
    • Expectation Use at least 2 types of UML diagrams in your DG updates i.e., diagrams you added yourself or those you modified significantly.

    Individual Expectations on Testing

    • Expectation Write some automated tests so that we can evaluate your ability to write tests.

    🤔 How much testings is enough? We expect you to decide. You learned different types of testing and what they try to achieve. Based on that, you should decide how much of each type is required. Similarly, you can decide to what extent you want to automate tests, depending on the benefits and the effort required.
    There is no requirement for a minimum coverage level. Note that in a production environment you are often required to have at least 90% of the code covered by tests. In this project, it can be less. The weaker your tests are, the higher the risk of bugs, which will cost marks if not fixed before the final submission.

    Individual Expectations on Teamwork

    • Expectation Do an equal share of the team-tasks.

    Team-tasks are the tasks that someone in the team has to do.

    Here is a non-exhaustive list of team-tasks:

    1. Setting up the GitHub team org/repo
    2. Necessary general code enhancements e.g.,
      1. Work related to renaming the product
      2. Work related to changing the product icon
      3. Morphing the product into a different product
    3. Setting up tools e.g., GitHub, Gradle
    4. Maintaining the issue tracker
    5. Release management
    6. Updating user/developer docs that are not specific to a feature e.g. documenting the target user profile
    7. Incorporating more useful tools/libraries/frameworks into the product or the project workflow (e.g. automate more aspects of the project workflow using a GitHub plugin)

    • Expectation Carry an equal share of project roles and responsibilities.

    Roles indicate aspects you are in charge of and responsible for. E.g., if you are in charge of documentation, you are the person who should allocate which parts of the documentation is to be done by who, ensure the document is in right format, ensure consistency etc.

    This is a non-exhaustive list; you may define additional roles.

    • Team lead: Responsible for overall project coordination.
    • Documentation (short for ‘in charge of documentation’): Responsible for the quality of various project documents.
    • Testing: Ensures the testing of the project is done properly and on time.
    • Code quality: Looks after code quality, ensures adherence to coding standards, etc.
    • Deliverables and deadlines: Ensure project deliverables are done on time and in the right format.
    • Integration: In charge of versioning of the code, maintaining the code repository, integrating various parts of the software to create a whole.
    • Scheduling and tracking: In charge of defining, assigning, and tracking project tasks.
    • [Tool ABC] expert: e.g. Intellij expert, Git expert, etc. Helps other team member with matters related to the specific tool.
    • In charge of[Component XYZ]: e.g. In charge of Model, UI, Storage, etc. If you are in charge of a component, you are expected to know that component well, and review changes done to that component in v1.3-v1.4.

    Ensure each of the important roles are assigned to one person in the team. It is OK to have a 'backup' for each role, but for each aspect there should be one person who is unequivocally the person responsible for it. Reason: when everyone is responsible for everything, no one is.

    • Expectation Review each others work. Reason: reviewing skills is a learning outcome, and it is mutually beneficial.

    Your project should comply with the following constraints. Reason: to increase comparability among projects and to maximize applicability of module learning outcomes in the project.

    Constraint-Brownfield

    The final product should be a result of evolving/enhancing/morphing the given code base. However, you are allowed to replace all existing code with new code, as long as it is done incrementally. e.g. done in small steps, each producing a working product
    Reason: To simulate a brownfield project.

    Constraint-Typing-Preferred

    The product should be targeting users who can type fast and prefer typing over other means of input.
    Reason: to increase comparability of products, and to make feature evaluation easier for peer evaluators.

    Constraint-Single-User

    The product should be for a single user i.e. (not a multi-user product).
    Reason: multi-user systems are hard to test, which is unfair for peer testers who will be graded based on the number of bugs they find.

    Constraint-Incremental

    The product needs to be developed in a breadth-first incremental manner over the project duration. While it is fine to do less in some weeks and more in other weeks, a reasonably consistent delivery rate is expected. For example, it is not acceptable to do the entire project over the recess week and do almost nothing for the remainder of the semester.
    Reasons: 1. To simulate a real project where you have to work on a code base over a long period, possibly with breaks in the middle. 2. To learn how to deliver big features in small increments.

    Constraint-Human-Editable-File

    The data should be stored locally and should be in a human editable text file.
    Reason: To allow advanced users to manipulate the data by editing the data file.

    Constraint-No-DBMS

    Do not use a Database Management System e.g., MySQLDBMS to store data.
    Reason: Using a DBMS to store data will reduce the room to apply OOP techniques to manage data. It is true that most real world systems use a DBMS, but given the small size of this project, we need to optimize it for CS2103/T module learning outcomes; covering DBMS-related topics will have to be left to database modules or level 3 project modules.

    Constraint-OO

    The software should follow the Object-oriented paradigm primarily (but you are allowed to mix in a bit other styles when justifiable).
    Reason: For you to practice using OOP in a non-trivial project.

    Constraint-Platform-Independent

    The software should work on the Windows, Linux, and OS-X platforms. Even if you are unable to manually test the app on all three platforms, deliberately avoid using OS-dependent libraries and OS-specific features.
    Reason: Peer testers should be able to use any of these platforms.

    Constraint-Java-Version

    The software should work on a computer that has version 11 of Java i.e., no other Java version installed.

    Constraint-Portable

    The software should work without requiring an installer.
    Reason: Testers may not want to install your product on their computer.

    Constraint-No-Remote-Server

    The software should not depend on your own remote server.
    Reason: Anyone should be able to use/test your app any time, even after the semester is over.

    Constraint-External-Software

    The use of third-party frameworks/libraries is allowed but only if they,

    • are free, open-source, and have permissive license terms (E.g., trial version of libraries that require purchase after N days are not allowed).
    • do not require any installation by the user of your software.
    • do not violate other constraints.

    and is subjected to prior approval by the teaching team.
    Reason: We will not allow third-party software that can interfere with the learning objectives of the module.

    Please post in the forum your request to use a third-party libraries before you start using the library. Once a specific library has been approved for one team, other teams may use it without requesting permission again.
    Reason: The whole class should know which external software are used by others so that they can do the same if they wish to.

    Constraint-File-Size

    The file sizes of the deliverables should not exceed the limits given below.

    Reason: It is hard to download big files during the practical exam due to limited WiFi bandwidth at the venue:

    • JAR file: 100MB (Some third-party software -- e.g., Stanford NLP library, certain graphics libraries -- can cause you to exceed this limit)

    • PDF files: 15MB/file (Not following the recommended method of converting to PDF format can cause big PDF files. Another cause is using unnecessarily high resolution images for screenshots).


    In addition, you are strongly encouraged to follow these recommendations as they can help increase your project score.

    Recommendation-Minimal-Network

    It is OK to use a reliable public API e.g., Google search but we recommend that you have a fallback mechanism (e.g., able to load data using a data file if the network is down).
    Reason: During the mass peer-testing session, the network access can be intermittent due to high load. If your feature cannot be tested due to lack of Internet, that will have to be counted as a major bug, to be fair to those whose app is being tested and bugs found being penalized.
    If you use NUS data (e.g., scrape data from an NUS website), please work with NUS IT directly to get their approval first. Even well-intentioned use of NUS data without approval can get you into serious trouble (has happened before). The teaching team will not be able to get approval for you as the use of NUS data is not a module requirement.

    Recommendation-Testability

    Avoid implementing hard-to-test (both for manual testing as well as automated testing) features or features that make your product hard-to-test.
    Reason: testability is a grading criterion. If you choose to implement such a feature, you will need to spend an extra effort to reach an acceptable level of testability. Here are some examples of features that are hard-to-test:

    • Features that depend heavily on remote APIs: Those APIs can block your access if they mistake your automated tests as a bot attack. Some remote APIs require setting up accounts, keys, login etc, that will irritate the testers of your product and give a low rating to the testability of your work.
    • Audio-related features: The peer testing of your product is done under exam conditions where it is not appropriate to play audio.
    • Features that require creating user accounts, login, logout etc.

    Recommendation-CLI-First

    Following from the Constraint-Typing-Preferred, if the app is optimized for the target user (graded under the product design criterion), a user who can type fast should be able to accomplish most tasks faster via CLI, compared to a hypothetical GUI-only version of the app. For example, adding a new entity via the CLI should be faster than entering the same data through a GUI form.
    Therefore, the input to the app needs to be primarily CLI. The GUI is used primarily to give visual feedback to the user. While we don't prohibit non-CLI inputs, note that such inputs will reduce the suitability of the product to target users. Therefore, give CLI alternatives to mouse/GUI inputs, if applicable.
    Also keep in mind:

    • Regular typing is usually faster than using key combinations.
    • typing the full command and hitting ENTER will complete the taskOne-shot commands are faster over prompting the user to input one parameter at a timemulti-step commands. If you provide a multi-step command to help new users, you can also provide a one-shot equivalent for regular/expert users.

    If you are not sure if your product complies with a certain constraint/recommendation, please seek clarification by posting in the forum (preferred) or emailing the supervisor.

    1. Project Grading: Product Design [ 5 marks]

    Evaluates: how well your features fit together to form a cohesive product (not how many features or how big the features are) and how well does it match the target user

    Evaluated by:

    • tutors (based on product demo and user guide)
    • peers from other teams (based on peer testing and user guide)

    Q Quality of the product design,
    Evaluate based on the User Guide and the actual product behavior.

    Criterion Unable to judge Low Medium High
    target user Not specified Clearly specified and narrowed down appropriately
    value proposition Not specified The value to target user is low. App is not worth using Some small group of target users might find the app worth using Most of the target users are likely to find the app worth using
    optimized for target user Not enough focus for CLI users Mostly CLI-based, but cumbersome to use most of the time Feels like a fast typist can be more productive with the app, compared to an equivalent GUI app without a CLI
    feature-fit Many of the features don't fit with others Most features fit together but a few may be possible misfits All features fit together to for a cohesive whole

    In addition, feature flaws reported in the PE will be considered when grading this aspect.

    These are considered feature flaws:
    The feature does not solve the stated problem of the intended user i.e., the feature is 'incomplete'
    Hard-to-test features
    Features that don't fit well with the product
    Features that are not optimized enough for fast-typists or target users

    • Submission: Submit your product name, target user profile, the value proposition, and the public link to your collaborative project notes via TEAMMATES. You'll receive an email from TEAMMATES with the submission link. Only one member needs to submit on behalf of the team. All members can view/update the submission.
      Submission link will be sent to you by Mon, Aug 31st (reason: we need a few days to set up the submission system after teams have been finalized).