book

Report

As a team, answer all the questions the team's members submitted on our course forum. Each team member is responsible for one question. But everyone should work together to come up with a good solution. Your answer should consist of Lodash code and a brief writeup. Utilize _.map, _.filter, _.group ...etc. Do not use any for loop.

It is important for everyone to understand all the solutions and make sure you will be able to independently reproduce these solutions when asked to do so. Coming up, we will incorporate variations of these questions into a future hackathon and you are expected to be capable of reproducing and adapting your solutions.

What is the average course rating by department? by Heather Witte

var grps = _.groupBy(data, 'Subject')
var myvar =  _.mapValues(grps, function(group){
    var rating = [0,0]
    _.map(group, function(n){
    	if (n.AvgCourse != null) {
    	rating[0] += n.AvgCourse
    	rating[1] += 1}
    return rating
    })
    return rating[0]/rating[1]
})
return myvar

{
 "HIST": 4.925072463768115,
 "HONR": 5.470909090909092,
 "HUMN": 5.012,
 "IAFS": 5.123157894736842,
 "IPHY": 4.85851851851852,
 "LING": 4.667096774193548,
 "MATH": 4.388229665071771,
 "MCDB": 4.716605504587155,
 "BAKR": null,
 "PHIL": 4.8359459459459435,
 "PHYS": 4.4928947368421035,
 "PSCI": 4.870480769230768,
 "NRSC": 5.050588235294118,
 "PSYC": 5.013545454545456,
 "WRTG": 4.717683923705725,
 "RLST": 4.6259999999999994,
 "SLHS": 4.837968750000001,
 "SOCY": 4.8045599999999995,
 "ARAB": 4.519,
 "PORT": 5.494285714285714,
 "SPAN": 4.90142857142857,
 "COMR": null,
 "FARR": null,
 "GSAP": null,
 "INVS": 5.563000000000001,
 "PACS": 4.7925,
 "SEWL": null,
 "DNCE": 5.242142857142857,
 "THTR": 4.9603174603174605,
 "WMST": 4.866153846153848,
 "ACCT": 4.809545454545455,
 "BADM": 5.087419354838711,
 "BCOR": 4.491132075471699,
 "BSLW": 4.836666666666666,
 "BUSM": 4.876666666666667,
 "CESR": 5.111428571428571,
 "ESBM": 5.062173913043478,
 "FNCE": 4.682272727272728,
 "INBU": 4.441428571428571,
 "MBAC": 4.481000000000001,
 "MBAX": 4.898064516129031,
 "MGMT": 4.945263157894737,
 "MKTG": 4.555405405405404,
 "REAL": 5.245454545454546,
 "EDUC": 4.912290076335878,
 "ASEN": 4.900625000000001,
 "CHEN": 4.424782608695652,
 "CSCI": 4.554,
 "AREN": 4.61090909090909,
 "CVEN": 4.9444155844155855,
 "ECEN": 4.5656923076923075,
 "EMEN": 4.969130434782609,
 "EHON": 5.468000000000001,
 "GEEN": 4.681967213114754,
 "EVEN": 4.6899999999999995,
 "HUEN": 5.367058823529412,
 "MCEN": 4.479772727272726,
 "TLEN": 4.818695652173913,
 "ATLS": 5.064047619047618,
 "MUSM": 4.848000000000001,
 "RSEI": 5.655,
 "JOUR": 4.892823529411764,
 "LAWS": 4.9584375,
 "CONV": null,
 "EMUS": 5.364642857142856,
 "MUEL": 4.9253124999999995,
 "MUSC": 4.76109756097561,
 "PMUS": 5.523636363636362,
 "TMUS": null,
 "AIRR": 5.155833333333333,
 "MILR": 5.27,
 "NAVR": 5.315555555555555,
 "CSVC": null,
 "LDSP": null,
 "NRLN": 5.67,
 "PRLC": 5.333333333333333,
 "ARCH": 4.57,
 "ENVD": 4.955116279069768,
 "ARTH": 4.896666666666666,
 "ARTS": 5.010625,
 "CAMW": 4.54,
 "CWCV": null,
 "LGBT": 5,
 "LIBB": null,
 "CHIN": 4.966,
 "FRSI": 4.44,
 "HIND": 4.56,
 "JPNS": 5.398124999999999,
 "KREN": 5.03,
 "ANTH": 4.8636585365853655,
 "APPM": 4.736530612244898,
 "ASTR": 4.913913043478261,
 "ARSC": 5.20125,
 "ATOC": 4.632083333333334,
 "CHEM": 4.597166666666667,
 "CLAS": 5.213703703703704,
 "COMM": 4.664933333333331,
 "EBIO": 4.720860215053764,
 "ECON": 4.526666666666667,
 "ENGL": 4.9946610169491485,
 "ENVS": 5.0736842105263165,
 "ETHN": 5.203499999999999,
 "FILM": 5.059666666666667,
 "FREN": 4.881666666666666,
 "ITAL": 5.281875000000001,
 "GEOG": 4.8403846153846155,
 "GEOL": 4.8985714285714295,
 "GRMN": 5.05,
 "HEBR": 5.138,
 "RUSS": 5.051874999999999,
 "SCAN": 5.3575,
 "SWED": 5.54,
 "LEAD": 5.68
}

