This site is from a past semester! The current version will be here when the new semester starts.

Week 5 [Fri, Feb 4th] - Tutorial

1 Discuss code quality problems of iP PRs

  1. Find the PR you have been allocated to discuss (expand the the panel below). If the allocated PR is not available or suitable, you can choose the fallback option, and failing that, any random PR.

    PR allocation

    Your username PR to review Fallback PR to review
    1001mei clement0010's PR whoisjunhong's PR
    9teMare seanlaiys's PR AAlghrairy's PR
    AAlghrairy onefangg's PR bryans17's PR
    AD-NAP geetengtan's PR castryl's PR
    AdrianOngJJ jxt00's PR bloodofme's PR
    AinsleyJ thewrik's PR AdrianOngJJ's PR
    Ardentsoul joszx's PR brian16600's PR
    AryanSarswat OhEyeSee's PR waffledood's PR
    Ashuh YiHern-Lee's PR lowkaiwei98's PR
    B1LLP4RK aditi2313's PR AryanSarswat's PR
    Benjykoh ongkimlai's PR zawedcvg's PR
    BrendonLau LapisRaider's PR ddx-510's PR
    Btaykb ngjunkang's PR markbiju's PR
    ChanWeiJie geraldneo567's PR Wei-Xinn's PR
    Cyolune Jiaaa-yang's PR mradhyaf's PR
    DALIN-Prog charmainehly's PR kahleongq's PR
    DaneMarc Ryan-L98's PR ckcherry23's PR
    DannyDakota EvaderFati's PR xpzmichael's PR
    DavidTan0527 cheekean5848's PR junrong98's PR
    Decaxical brandonrhan's PR ChanWeiJie's PR
    Denniszedead cheehongw's PR michaelseyo's PR
    Dineshraj555 vishandi's PR imrajsinghsandhu's PR
    EvaderFati xpzmichael's PR hanqinilnix's PR
    FYimu putaojuice's PR sophiien's PR
    Fenway17 fantablack's PR gigituang's PR
    FestiveCat zechajw's PR yuqitanyq's PR
    Geralddtan hieunm1821's PR aaron-ljx's PR
    Gernene brelkh's PR eugenechiaay's PR
    Gnoznaug blaketingyu's PR medajet's PR
    Graphcalibur punnyhuimin's PR xzzz3's PR
    Halpfrog Vishwanth2210's PR jaegarpoon's PR
    HanJiyao joeietao's PR Spyobird's PR
    Harish-coding YiFei2's PR garethkoh's PR
    Jacky142857 cwq2326's PR Dineshraj555's PR
    Jiaaa-yang mradhyaf's PR AD-NAP's PR
    JonathanHoshi cwnm's PR louisdavinlie's PR
    Justinnje tanyjnaaman's PR alfredkohhh's PR
    KeithCZW manu2002g's PR rahulprasad01's PR
    Kidsnd274 tomascherian's PR zixin448's PR
    Korochii rcjj98's PR junjieteoh's PR
    KristopherPTaslim KwanHW's PR kaiyichen's PR
    KwanHW kaiyichen's PR chuashihong's PR
    LapisRaider ddx-510's PR myc37's PR
    LeeEnEn benmurphyy's PR khoahre123's PR
    LikHern goalfix's PR aweijun's PR
    LowJiaHao99 dionegoh's PR hanhuiice's PR
    MelvinCZJ prgJ's PR darshan152's PR
    MontyPython28 Ardentsoul's PR joszx's PR
    NatalieTanML petermonky's PR zunedz's PR
    NicsunXnus teominghuang's PR Halpfrog's PR
    Oddcorner talkintomato's PR nnmoq's PR
    OhEyeSee waffledood's PR SethCKL's PR
    Punpun1643 sbhbenjamin's PR ian-from-dover's PR
    Rdac0 HanJiyao's PR joeietao's PR
    Ryan-L98 ckcherry23's PR robinrojh's PR
    RyanCheungJF janald99's PR DannyDakota's PR
    Rye-Catcher jaysmyname's PR yunbinmo's PR
    SethCKL arcornior's PR tanyutao544's PR
    Shivang211 FestiveCat's PR zechajw's PR
    SimJM 9teMare's PR seanlaiys's PR
    Spyobird tehkokhoe's PR lawwm's PR
    TeddYE dannytayjy's PR Ashuh's PR
    ThePrevailingOne Geralddtan's PR hieunm1821's PR
    Tiffanylin21 cashewnade's PR Shivang211's PR
    TypeDefinition brigittesantoso's PR jbkim1999's PR
    Vishwanth2210 jaegarpoon's PR kashing555's PR
    WJunHong jiale-c's PR tsumian's PR
    Wei-Xinn mechfrog88's PR yongler's PR
    YiFei2 garethkoh's PR simjunheng's PR
    YiHern-Lee lowkaiwei98's PR laughingkid-sg's PR
    aaron-ljx reignnz's PR ryantanlien's PR
    aceszhenwei Rye-Catcher's PR jaysmyname's PR
    aditi2313 AryanSarswat's PR OhEyeSee's PR
    aidanaden lamwj98's PR Kidsnd274's PR
    albertsutz declanleeler's PR zxgoh's PR
    alexteo98 e0543517's PR DALIN-Prog's PR
    alfredkohhh LikHern's PR goalfix's PR
    arcornior tanyutao544's PR snss231's PR
    atmh TypeDefinition's PR brigittesantoso's PR
    aweijun ovidharshini's PR lzf834's PR
    bakano98 aidanaden's PR lamwj98's PR
    benmurphyy khoahre123's PR 1001mei's PR
    bingsen0806 Decaxical's PR brandonrhan's PR
    blaketingyu medajet's PR fredtwt's PR
    bloodofme riakhaitan's PR cpwill01's PR
    brandonrhan ChanWeiJie's PR geraldneo567's PR
    brelkh eugenechiaay's PR tonishka's PR
    brian16600 Gernene's PR brelkh's PR
    brigittesantoso jbkim1999's PR bingsen0806's PR
    bryans17 flairekq's PR ryanwalterlee's PR
    cashewnade Shivang211's PR FestiveCat's PR
    castryl hsiaojietng's PR MontyPython28's PR
    channne zihaowrez's PR CS2103Lerulatus's PR
    chanyijuan seksek13's PR ivorcmx's PR
    charmainehly kahleongq's PR jetrz's PR
    cheehongw michaelseyo's PR AinsleyJ's PR
    cheekean5848 junrong98's PR NatalieTanML's PR
    chriswengqi zzhikai's PR lchokhoe's PR
    chuabingquan kerbysoh's PR Korochii's PR
    chuashihong tanchinkiat99's PR lkldev's PR
    cindyangXQ dandaandaaaaaan's PR redpelican2108's PR
    ckcherry23 robinrojh's PR Justinnje's PR
    clement0010 whoisjunhong's PR wxliong's PR
    cpwill01 raynerljm's PR yl-ang's PR
    cwnm louisdavinlie's PR xMashedxTomatox's PR
    cwq2326 Dineshraj555's PR vishandi's PR
    dandaandaaaaaan redpelican2108's PR joey-chance's PR
    dannytayjy Ashuh's PR YiHern-Lee's PR
    darshan152 channne's PR zihaowrez's PR
    ddx-510 myc37's PR juayhee's PR
    declanleeler zxgoh's PR domlimm's PR
    dionegoh hanhuiice's PR cindyangXQ's PR
    domlimm chriswengqi's PR zzhikai's PR
    e0543517 DALIN-Prog's PR charmainehly's PR
    e0544333 justinekoh's PR Oddcorner's PR
    eman-kom s7manth's PR alexteo98's PR
    eugenechiaay tonishka's PR iztanpy's PR
    fantablack gigituang's PR tyanhan's PR
    flairekq ryanwalterlee's PR RyanCheungJF's PR
    fredtwt kxshxsh's PR sheimoria's PR
    garethkoh simjunheng's PR vanessaxuuan's PR
    geetengtan castryl's PR hsiaojietng's PR
    geraldneo567 Wei-Xinn's PR mechfrog88's PR
    gigituang tyanhan's PR SimJM's PR
    glennljw Btaykb's PR ngjunkang's PR
    goalfix aweijun's PR ovidharshini's PR
    goel-a zhongfu's PR takufunkai's PR
    hanhuiice cindyangXQ's PR dandaandaaaaaan's PR
    hanqinilnix jamesyeap's PR muraddurrani's PR
    hieunm1821 aaron-ljx's PR reignnz's PR
    honganhcs LowJiaHao99's PR dionegoh's PR
    howardwhw2 likeabowx's PR nicollegann's PR
    hqhqhq1 jessicajacelyn's PR yumengtan's PR
    hsiaojietng MontyPython28's PR Ardentsoul's PR
    ian-from-dover weijuey's PR chuabingquan's PR
    imrajsinghsandhu Cyolune's PR Jiaaa-yang's PR
    isabelteo Punpun1643's PR sbhbenjamin's PR
    ivorcmx Rdac0's PR HanJiyao's PR
    iztanpy ThePrevailingOne's PR Geralddtan's PR
    j4ck990 snoidetx's PR tiewweijian's PR
    jaegarpoon kashing555's PR howardwhw2's PR
    jamesyeap muraddurrani's PR tzhan98's PR
    janald99 DannyDakota's PR EvaderFati's PR
    jaysmyname yunbinmo's PR LeeEnEn's PR
    jbkim1999 bingsen0806's PR Decaxical's PR
    jessicajacelyn yumengtan's PR kavxya's PR
    jetrz goel-a's PR zhongfu's PR
    jiale-c tsumian's PR yusufaine's PR
    jiewei98 thikhinab's PR juslam19's PR
    jinnhl DaneMarc's PR Ryan-L98's PR
    jltham tanweien's PR pnutzz-0207's PR
    joeietao Spyobird's PR tehkokhoe's PR
    joelwongjy swiftguy1's PR j4ck990's PR
    joey-chance junjunjieOng's PR soloplxya's PR
    joszx brian16600's PR Gernene's PR
    juayhee ro4k9's PR zzkzzzz's PR
    junjieteoh MelvinCZJ's PR prgJ's PR
    junjunjieOng soloplxya's PR atmh's PR
    junlee1991 lovemathboy's PR jltham's PR
    junrong98 NatalieTanML's PR petermonky's PR
    juslam19 kevinkuo0320's PR Tiffanylin21's PR
    justinekoh Oddcorner's PR talkintomato's PR
    justinyjt Harish-coding's PR YiFei2's PR
    jxt00 bloodofme's PR riakhaitan's PR
    kahleongq jetrz's PR goel-a's PR
    kaiyichen chuashihong's PR tanchinkiat99's PR
    kashing555 howardwhw2's PR likeabowx's PR
    kavxya jiewei98's PR thikhinab's PR
    kerbysoh Korochii's PR rcjj98's PR
    kev-intq albertsutz's PR declanleeler's PR
    kevinkuo0320 Tiffanylin21's PR cashewnade's PR
    khoahre123 1001mei's PR clement0010's PR
    kuanjr limweiliang's PR lzan98's PR
    kxshxsh sheimoria's PR seanleong339's PR
    lamwj98 Kidsnd274's PR tomascherian's PR
    laughingkid-sg glennljw's PR Btaykb's PR
    lawwm justinyjt's PR Harish-coding's PR
    lchokhoe Fenway17's PR fantablack's PR
    leeyiheng12 JonathanHoshi's PR cwnm's PR
    likeabowx nicollegann's PR Jacky142857's PR
    limweiliang lzan98's PR KristopherPTaslim's PR
    lkldev tandeshao's PR KeithCZW's PR
    louisdavinlie xMashedxTomatox's PR pyk595's PR
    lovemathboy jltham's PR tanweien's PR
    lowkaiwei98 laughingkid-sg's PR glennljw's PR
    lzan98 KristopherPTaslim's PR KwanHW's PR
    lzf834 bakano98's PR aidanaden's PR
    manu2002g rahulprasad01's PR honganhcs's PR
    markbiju eman-kom's PR s7manth's PR
    mazx4960 WJunHong's PR jiale-c's PR
    mechfrog88 yongler's PR e0544333's PR
    medajet fredtwt's PR kxshxsh's PR
    michaelseyo AinsleyJ's PR thewrik's PR
    mradhyaf AD-NAP's PR geetengtan's PR
    muraddurrani tzhan98's PR Graphcalibur's PR
    myc37 juayhee's PR ro4k9's PR
    ngjunkang markbiju's PR eman-kom's PR
    nicollegann Jacky142857's PR cwq2326's PR
    nnmoq joelwongjy's PR swiftguy1's PR
    onefangg bryans17's PR flairekq's PR
    ongkimlai zawedcvg's PR B1LLP4RK's PR
    ovidharshini lzf834's PR bakano98's PR
    petermonky zunedz's PR viki0526's PR
    pnutzz-0207 kev-intq's PR albertsutz's PR
    prgJ darshan152's PR channne's PR
    punnyhuimin xzzz3's PR isabelteo's PR
    putaojuice sophiien's PR leeyiheng12's PR
    pyk595 shurvirarora's PR NicsunXnus's PR
    rahulprasad01 honganhcs's PR LowJiaHao99's PR
    raynerljm yl-ang's PR hqhqhq1's PR
    rcjj98 junjieteoh's PR MelvinCZJ's PR
    redpelican2108 joey-chance's PR junjunjieOng's PR
    reignnz ryantanlien's PR sibinhho99-nus's PR
    riakhaitan cpwill01's PR raynerljm's PR
    ro4k9 zzkzzzz's PR Denniszedead's PR
    robinrojh Justinnje's PR tanyjnaaman's PR
    ryantanlien sibinhho99-nus's PR xSaints19x's PR
    ryanwalterlee RyanCheungJF's PR janald99's PR
    s7manth alexteo98's PR e0543517's PR
    sbhbenjamin ian-from-dover's PR weijuey's PR
    seanlaiys AAlghrairy's PR onefangg's PR
    seanleong339 TeddYE's PR dannytayjy's PR
    seksek13 ivorcmx's PR Rdac0's PR
    sharpstorm DavidTan0527's PR cheekean5848's PR
    sheimoria seanleong339's PR TeddYE's PR
    shurvirarora NicsunXnus's PR teominghuang's PR
    sibinhho99-nus xSaints19x's PR junlee1991's PR
    simjunheng vanessaxuuan's PR FYimu's PR
    snoidetx tiewweijian's PR yokester98's PR
    snss231 Gnoznaug's PR blaketingyu's PR
    soloplxya atmh's PR TypeDefinition's PR
    sophiien leeyiheng12's PR JonathanHoshi's PR
    swiftguy1 j4ck990's PR snoidetx's PR
    takufunkai tobihy's PR jinnhl's PR
    talkintomato nnmoq's PR joelwongjy's PR
    tanchinkiat99 lkldev's PR tandeshao's PR
    tandeshao KeithCZW's PR manu2002g's PR
    tanweien pnutzz-0207's PR kev-intq's PR
    tanyjnaaman alfredkohhh's PR LikHern's PR
    tanyutao544 snss231's PR Gnoznaug's PR
    tehkokhoe lawwm's PR justinyjt's PR
    teominghuang Halpfrog's PR Vishwanth2210's PR
    thewrik AdrianOngJJ's PR jxt00's PR
    thikhinab juslam19's PR kevinkuo0320's PR
    tiewweijian yokester98's PR sharpstorm's PR
    tobihy jinnhl's PR DaneMarc's PR
    tomascherian zixin448's PR kuanjr's PR
    tonishka iztanpy's PR ThePrevailingOne's PR
    tsumian yusufaine's PR Benjykoh's PR
    tyanhan SimJM's PR 9teMare's PR
    tzhan98 Graphcalibur's PR punnyhuimin's PR
    vanessaxuuan FYimu's PR putaojuice's PR
    viki0526 aceszhenwei's PR Rye-Catcher's PR
    vishandi imrajsinghsandhu's PR Cyolune's PR
    waffledood SethCKL's PR arcornior's PR
    weijuey chuabingquan's PR kerbysoh's PR
    whoisjunhong wxliong's PR BrendonLau's PR
    wxliong BrendonLau's PR LapisRaider's PR
    xMashedxTomatox pyk595's PR shurvirarora's PR
    xSaints19x junlee1991's PR lovemathboy's PR
    xpzmichael hanqinilnix's PR jamesyeap's PR
    xzzz3 isabelteo's PR Punpun1643's PR
    yl-ang hqhqhq1's PR jessicajacelyn's PR
    yokester98 sharpstorm's PR DavidTan0527's PR
    yongler e0544333's PR justinekoh's PR
    yumengtan kavxya's PR jiewei98's PR
    yunbinmo LeeEnEn's PR benmurphyy's PR
    yuqitanyq chanyijuan's PR seksek13's PR
    yusufaine Benjykoh's PR ongkimlai's PR
    zawedcvg B1LLP4RK's PR aditi2313's PR
    zechajw yuqitanyq's PR chanyijuan's PR
    zhongfu takufunkai's PR tobihy's PR
    zihaowrez CS2103Lerulatus's PR mazx4960's PR
    zixin448 kuanjr's PR limweiliang's PR
    zunedz viki0526's PR aceszhenwei's PR
    zxgoh domlimm's PR chriswengqi's PR
    zzhikai lchokhoe's PR Fenway17's PR
    zzkzzzz Denniszedead's PR cheehongw's PR

    Allocation not available yet...


  2. 10 minutes Find given problems: Go through the code in the diff view (i.e., the files changed tab), and find instances of following code quality problems (ignore other types of code quality problems)
    a. weak SLAP
    b. arrow-head style code
    c. too-long methods
    d. too-deep nesting

    To identify long methods or deep nesting, zoom out and scroll through the entire PR code to do a visual inspection (no need to read the code line-by-line). After visually locating a method that looks too long/deep, have a closer look to see it can be improved by using better abstraction.

    • If you can't find at least one example, you can try the fallback option provided, and failing that, another random iP PR.
    • You can also select borderline cases.
    • Paste screenshots of problematic code in the shared online document provided (in the section of the document allocated to you).
  3. 10 minutes Discussion: The tutor will lead a short discussion to go through the problematic code you found.

  4. After the tutorial, you can apply the insights gained from this activity to improve the code quality of your own iP, if necessary.

    You are not required to (but welcome to) post review comments in the PRs you examined.

