This site is not ready yet! The updated version will be available soon.
CS2103/T 2020 Jan-Apr
  • Full Timeline
  • Week 1 [Aug 12]
  • Week 2 [Aug 19]
  • Week 3 [Aug 26]
  • Week 4 [Sep 2]
  • Week 5 [Sep 9]
  • Week 6 [Sep 16]
  • Week 7 [Sep 30]
  • Week 8 [Oct 7]
  • Week 9 [Oct 14]
  • Week 10 [Oct 21]
  • Week 11 [Oct 28]
  • Week 12 [Nov 4]
  • Week 13 [Nov 11]
  • Textbook
  • Admin Info
  • Report Bugs
  • Forum
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • Java Coding Standard
  • Participation Marks List

  •  Individual Project (iP):
  • Individual Project Info
  • Duke Upstream Repo
  • iP Code Dashboard
  • iP Showcase

  •  Team Project (tP):
  • Team Project Info
  • Team IDs
  • Addressbook-level3
  • Addressbook-level 1,2,4
  • tP Code Dashboard
  • tP Showcase
  • Week 8 [Oct 7] - Project

    iP:

    1. Evaluate two peer iPs by Saturday 2359

    tP:

    1. Adjust process rigor if necessary
    2. Start proper milestone management
    3. Add another increment to your feature

    iP

    1 Evaluate two peer iPs by Saturday 2359

    This activity is worth 2 participation points!

    Your username 1st iP to evaluate 2nd iP to evaluate
    1nefootstep LuWenQ: [JAR][User Guide][Code] weikiat97: [JAR][User Guide][Code]
    AaronLuk WeomuCat: [JAR][User Guide][Code] cheongliyuan: [JAR][User Guide][Code]
    Abhiman2211 YiJiee: [JAR][User Guide][Code] bjhoohaha: [JAR][User Guide][Code]
    AHaliq SakshiPradyumn: [JAR][User Guide][Code] dalsontws: [JAR][User Guide][Code]
    AhmadHatziq bigjunnn: [JAR][User Guide][Code] Ellieyee: [JAR][User Guide][Code]
    aidilfbk fangpinsern: [JAR][User Guide][Code] yewon0303: [JAR][User Guide][Code]
    Akimatsu98 jcjjjared: [JAR][User Guide][Code] wilfredbtan: [JAR][User Guide][Code]
    Alaete SendorasLeft: [JAR][User Guide][Code] Xuerneas: [JAR][User Guide][Code]
    alages97 Russell-Loh-NUS: [JAR][User Guide][Code] Kalsyc: [JAR][User Guide][Code]
    alexwxh shiweing: [JAR][User Guide][Code] shawnpunchew11: [JAR][User Guide][Code]
    Alvinnyk aidilfbk: [JAR][User Guide][Code] Berttwm: [JAR][User Guide][Code]
    alxkohh sianghwee: [JAR][User Guide][Code] shiyao821: [JAR][User Guide][Code]
    ambervoong bjhoohaha: [JAR][User Guide][Code] fangpinsern: [JAR][User Guide][Code]
    ambhinav tirameshu: [JAR][User Guide][Code] uberSaiyan: [JAR][User Guide][Code]
    andyylam anqichen9856: [JAR][User Guide][Code] blimyj: [JAR][User Guide][Code]
    ang-zeyu ccyccyccy: [JAR][User Guide][Code] belbel98: [JAR][User Guide][Code]
    anqichen9856 dcshzj: [JAR][User Guide][Code] hooncp: [JAR][User Guide][Code]
    ArgVampir jonathantjendana: [JAR][User Guide][Code] seeziyang: [JAR][User Guide][Code]
    arjavibahety Dandford: [JAR][User Guide][Code] ChengGeng97: [JAR][User Guide][Code]
    arjunwangty gary-lgy: [JAR][User Guide][Code] victorvic54: [JAR][User Guide][Code]
    ArunBeCoding tysng: [JAR][User Guide][Code] CarbonGrid: [JAR][User Guide][Code]
    atharvjoshi HoWeiChin: [JAR][User Guide][Code] kerwin97: [JAR][User Guide][Code]
    Aulud elsakoh: [JAR][User Guide][Code] eejian97: [JAR][User Guide][Code]
    austinsantoso crazoter: [JAR][User Guide][Code] cheeyou: [JAR][User Guide][Code]
    Auxinnn qiujiaaa: [JAR][User Guide][Code] liawsy: [JAR][User Guide][Code]
    bakwxh ArunBeCoding: [JAR][User Guide][Code] JunHongT: [JAR][User Guide][Code]
    belbel98 jityong: [JAR][User Guide][Code] marcusteh1238: [JAR][User Guide][Code]
    bernicechio garylyp: [JAR][User Guide][Code] mrchensheng21: [JAR][User Guide][Code]
    Berttwm yewon0303: [JAR][User Guide][Code] EvonDong: [JAR][User Guide][Code]
    bigjunnn lye-jw: [JAR][User Guide][Code] ang-zeyu: [JAR][User Guide][Code]
    bitterg0d bakwxh: [JAR][User Guide][Code] crazoter: [JAR][User Guide][Code]
    bjhoohaha jolynnn8D: [JAR][User Guide][Code] larrylawl: [JAR][User Guide][Code]
    blimyj hooncp: [JAR][User Guide][Code] ambhinav: [JAR][User Guide][Code]
    brebeek weigenie: [JAR][User Guide][Code] joshuaseetss: [JAR][User Guide][Code]
    brianyenna chowyiwai: [JAR][User Guide][Code] lawncegoh: [JAR][User Guide][Code]
    briyanii Parcly-Taxel: [JAR][User Guide][Code] openorclose: [JAR][User Guide][Code]
    bruceskellator Yen-Peng: [JAR][User Guide][Code] ChangUo79: [JAR][User Guide][Code]
    caesarpjz limerencee: [JAR][User Guide][Code] rongrongrr: [JAR][User Guide][Code]
    calvincxz xinmingzh: [JAR][User Guide][Code] MauriceTXS: [JAR][User Guide][Code]
    cambrian-dk whneo97: [JAR][User Guide][Code] SQwQ: [JAR][User Guide][Code]
    CarbonGrid timothyleong97: [JAR][User Guide][Code] ChenJiehan318: [JAR][User Guide][Code]
    Cary-Xx chen-xi-cx: [JAR][User Guide][Code] tohcejasmine: [JAR][User Guide][Code]
    ccyccyccy t-cheepeng: [JAR][User Guide][Code] jityong: [JAR][User Guide][Code]
    chaitanyabaranwal belbel98: [JAR][User Guide][Code] john0227: [JAR][User Guide][Code]
    ChangUo79 AHaliq: [JAR][User Guide][Code] jonchan51: [JAR][User Guide][Code]
    chanjunren LiuZechu: [JAR][User Guide][Code] JermyTan: [JAR][User Guide][Code]
    charliechoong calvincxz: [JAR][User Guide][Code] fatclarence: [JAR][User Guide][Code]
    cheeyou jaesimin: [JAR][User Guide][Code] shuiyao-sg: [JAR][User Guide][Code]
    ChengGeng97 klementtan: [JAR][User Guide][Code] LiuZechu: [JAR][User Guide][Code]
    ChenJiehan318 thwnus: [JAR][User Guide][Code] limerencee: [JAR][User Guide][Code]
    chensu2436 SakuraBlossom: [JAR][User Guide][Code] LuWenQ: [JAR][User Guide][Code]
    chen-xi-cx Cronyxx: [JAR][User Guide][Code] arjavibahety: [JAR][User Guide][Code]
    cheongliyuan TeoShyanJie: [JAR][User Guide][Code] kangyeelim: [JAR][User Guide][Code]
    cheongsiuhong junhuplim: [JAR][User Guide][Code] AhmadHatziq: [JAR][User Guide][Code]
    choongyx yeodonghan: [JAR][User Guide][Code] charliechoong: [JAR][User Guide][Code]
    choonx99 Ellieyee: [JAR][User Guide][Code] pohlinwei: [JAR][User Guide][Code]
    chowyiwai jietung: [JAR][User Guide][Code] krusagiz: [JAR][User Guide][Code]
    chowyiyin lawncegoh: [JAR][User Guide][Code] fabbbbbbyy: [JAR][User Guide][Code]
    chrischenhui jxofficial: [JAR][User Guide][Code] kxyoke: [JAR][User Guide][Code]
    ChrisKheng ChenJiehan318: [JAR][User Guide][Code] caesarpjz: [JAR][User Guide][Code]
    ckb055 wongchuankai: [JAR][User Guide][Code] brebeek: [JAR][User Guide][Code]
    C-likethis123 MichaelaTSH: [JAR][User Guide][Code] liakify: [JAR][User Guide][Code]
    CoderStellaJ liawsy: [JAR][User Guide][Code] evelynejuliet: [JAR][User Guide][Code]
    CowSaysBaa Raikonen: [JAR][User Guide][Code] ShaunNgTX: [JAR][User Guide][Code]
    crazoter JunHongT: [JAR][User Guide][Code] jaesimin: [JAR][User Guide][Code]
    Crisgu Seris370: [JAR][User Guide][Code] yeodonghan: [JAR][User Guide][Code]
    Cronyxx chrischenhui: [JAR][User Guide][Code] Dandford: [JAR][User Guide][Code]
    cutieprobe wongsm7: [JAR][User Guide][Code] jeunhoe: [JAR][User Guide][Code]
    czkay stevenwjy: [JAR][User Guide][Code] uggi121: [JAR][User Guide][Code]
    daekoon etlow: [JAR][User Guide][Code] dingyuchen: [JAR][User Guide][Code]
    dalisc LivingOnEdge: [JAR][User Guide][Code] Davidcwh: [JAR][User Guide][Code]
    dalsontws Nanosync: [JAR][User Guide][Code] sheryltay28: [JAR][User Guide][Code]
    Dandford kxyoke: [JAR][User Guide][Code] klementtan: [JAR][User Guide][Code]
    Davidcwh jeongyh99: [JAR][User Guide][Code] stevenwjy: [JAR][User Guide][Code]
    dawo5010 lightz96: [JAR][User Guide][Code] nexolute: [JAR][User Guide][Code]
    dcshzj C-likethis123: [JAR][User Guide][Code] weiyang13: [JAR][User Guide][Code]
    dingyuchen jessicax941: [JAR][User Guide][Code] gabrielchao: [JAR][User Guide][Code]
    DivineDX PhireHandy: [JAR][User Guide][Code] scwaterbear: [JAR][User Guide][Code]
    dorcastan sheryltay28: [JAR][User Guide][Code] LivingOnEdge: [JAR][User Guide][Code]
    dragontho gabrielseow: [JAR][User Guide][Code] Russell-Loh-NUS: [JAR][User Guide][Code]
    dvrylc ChangUo79: [JAR][User Guide][Code] robytanama: [JAR][User Guide][Code]
    e0031374 cheongsiuhong: [JAR][User Guide][Code] EugeneTeu: [JAR][User Guide][Code]
    eejian97 TSAI-HSIAO-HAN: [JAR][User Guide][Code] troomtroom: [JAR][User Guide][Code]
    eizon05 ZiHawkEye: [JAR][User Guide][Code] atharvjoshi: [JAR][User Guide][Code]
    Ellieyee ang-zeyu: [JAR][User Guide][Code] chaitanyabaranwal: [JAR][User Guide][Code]
    elsakoh jun-ha0: [JAR][User Guide][Code] TSAI-HSIAO-HAN: [JAR][User Guide][Code]
    ernestyyh OneArmyj: [JAR][User Guide][Code] waifonglee: [JAR][User Guide][Code]
    eshwarkp LeonardTay748: [JAR][User Guide][Code] ZhangHuafan: [JAR][User Guide][Code]
    etlow shawnpunchew11: [JAR][User Guide][Code] jessicax941: [JAR][User Guide][Code]
    EugeneTeu AhmadHatziq: [JAR][User Guide][Code] choonx99: [JAR][User Guide][Code]
    evelynejuliet KxxMxxx: [JAR][User Guide][Code] ArunBeCoding: [JAR][User Guide][Code]
    EvonDong Kzrthikz: [JAR][User Guide][Code] brianyenna: [JAR][User Guide][Code]
    fabbbbbbyy iltep64: [JAR][User Guide][Code] Cary-Xx: [JAR][User Guide][Code]
    fadisng joannasara: [JAR][User Guide][Code] hoholyin: [JAR][User Guide][Code]
    fangpinsern larrylawl: [JAR][User Guide][Code] briyanii: [JAR][User Guide][Code]
    fatclarence MauriceTXS: [JAR][User Guide][Code] yhtingg: [JAR][User Guide][Code]
    febee99 mirozo: [JAR][User Guide][Code] shaoyi1997: [JAR][User Guide][Code]
    FelixNWJ evelynejuliet: [JAR][User Guide][Code] bakwxh: [JAR][User Guide][Code]
    francislow ckb055: [JAR][User Guide][Code] xinmingzh: [JAR][User Guide][Code]
    gabrielchao cutieprobe: [JAR][User Guide][Code] keiteo: [JAR][User Guide][Code]
    gabrielseow moziliar: [JAR][User Guide][Code] bruceskellator: [JAR][User Guide][Code]
    gachia joshuaseetss: [JAR][User Guide][Code] WilliamRyank: [JAR][User Guide][Code]
    gary-lgy sreesubbash: [JAR][User Guide][Code] kelvinnharris: [JAR][User Guide][Code]
    garylyp czkay: [JAR][User Guide][Code] jiayushe: [JAR][User Guide][Code]
    geshuming Alaete: [JAR][User Guide][Code] shiweing: [JAR][User Guide][Code]
    gohsnn TheRealRavager: [JAR][User Guide][Code] jonathantjendana: [JAR][User Guide][Code]
    halfwhole ChengGeng97: [JAR][User Guide][Code] chanjunren: [JAR][User Guide][Code]
    hcwong podocarp: [JAR][User Guide][Code] tuandingwei: [JAR][User Guide][Code]
    hellodommy bitterg0d: [JAR][User Guide][Code] austinsantoso: [JAR][User Guide][Code]
    hellopanda128 yaaanch: [JAR][User Guide][Code] ybchen97: [JAR][User Guide][Code]
    heze8 Kalsyc: [JAR][User Guide][Code] SakshiPradyumn: [JAR][User Guide][Code]
    hoholyin ROHITREDDYBALAM: [JAR][User Guide][Code] alxkohh: [JAR][User Guide][Code]
    honhaochen EvonDong: [JAR][User Guide][Code] linyutinglyt: [JAR][User Guide][Code]
    hooncp weiyang13: [JAR][User Guide][Code] tirameshu: [JAR][User Guide][Code]
    HoWeiChin SoilingRogue: [JAR][User Guide][Code] Aulud: [JAR][User Guide][Code]
    hua-lun seeziyang: [JAR][User Guide][Code] podocarp: [JAR][User Guide][Code]
    huiminlim ReignOfComputer: [JAR][User Guide][Code] jcjjjared: [JAR][User Guide][Code]
    Icesiolz ManasVegi: [JAR][User Guide][Code] xiaoyu-nus: [JAR][User Guide][Code]
    iltep64 walnads: [JAR][User Guide][Code] chen-xi-cx: [JAR][User Guide][Code]
    irene-lly ShuTingY: [JAR][User Guide][Code] lightz96: [JAR][User Guide][Code]
    jaesimin ChrisKheng: [JAR][User Guide][Code] MackyMaguire: [JAR][User Guide][Code]
    jakq ooimingsheng: [JAR][User Guide][Code] hellodommy: [JAR][User Guide][Code]
    jascxx tiuweehan: [JAR][User Guide][Code] Q-gabe: [JAR][User Guide][Code]
    jcjjjared marcfyk: [JAR][User Guide][Code] Icesiolz: [JAR][User Guide][Code]
    jeongyh99 bernicechio: [JAR][User Guide][Code] shawnlsj97: [JAR][User Guide][Code]
    JermyTan alages97: [JAR][User Guide][Code] heze8: [JAR][User Guide][Code]
    jerryk1997 EugeneTeu: [JAR][User Guide][Code] tanlk99: [JAR][User Guide][Code]
    jessicax941 LeeYiyuan: [JAR][User Guide][Code] cutieprobe: [JAR][User Guide][Code]
    jeunhoe tswuxia: [JAR][User Guide][Code] yaaanch: [JAR][User Guide][Code]
    jiayushe uggi121: [JAR][User Guide][Code] JohnNzj: [JAR][User Guide][Code]
    jietung niqiukun: [JAR][User Guide][Code] marqueurs404: [JAR][User Guide][Code]
    jityong Abhiman2211: [JAR][User Guide][Code] ambervoong: [JAR][User Guide][Code]
    joannasara gabrielchao: [JAR][User Guide][Code] ROHITREDDYBALAM: [JAR][User Guide][Code]
    Joanna-YJA jerryk1997: [JAR][User Guide][Code] lye-jw: [JAR][User Guide][Code]
    john0227 marcusteh1238: [JAR][User Guide][Code] Alvinnyk: [JAR][User Guide][Code]
    JohnNzj woon17: [JAR][User Guide][Code] KendrickAng: [JAR][User Guide][Code]
    joloong ybchen97: [JAR][User Guide][Code] SwampertX: [JAR][User Guide][Code]
    jolynnn8D Alvinnyk: [JAR][User Guide][Code] seanlowjk: [JAR][User Guide][Code]
    jonathantjendana 1nefootstep: [JAR][User Guide][Code] nattanyz: [JAR][User Guide][Code]
    jonchan51 dalsontws: [JAR][User Guide][Code] dorcastan: [JAR][User Guide][Code]
    jon-chua kohyida1997: [JAR][User Guide][Code] madanalogy: [JAR][User Guide][Code]
    joshuaseetss nishcafe: [JAR][User Guide][Code] jascxx: [JAR][User Guide][Code]
    jun-ha0 DivineDX: [JAR][User Guide][Code] neoshh: [JAR][User Guide][Code]
    JunHongT CarbonGrid: [JAR][User Guide][Code] ChrisKheng: [JAR][User Guide][Code]
    junhuplim Joanna-YJA: [JAR][User Guide][Code] bigjunnn: [JAR][User Guide][Code]
    junnbang ngzhaoming: [JAR][User Guide][Code] gabrielseow: [JAR][User Guide][Code]
    jxofficial tohcejasmine: [JAR][User Guide][Code] shawnkoh: [JAR][User Guide][Code]
    jyx11011 linyutinglyt: [JAR][User Guide][Code] niqiukun: [JAR][User Guide][Code]
    Kalsyc dvrylc: [JAR][User Guide][Code] khiangleon: [JAR][User Guide][Code]
    kangyeelim michelleykw: [JAR][User Guide][Code] junhuplim: [JAR][User Guide][Code]
    keiteo jeunhoe: [JAR][User Guide][Code] hellopanda128: [JAR][User Guide][Code]
    kelvinnharris febee99: [JAR][User Guide][Code] lumos309: [JAR][User Guide][Code]
    KendrickAng Yehezkiel01: [JAR][User Guide][Code] waynefong0401: [JAR][User Guide][Code]
    kenneth-fung ShaunNgTX: [JAR][User Guide][Code] LeonardTay748: [JAR][User Guide][Code]
    kensonoenqh alexwxh: [JAR][User Guide][Code] etlow: [JAR][User Guide][Code]
    kerwin97 Aulud: [JAR][User Guide][Code] PhireHandy: [JAR][User Guide][Code]
    khairulazman1997 Q-gabe: [JAR][User Guide][Code] C-likethis123: [JAR][User Guide][Code]
    khiangleon robytanama: [JAR][User Guide][Code] irene-lly: [JAR][User Guide][Code]
    klementtan junnbang: [JAR][User Guide][Code] dragontho: [JAR][User Guide][Code]
    kohyida1997 Akimatsu98: [JAR][User Guide][Code] mannggoo: [JAR][User Guide][Code]
    krusagiz marqueurs404: [JAR][User Guide][Code] walnads: [JAR][User Guide][Code]
    kwekke dingyuchen: [JAR][User Guide][Code] joannasara: [JAR][User Guide][Code]
    KxxMxxx hellodommy: [JAR][User Guide][Code] tysng: [JAR][User Guide][Code]
    kxyoke shawnkoh: [JAR][User Guide][Code] junnbang: [JAR][User Guide][Code]
    Kyzure Cary-Xx: [JAR][User Guide][Code] jxofficial: [JAR][User Guide][Code]
    Kzrthikz openorclose: [JAR][User Guide][Code] chowyiwai: [JAR][User Guide][Code]
    larrylawl seanlowjk: [JAR][User Guide][Code] Parcly-Taxel: [JAR][User Guide][Code]
    lawncegoh krusagiz: [JAR][User Guide][Code] iltep64: [JAR][User Guide][Code]
    le0tan zhixianggg: [JAR][User Guide][Code] ngswbryan: [JAR][User Guide][Code]
    LeeYiyuan fadisng: [JAR][User Guide][Code] wongsm7: [JAR][User Guide][Code]
    LeonardTay748 oscarsu97: [JAR][User Guide][Code] limxuanhui: [JAR][User Guide][Code]
    LeowWB ambhinav: [JAR][User Guide][Code] sreesubbash: [JAR][User Guide][Code]
    liakify LeowWB: [JAR][User Guide][Code] gary-lgy: [JAR][User Guide][Code]
    liawsy jakq: [JAR][User Guide][Code] KxxMxxx: [JAR][User Guide][Code]
    lightz96 dalisc: [JAR][User Guide][Code] mrnewguy: [JAR][User Guide][Code]
    limerencee SebastianLie: [JAR][User Guide][Code] Sahilgat: [JAR][User Guide][Code]
    limhawjia SQwQ: [JAR][User Guide][Code] yyuanxin: [JAR][User Guide][Code]
    limxuanhui lumwb: [JAR][User Guide][Code] cambrian-dk: [JAR][User Guide][Code]
    linyutinglyt brianyenna: [JAR][User Guide][Code] chowyiyin: [JAR][User Guide][Code]
    LiuZechu dragontho: [JAR][User Guide][Code] alages97: [JAR][User Guide][Code]
    LivingOnEdge zhangxuan97: [JAR][User Guide][Code] jeongyh99: [JAR][User Guide][Code]
    lrchema cambrian-dk: [JAR][User Guide][Code] limhawjia: [JAR][User Guide][Code]
    lumos309 shaoyi1997: [JAR][User Guide][Code] SendorasLeft: [JAR][User Guide][Code]
    lumwb AaronLuk: [JAR][User Guide][Code] whneo97: [JAR][User Guide][Code]
    LuWenQ hua-lun: [JAR][User Guide][Code] hcwong: [JAR][User Guide][Code]
    lye-jw tanlk99: [JAR][User Guide][Code] ccyccyccy: [JAR][User Guide][Code]
    lyskevin KendrickAng: [JAR][User Guide][Code] ryantay232: [JAR][User Guide][Code]
    lzw12345 shihaoyap: [JAR][User Guide][Code] TheRealRavager: [JAR][User Guide][Code]
    MackyMaguire caesarpjz: [JAR][User Guide][Code] weihaw08: [JAR][User Guide][Code]
    madanalogy mannggoo: [JAR][User Guide][Code] yuhongtay: [JAR][User Guide][Code]
    ManasVegi yuhongtay: [JAR][User Guide][Code] SimNee: [JAR][User Guide][Code]
    mannggoo wilfredbtan: [JAR][User Guide][Code] Auxinnn: [JAR][User Guide][Code]
    marcfyk madanalogy: [JAR][User Guide][Code] ManasVegi: [JAR][User Guide][Code]
    marcusteh1238 ambervoong: [JAR][User Guide][Code] aidilfbk: [JAR][User Guide][Code]
    marqueurs404 wallacelim97: [JAR][User Guide][Code] ryoarmanda: [JAR][User Guide][Code]
    MauriceTXS gachia: [JAR][User Guide][Code] minpyaemoe: [JAR][User Guide][Code]
    MichaelaTSH blimyj: [JAR][User Guide][Code] LeowWB: [JAR][User Guide][Code]
    michelleykw yyuanxin: [JAR][User Guide][Code] Joanna-YJA: [JAR][User Guide][Code]
    minpyaemoe WilliamRyank: [JAR][User Guide][Code] ning-sy210: [JAR][User Guide][Code]
    mirozo nordic96: [JAR][User Guide][Code] Xelyion: [JAR][User Guide][Code]
    MistyRainforest kerwin97: [JAR][User Guide][Code] DivineDX: [JAR][User Guide][Code]
    moziliar JermyTan: [JAR][User Guide][Code] Yen-Peng: [JAR][User Guide][Code]
    mrchensheng21 jiayushe: [JAR][User Guide][Code] Oscar-B-Liang: [JAR][User Guide][Code]
    mrnewguy Davidcwh: [JAR][User Guide][Code] czkay: [JAR][User Guide][Code]
    muhammadaljunied kangyeelim: [JAR][User Guide][Code] cheongsiuhong: [JAR][User Guide][Code]
    Na-Nazhou ryantay232: [JAR][User Guide][Code] jon-chua: [JAR][User Guide][Code]
    Nanosync irene-lly: [JAR][User Guide][Code] dawo5010: [JAR][User Guide][Code]
    nattanyz weikiat97: [JAR][User Guide][Code] Raikonen: [JAR][User Guide][Code]
    neoshh scwaterbear: [JAR][User Guide][Code] shihaoyap: [JAR][User Guide][Code]
    nexolute mrnewguy: [JAR][User Guide][Code] garylyp: [JAR][User Guide][Code]
    ngswbryan TanZhanMing: [JAR][User Guide][Code] AaronLuk: [JAR][User Guide][Code]
    ngzhaoming chanjunren: [JAR][User Guide][Code] moziliar: [JAR][User Guide][Code]
    ning-sy210 khairulazman1997: [JAR][User Guide][Code] dcshzj: [JAR][User Guide][Code]
    niqiukun chowyiyin: [JAR][User Guide][Code] wallacelim97: [JAR][User Guide][Code]
    nishcafe yhtingg: [JAR][User Guide][Code] tiuweehan: [JAR][User Guide][Code]
    nordic96 ryanYtan: [JAR][User Guide][Code] geshuming: [JAR][User Guide][Code]
    olivercheok20 tuandingwei: [JAR][User Guide][Code] zhixianggg: [JAR][User Guide][Code]
    OneArmyj Oscar-B-Liang: [JAR][User Guide][Code] Yoshi275: [JAR][User Guide][Code]
    ooimingsheng FelixNWJ: [JAR][User Guide][Code] bitterg0d: [JAR][User Guide][Code]
    openorclose jyx11011: [JAR][User Guide][Code] jietung: [JAR][User Guide][Code]
    Oscar-B-Liang JohnNzj: [JAR][User Guide][Code] lyskevin: [JAR][User Guide][Code]
    oscarsu97 ngswbryan: [JAR][User Guide][Code] lumwb: [JAR][User Guide][Code]
    Parcly-Taxel honhaochen: [JAR][User Guide][Code] jyx11011: [JAR][User Guide][Code]
    philipalexanderb gohsnn: [JAR][User Guide][Code] ArgVampir: [JAR][User Guide][Code]
    PhireHandy eejian97: [JAR][User Guide][Code] tishyakhanna97: [JAR][User Guide][Code]
    podocarp CowSaysBaa: [JAR][User Guide][Code] kenneth-fung: [JAR][User Guide][Code]
    pohlinwei chaitanyabaranwal: [JAR][User Guide][Code] YiJiee: [JAR][User Guide][Code]
    Q-gabe andyylam: [JAR][User Guide][Code] MichaelaTSH: [JAR][User Guide][Code]
    qiujiaaa xiaoyu-nus: [JAR][User Guide][Code] jakq: [JAR][User Guide][Code]
    qweiping31415 Wingedevil: [JAR][User Guide][Code] ckb055: [JAR][User Guide][Code]
    Raikonen olivercheok20: [JAR][User Guide][Code] le0tan: [JAR][User Guide][Code]
    R-D-D-D shiyao821: [JAR][User Guide][Code] ZiHawkEye: [JAR][User Guide][Code]
    ReignOfComputer jon-chua: [JAR][User Guide][Code] marcfyk: [JAR][User Guide][Code]
    robytanama jonchan51: [JAR][User Guide][Code] ShuTingY: [JAR][User Guide][Code]
    ROHITREDDYBALAM keiteo: [JAR][User Guide][Code] sianghwee: [JAR][User Guide][Code]
    rongrongrr Sahilgat: [JAR][User Guide][Code] qweiping31415: [JAR][User Guide][Code]
    Russell-Loh-NUS bruceskellator: [JAR][User Guide][Code] dvrylc: [JAR][User Guide][Code]
    ryantay232 waynefong0401: [JAR][User Guide][Code] kohyida1997: [JAR][User Guide][Code]
    ryanYtan lumos309: [JAR][User Guide][Code] Alaete: [JAR][User Guide][Code]
    ryoarmanda Kyzure: [JAR][User Guide][Code] chrischenhui: [JAR][User Guide][Code]
    Sahilgat Sam-limyr: [JAR][User Guide][Code] Wingedevil: [JAR][User Guide][Code]
    SakshiPradyumn khiangleon: [JAR][User Guide][Code] Nanosync: [JAR][User Guide][Code]
    SakuraBlossom ArgVampir: [JAR][User Guide][Code] hua-lun: [JAR][User Guide][Code]
    Sam-limyr Crisgu: [JAR][User Guide][Code] choongyx: [JAR][User Guide][Code]
    SamYJ2606 philipalexanderb: [JAR][User Guide][Code] SakuraBlossom: [JAR][User Guide][Code]
    sandydays kwekke: [JAR][User Guide][Code] fadisng: [JAR][User Guide][Code]
    scwaterbear tishyakhanna97: [JAR][User Guide][Code] SamYJ2606: [JAR][User Guide][Code]
    seahlynn weihaw08: [JAR][User Guide][Code] Crisgu: [JAR][User Guide][Code]
    seanlowjk Berttwm: [JAR][User Guide][Code] honhaochen: [JAR][User Guide][Code]
    SebastianLie seahlynn: [JAR][User Guide][Code] Sam-limyr: [JAR][User Guide][Code]
    seeziyang nattanyz: [JAR][User Guide][Code] CowSaysBaa: [JAR][User Guide][Code]
    SendorasLeft kensonoenqh: [JAR][User Guide][Code] daekoon: [JAR][User Guide][Code]
    Seris370 qweiping31415: [JAR][User Guide][Code] francislow: [JAR][User Guide][Code]
    shaoyi1997 Xelyion: [JAR][User Guide][Code] kensonoenqh: [JAR][User Guide][Code]
    ShaunNgTX le0tan: [JAR][User Guide][Code] oscarsu97: [JAR][User Guide][Code]
    shawnkoh halfwhole: [JAR][User Guide][Code] ngzhaoming: [JAR][User Guide][Code]
    shawnlsj97 mrchensheng21: [JAR][User Guide][Code] OneArmyj: [JAR][User Guide][Code]
    shawnpunchew11 sandydays: [JAR][User Guide][Code] LeeYiyuan: [JAR][User Guide][Code]
    sheryltay28 dawo5010: [JAR][User Guide][Code] zhangxuan97: [JAR][User Guide][Code]
    shihaoyap SamYJ2606: [JAR][User Guide][Code] chensu2436: [JAR][User Guide][Code]
    ShirleyWangxt ning-sy210: [JAR][User Guide][Code] anqichen9856: [JAR][User Guide][Code]
    shiweing Xuerneas: [JAR][User Guide][Code] sandydays: [JAR][User Guide][Code]
    shiyao821 joloong: [JAR][User Guide][Code] teoha: [JAR][User Guide][Code]
    shuiyao-sg MackyMaguire: [JAR][User Guide][Code] seahlynn: [JAR][User Guide][Code]
    ShuTingY dorcastan: [JAR][User Guide][Code] dalisc: [JAR][User Guide][Code]
    sianghwee hellopanda128: [JAR][User Guide][Code] joloong: [JAR][User Guide][Code]
    SimNee CoderStellaJ: [JAR][User Guide][Code] FelixNWJ: [JAR][User Guide][Code]
    SoilingRogue tcgj: [JAR][User Guide][Code] elsakoh: [JAR][User Guide][Code]
    SQwQ muhammadaljunied: [JAR][User Guide][Code] e0031374: [JAR][User Guide][Code]
    sreesubbash uberSaiyan: [JAR][User Guide][Code] febee99: [JAR][User Guide][Code]
    stevenwjy shawnlsj97: [JAR][User Guide][Code] ernestyyh: [JAR][User Guide][Code]
    SwampertX teika97: [JAR][User Guide][Code] tcgj: [JAR][User Guide][Code]
    tanlk99 choonx99: [JAR][User Guide][Code] t-cheepeng: [JAR][User Guide][Code]
    TanZhanMing ZhangHuafan: [JAR][User Guide][Code] WeomuCat: [JAR][User Guide][Code]
    tcgj MistyRainforest: [JAR][User Guide][Code] jun-ha0: [JAR][User Guide][Code]
    t-cheepeng pohlinwei: [JAR][User Guide][Code] Abhiman2211: [JAR][User Guide][Code]
    teika97 atharvjoshi: [JAR][User Guide][Code] MistyRainforest: [JAR][User Guide][Code]
    teoha SwampertX: [JAR][User Guide][Code] SoilingRogue: [JAR][User Guide][Code]
    TeoShyanJie limhawjia: [JAR][User Guide][Code] michelleykw: [JAR][User Guide][Code]
    TheRealRavager chensu2436: [JAR][User Guide][Code] 1nefootstep: [JAR][User Guide][Code]
    thwnus shuiyao-sg: [JAR][User Guide][Code] SebastianLie: [JAR][User Guide][Code]
    timothyleong97 cheeyou: [JAR][User Guide][Code] thwnus: [JAR][User Guide][Code]
    tirameshu arjunwangty: [JAR][User Guide][Code] weiijiie: [JAR][User Guide][Code]
    tishyakhanna97 troomtroom: [JAR][User Guide][Code] philipalexanderb: [JAR][User Guide][Code]
    tiuweehan ShirleyWangxt: [JAR][User Guide][Code] andyylam: [JAR][User Guide][Code]
    tohcejasmine arjavibahety: [JAR][User Guide][Code] halfwhole: [JAR][User Guide][Code]
    troomtroom lzw12345: [JAR][User Guide][Code] gohsnn: [JAR][User Guide][Code]
    TSAI-HSIAO-HAN neoshh: [JAR][User Guide][Code] lzw12345: [JAR][User Guide][Code]
    tswuxia alxkohh: [JAR][User Guide][Code] R-D-D-D: [JAR][User Guide][Code]
    tuandingwei kenneth-fung: [JAR][User Guide][Code] eshwarkp: [JAR][User Guide][Code]
    tysng austinsantoso: [JAR][User Guide][Code] timothyleong97: [JAR][User Guide][Code]
    uberSaiyan weiijiie: [JAR][User Guide][Code] mirozo: [JAR][User Guide][Code]
    uggi121 ernestyyh: [JAR][User Guide][Code] woon17: [JAR][User Guide][Code]
    victorvic54 kelvinnharris: [JAR][User Guide][Code] ryanYtan: [JAR][User Guide][Code]
    waifonglee Yoshi275: [JAR][User Guide][Code] zhangj1an: [JAR][User Guide][Code]
    wallacelim97 fabbbbbbyy: [JAR][User Guide][Code] Kyzure: [JAR][User Guide][Code]
    walnads ryoarmanda: [JAR][User Guide][Code] Cronyxx: [JAR][User Guide][Code]
    waynefong0401 huiminlim: [JAR][User Guide][Code] Akimatsu98: [JAR][User Guide][Code]
    weigenie fatclarence: [JAR][User Guide][Code] nishcafe: [JAR][User Guide][Code]
    weihaw08 rongrongrr: [JAR][User Guide][Code] Seris370: [JAR][User Guide][Code]
    weiijiie victorvic54: [JAR][User Guide][Code] nordic96: [JAR][User Guide][Code]
    weikiat97 hcwong: [JAR][User Guide][Code] olivercheok20: [JAR][User Guide][Code]
    weiyang13 liakify: [JAR][User Guide][Code] arjunwangty: [JAR][User Guide][Code]
    WeomuCat lrchema: [JAR][User Guide][Code] TeoShyanJie: [JAR][User Guide][Code]
    whneo97 cheongliyuan: [JAR][User Guide][Code] muhammadaljunied: [JAR][User Guide][Code]
    wilfredbtan Icesiolz: [JAR][User Guide][Code] qiujiaaa: [JAR][User Guide][Code]
    WilliamRyank jascxx: [JAR][User Guide][Code] khairulazman1997: [JAR][User Guide][Code]
    Wingedevil choongyx: [JAR][User Guide][Code] wongchuankai: [JAR][User Guide][Code]
    wongchuankai charliechoong: [JAR][User Guide][Code] weigenie: [JAR][User Guide][Code]
    wongsm7 hoholyin: [JAR][User Guide][Code] tswuxia: [JAR][User Guide][Code]
    woon17 waifonglee: [JAR][User Guide][Code] Yehezkiel01: [JAR][User Guide][Code]
    Xelyion geshuming: [JAR][User Guide][Code] alexwxh: [JAR][User Guide][Code]
    xiaoyu-nus SimNee: [JAR][User Guide][Code] ooimingsheng: [JAR][User Guide][Code]
    xinmingzh brebeek: [JAR][User Guide][Code] gachia: [JAR][User Guide][Code]
    Xuerneas daekoon: [JAR][User Guide][Code] kwekke: [JAR][User Guide][Code]
    yaaanch R-D-D-D: [JAR][User Guide][Code] eizon05: [JAR][User Guide][Code]
    ybchen97 eizon05: [JAR][User Guide][Code] teika97: [JAR][User Guide][Code]
    Yehezkiel01 zhangj1an: [JAR][User Guide][Code] huiminlim: [JAR][User Guide][Code]
    Yen-Peng heze8: [JAR][User Guide][Code] AHaliq: [JAR][User Guide][Code]
    yeodonghan francislow: [JAR][User Guide][Code] calvincxz: [JAR][User Guide][Code]
    yewon0303 briyanii: [JAR][User Guide][Code] Kzrthikz: [JAR][User Guide][Code]
    yhtingg minpyaemoe: [JAR][User Guide][Code] ShirleyWangxt: [JAR][User Guide][Code]
    YiJiee john0227: [JAR][User Guide][Code] jolynnn8D: [JAR][User Guide][Code]
    Yoshi275 lyskevin: [JAR][User Guide][Code] Na-Nazhou: [JAR][User Guide][Code]
    yuhongtay Auxinnn: [JAR][User Guide][Code] CoderStellaJ: [JAR][User Guide][Code]
    yyuanxin e0031374: [JAR][User Guide][Code] jerryk1997: [JAR][User Guide][Code]
    ZhangHuafan limxuanhui: [JAR][User Guide][Code] lrchema: [JAR][User Guide][Code]
    zhangj1an Na-Nazhou: [JAR][User Guide][Code] ReignOfComputer: [JAR][User Guide][Code]
    zhangxuan97 nexolute: [JAR][User Guide][Code] bernicechio: [JAR][User Guide][Code]
    zhixianggg eshwarkp: [JAR][User Guide][Code] TanZhanMing: [JAR][User Guide][Code]
    ZiHawkEye teoha: [JAR][User Guide][Code] HoWeiChin: [JAR][User Guide][Code]

    1. Find out which iPs are allocated for your evaluation from the panel above.
    2. Download the JAR file of the first iP by following the link provided.
    3. Locate the User Guide of the app by following the link provided.
    4. Open the LumiNUS survey (the one named iP Peer Evaluation 1) that you will be using to submit your evaluation and take note of the things you need to evaluate.
    5. Do a light testing of the app (not more than 10 minutes) to ensure the claimed features actually exist.
      If double-clicking the jar file doesn't work, use the java -jar {file_name} command to open it.
      Make sure you are using Java 11 to run the jar file (use java -version command to confirm).
    6. Do a quick examination of the code (~ 5 minutes) by following the provided link.
    7. Submit your evaluation using the survey.
    8. Repeat the above steps for the 2nd iP allocated to you (use the survey iP Peer Evaluation 2).


    tP: mid-v1.2

    Reminder:

    Milestone requirements are cumulative. The recommended progress for the mid-milestone is an implicit requirement for the actual milestone unless a milestone requirement overrides a mid-milestone requirement e.g., mid-milestone requires a document to be in a temp format while the actual milestone requires it to be in the proper format. Similarly, a requirement for milestone n is also an implicit requirement for milestone n+1 unless n+1 overrides the n requirement. This means if you miss some requirement at milestone n, you should try to achieve it before milestone n+1 or else it could be noted again as a 'missed requirement' at milestone n+1.

    0 Ensure you know tP expectations

    • If you haven't done so already, make sure you know individual and team expectations of the tP

    Relevant: [Admin tP Scope: Individual Expectations ]

    [Individual] Expectations on Enhancements
    • You are expected to enhance the product in some way(s). User-visible enhancements are preferred, but it is not a strict requirement. 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.%%

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

    Tips:

    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.

    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.

    Divide the components of the product among team members. Notwithstanding the above, you are still expected 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 as necessary for the features they are implementing, 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.

    • How much code to write? The project grade depends on the value you added, as perceived by evaluators (i.e., team members, peer evaluators, and tutors) as well as other factors such as the quality of the code. As such, there is no strong correlation between the LoC and the grade. For instance, in a recent semester, a student who wrote 500 LoC of functional code (i.e., excluding test code and documentation) was able to reach top 20% (in terms of project marks), another who wrote 900 LoC reached the top 10%, while another who wrote more than 5000 LoC ended up in the bottom 10%. Also see the the percentiles of functional LoC written by that batch of students, given below:
      Percentile 25 50 75
      LoC ~1000 ~1500 ~2500
    [Individual] Expectations on Documentation
    • You are expected to write user documentation and developer documentation for your features.
    • The objective is to showcase your ability to write the two types of documentation. If the documentation for your features is not enough to meet that objective, or does not reach the following minimal requirement, you can make up the shortfall by documenting 'proposed' features and alternative designs/implementations.
      • Contribution to the user guide: 1 page
      • Contribution to the developer guide: 3 pages
    • You are expected to showcase your ability to use the various UML diagrams (at least 2 types). As mentioned in the previous point, if the documentation of your features doesn't give you enough opportunities to do so e.g., your features only required minor updates to existing diagrams, you are expected to create those opportunities yourself by documenting proposed features or alternative designs. Evaluators will not be able to give you marks unless there is sufficient evidence of your documentation skills.
    • You are required to update the entire UG and DG to match your product. However, there is no need to update other documents such as tutorials that are AB3 specific.
    [Individual] Expectations on Testing
    • 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 less coverage you have, the higher the risk of regression bugs, which will cost marks if not fixed before the final submission.
    • You must write some tests so that we can evaluate your ability to write tests.
    • How much of each type of testing should you do? 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.
    [Individual] Expectations on Teamwork

    Team-tasks are the tasks that someone in the team has to do. Marks allocated to team-tasks will be divided among team members based on how much each member contributed to those tasks.

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

    1. 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
    2. Setting up the GitHub, Travis, AppVeyor, etc.
    3. Maintaining the issue tracker
    4. Release management
    5. Updating user/developer docs that are not specific to a feature e.g. documenting the target user profile
    6. 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)

    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.

    Please make sure 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.

    Relevant: [Admin tP Scope: Team Expectations ]

    Team Expectations

    1. 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.
    2. 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.
    3. Manage the project: i.e. ensure workflow, code maintenance, integration, releases, etc. are done smoothly.

    1 Adjust process rigor if necessary

    • Adjust process rigor to suit your team's pace, as explained in the panel below.

    Relevant: [Admin Appendix E(extract): Workflow (after v1.1) ]

    After completing v1.1, you can reduce process rigor to suit your team's pace. Here are some examples:

    • Reduce automated tests: Automated tests have benefits, but they can be a pain to write/maintain; GUI tests are especially hard to maintain because their behavior can sometimes depend on things such as the OS, resolution etc.
      It is OK to get rid of some of the troublesome tests and rely more on manual testing instead. The less automated tests you have, the higher the risk of regressions; but it may be an acceptable trade-off under the circumstances if tests are slowing you down too much.
      There is no direct penalty for removing tests. Also note our expectation on test code.

    • Reduce automated checks: You can also reduce the rigor of checkstyle checks to expedite PR processing.

    • Switch to a lighter workflow: While forking workflow is the safest, it is also rather heavy. You an switch to a simpler workflow if the forking workflow is slowing you down. Refer the textbook to find more about alternative workflows: branching workflow, centralized workflow. However, we still recommend that you use PR reviews, at least for PRs affecting others' features.

    You can also increase the rigor/safety of your workflow in the following ways:

    • Use GitHub's Protected Branches feature to protect your master branch against rogue PRs.
    • 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 less coverage you have, the higher the risk of regression bugs, which will cost marks if not fixed before the final submission.
    • You must write some tests so that we can evaluate your ability to write tests.
    • How much of each type of testing should you do? 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.

    You are free to adjust process rigor and project plan at any future time in the project, starting from v1.2. If you are not sure if a certain adjustment is allowed, you can check with the teaching team first.

    2 Start proper milestone management

    • Set up the issue tracker as described in the panel below, if you haven't done so already.

    Relevant: [Admin Appendix E(extract): Setting up the issue tracker ]

    Issue Tracker Setup

    We recommend you configure the issue tracker of the main repo as follows:

    • Delete existing labels and add the following labels.
      Issue type labels are useful from the beginning of the project. The other labels are needed only when you start implementing the features.

    Issue type labels:

    • type.Epic : A big feature which can be broken down into smaller stories e.g. search
    • type.Story : A user story
    • type.Enhancement: An enhancement to an existing story
    • type.Task (or type.Chore) : Something that needs to be done, but not a story, bug, or an epic. e.g. Move testing code into a new folder)
    • type.Bug : A bug

    Status labels:

    • status.Ongoing : The issue is currently being worked on. note: remove this label before closing an issue.

    Priority labels:

    • priority.High : Must do
    • priority.Medium : Nice to have
    • priority.Low : Unlikely to do

    Bug Severity labels:

    • severity.VeryLow : A flaw that is purely cosmetic and does not affect usage e.g., a typo/spacing/layout/color/font issues in the docs or the UI that doesn't affect usage.
    • severity.Low : A flaw that is unlikely to affect normal operations of the product. Appears only in very rare situations and causes a minor inconvenience only.
    • severity.Medium : A flaw that causes occasional inconvenience to some users but they can continue to use the product.
    • severity.High : A flaw that affects most users and causes major problems for users. i.e., makes the product almost unusable for most users.
    • Create following milestones : v1.0v1.1v1.2v1.3v1.4,

    • You may configure other project settings as you wish. e.g. more labels, more milestones

    • Start proper schedule tracking and milestone management as explained in the panel below.

    Relevant: [Admin Appendix E(extract): Project schedule tracking ]

    Project Schedule Tracking

    In general, use the issue tracker (Milestones, Issues, PRs, Tags, Releases, and Labels) for assigning, scheduling, and tracking all noteworthy project tasks, including user stories. Update the issue tracker regularly to reflect the current status of the project. You can also use GitHub's Projects feature to manage the project, but keep it linked to the issue tracker as much as you can.

    Using Issues:

    During the initial stages (latest by the start of v1.2):

    • Record each of the user stories you plan to deliver as an issue in the issue tracker. e.g. Title: As a user I can add a deadline
      Description: ... so that I can keep track of my deadlines

    • Assign the type.* and priority.* labels to those issues.

    • Formalize the project plan by assigning relevant issues to the corresponding milestone.

    From milestone v1.2:

    • Define project tasks as issues. When you start implementing a user story (or a feature), break it down to smaller tasks if necessary. Define reasonable sized, standalone tasks. Create issues for each of those tasks so that they can be tracked.e.g.

      • A typical task should be able to done by one person, in a few hours.

        • Bad (reasons: not a one-person task, not small enough): Write the Developer Guide
        • Good: Update class diagram in the Developer Guide for v1.4
      • There is no need to break things into VERY small tasks. Keep them as big as possible, but they should be no bigger than what you are going to assign a single person to do within a week. eg.,

        • Bad:Implementing parser (reason: too big).
        • Good:Implementing parser support for adding of floating tasks
      • Do not track things taken for granted. e.g., push code to repo should not be a task to track. In the example given under the previous point, it is taken for granted that the owner will also (a) test the code and (b) push to the repo when it is ready. Those two need not be tracked as separate tasks.

      • Write a descriptive title for the issue. e.g. Add support for the 'undo' command to the parser

        • Omit redundant details. In some cases, the issue title is enough to describe the task. In that case, no need to repeat it in the issue description. There is no need for well-crafted and detailed descriptions for tasks. A minimal description is enough. Similarly, labels such as priority can be omitted if you think they don't help you.

    • Assign tasks (i.e., issues) to the corresponding team members using the assignees field. Normally, there should be some ongoing tasks and some pending tasks against each team member at any point.

    • Optionally, you can use status.ongoing label to indicate issues currently ongoing.

    Using Milestones:

    We recommend you do proper milestone management starting from v1.2. Given below are the conditions to satisfy for a milestone to be considered properly managed:

    Planning a Milestone:

    • Issues assigned to the milestone, team members assigned to issues: Used GitHub milestones to indicate which issues are to be handled for which milestone by assigning issues to suitable milestones. Also make sure those issues are assigned to team members. Note that you can change the milestone plan along the way as necessary.

    • Deadline set for the milestones (in the GitHub milestone). Your internal milestones can be set earlier than the deadlines we have set, to give you a buffer.

    Wrapping up a Milestone:

    • A working product tagged with the correct tag (e.g. v1.2) and is pushed to the main repo
      or a product release done on GitHub. A product release is optional for v1.2 but required from from v1.3. Click here to see an example release.

    • All tests passing on Travis for the version tagged/released.

    • Milestone updated to match the product i.e. all issues completed and PRs merged for the milestone should be assigned to the milestone. Incomplete issues/PRs should be moved to a future milestone.

    • Milestone closed.

    • If necessary, future milestones are revised based on what you experienced in the current milestone e.g. if you could not finish all issues assigned to the current milestone, it is a sign that you overestimated how much you can do in a week, which means you might want to reduce the issues assigned to future milestones to match that observation.

    Try to achieve all milestone requirements, but do not fret if you miss a few. You will get full marks as long as you achieve about 60% of the milestone requirements on average. Yes, that's a pretty low bar, but we have set it low in order to reduce workload and stress. Ideally, you should achieve close to 80-90%.

    3 Add another increment to your feature

    • Add an increment to your feature, aiming to deliver a user-visible version of your feature by v1.2 i.e., simpler than the feature intended for v1.4, but still usable by the user.

    • From v1.2 onwards each member is expected to contribute some code to each milestone, preferably each week; only merged code is considered as contributions (Reason).
      If an enhancement is too big to complete in one milestone, try to deliver it in smaller incremental steps e.g. deliver a basic version of the enhancement first.