What should my major be if I want have a high gpa by Andrey Shprengel

var grps = _.groupBy(data, function(c){return c.Subject})
var grades = _.mapValues(grps, function(grp){return _.compact(_.pluck(grp, 'AVG_GRD'))})

var grades = _.mapValues(grades, function(group){
	var total = 0
	_.map(group, function(n){
			//console.log()
			total += n
			return total
				}
				)
				return total/(_.size(group))})
grades = _.map(grades, function(value, key){
	return {"subject": key, "grade":value}})
return _.sortBy(grades, "grade").reverse()

[
 {
  "subject": "CSVC",
  "grade": null
 },
 {
  "subject": "TMUS",
  "grade": null
 },
 {
  "subject": "CONV",
  "grade": null
 },
 {
  "subject": "MUSM",
  "grade": 3.946
 },
 {
  "subject": "EMUS",
  "grade": 3.923809523809524
 },
 {
  "subject": "KREN",
  "grade": 3.9166666666666665
 },
 {
  "subject": "EHON",
  "grade": 3.8840000000000003
 },
 {
  "subject": "HONR",
  "grade": 3.8329999999999997
 },
 {
  "subject": "EDUC",
  "grade": 3.773880597014925
 },
 {
  "subject": "FRSI",
  "grade": 3.75
 },
 {
  "subject": "PRLC",
  "grade": 3.75
 },
 {
  "subject": "PMUS",
  "grade": 3.7189285714285716
 },
 {
  "subject": "MILR",
  "grade": 3.715555555555556
 },
 {
  "subject": "AIRR",
  "grade": 3.6816666666666666
 },
 {
  "subject": "INVS",
  "grade": 3.6772727272727277
 },
 {
  "subject": "NAVR",
  "grade": 3.6722222222222225
 },
 {
  "subject": "EVEN",
  "grade": 3.665
 },
 {
  "subject": "TLEN",
  "grade": 3.657916666666667
 },
 {
  "subject": "EMEN",
  "grade": 3.6478260869565218
 },
 {
  "subject": "HUEN",
  "grade": 3.6348648648648645
 },
 {
  "subject": "BADM",
  "grade": 3.597
 },
 {
  "subject": "MBAX",
  "grade": 3.5700000000000003
 },
 {
  "subject": "CWCV",
  "grade": 3.57
 },
 {
  "subject": "DNCE",
  "grade": 3.566612903225807
 },
 {
  "subject": "ATLS",
  "grade": 3.535681818181818
 },
 {
  "subject": "ARTS",
  "grade": 3.5344230769230762
 },
 {
  "subject": "RSEI",
  "grade": 3.5300000000000002
 },
 {
  "subject": "GEEN",
  "grade": 3.504761904761904
 },
 {
  "subject": "ASEN",
  "grade": 3.4920833333333348
 },
 {
  "subject": "MUSC",
  "grade": 3.473297872340425
 },
 {
  "subject": "CVEN",
  "grade": 3.4629870129870133
 },
 {
  "subject": "CSCI",
  "grade": 3.459206349206347
 },
 {
  "subject": "ENVS",
  "grade": 3.4509999999999996
 },
 {
  "subject": "ARSC",
  "grade": 3.42875
 },
 {
  "subject": "LDSP",
  "grade": 3.4250000000000003
 },
 {
  "subject": "SLHS",
  "grade": 3.406857142857143
 },
 {
  "subject": "LING",
  "grade": 3.4019354838709677
 },
 {
  "subject": "LAWS",
  "grade": 3.4013333333333327
 },
 {
  "subject": "CESR",
  "grade": 3.3971428571428572
 },
 {
  "subject": "GSAP",
  "grade": 3.393333333333333
 },
 {
  "subject": "JOUR",
  "grade": 3.384687499999998
 },
 {
  "subject": "FILM",
  "grade": 3.3837499999999987
 },
 {
  "subject": "ENGL",
  "grade": 3.381199999999998
 },
 {
  "subject": "HEBR",
  "grade": 3.3720000000000008
 },
 {
  "subject": "LEAD",
  "grade": 3.36
 },
 {
  "subject": "ETHN",
  "grade": 3.359545454545455
 },
 {
  "subject": "COMR",
  "grade": 3.356666666666667
 },
 {
  "subject": "ENVD",
  "grade": 3.3503448275862073
 },
 {
  "subject": "NRSC",
  "grade": 3.346470588235294
 },
 {
  "subject": "ATOC",
  "grade": 3.334000000000001
 },
 {
  "subject": "MCDB",
  "grade": 3.332346938775511
 },
 {
  "subject": "MUEL",
  "grade": 3.3315909090909104
 },
 {
  "subject": "LIBB",
  "grade": 3.3200000000000003
 },
 {
  "subject": "THTR",
  "grade": 3.314242424242425
 },
 {
  "subject": "NRLN",
  "grade": 3.31
 },
 {
  "subject": "MBAC",
  "grade": 3.308333333333333
 },
 {
  "subject": "AREN",
  "grade": 3.30695652173913
 },
 {
  "subject": "MGMT",
  "grade": 3.2863157894736834
 },
 {
  "subject": "MCEN",
  "grade": 3.283908045977012
 },
 {
  "subject": "IAFS",
  "grade": 3.2694999999999994
 },
 {
  "subject": "FARR",
  "grade": 3.2638461538461536
 },
 {
  "subject": "JPNS",
  "grade": 3.261875
 },
 {
  "subject": "BAKR",
  "grade": 3.2566666666666664
 },
 {
  "subject": "WRTG",
  "grade": 3.2564179104477615
 },
 {
  "subject": "CHEN",
  "grade": 3.252083333333333
 },
 {
  "subject": "CLAS",
  "grade": 3.2325925925925922
 },
 {
  "subject": "HUMN",
  "grade": 3.215882352941177
 },
 {
  "subject": "CHIN",
  "grade": 3.214
 },
 {
  "subject": "BSLW",
  "grade": 3.2100000000000004
 },
 {
  "subject": "ARTH",
  "grade": 3.2061538461538457
 },
 {
  "subject": "HIND",
  "grade": 3.2
 },
 {
  "subject": "GEOG",
  "grade": 3.1867857142857132
 },
 {
  "subject": "ECEN",
  "grade": 3.1852238805970154
 },
 {
  "subject": "ANTH",
  "grade": 3.1845283018867936
 },
 {
  "subject": "FREN",
  "grade": 3.1663333333333328
 },
 {
  "subject": "RLST",
  "grade": 3.161666666666667
 },
 {
  "subject": "RUSS",
  "grade": 3.1587499999999995
 },
 {
  "subject": "ASTR",
  "grade": 3.154347826086956
 },
 {
  "subject": "GEOL",
  "grade": 3.1308108108108113
 },
 {
  "subject": "WMST",
  "grade": 3.1286206896551736
 },
 {
  "subject": "ARAB",
  "grade": 3.128
 },
 {
  "subject": "SEWL",
  "grade": 3.1199999999999997
 },
 {
  "subject": "PSYC",
  "grade": 3.113559322033898
 },
 {
  "subject": "ESBM",
  "grade": 3.110416666666666
 },
 {
  "subject": "PACS",
  "grade": 3.1075
 },
 {
  "subject": "PSCI",
  "grade": 3.106752136752137
 },
 {
  "subject": "REAL",
  "grade": 3.102727272727273
 },
 {
  "subject": "SPAN",
  "grade": 3.0959259259259273
 },
 {
  "subject": "HIST",
  "grade": 3.090897435897436
 },
 {
  "subject": "EBIO",
  "grade": 3.058318584070797
 },
 {
  "subject": "MKTG",
  "grade": 3

What professors should be fired? by Will Farmer

If the professor has a rating less than two standard deviations away, he's not a good one.

var professors =  _.chain(data)
        .map(function(obj) {
            return _.map(obj.Instructors, function(inst) {
                return {"name": inst.name,
                        "rating": obj.AvgInstructor}
            })
        }).flatten()
        .filter(function(obj) {
            return obj.rating;
        })
        .value();
var rating_avg = _.reduce(professors, function(p, n) {
            return (p + n.rating);
        }, 0) / professors.length;
var rating_stddev = Math.sqrt(_.reduce(professors, function(p, n) {
            return (p + Math.pow(n.rating - rating_avg, 2));
        }, 0) / professors.length);
return [rating_avg, rating_stddev,
     _.chain(professors)
            .filter(function(obj) {
                return (obj.rating < (rating_avg - (2 * rating_stddev)));
            }).map(function(obj) {
                return obj.name + ", " + obj.rating.toString();
            }).uniq()
            .value()];

Average professor rating is: 5.173157003808693.

Standard Deviation is: 0.6577084664913871.

[
 "BEKOFF, ANNE C, 2.83",
 "GRABOWSKI, ALENA MARIE, 3.63",
 "BAOUCHI, ABDEL WAHAB, 3.59",
 "DOUTHITT, CAMERON BENNETT, 1.94",
 "ANGEL, EITAN M, 3.8",
 "ANGEL, EITAN M, 3.7",
 "ROY, MICHAEL D, 3.27",
 "ROY, MICHAEL D, 2.94",
 "LIU, FAAN TONE, 3.62",
 "LIU, FAAN TONE, 3.59",
 "LIU, FAAN TONE, 3.82",
 "SPINA, ALEJANDRO, 3.82",
 "HENRY, SHAWN JEREMY, 2.67",
 "FARSI, CARLA, 2.67",
 "GUSTAFSON, KARL E, 2.56",
 "MONK, JAMES DONALD, 2.21",
 "SPINA, ALEJANDRO, 2.74",
 "ELLIS, HOMER G, 2.69",
 "SARRIA, ALEJANDRO, 2.69",
 "KUZNETSOV, SERGEI EUGENIEVITCH, 2.23",
 "FOX, JEFFREY S, 2.23",
 "MUIR, CARRIE BESS, 3.7",
 "FARSI, CARLA, 3.18",
 "SHI, JIA, 3.33",
 "KRAUTER, KENNETH S, 3.81",
 "TOOLEY, MICHAEL, 3.84",
 "HUEMER, MICHAEL, 3.36",
 "BETTERTON, MEREDITH D, 3.53",
 "LEE, MINHYEA, 3.53",
 "KEMPF, SASCHA, 2.75",
 "ANDERSON, DANA Z, 3.26",
 "RASCHKE, MARKUS B, 3.8",
 "BAIRD, VANESSA ANNE, 3.29",
 "RICHARDSON, LINDSEY, 3.72",
 "RICHARDSON, LINDSEY, 3.55",
 "HINK, GARY M, 2.1",
 "KUNCE, CATHERINE, 3.38",
 "CHARTERIS, FRANCES, 3.6",
 "RACHEL, NAOMI R, 2.43",
 "HINK, GARY M, 3",
 "HINK, GARY M, 2.09",
 "DUPLER, DOUGLAS J., 3.61",
 "ADAMS, SHARON MAR, 3.36",
 "RAMSBERGER, GAIL, 3.09",
 "MOORE, SUSAN M, 3.71",
 "YOSHINAGA-ITANO, CHRISTINE, 2.55",
 "MOJOLA, SANYU AMIMO, 3.63",
 "HAWKINS, LAURIE E., 3.65",
 "GODFREY, ALTHEA ELAINE, 3.84",
 "ZAHROUNI, RAFIKA, 3.37",
 "KEOGH, XIMENA L., 3.65",
 "HERBOZO DUARTE, JOSE MIGUEL, 3.58",
 "DABNEY, KAREN MICHELLE, 3.6",
 "HALL, RENEE ARLENE, 3.85",
 "CLARK, LISA A, 2.89",
 "MADIGAN, GERALD JOSEPH, 3.67",
 "MADIGAN, GERALD JOSEPH, 3.85",
 "MADIGAN, GERALD JOSEPH, 3.36",
 "STUTZER, MICHAEL J., 3.58",
 "URROZ-KORORI, SOUSAN, 3.35",
 "WENGER, PAULA, 3.34",
 "AGNEW, DAVID B, 3.57",
 "PLATIKANOVA-GROSS, KREMENA STOEVA, 2.89",
 "PLATIKANOVA-GROSS, KREMENA STOEVA, 2.63",
 "PLATIKANOVA-GROSS, KREMENA STOEVA, 3.85",
 "WILLIAMS, LAWRENCE EDWIN, 3.83",
 "HOTCHKISS, JACQUELINE SUZANNE, 3.53",
 "WHITCOMB, JENNIFER A, 3.25",
 "TAYLOR, EDWARD VINCENT, 3.25",
 "BACA, ROSALINDA L, 2.94",
 "BIRINGEN, SEDAT, 3.58",
 "EMERY, WILLIAM J, 3.58",
 "NAGPAL, PRASHANT, 3.54",
 "YOUNG, WENDY MORES, 3.8",
 "LAMARCHE, JEFFREY STEVEN, 3.75",
 "JESSUP, ELIZABETH R, 3.17",
 "BAKER, JAMES EDWARD, 2.45",
 "MCBURNETT, NEAL, 2.83",
 "KING, ROGER A, 2.73",
 "STAFFORD, JUDITH ALYCE, 3.12",
 "STAFFORD, JUDITH ALYCE, 3.84",
 "PAO, LUCY Y, 3.85",
 "MATHYS, PETER, 3.28",
 "HAUSER, JOHN, 3.28",
 "MATHYS, PETER, 3.5",
 "PLESZKUN, ANDREW R, 3.5",
 "GASIEWSKI, ALBIN J., 3.67",
 "STITES, NICK A., 3.65",
 "MONTOYA, LUPITA DEL CARMEN, 3.73",
 "ENNIS, TANYA, 3.83",
 "HANNIGAN, MICHAEL P., 3.04",
 "BORDEN, MARK A, 3.85",
 "RUBEN, SHALOM D, 3.55",
 "WANG, BINGLIAN, 3.2",
 "KUSTAS, FRANK M, 3.75",
 "HUSSEIN, MAHMOUD ISMAIL, 3.19",
 "PUTRI, ULLY DAMARI, 3.59",
 "MORITZ, MARGUERITE, 3.5",
 "WEED, MICHAEL PRESTON, 2.8",
 "CHEN, MING HSU, 3.77",
 "MACK, NATALIE M, 3.64",
 "CALHOUN, EMILY M, 3.19",
 "STRICKLIN, CLIFFORD, 3.83",
 "SKAGGS, DAVID, 3.75",
 "FELLMAN, KENNETH S., 3.73",
 "SIMMONS, JAMES DAVID, 3.27",
 "MILLER, JEFFREY L, 3.44",
 "DEALWIS, MALKANTHI LISA, 3.15",
 "RENAUD, KENNETH JOSEPH, 3.8",
 "KAMBIC, KATHLEEN NICOLE, 3.33",
 "MCCALL, RAYMOND, 3.67",
 "ALHADEFF, ALBERT, 3.85",
 "HENDERSON, RILEY MCDAVID, 3.56",
 "CHONG, ALBERT, 3.07",
 "GUTIERREZ, GERARDO, 2.43",
 "HUGHES, MIMI ROSE ABEL, 3.83",
 "CLARK, CHRISTINA OELFKE, 3.85",
 "NOONE, DAVID CHRISTOPHER, 2.84",
 "KOCH, TAD H, 2.25",
 "KOCH, TAD H, 3.8",
 "KOCH, TAD H, 3.64",
 "KOCH, TAD H, 3.82",
 "SKERSKI, JAMIE L, 1.92",
 "SKERSKI, JAMIE L, 3.25",
 "SKERSKI, JAMIE L, 3",
 "JACKSON, MICHELE HORNER, 2.74",
 "SZABO, AMANDA L, 3.85",
 "SZABO, AMANDA L, 3.83",
 "RHODES, MATTHEW ELLIOT, 3.79",
 "GRAVES, PHILIP E, 3.79",
 "ZHENG, TIANXIAO, 3.74",
 "LEE, SOOYOUNG, 3.85",
 "WALDMAN, DONALD M, 3.65",
 "KIM, JIN-HYUK, 3.65",
 "ROBERTSON, BENJAMIN JOHN, 3.53",
 "WRIGHT, NICOLE M, 3.5",
 "PEREZ, EMMA MARIE, 3.33",
 "SEGAL, SHIRA BAT AMI, 3.36",
 "CARTER, ROGER C., 2.89",
 "CARTER, ROGER C., 3.3",
 "AUSTIN, RACHEL E., 3.69",
 "PUGLIESE, ANNUNZIATA, 3.6",
 "GOLDMAN, MARA JILL, 3.06",
 "SKEETS, BREANNA ALISYA, 3.57",
 "CATES, NICOLE LISA, 3.59",
 "SENDEROVICH, ALEKSANDR M, 3.63",
 "AHMED, ALAA ABDALLA, 2.74",
 "STADLBAUER, SUSANNE MARION, 3.33",
 "JACKSON, HANNAH L, 3.64",
 "BAOUCHI, ABDEL WAHAB, 3.5",
 "DOUTHITT, CAMERON BENNETT, 2.67",
 "DOUTHITT, CAMERON BENNETT, 3.07",
 "ROONEY, MARTHA MARIE, 2.89",
 "ANGEL, EITAN M, 2.85",
 "ANGEL, EITAN M, 2.76",
 "ROY, MICHAEL D, 3.3",
 "ROY, MICHAEL D, 3.12",
 "ENGLANDER, JANOS, 3.5",
 "FOX, JEFFREY S, 3.41",
 "POWER, JOY M, 3.5",
 "FILLMAN, CHRISTY L., 3.83",
 "WAIDLER, KATHARYN D, 3.7",
 "DESSAU, DANIEL S, 3.64",
 "RITZWOLLER, MICHAEL H, 3.64",
 "DESSAU, DANIEL S, 3.46",
 "RITZWOLLER, MICHAEL H, 3.46",
 "DESSAU, DANIEL S, 3.85",
 "RITZWOLLER, MICHAEL H, 3.85",
 "FORD, WILLIAM T, 3.62",
 "FORD, WILLIAM T, 3.71",
 "UZDENSKY, DMITRI ANATOLJEVICH, 3.64",
 "POLLOCK, STEVEN J, 3.64",
 "SMALYUKH, IVAN I, 3.2",
 "ZIMMERMAN, ERIC, 3.5",
 "DE ALWIS, SENARATH P, 3