2 User stories exercise

  • Consider the following user stories a team came up with, for a tP that aims to build a software for tracking travel plans.
1 As a … I can … So that I can … notes
2 first-time user see some sample trips when I open the app easily try out its features without needing to add my data first
3 first-time user see a help message explaining which features I should try first start by trying features that are more suited for new users e.g., "hey you seem to be new. Try adding a trip first"
4 new user ready to adopt the app for my own use purge all data get rid of sample/dummy data and start adding my real data
5 busy user track all trip-related data inside the app save time looking for data
6 user sending trip info to friends via email or telegram
7 user add a trip
8 user delete a trip get rid of trip no longer needed to track
9 user edit trip details correct mistakes I made when adding a trip
10 user view all trip details recall details of trips
11 user see the next upcoming trip details when I open the app save the step of searching for the trip reason: the next upcoming trips is the most likely trip the user may want to see
  • Think of the answers to the following questions. These will be discussed during the tutorial.
    1. Which user stories don’t follow the correct format?
    2. Any of them too big for the tP planning? i.e., cannot be implemented by one person within 1-2 days
    3. Which are must-have for v1.2? i.e., impossible to use the app without it

3 Prioritize tP user stories

  • If you haven't done so already, prioritize tP user stories as explained in the panel below.

4 time permitting Create a feature list for v1.2

  • If there is time left, do the following tP task that is scheduled for the following week.

Admin tP → week 6 → Conceptualize v1.2

  • Based on your user stories selected previously, conceptualize the product in terms of how it will look like at v1.2 in the form of a feature list.
    Note down the feature list in your online project notes document.

FAQ: How many features should we put in v1.2?
A: Aim for the smallest set of features the product cannot do without. Even a most basic version of those features is enough. After completing that feature set, you can add more if there is time left.