├── .gitignore ├── Assignment 4.pdf ├── CSC424 - Week 5 Lab - Warm Up.pdf ├── Databases ├── MongoDB │ ├── catalog.books.json │ ├── city_inspections.json │ ├── companies.json │ ├── countries.json │ ├── country.json │ ├── covers.json │ ├── grades.json │ ├── palbum.zip │ ├── people-bson.zip │ ├── persons.json │ ├── products.json │ ├── profiles.json │ ├── restaurant.json │ ├── students.json │ ├── tv-shows.json │ ├── tweets.zip │ └── users.json └── PostgreSQL │ └── dvdrental.tar ├── LICENSE ├── Lecture 11 - MongoDB security.pdf ├── Lecture 2 - Python Part 2.pdf ├── Lecture 3 - Introducing Psycopg, and CRUD using Psycopg.pdf ├── Lecture 4- Introduction NOSQL, and MongoDB.pdf ├── Lecture 5 - CRUD operations in MongoDB.pdf ├── Lecture 6 - MongoDB Performance, Fault tolerance, and deployment Part1.pdf ├── Lecture 8 - How to structure documents (schemas, and relations).pdf ├── Lecture 9 - Introducing PyMongo, and CRUD using PyMongo.pdf ├── Mid-term review.pdf ├── Python Warm Up - Lab Exercises.pdf ├── README.md ├── week10 ├── Anaconda-setup.md ├── post.py ├── post │ ├── __init__.py │ ├── article.py │ ├── post.py │ └── pymongo-1.5.py ├── pymongo-1.1.py ├── pymongo-1.2.py ├── pymongo-1.3.py ├── pymongo-1.4.py └── pymongo-1.5.py ├── week11 ├── security1.1 ├── security1.2 ├── security1.3 ├── security1.4 ├── security1.5 └── security1.6 ├── week2 ├── arguments-part1.1.py ├── arguments-part1.2.py ├── arguments-part1.3.py ├── arguments-part1.4.py ├── class-part-1.1.py ├── class-part-1.2.py ├── class-part-1.3.py ├── conditions-part1.1.py ├── conditions-part1.2.py ├── conditions-part1.3.py ├── dictionary-part1.1.py ├── dictionary-part1.2.py ├── dictionary-part1.3.py ├── dictionary-part1.4.py ├── list-loop-part1.1.py ├── list-loop-part1.2.py ├── list-loop-part1.3.py └── module-part1.1 │ ├── customer.py │ └── modules-part1.1.py ├── week3 ├── psycopg2-part1.1.py ├── psycopg2-part1.2.py ├── psycopg2-part1.py ├── psycopg2-part2.py ├── psycopg2-part3.py ├── psycopg2-suppliers-create.py ├── psycopg2-suppliers-delete.py ├── psycopg2-suppliers-insert-manny-rows.py ├── psycopg2-suppliers-insert-one-row.py ├── psycopg2-suppliers-transaction.py ├── psycopg2-suppliers-update.py └── restore-databse.txt ├── week4 ├── json-part1.1.py └── mongodb-part1.txt ├── week5 ├── mongodb-part1.txt ├── mongodb-part10.txt ├── mongodb-part11.txt ├── mongodb-part12.txt ├── mongodb-part13.txt ├── mongodb-part14.txt ├── mongodb-part15.txt ├── mongodb-part16.txt ├── mongodb-part17.txt ├── mongodb-part18.txt ├── mongodb-part19.txt ├── mongodb-part2.txt ├── mongodb-part20.txt ├── mongodb-part21.txt ├── mongodb-part22.txt ├── mongodb-part23.txt ├── mongodb-part24.txt ├── mongodb-part25.txt ├── mongodb-part26.txt ├── mongodb-part27.txt ├── mongodb-part28.txt ├── mongodb-part29.txt ├── mongodb-part3.txt ├── mongodb-part30.txt ├── mongodb-part31.txt ├── mongodb-part32.txt ├── mongodb-part33.txt ├── mongodb-part34.txt ├── mongodb-part36.txt ├── mongodb-part4.txt ├── mongodb-part5.txt ├── mongodb-part6.txt ├── mongodb-part7.txt ├── mongodb-part8.txt ├── mongodb-part9.txt └── tv-shows.json ├── week6 ├── index-part1.1 ├── index-part1.10 ├── index-part1.11 ├── index-part1.12 ├── index-part1.2 ├── index-part1.3 ├── index-part1.4 ├── index-part1.5 ├── index-part1.6 ├── index-part1.7 ├── index-part1.8 ├── index-part1.9 └── persons.json ├── week7 ├── index-part1.1 └── index-part1.2 └── week9 └── schemas1.1 /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | -------------------------------------------------------------------------------- /Assignment 4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Assignment 4.pdf -------------------------------------------------------------------------------- /CSC424 - Week 5 Lab - Warm Up.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/CSC424 - Week 5 Lab - Warm Up.pdf -------------------------------------------------------------------------------- /Databases/MongoDB/palbum.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/MongoDB/palbum.zip -------------------------------------------------------------------------------- /Databases/MongoDB/people-bson.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/MongoDB/people-bson.zip -------------------------------------------------------------------------------- /Databases/MongoDB/products.json: -------------------------------------------------------------------------------- 1 | { 2 | "_id": "ac3", 3 | "name": "AC3 Phone", 4 | "brand": "ACME", 5 | "type": "phone", 6 | "price": 200, 7 | "warranty_years": 1, 8 | "available": true 9 | } 10 | { 11 | "_id": "ac7", 12 | "name": "AC7 Phone", 13 | "brand": "ACME", 14 | "type": "phone", 15 | "price": 320, 16 | "warranty_years": 1, 17 | "available": false 18 | } 19 | { 20 | "_id": { 21 | "$oid": "507d95d5719dbef170f15bf9" 22 | }, 23 | "name": "AC3 Series Charger", 24 | "type": [ 25 | "accessory", 26 | "charger" 27 | ], 28 | "price": 19, 29 | "warranty_years": 0.25, 30 | "for": [ 31 | "ac3", 32 | "ac7", 33 | "ac9" 34 | ] 35 | } 36 | { 37 | "_id": { 38 | "$oid": "507d95d5719dbef170f15bfa" 39 | }, 40 | "name": "AC3 Case Green", 41 | "type": [ 42 | "accessory", 43 | "case" 44 | ], 45 | "color": "green", 46 | "price": 12, 47 | "warranty_years": 0 48 | } 49 | { 50 | "_id": { 51 | "$oid": "507d95d5719dbef170f15bfb" 52 | }, 53 | "name": "Phone Extended Warranty", 54 | "type": "warranty", 55 | "price": 38, 56 | "warranty_years": 2, 57 | "for": [ 58 | "ac3", 59 | "ac7", 60 | "ac9", 61 | "qp7", 62 | "qp8", 63 | "qp9" 64 | ] 65 | } 66 | { 67 | "_id": { 68 | "$oid": "507d95d5719dbef170f15bfc" 69 | }, 70 | "name": "AC3 Case Black", 71 | "type": [ 72 | "accessory", 73 | "case" 74 | ], 75 | "color": "black", 76 | "price": 12.5, 77 | "warranty_years": 0.25, 78 | "available": false, 79 | "for": "ac3" 80 | } 81 | { 82 | "_id": { 83 | "$oid": "507d95d5719dbef170f15bfd" 84 | }, 85 | "name": "AC3 Case Red", 86 | "type": [ 87 | "accessory", 88 | "case" 89 | ], 90 | "color": "red", 91 | "price": 12, 92 | "warranty_years": 0.25, 93 | "available": true, 94 | "for": "ac3" 95 | } 96 | { 97 | "_id": { 98 | "$oid": "507d95d5719dbef170f15bfe" 99 | }, 100 | "name": "Phone Service Basic Plan", 101 | "type": "service", 102 | "monthly_price": 40, 103 | "limits": { 104 | "voice": { 105 | "units": "minutes", 106 | "n": 400, 107 | "over_rate": 0.05 108 | }, 109 | "data": { 110 | "units": "gigabytes", 111 | "n": 20, 112 | "over_rate": 1 113 | }, 114 | "sms": { 115 | "units": "texts sent", 116 | "n": 100, 117 | "over_rate": 0.001 118 | } 119 | }, 120 | "term_years": 2 121 | } 122 | { 123 | "_id": { 124 | "$oid": "507d95d5719dbef170f15bff" 125 | }, 126 | "name": "Phone Service Core Plan", 127 | "type": "service", 128 | "monthly_price": 60, 129 | "limits": { 130 | "voice": { 131 | "units": "minutes", 132 | "n": 1000, 133 | "over_rate": 0.05 134 | }, 135 | "data": { 136 | "n": "unlimited", 137 | "over_rate": 0 138 | }, 139 | "sms": { 140 | "n": "unlimited", 141 | "over_rate": 0 142 | } 143 | }, 144 | "term_years": 1 145 | } 146 | { 147 | "_id": { 148 | "$oid": "507d95d5719dbef170f15c00" 149 | }, 150 | "name": "Phone Service Family Plan", 151 | "type": "service", 152 | "monthly_price": 90, 153 | "limits": { 154 | "voice": { 155 | "units": "minutes", 156 | "n": 1200, 157 | "over_rate": 0.05 158 | }, 159 | "data": { 160 | "n": "unlimited", 161 | "over_rate": 0 162 | }, 163 | "sms": { 164 | "n": "unlimited", 165 | "over_rate": 0 166 | } 167 | }, 168 | "sales_tax": true, 169 | "term_years": 2 170 | } 171 | { 172 | "_id": { 173 | "$oid": "507d95d5719dbef170f15c01" 174 | }, 175 | "name": "Cable TV Basic Service Package", 176 | "type": "tv", 177 | "monthly_price": 50, 178 | "term_years": 2, 179 | "cancel_penalty": 25, 180 | "sales_tax": true, 181 | "additional_tarriffs": [ 182 | { 183 | "kind": "federal tarriff", 184 | "amount": { 185 | "percent_of_service": 0.06 186 | } 187 | }, 188 | { 189 | "kind": "misc tarriff", 190 | "amount": 2.25 191 | } 192 | ] 193 | } 194 | -------------------------------------------------------------------------------- /Databases/MongoDB/students.json: -------------------------------------------------------------------------------- 1 | { 2 | "_id": 0, 3 | "name": "aimee Zank", 4 | "scores": [ 5 | { 6 | "score": 1.463179736705023, 7 | "type": "exam" 8 | }, 9 | { 10 | "score": 11.78273309957772, 11 | "type": "quiz" 12 | }, 13 | { 14 | "score": 35.8740349954354, 15 | "type": "homework" 16 | } 17 | ] 18 | } 19 | { 20 | "_id": 1, 21 | "name": "Aurelia Menendez", 22 | "scores": [ 23 | { 24 | "score": 60.06045071030959, 25 | "type": "exam" 26 | }, 27 | { 28 | "score": 52.79790691903873, 29 | "type": "quiz" 30 | }, 31 | { 32 | "score": 71.76133439165544, 33 | "type": "homework" 34 | } 35 | ] 36 | } 37 | { 38 | "_id": 2, 39 | "name": "Corliss Zuk", 40 | "scores": [ 41 | { 42 | "score": 67.03077096065002, 43 | "type": "exam" 44 | }, 45 | { 46 | "score": 6.301851677835235, 47 | "type": "quiz" 48 | }, 49 | { 50 | "score": 66.28344683278382, 51 | "type": "homework" 52 | } 53 | ] 54 | } 55 | { 56 | "_id": 3, 57 | "name": "Bao Ziglar", 58 | "scores": [ 59 | { 60 | "score": 71.64343899778332, 61 | "type": "exam" 62 | }, 63 | { 64 | "score": 24.80221293650313, 65 | "type": "quiz" 66 | }, 67 | { 68 | "score": 42.26147058804812, 69 | "type": "homework" 70 | } 71 | ] 72 | } 73 | { 74 | "_id": 4, 75 | "name": "Zachary Langlais", 76 | "scores": [ 77 | { 78 | "score": 78.68385091304332, 79 | "type": "exam" 80 | }, 81 | { 82 | "score": 90.2963101368042, 83 | "type": "quiz" 84 | }, 85 | { 86 | "score": 34.41620148042529, 87 | "type": "homework" 88 | } 89 | ] 90 | } 91 | { 92 | "_id": 5, 93 | "name": "Wilburn Spiess", 94 | "scores": [ 95 | { 96 | "score": 44.87186330181261, 97 | "type": "exam" 98 | }, 99 | { 100 | "score": 25.72395114668016, 101 | "type": "quiz" 102 | }, 103 | { 104 | "score": 63.42288310628662, 105 | "type": "homework" 106 | } 107 | ] 108 | } 109 | { 110 | "_id": 6, 111 | "name": "Jenette Flanders", 112 | "scores": [ 113 | { 114 | "score": 37.32285459166097, 115 | "type": "exam" 116 | }, 117 | { 118 | "score": 28.32634976913737, 119 | "type": "quiz" 120 | }, 121 | { 122 | "score": 81.57115318686338, 123 | "type": "homework" 124 | } 125 | ] 126 | } 127 | { 128 | "_id": 7, 129 | "name": "Salena Olmos", 130 | "scores": [ 131 | { 132 | "score": 90.37826509157176, 133 | "type": "exam" 134 | }, 135 | { 136 | "score": 42.48780666956811, 137 | "type": "quiz" 138 | }, 139 | { 140 | "score": 96.52986171633331, 141 | "type": "homework" 142 | } 143 | ] 144 | } 145 | { 146 | "_id": 8, 147 | "name": "Daphne Zheng", 148 | "scores": [ 149 | { 150 | "score": 22.13583712862635, 151 | "type": "exam" 152 | }, 153 | { 154 | "score": 14.63969941335069, 155 | "type": "quiz" 156 | }, 157 | { 158 | "score": 75.94123677556644, 159 | "type": "homework" 160 | } 161 | ] 162 | } 163 | { 164 | "_id": 9, 165 | "name": "Sanda Ryba", 166 | "scores": [ 167 | { 168 | "score": 97.00509953654694, 169 | "type": "exam" 170 | }, 171 | { 172 | "score": 97.80449632538915, 173 | "type": "quiz" 174 | }, 175 | { 176 | "score": 25.27368532432955, 177 | "type": "homework" 178 | } 179 | ] 180 | } 181 | { 182 | "_id": 10, 183 | "name": "Denisha Cast", 184 | "scores": [ 185 | { 186 | "score": 45.61876862259409, 187 | "type": "exam" 188 | }, 189 | { 190 | "score": 98.35723209418343, 191 | "type": "quiz" 192 | }, 193 | { 194 | "score": 55.90835657173456, 195 | "type": "homework" 196 | } 197 | ] 198 | } 199 | { 200 | "_id": 11, 201 | "name": "Marcus Blohm", 202 | "scores": [ 203 | { 204 | "score": 78.42617835651868, 205 | "type": "exam" 206 | }, 207 | { 208 | "score": 82.58372817930675, 209 | "type": "quiz" 210 | }, 211 | { 212 | "score": 87.49924733328717, 213 | "type": "homework" 214 | } 215 | ] 216 | } 217 | { 218 | "_id": 12, 219 | "name": "Quincy Danaher", 220 | "scores": [ 221 | { 222 | "score": 54.29841278520669, 223 | "type": "exam" 224 | }, 225 | { 226 | "score": 85.61270164694737, 227 | "type": "quiz" 228 | }, 229 | { 230 | "score": 80.40732356118075, 231 | "type": "homework" 232 | } 233 | ] 234 | } 235 | { 236 | "_id": 13, 237 | "name": "Jessika Dagenais", 238 | "scores": [ 239 | { 240 | "score": 90.47179954427436, 241 | "type": "exam" 242 | }, 243 | { 244 | "score": 90.3001402468489, 245 | "type": "quiz" 246 | }, 247 | { 248 | "score": 95.17753772405909, 249 | "type": "homework" 250 | } 251 | ] 252 | } 253 | { 254 | "_id": 14, 255 | "name": "Alix Sherrill", 256 | "scores": [ 257 | { 258 | "score": 25.15924151998215, 259 | "type": "exam" 260 | }, 261 | { 262 | "score": 68.64484047692098, 263 | "type": "quiz" 264 | }, 265 | { 266 | "score": 24.68462152686763, 267 | "type": "homework" 268 | } 269 | ] 270 | } 271 | { 272 | "_id": 15, 273 | "name": "Tambra Mercure", 274 | "scores": [ 275 | { 276 | "score": 69.1565022533158, 277 | "type": "exam" 278 | }, 279 | { 280 | "score": 3.311794422000724, 281 | "type": "quiz" 282 | }, 283 | { 284 | "score": 45.03178973642521, 285 | "type": "homework" 286 | } 287 | ] 288 | } 289 | { 290 | "_id": 16, 291 | "name": "Dodie Staller", 292 | "scores": [ 293 | { 294 | "score": 7.772386442858281, 295 | "type": "exam" 296 | }, 297 | { 298 | "score": 31.84300235104542, 299 | "type": "quiz" 300 | }, 301 | { 302 | "score": 80.52136407989194, 303 | "type": "homework" 304 | } 305 | ] 306 | } 307 | { 308 | "_id": 17, 309 | "name": "Fletcher Mcconnell", 310 | "scores": [ 311 | { 312 | "score": 39.41011069729274, 313 | "type": "exam" 314 | }, 315 | { 316 | "score": 81.13270307809924, 317 | "type": "quiz" 318 | }, 319 | { 320 | "score": 97.70116640402922, 321 | "type": "homework" 322 | } 323 | ] 324 | } 325 | { 326 | "_id": 18, 327 | "name": "Verdell Sowinski", 328 | "scores": [ 329 | { 330 | "score": 62.12870233109035, 331 | "type": "exam" 332 | }, 333 | { 334 | "score": 84.74586220889356, 335 | "type": "quiz" 336 | }, 337 | { 338 | "score": 81.58947824932574, 339 | "type": "homework" 340 | } 341 | ] 342 | } 343 | { 344 | "_id": 19, 345 | "name": "Gisela Levin", 346 | "scores": [ 347 | { 348 | "score": 44.51211101958831, 349 | "type": "exam" 350 | }, 351 | { 352 | "score": 0.6578497966368002, 353 | "type": "quiz" 354 | }, 355 | { 356 | "score": 93.36341655949683, 357 | "type": "homework" 358 | } 359 | ] 360 | } 361 | { 362 | "_id": 20, 363 | "name": "Tressa Schwing", 364 | "scores": [ 365 | { 366 | "score": 42.17439799514388, 367 | "type": "exam" 368 | }, 369 | { 370 | "score": 71.99314840599558, 371 | "type": "quiz" 372 | }, 373 | { 374 | "score": 81.23972632069464, 375 | "type": "homework" 376 | } 377 | ] 378 | } 379 | { 380 | "_id": 21, 381 | "name": "Rosana Vales", 382 | "scores": [ 383 | { 384 | "score": 46.2289476258328, 385 | "type": "exam" 386 | }, 387 | { 388 | "score": 98.34164225207036, 389 | "type": "quiz" 390 | }, 391 | { 392 | "score": 36.18769746805938, 393 | "type": "homework" 394 | } 395 | ] 396 | } 397 | { 398 | "_id": 22, 399 | "name": "Margart Vitello", 400 | "scores": [ 401 | { 402 | "score": 75.04996547553947, 403 | "type": "exam" 404 | }, 405 | { 406 | "score": 10.23046475899236, 407 | "type": "quiz" 408 | }, 409 | { 410 | "score": 96.72520512117761, 411 | "type": "homework" 412 | } 413 | ] 414 | } 415 | { 416 | "_id": 23, 417 | "name": "Tamika Schildgen", 418 | "scores": [ 419 | { 420 | "score": 45.65432764125526, 421 | "type": "exam" 422 | }, 423 | { 424 | "score": 64.32927049658846, 425 | "type": "quiz" 426 | }, 427 | { 428 | "score": 83.53933351660562, 429 | "type": "homework" 430 | } 431 | ] 432 | } 433 | { 434 | "_id": 24, 435 | "name": "Jesusa Rickenbacker", 436 | "scores": [ 437 | { 438 | "score": 86.0319702155683, 439 | "type": "exam" 440 | }, 441 | { 442 | "score": 1.967495200433389, 443 | "type": "quiz" 444 | }, 445 | { 446 | "score": 61.10861071547914, 447 | "type": "homework" 448 | } 449 | ] 450 | } 451 | { 452 | "_id": 25, 453 | "name": "Rudolph Domingo", 454 | "scores": [ 455 | { 456 | "score": 74.75289335591543, 457 | "type": "exam" 458 | }, 459 | { 460 | "score": 38.5413647805495, 461 | "type": "quiz" 462 | }, 463 | { 464 | "score": 35.2554340953413, 465 | "type": "homework" 466 | } 467 | ] 468 | } 469 | { 470 | "_id": 26, 471 | "name": "Jonie Raby", 472 | "scores": [ 473 | { 474 | "score": 19.17861192576963, 475 | "type": "exam" 476 | }, 477 | { 478 | "score": 76.3890359749654, 479 | "type": "quiz" 480 | }, 481 | { 482 | "score": 44.39605672647002, 483 | "type": "homework" 484 | } 485 | ] 486 | } 487 | { 488 | "_id": 27, 489 | "name": "Edgar Sarkis", 490 | "scores": [ 491 | { 492 | "score": 8.606983261043888, 493 | "type": "exam" 494 | }, 495 | { 496 | "score": 58.71180464203724, 497 | "type": "quiz" 498 | }, 499 | { 500 | "score": 15.33726210596508, 501 | "type": "homework" 502 | } 503 | ] 504 | } 505 | { 506 | "_id": 28, 507 | "name": "Laureen Salomone", 508 | "scores": [ 509 | { 510 | "score": 3.677565278992456, 511 | "type": "exam" 512 | }, 513 | { 514 | "score": 7.119462599229987, 515 | "type": "quiz" 516 | }, 517 | { 518 | "score": 82.87308922617427, 519 | "type": "homework" 520 | } 521 | ] 522 | } 523 | { 524 | "_id": 29, 525 | "name": "Gwyneth Garling", 526 | "scores": [ 527 | { 528 | "score": 48.36644963899371, 529 | "type": "exam" 530 | }, 531 | { 532 | "score": 10.37827022865908, 533 | "type": "quiz" 534 | }, 535 | { 536 | "score": 93.26639335532833, 537 | "type": "homework" 538 | } 539 | ] 540 | } 541 | { 542 | "_id": 30, 543 | "name": "Kaila Deibler", 544 | "scores": [ 545 | { 546 | "score": 15.89771199662455, 547 | "type": "exam" 548 | }, 549 | { 550 | "score": 56.93965183412178, 551 | "type": "quiz" 552 | }, 553 | { 554 | "score": 66.64493295066322, 555 | "type": "homework" 556 | } 557 | ] 558 | } 559 | { 560 | "_id": 31, 561 | "name": "Tandra Meadows", 562 | "scores": [ 563 | { 564 | "score": 24.90138146001744, 565 | "type": "exam" 566 | }, 567 | { 568 | "score": 28.8266541837344, 569 | "type": "quiz" 570 | }, 571 | { 572 | "score": 97.16831550665721, 573 | "type": "homework" 574 | } 575 | ] 576 | } 577 | { 578 | "_id": 32, 579 | "name": "Gwen Honig", 580 | "scores": [ 581 | { 582 | "score": 87.14345376886205, 583 | "type": "exam" 584 | }, 585 | { 586 | "score": 99.45824441135635, 587 | "type": "quiz" 588 | }, 589 | { 590 | "score": 76.66460454219344, 591 | "type": "homework" 592 | } 593 | ] 594 | } 595 | { 596 | "_id": 33, 597 | "name": "Sadie Jernigan", 598 | "scores": [ 599 | { 600 | "score": 73.15861249943812, 601 | "type": "exam" 602 | }, 603 | { 604 | "score": 2.987718065941702, 605 | "type": "quiz" 606 | }, 607 | { 608 | "score": 82.54104198590488, 609 | "type": "homework" 610 | } 611 | ] 612 | } 613 | { 614 | "_id": 34, 615 | "name": "Carli Belvins", 616 | "scores": [ 617 | { 618 | "score": 7.112266875518214, 619 | "type": "exam" 620 | }, 621 | { 622 | "score": 67.734668378287, 623 | "type": "quiz" 624 | }, 625 | { 626 | "score": 88.99855402666871, 627 | "type": "homework" 628 | } 629 | ] 630 | } 631 | { 632 | "_id": 35, 633 | "name": "Synthia Labelle", 634 | "scores": [ 635 | { 636 | "score": 27.22049103148209, 637 | "type": "exam" 638 | }, 639 | { 640 | "score": 31.28760039265919, 641 | "type": "quiz" 642 | }, 643 | { 644 | "score": 79.23285425688643, 645 | "type": "homework" 646 | } 647 | ] 648 | } 649 | { 650 | "_id": 36, 651 | "name": "Eugene Magdaleno", 652 | "scores": [ 653 | { 654 | "score": 73.055900093666, 655 | "type": "exam" 656 | }, 657 | { 658 | "score": 79.85621560462026, 659 | "type": "quiz" 660 | }, 661 | { 662 | "score": 66.09143669040472, 663 | "type": "homework" 664 | } 665 | ] 666 | } 667 | { 668 | "_id": 37, 669 | "name": "Meagan Oakes", 670 | "scores": [ 671 | { 672 | "score": 86.06759716616264, 673 | "type": "exam" 674 | }, 675 | { 676 | "score": 79.45097452834857, 677 | "type": "quiz" 678 | }, 679 | { 680 | "score": 28.41090281547689, 681 | "type": "homework" 682 | } 683 | ] 684 | } 685 | { 686 | "_id": 38, 687 | "name": "Richelle Siemers", 688 | "scores": [ 689 | { 690 | "score": 34.64373397163318, 691 | "type": "exam" 692 | }, 693 | { 694 | "score": 91.46799649446983, 695 | "type": "quiz" 696 | }, 697 | { 698 | "score": 56.12615074082559, 699 | "type": "homework" 700 | } 701 | ] 702 | } 703 | { 704 | "_id": 39, 705 | "name": "Mariette Batdorf", 706 | "scores": [ 707 | { 708 | "score": 0.04381116979284005, 709 | "type": "exam" 710 | }, 711 | { 712 | "score": 90.25774974259562, 713 | "type": "quiz" 714 | }, 715 | { 716 | "score": 65.88612319625227, 717 | "type": "homework" 718 | } 719 | ] 720 | } 721 | { 722 | "_id": 40, 723 | "name": "Rachell Aman", 724 | "scores": [ 725 | { 726 | "score": 84.53009035375172, 727 | "type": "exam" 728 | }, 729 | { 730 | "score": 25.25568126160764, 731 | "type": "quiz" 732 | }, 733 | { 734 | "score": 70.42062575402956, 735 | "type": "homework" 736 | } 737 | ] 738 | } 739 | { 740 | "_id": 41, 741 | "name": "Aleida Elsass", 742 | "scores": [ 743 | { 744 | "score": 28.02518041693717, 745 | "type": "exam" 746 | }, 747 | { 748 | "score": 95.25243105389065, 749 | "type": "quiz" 750 | }, 751 | { 752 | "score": 68.05980405338909, 753 | "type": "homework" 754 | } 755 | ] 756 | } 757 | { 758 | "_id": 42, 759 | "name": "Kayce Kenyon", 760 | "scores": [ 761 | { 762 | "score": 44.62441703708117, 763 | "type": "exam" 764 | }, 765 | { 766 | "score": 27.38208798553111, 767 | "type": "quiz" 768 | }, 769 | { 770 | "score": 97.43587143437509, 771 | "type": "homework" 772 | } 773 | ] 774 | } 775 | { 776 | "_id": 43, 777 | "name": "Ernestine Macfarland", 778 | "scores": [ 779 | { 780 | "score": 15.29147856258362, 781 | "type": "exam" 782 | }, 783 | { 784 | "score": 78.40698797039501, 785 | "type": "quiz" 786 | }, 787 | { 788 | "score": 31.03031764716336, 789 | "type": "homework" 790 | } 791 | ] 792 | } 793 | { 794 | "_id": 44, 795 | "name": "Houston Valenti", 796 | "scores": [ 797 | { 798 | "score": 98.06441387027331, 799 | "type": "exam" 800 | }, 801 | { 802 | "score": 0.8760893342659504, 803 | "type": "quiz" 804 | }, 805 | { 806 | "score": 15.2177618920215, 807 | "type": "homework" 808 | } 809 | ] 810 | } 811 | { 812 | "_id": 45, 813 | "name": "Terica Brugger", 814 | "scores": [ 815 | { 816 | "score": 42.1011312120801, 817 | "type": "exam" 818 | }, 819 | { 820 | "score": 41.73654145887228, 821 | "type": "quiz" 822 | }, 823 | { 824 | "score": 18.91287189072117, 825 | "type": "homework" 826 | } 827 | ] 828 | } 829 | { 830 | "_id": 46, 831 | "name": "Lady Lefevers", 832 | "scores": [ 833 | { 834 | "score": 16.89237820123443, 835 | "type": "exam" 836 | }, 837 | { 838 | "score": 65.97505910406456, 839 | "type": "quiz" 840 | }, 841 | { 842 | "score": 48.42527123437286, 843 | "type": "homework" 844 | } 845 | ] 846 | } 847 | { 848 | "_id": 47, 849 | "name": "Kurtis Jiles", 850 | "scores": [ 851 | { 852 | "score": 92.96916908741805, 853 | "type": "exam" 854 | }, 855 | { 856 | "score": 22.86854192921203, 857 | "type": "quiz" 858 | }, 859 | { 860 | "score": 31.89793879453222, 861 | "type": "homework" 862 | } 863 | ] 864 | } 865 | { 866 | "_id": 48, 867 | "name": "Barbera Lippman", 868 | "scores": [ 869 | { 870 | "score": 35.43490750932609, 871 | "type": "exam" 872 | }, 873 | { 874 | "score": 97.42074160188449, 875 | "type": "quiz" 876 | }, 877 | { 878 | "score": 74.1092960902528, 879 | "type": "homework" 880 | } 881 | ] 882 | } 883 | { 884 | "_id": 49, 885 | "name": "Dinah Sauve", 886 | "scores": [ 887 | { 888 | "score": 96.64807532447064, 889 | "type": "exam" 890 | }, 891 | { 892 | "score": 14.56470882270576, 893 | "type": "quiz" 894 | }, 895 | { 896 | "score": 72.00519420743191, 897 | "type": "homework" 898 | } 899 | ] 900 | } 901 | { 902 | "_id": 50, 903 | "name": "Alica Pasley", 904 | "scores": [ 905 | { 906 | "score": 19.38544736721771, 907 | "type": "exam" 908 | }, 909 | { 910 | "score": 88.70752686639557, 911 | "type": "quiz" 912 | }, 913 | { 914 | "score": 60.62755218680213, 915 | "type": "homework" 916 | } 917 | ] 918 | } 919 | { 920 | "_id": 51, 921 | "name": "Elizabet Kleine", 922 | "scores": [ 923 | { 924 | "score": 86.81245449846962, 925 | "type": "exam" 926 | }, 927 | { 928 | "score": 36.196443334522, 929 | "type": "quiz" 930 | }, 931 | { 932 | "score": 77.94001750905642, 933 | "type": "homework" 934 | } 935 | ] 936 | } 937 | { 938 | "_id": 52, 939 | "name": "Tawana Oberg", 940 | "scores": [ 941 | { 942 | "score": 80.59006098671075, 943 | "type": "exam" 944 | }, 945 | { 946 | "score": 93.28438118988183, 947 | "type": "quiz" 948 | }, 949 | { 950 | "score": 93.12134003887978, 951 | "type": "homework" 952 | } 953 | ] 954 | } 955 | { 956 | "_id": 53, 957 | "name": "Malisa Jeanes", 958 | "scores": [ 959 | { 960 | "score": 33.44580005842922, 961 | "type": "exam" 962 | }, 963 | { 964 | "score": 7.172746439960975, 965 | "type": "quiz" 966 | }, 967 | { 968 | "score": 80.53328849494751, 969 | "type": "homework" 970 | } 971 | ] 972 | } 973 | { 974 | "_id": 54, 975 | "name": "Joel Rueter", 976 | "scores": [ 977 | { 978 | "score": 87.53636893952853, 979 | "type": "exam" 980 | }, 981 | { 982 | "score": 92.70974674256513, 983 | "type": "quiz" 984 | }, 985 | { 986 | "score": 61.79032586247813, 987 | "type": "homework" 988 | } 989 | ] 990 | } 991 | { 992 | "_id": 55, 993 | "name": "Tresa Sinha", 994 | "scores": [ 995 | { 996 | "score": 94.93136959210354, 997 | "type": "exam" 998 | }, 999 | { 1000 | "score": 72.32226123565266, 1001 | "type": "quiz" 1002 | }, 1003 | { 1004 | "score": 77.248768811767, 1005 | "type": "homework" 1006 | } 1007 | ] 1008 | } 1009 | { 1010 | "_id": 56, 1011 | "name": "Danika Loeffler", 1012 | "scores": [ 1013 | { 1014 | "score": 21.54531707142236, 1015 | "type": "exam" 1016 | }, 1017 | { 1018 | "score": 41.75962115078149, 1019 | "type": "quiz" 1020 | }, 1021 | { 1022 | "score": 55.70195462204016, 1023 | "type": "homework" 1024 | } 1025 | ] 1026 | } 1027 | { 1028 | "_id": 57, 1029 | "name": "Chad Rahe", 1030 | "scores": [ 1031 | { 1032 | "score": 40.84572027366789, 1033 | "type": "exam" 1034 | }, 1035 | { 1036 | "score": 29.22733629679561, 1037 | "type": "quiz" 1038 | }, 1039 | { 1040 | "score": 93.12112348179406, 1041 | "type": "homework" 1042 | } 1043 | ] 1044 | } 1045 | { 1046 | "_id": 58, 1047 | "name": "Joaquina Arbuckle", 1048 | "scores": [ 1049 | { 1050 | "score": 28.66671659815553, 1051 | "type": "exam" 1052 | }, 1053 | { 1054 | "score": 40.48858382583742, 1055 | "type": "quiz" 1056 | }, 1057 | { 1058 | "score": 51.51393116681172, 1059 | "type": "homework" 1060 | } 1061 | ] 1062 | } 1063 | { 1064 | "_id": 59, 1065 | "name": "Vinnie Auerbach", 1066 | "scores": [ 1067 | { 1068 | "score": 95.45508256300009, 1069 | "type": "exam" 1070 | }, 1071 | { 1072 | "score": 7.512188017365151, 1073 | "type": "quiz" 1074 | }, 1075 | { 1076 | "score": 28.5905754294006, 1077 | "type": "homework" 1078 | } 1079 | ] 1080 | } 1081 | { 1082 | "_id": 60, 1083 | "name": "Dusti Lemmond", 1084 | "scores": [ 1085 | { 1086 | "score": 17.27725327681863, 1087 | "type": "exam" 1088 | }, 1089 | { 1090 | "score": 83.24439414725833, 1091 | "type": "quiz" 1092 | }, 1093 | { 1094 | "score": 81.84258722611811, 1095 | "type": "homework" 1096 | } 1097 | ] 1098 | } 1099 | { 1100 | "_id": 61, 1101 | "name": "Grady Zemke", 1102 | "scores": [ 1103 | { 1104 | "score": 51.91561300267121, 1105 | "type": "exam" 1106 | }, 1107 | { 1108 | "score": 50.08349374829509, 1109 | "type": "quiz" 1110 | }, 1111 | { 1112 | "score": 95.34139273570386, 1113 | "type": "homework" 1114 | } 1115 | ] 1116 | } 1117 | { 1118 | "_id": 62, 1119 | "name": "Vina Matsunaga", 1120 | "scores": [ 1121 | { 1122 | "score": 51.38190070034149, 1123 | "type": "exam" 1124 | }, 1125 | { 1126 | "score": 34.63479282877322, 1127 | "type": "quiz" 1128 | }, 1129 | { 1130 | "score": 46.27059093183421, 1131 | "type": "homework" 1132 | } 1133 | ] 1134 | } 1135 | { 1136 | "_id": 63, 1137 | "name": "Rubie Winton", 1138 | "scores": [ 1139 | { 1140 | "score": 7.176062073558509, 1141 | "type": "exam" 1142 | }, 1143 | { 1144 | "score": 46.32426882511162, 1145 | "type": "quiz" 1146 | }, 1147 | { 1148 | "score": 19.24312817599633, 1149 | "type": "homework" 1150 | } 1151 | ] 1152 | } 1153 | { 1154 | "_id": 64, 1155 | "name": "Whitley Fears", 1156 | "scores": [ 1157 | { 1158 | "score": 89.61845831842888, 1159 | "type": "exam" 1160 | }, 1161 | { 1162 | "score": 82.44879156010508, 1163 | "type": "quiz" 1164 | }, 1165 | { 1166 | "score": 96.57912148645883, 1167 | "type": "homework" 1168 | } 1169 | ] 1170 | } 1171 | { 1172 | "_id": 65, 1173 | "name": "Gena Riccio", 1174 | "scores": [ 1175 | { 1176 | "score": 67.58395308948619, 1177 | "type": "exam" 1178 | }, 1179 | { 1180 | "score": 67.2413500951588, 1181 | "type": "quiz" 1182 | }, 1183 | { 1184 | "score": 42.93471779899529, 1185 | "type": "homework" 1186 | } 1187 | ] 1188 | } 1189 | { 1190 | "_id": 66, 1191 | "name": "Kim Xu", 1192 | "scores": [ 1193 | { 1194 | "score": 19.96531774799065, 1195 | "type": "exam" 1196 | }, 1197 | { 1198 | "score": 17.52966217224916, 1199 | "type": "quiz" 1200 | }, 1201 | { 1202 | "score": 57.32983091095816, 1203 | "type": "homework" 1204 | } 1205 | ] 1206 | } 1207 | { 1208 | "_id": 67, 1209 | "name": "Merissa Mann", 1210 | "scores": [ 1211 | { 1212 | "score": 75.1949733626123, 1213 | "type": "exam" 1214 | }, 1215 | { 1216 | "score": 52.56522605123723, 1217 | "type": "quiz" 1218 | }, 1219 | { 1220 | "score": 94.67518167209815, 1221 | "type": "homework" 1222 | } 1223 | ] 1224 | } 1225 | { 1226 | "_id": 68, 1227 | "name": "Jenise Mcguffie", 1228 | "scores": [ 1229 | { 1230 | "score": 40.15210496060384, 1231 | "type": "exam" 1232 | }, 1233 | { 1234 | "score": 90.60219950183566, 1235 | "type": "quiz" 1236 | }, 1237 | { 1238 | "score": 51.58720341010564, 1239 | "type": "homework" 1240 | } 1241 | ] 1242 | } 1243 | { 1244 | "_id": 69, 1245 | "name": "Cody Strouth", 1246 | "scores": [ 1247 | { 1248 | "score": 4.784730508547719, 1249 | "type": "exam" 1250 | }, 1251 | { 1252 | "score": 99.80348240553108, 1253 | "type": "quiz" 1254 | }, 1255 | { 1256 | "score": 97.89665889862901, 1257 | "type": "homework" 1258 | } 1259 | ] 1260 | } 1261 | { 1262 | "_id": 70, 1263 | "name": "Harriett Velarde", 1264 | "scores": [ 1265 | { 1266 | "score": 33.7733570443736, 1267 | "type": "exam" 1268 | }, 1269 | { 1270 | "score": 96.05228578589255, 1271 | "type": "quiz" 1272 | }, 1273 | { 1274 | "score": 46.24926696413032, 1275 | "type": "homework" 1276 | } 1277 | ] 1278 | } 1279 | { 1280 | "_id": 71, 1281 | "name": "Kam Senters", 1282 | "scores": [ 1283 | { 1284 | "score": 81.56497719010976, 1285 | "type": "exam" 1286 | }, 1287 | { 1288 | "score": 5.247410853581524, 1289 | "type": "quiz" 1290 | }, 1291 | { 1292 | "score": 92.10078400854972, 1293 | "type": "homework" 1294 | } 1295 | ] 1296 | } 1297 | { 1298 | "_id": 72, 1299 | "name": "Leonida Lafond", 1300 | "scores": [ 1301 | { 1302 | "score": 92.10605086888438, 1303 | "type": "exam" 1304 | }, 1305 | { 1306 | "score": 32.66022211621239, 1307 | "type": "quiz" 1308 | }, 1309 | { 1310 | "score": 82.15588797092647, 1311 | "type": "homework" 1312 | } 1313 | ] 1314 | } 1315 | { 1316 | "_id": 73, 1317 | "name": "Devorah Smartt", 1318 | "scores": [ 1319 | { 1320 | "score": 69.60160495436016, 1321 | "type": "exam" 1322 | }, 1323 | { 1324 | "score": 6.931507591998553, 1325 | "type": "quiz" 1326 | }, 1327 | { 1328 | "score": 55.66005349294464, 1329 | "type": "homework" 1330 | } 1331 | ] 1332 | } 1333 | { 1334 | "_id": 74, 1335 | "name": "Leola Lundin", 1336 | "scores": [ 1337 | { 1338 | "score": 31.62936464207764, 1339 | "type": "exam" 1340 | }, 1341 | { 1342 | "score": 91.28658941188532, 1343 | "type": "quiz" 1344 | }, 1345 | { 1346 | "score": 93.71671632774428, 1347 | "type": "homework" 1348 | } 1349 | ] 1350 | } 1351 | { 1352 | "_id": 75, 1353 | "name": "Tonia Surace", 1354 | "scores": [ 1355 | { 1356 | "score": 80.93655069496523, 1357 | "type": "exam" 1358 | }, 1359 | { 1360 | "score": 79.54620208144452, 1361 | "type": "quiz" 1362 | }, 1363 | { 1364 | "score": 41.34308724166419, 1365 | "type": "homework" 1366 | } 1367 | ] 1368 | } 1369 | { 1370 | "_id": 76, 1371 | "name": "Adrien Renda", 1372 | "scores": [ 1373 | { 1374 | "score": 57.24794864351232, 1375 | "type": "exam" 1376 | }, 1377 | { 1378 | "score": 19.5118228072558, 1379 | "type": "quiz" 1380 | }, 1381 | { 1382 | "score": 70.71043448913191, 1383 | "type": "homework" 1384 | } 1385 | ] 1386 | } 1387 | { 1388 | "_id": 77, 1389 | "name": "Efrain Claw", 1390 | "scores": [ 1391 | { 1392 | "score": 55.41266579085205, 1393 | "type": "exam" 1394 | }, 1395 | { 1396 | "score": 31.30359328252952, 1397 | "type": "quiz" 1398 | }, 1399 | { 1400 | "score": 88.73134194093676, 1401 | "type": "homework" 1402 | } 1403 | ] 1404 | } 1405 | { 1406 | "_id": 78, 1407 | "name": "Len Treiber", 1408 | "scores": [ 1409 | { 1410 | "score": 21.21850173315791, 1411 | "type": "exam" 1412 | }, 1413 | { 1414 | "score": 13.2282768150266, 1415 | "type": "quiz" 1416 | }, 1417 | { 1418 | "score": 82.49842801247594, 1419 | "type": "homework" 1420 | } 1421 | ] 1422 | } 1423 | { 1424 | "_id": 79, 1425 | "name": "Mariela Sherer", 1426 | "scores": [ 1427 | { 1428 | "score": 61.20158144877323, 1429 | "type": "exam" 1430 | }, 1431 | { 1432 | "score": 52.75657259917104, 1433 | "type": "quiz" 1434 | }, 1435 | { 1436 | "score": 90.97004773806381, 1437 | "type": "homework" 1438 | } 1439 | ] 1440 | } 1441 | { 1442 | "_id": 80, 1443 | "name": "Echo Pippins", 1444 | "scores": [ 1445 | { 1446 | "score": 27.77924608896123, 1447 | "type": "exam" 1448 | }, 1449 | { 1450 | "score": 85.1861976198818, 1451 | "type": "quiz" 1452 | }, 1453 | { 1454 | "score": 92.50671800180454, 1455 | "type": "homework" 1456 | } 1457 | ] 1458 | } 1459 | { 1460 | "_id": 81, 1461 | "name": "Linnie Weigel", 1462 | "scores": [ 1463 | { 1464 | "score": 66.0349256424749, 1465 | "type": "exam" 1466 | }, 1467 | { 1468 | "score": 67.57096025532985, 1469 | "type": "quiz" 1470 | }, 1471 | { 1472 | "score": 38.33608066073369, 1473 | "type": "homework" 1474 | } 1475 | ] 1476 | } 1477 | { 1478 | "_id": 82, 1479 | "name": "Santiago Dollins", 1480 | "scores": [ 1481 | { 1482 | "score": 33.48242310776701, 1483 | "type": "exam" 1484 | }, 1485 | { 1486 | "score": 60.49199094204558, 1487 | "type": "quiz" 1488 | }, 1489 | { 1490 | "score": 87.02564768982076, 1491 | "type": "homework" 1492 | } 1493 | ] 1494 | } 1495 | { 1496 | "_id": 83, 1497 | "name": "Tonisha Games", 1498 | "scores": [ 1499 | { 1500 | "score": 29.13833807032966, 1501 | "type": "exam" 1502 | }, 1503 | { 1504 | "score": 35.25054111123917, 1505 | "type": "quiz" 1506 | }, 1507 | { 1508 | "score": 66.73047056293319, 1509 | "type": "homework" 1510 | } 1511 | ] 1512 | } 1513 | { 1514 | "_id": 84, 1515 | "name": "Timothy Harrod", 1516 | "scores": [ 1517 | { 1518 | "score": 93.23020013495737, 1519 | "type": "exam" 1520 | }, 1521 | { 1522 | "score": 49.06010347848443, 1523 | "type": "quiz" 1524 | }, 1525 | { 1526 | "score": 74.00788699415295, 1527 | "type": "homework" 1528 | } 1529 | ] 1530 | } 1531 | { 1532 | "_id": 85, 1533 | "name": "Rae Kohout", 1534 | "scores": [ 1535 | { 1536 | "score": 63.86894250781692, 1537 | "type": "exam" 1538 | }, 1539 | { 1540 | "score": 55.81549538273672, 1541 | "type": "quiz" 1542 | }, 1543 | { 1544 | "score": 59.13566011309437, 1545 | "type": "homework" 1546 | } 1547 | ] 1548 | } 1549 | { 1550 | "_id": 86, 1551 | "name": "Brain Lachapelle", 1552 | "scores": [ 1553 | { 1554 | "score": 2.013473187690951, 1555 | "type": "exam" 1556 | }, 1557 | { 1558 | "score": 45.01802394825918, 1559 | "type": "quiz" 1560 | }, 1561 | { 1562 | "score": 88.04712649447521, 1563 | "type": "homework" 1564 | } 1565 | ] 1566 | } 1567 | { 1568 | "_id": 87, 1569 | "name": "Toshiko Sabella", 1570 | "scores": [ 1571 | { 1572 | "score": 21.05570509531929, 1573 | "type": "exam" 1574 | }, 1575 | { 1576 | "score": 26.43387483146958, 1577 | "type": "quiz" 1578 | }, 1579 | { 1580 | "score": 42.80331214002496, 1581 | "type": "homework" 1582 | } 1583 | ] 1584 | } 1585 | { 1586 | "_id": 88, 1587 | "name": "Keesha Papadopoulos", 1588 | "scores": [ 1589 | { 1590 | "score": 82.35397321850031, 1591 | "type": "exam" 1592 | }, 1593 | { 1594 | "score": 3.064361273717464, 1595 | "type": "quiz" 1596 | }, 1597 | { 1598 | "score": 98.46867828216399, 1599 | "type": "homework" 1600 | } 1601 | ] 1602 | } 1603 | { 1604 | "_id": 89, 1605 | "name": "Cassi Heal", 1606 | "scores": [ 1607 | { 1608 | "score": 43.04310994985133, 1609 | "type": "exam" 1610 | }, 1611 | { 1612 | "score": 0.006247360551892012, 1613 | "type": "quiz" 1614 | }, 1615 | { 1616 | "score": 63.88558436723092, 1617 | "type": "homework" 1618 | } 1619 | ] 1620 | } 1621 | { 1622 | "_id": 90, 1623 | "name": "Osvaldo Hirt", 1624 | "scores": [ 1625 | { 1626 | "score": 67.44931456608883, 1627 | "type": "exam" 1628 | }, 1629 | { 1630 | "score": 41.77986504201782, 1631 | "type": "quiz" 1632 | }, 1633 | { 1634 | "score": 76.30879472084027, 1635 | "type": "homework" 1636 | } 1637 | ] 1638 | } 1639 | { 1640 | "_id": 91, 1641 | "name": "Ty Barbieri", 1642 | "scores": [ 1643 | { 1644 | "score": 38.43781607953586, 1645 | "type": "exam" 1646 | }, 1647 | { 1648 | "score": 95.70340794272111, 1649 | "type": "quiz" 1650 | }, 1651 | { 1652 | "score": 72.80272364761178, 1653 | "type": "homework" 1654 | } 1655 | ] 1656 | } 1657 | { 1658 | "_id": 92, 1659 | "name": "Ta Sikorski", 1660 | "scores": [ 1661 | { 1662 | "score": 30.02140506101446, 1663 | "type": "exam" 1664 | }, 1665 | { 1666 | "score": 23.89164976236439, 1667 | "type": "quiz" 1668 | }, 1669 | { 1670 | "score": 61.82907698626848, 1671 | "type": "homework" 1672 | } 1673 | ] 1674 | } 1675 | { 1676 | "_id": 93, 1677 | "name": "Lucinda Vanderburg", 1678 | "scores": [ 1679 | { 1680 | "score": 27.55843343656866, 1681 | "type": "exam" 1682 | }, 1683 | { 1684 | "score": 11.45699271327768, 1685 | "type": "quiz" 1686 | }, 1687 | { 1688 | "score": 75.53546873615787, 1689 | "type": "homework" 1690 | } 1691 | ] 1692 | } 1693 | { 1694 | "_id": 94, 1695 | "name": "Darby Wass", 1696 | "scores": [ 1697 | { 1698 | "score": 6.867644836612586, 1699 | "type": "exam" 1700 | }, 1701 | { 1702 | "score": 63.4908039680606, 1703 | "type": "quiz" 1704 | }, 1705 | { 1706 | "score": 85.41865347441522, 1707 | "type": "homework" 1708 | } 1709 | ] 1710 | } 1711 | { 1712 | "_id": 95, 1713 | "name": "Omar Bowdoin", 1714 | "scores": [ 1715 | { 1716 | "score": 8.58858127638702, 1717 | "type": "exam" 1718 | }, 1719 | { 1720 | "score": 88.40377630359677, 1721 | "type": "quiz" 1722 | }, 1723 | { 1724 | "score": 25.71387474240768, 1725 | "type": "homework" 1726 | } 1727 | ] 1728 | } 1729 | { 1730 | "_id": 96, 1731 | "name": "Milan Mcgavock", 1732 | "scores": [ 1733 | { 1734 | "score": 69.11554341921843, 1735 | "type": "exam" 1736 | }, 1737 | { 1738 | "score": 10.2027724707151, 1739 | "type": "quiz" 1740 | }, 1741 | { 1742 | "score": 24.87545552041663, 1743 | "type": "homework" 1744 | } 1745 | ] 1746 | } 1747 | { 1748 | "_id": 97, 1749 | "name": "Maren Scheider", 1750 | "scores": [ 1751 | { 1752 | "score": 94.4329121733663, 1753 | "type": "exam" 1754 | }, 1755 | { 1756 | "score": 77.28263690107663, 1757 | "type": "quiz" 1758 | }, 1759 | { 1760 | "score": 59.46326216544371, 1761 | "type": "homework" 1762 | } 1763 | ] 1764 | } 1765 | { 1766 | "_id": 98, 1767 | "name": "Carli Ector", 1768 | "scores": [ 1769 | { 1770 | "score": 88.18040268522668, 1771 | "type": "exam" 1772 | }, 1773 | { 1774 | "score": 60.3111085581054, 1775 | "type": "quiz" 1776 | }, 1777 | { 1778 | "score": 96.33612053785647, 1779 | "type": "homework" 1780 | } 1781 | ] 1782 | } 1783 | { 1784 | "_id": 99, 1785 | "name": "Jaclyn Morado", 1786 | "scores": [ 1787 | { 1788 | "score": 70.27627082122453, 1789 | "type": "exam" 1790 | }, 1791 | { 1792 | "score": 56.78470387064279, 1793 | "type": "quiz" 1794 | }, 1795 | { 1796 | "score": 47.48518298423097, 1797 | "type": "homework" 1798 | } 1799 | ] 1800 | } 1801 | { 1802 | "_id": 100, 1803 | "name": "Demarcus Audette", 1804 | "scores": [ 1805 | { 1806 | "score": 47.42608580155614, 1807 | "type": "exam" 1808 | }, 1809 | { 1810 | "score": 44.83416623719906, 1811 | "type": "quiz" 1812 | }, 1813 | { 1814 | "score": 39.01726616178844, 1815 | "type": "homework" 1816 | } 1817 | ] 1818 | } 1819 | { 1820 | "_id": 101, 1821 | "name": "Tania Hulett", 1822 | "scores": [ 1823 | { 1824 | "score": 21.84617015735916, 1825 | "type": "exam" 1826 | }, 1827 | { 1828 | "score": 53.8568257735492, 1829 | "type": "quiz" 1830 | }, 1831 | { 1832 | "score": 79.60533635579307, 1833 | "type": "homework" 1834 | } 1835 | ] 1836 | } 1837 | { 1838 | "_id": 102, 1839 | "name": "Mercedez Garduno", 1840 | "scores": [ 1841 | { 1842 | "score": 49.52877007656483, 1843 | "type": "exam" 1844 | }, 1845 | { 1846 | "score": 44.55505066212384, 1847 | "type": "quiz" 1848 | }, 1849 | { 1850 | "score": 81.50869746632009, 1851 | "type": "homework" 1852 | } 1853 | ] 1854 | } 1855 | { 1856 | "_id": 103, 1857 | "name": "Fleta Duplantis", 1858 | "scores": [ 1859 | { 1860 | "score": 84.37799696030743, 1861 | "type": "exam" 1862 | }, 1863 | { 1864 | "score": 15.95792143439528, 1865 | "type": "quiz" 1866 | }, 1867 | { 1868 | "score": 77.80745176713172, 1869 | "type": "homework" 1870 | } 1871 | ] 1872 | } 1873 | { 1874 | "_id": 104, 1875 | "name": "Brittny Warwick", 1876 | "scores": [ 1877 | { 1878 | "score": 69.54399888097534, 1879 | "type": "exam" 1880 | }, 1881 | { 1882 | "score": 82.00469934215849, 1883 | "type": "quiz" 1884 | }, 1885 | { 1886 | "score": 95.96446106607902, 1887 | "type": "homework" 1888 | } 1889 | ] 1890 | } 1891 | { 1892 | "_id": 105, 1893 | "name": "Shin Allbright", 1894 | "scores": [ 1895 | { 1896 | "score": 62.28388941877533, 1897 | "type": "exam" 1898 | }, 1899 | { 1900 | "score": 85.26863799439475, 1901 | "type": "quiz" 1902 | }, 1903 | { 1904 | "score": 88.9947941542333, 1905 | "type": "homework" 1906 | } 1907 | ] 1908 | } 1909 | { 1910 | "_id": 106, 1911 | "name": "Karry Petrarca", 1912 | "scores": [ 1913 | { 1914 | "score": 3.677125771067413, 1915 | "type": "exam" 1916 | }, 1917 | { 1918 | "score": 40.39799056667404, 1919 | "type": "quiz" 1920 | }, 1921 | { 1922 | "score": 14.38347127905983, 1923 | "type": "homework" 1924 | } 1925 | ] 1926 | } 1927 | { 1928 | "_id": 107, 1929 | "name": "Beckie Millington", 1930 | "scores": [ 1931 | { 1932 | "score": 69.52419218194589, 1933 | "type": "exam" 1934 | }, 1935 | { 1936 | "score": 24.85411404016219, 1937 | "type": "quiz" 1938 | }, 1939 | { 1940 | "score": 34.92039455520659, 1941 | "type": "homework" 1942 | } 1943 | ] 1944 | } 1945 | { 1946 | "_id": 108, 1947 | "name": "Mikaela Meidinger", 1948 | "scores": [ 1949 | { 1950 | "score": 63.75595052560389, 1951 | "type": "exam" 1952 | }, 1953 | { 1954 | "score": 59.52298111997963, 1955 | "type": "quiz" 1956 | }, 1957 | { 1958 | "score": 88.66481441499843, 1959 | "type": "homework" 1960 | } 1961 | ] 1962 | } 1963 | { 1964 | "_id": 109, 1965 | "name": "Flora Duell", 1966 | "scores": [ 1967 | { 1968 | "score": 40.68238966626067, 1969 | "type": "exam" 1970 | }, 1971 | { 1972 | "score": 46.77972040308903, 1973 | "type": "quiz" 1974 | }, 1975 | { 1976 | "score": 69.29400057020965, 1977 | "type": "homework" 1978 | } 1979 | ] 1980 | } 1981 | { 1982 | "_id": 110, 1983 | "name": "Nobuko Linzey", 1984 | "scores": [ 1985 | { 1986 | "score": 67.40792606687442, 1987 | "type": "exam" 1988 | }, 1989 | { 1990 | "score": 58.58331128403415, 1991 | "type": "quiz" 1992 | }, 1993 | { 1994 | "score": 47.44831568815929, 1995 | "type": "homework" 1996 | } 1997 | ] 1998 | } 1999 | { 2000 | "_id": 111, 2001 | "name": "Gennie Ratner", 2002 | "scores": [ 2003 | { 2004 | "score": 62.74309964110307, 2005 | "type": "exam" 2006 | }, 2007 | { 2008 | "score": 92.18013849235186, 2009 | "type": "quiz" 2010 | }, 2011 | { 2012 | "score": 53.11174468047395, 2013 | "type": "homework" 2014 | } 2015 | ] 2016 | } 2017 | { 2018 | "_id": 112, 2019 | "name": "Myrtle Wolfinger", 2020 | "scores": [ 2021 | { 2022 | "score": 73.93895528856032, 2023 | "type": "exam" 2024 | }, 2025 | { 2026 | "score": 35.99397009906073, 2027 | "type": "quiz" 2028 | }, 2029 | { 2030 | "score": 93.85826506506328, 2031 | "type": "homework" 2032 | } 2033 | ] 2034 | } 2035 | { 2036 | "_id": 113, 2037 | "name": "", 2038 | "scores": [ 2039 | { 2040 | "score": 77.57315913088024, 2041 | "type": "exam" 2042 | }, 2043 | { 2044 | "score": 13.28135073340091, 2045 | "type": "quiz" 2046 | }, 2047 | { 2048 | "score": 67.27527802263116, 2049 | "type": "homework" 2050 | } 2051 | ] 2052 | } 2053 | { 2054 | "_id": 114, 2055 | "name": "aimee Zank", 2056 | "scores": [ 2057 | { 2058 | "score": 15.91636686717778, 2059 | "type": "exam" 2060 | }, 2061 | { 2062 | "score": 96.12953798826392, 2063 | "type": "quiz" 2064 | }, 2065 | { 2066 | "score": 18.92628947700149, 2067 | "type": "homework" 2068 | } 2069 | ] 2070 | } 2071 | { 2072 | "_id": 115, 2073 | "name": "Aurelia Menendez", 2074 | "scores": [ 2075 | { 2076 | "score": 5.105728872755167, 2077 | "type": "exam" 2078 | }, 2079 | { 2080 | "score": 7.375913405784407, 2081 | "type": "quiz" 2082 | }, 2083 | { 2084 | "score": 92.62414866541212, 2085 | "type": "homework" 2086 | } 2087 | ] 2088 | } 2089 | { 2090 | "_id": 116, 2091 | "name": "Corliss Zuk", 2092 | "scores": [ 2093 | { 2094 | "score": 76.45468797439878, 2095 | "type": "exam" 2096 | }, 2097 | { 2098 | "score": 53.02642890026489, 2099 | "type": "quiz" 2100 | }, 2101 | { 2102 | "score": 91.86573111689813, 2103 | "type": "homework" 2104 | } 2105 | ] 2106 | } 2107 | { 2108 | "_id": 117, 2109 | "name": "Bao Ziglar", 2110 | "scores": [ 2111 | { 2112 | "score": 37.22753032391262, 2113 | "type": "exam" 2114 | }, 2115 | { 2116 | "score": 52.75139192596129, 2117 | "type": "quiz" 2118 | }, 2119 | { 2120 | "score": 64.06863625194231, 2121 | "type": "homework" 2122 | } 2123 | ] 2124 | } 2125 | { 2126 | "_id": 118, 2127 | "name": "Zachary Langlais", 2128 | "scores": [ 2129 | { 2130 | "score": 62.20457822364115, 2131 | "type": "exam" 2132 | }, 2133 | { 2134 | "score": 61.03733414415722, 2135 | "type": "quiz" 2136 | }, 2137 | { 2138 | "score": 82.41688205392703, 2139 | "type": "homework" 2140 | } 2141 | ] 2142 | } 2143 | { 2144 | "_id": 119, 2145 | "name": "Wilburn Spiess", 2146 | "scores": [ 2147 | { 2148 | "score": 52.36963021569788, 2149 | "type": "exam" 2150 | }, 2151 | { 2152 | "score": 96.5715450678789, 2153 | "type": "quiz" 2154 | }, 2155 | { 2156 | "score": 61.35034001494281, 2157 | "type": "homework" 2158 | } 2159 | ] 2160 | } 2161 | { 2162 | "_id": 120, 2163 | "name": "Jenette Flanders", 2164 | "scores": [ 2165 | { 2166 | "score": 22.0445143239363, 2167 | "type": "exam" 2168 | }, 2169 | { 2170 | "score": 22.43958080566196, 2171 | "type": "quiz" 2172 | }, 2173 | { 2174 | "score": 63.38749542414235, 2175 | "type": "homework" 2176 | } 2177 | ] 2178 | } 2179 | { 2180 | "_id": 121, 2181 | "name": "Salena Olmos", 2182 | "scores": [ 2183 | { 2184 | "score": 0.8007809823509016, 2185 | "type": "exam" 2186 | }, 2187 | { 2188 | "score": 44.71135559183793, 2189 | "type": "quiz" 2190 | }, 2191 | { 2192 | "score": 65.17342981800904, 2193 | "type": "homework" 2194 | } 2195 | ] 2196 | } 2197 | { 2198 | "_id": 122, 2199 | "name": "Daphne Zheng", 2200 | "scores": [ 2201 | { 2202 | "score": 61.47626628718472, 2203 | "type": "exam" 2204 | }, 2205 | { 2206 | "score": 21.99638326978255, 2207 | "type": "quiz" 2208 | }, 2209 | { 2210 | "score": 88.2119997542672, 2211 | "type": "homework" 2212 | } 2213 | ] 2214 | } 2215 | { 2216 | "_id": 123, 2217 | "name": "Sanda Ryba", 2218 | "scores": [ 2219 | { 2220 | "score": 10.62413290291121, 2221 | "type": "exam" 2222 | }, 2223 | { 2224 | "score": 3.544356815821981, 2225 | "type": "quiz" 2226 | }, 2227 | { 2228 | "score": 57.10297055409504, 2229 | "type": "homework" 2230 | } 2231 | ] 2232 | } 2233 | { 2234 | "_id": 124, 2235 | "name": "Denisha Cast", 2236 | "scores": [ 2237 | { 2238 | "score": 2.723204808959712, 2239 | "type": "exam" 2240 | }, 2241 | { 2242 | "score": 38.47056093169111, 2243 | "type": "quiz" 2244 | }, 2245 | { 2246 | "score": 77.04035583743548, 2247 | "type": "homework" 2248 | } 2249 | ] 2250 | } 2251 | { 2252 | "_id": 125, 2253 | "name": "Marcus Blohm", 2254 | "scores": [ 2255 | { 2256 | "score": 64.47719204148157, 2257 | "type": "exam" 2258 | }, 2259 | { 2260 | "score": 23.68353886432903, 2261 | "type": "quiz" 2262 | }, 2263 | { 2264 | "score": 48.87355812474999, 2265 | "type": "homework" 2266 | } 2267 | ] 2268 | } 2269 | { 2270 | "_id": 126, 2271 | "name": "Quincy Danaher", 2272 | "scores": [ 2273 | { 2274 | "score": 40.53136904234401, 2275 | "type": "exam" 2276 | }, 2277 | { 2278 | "score": 83.09270171511093, 2279 | "type": "quiz" 2280 | }, 2281 | { 2282 | "score": 79.004550587978, 2283 | "type": "homework" 2284 | } 2285 | ] 2286 | } 2287 | { 2288 | "_id": 127, 2289 | "name": "Jessika Dagenais", 2290 | "scores": [ 2291 | { 2292 | "score": 96.93459855769822, 2293 | "type": "exam" 2294 | }, 2295 | { 2296 | "score": 95.6756371543187, 2297 | "type": "quiz" 2298 | }, 2299 | { 2300 | "score": 70.7887302106597, 2301 | "type": "homework" 2302 | } 2303 | ] 2304 | } 2305 | { 2306 | "_id": 128, 2307 | "name": "Alix Sherrill", 2308 | "scores": [ 2309 | { 2310 | "score": 43.67436243299881, 2311 | "type": "exam" 2312 | }, 2313 | { 2314 | "score": 14.98112420690882, 2315 | "type": "quiz" 2316 | }, 2317 | { 2318 | "score": 23.62416821198536, 2319 | "type": "homework" 2320 | } 2321 | ] 2322 | } 2323 | { 2324 | "_id": 129, 2325 | "name": "Tambra Mercure", 2326 | "scores": [ 2327 | { 2328 | "score": 62.61423873241083, 2329 | "type": "exam" 2330 | }, 2331 | { 2332 | "score": 47.64776674251425, 2333 | "type": "quiz" 2334 | }, 2335 | { 2336 | "score": 85.20578508528978, 2337 | "type": "homework" 2338 | } 2339 | ] 2340 | } 2341 | { 2342 | "_id": 130, 2343 | "name": "Dodie Staller", 2344 | "scores": [ 2345 | { 2346 | "score": 52.16051124848157, 2347 | "type": "exam" 2348 | }, 2349 | { 2350 | "score": 83.51563143820728, 2351 | "type": "quiz" 2352 | }, 2353 | { 2354 | "score": 63.88857636557489, 2355 | "type": "homework" 2356 | } 2357 | ] 2358 | } 2359 | { 2360 | "_id": 131, 2361 | "name": "Fletcher Mcconnell", 2362 | "scores": [ 2363 | { 2364 | "score": 24.98670635479149, 2365 | "type": "exam" 2366 | }, 2367 | { 2368 | "score": 94.90809903126159, 2369 | "type": "quiz" 2370 | }, 2371 | { 2372 | "score": 29.37194792367135, 2373 | "type": "homework" 2374 | } 2375 | ] 2376 | } 2377 | { 2378 | "_id": 132, 2379 | "name": "Verdell Sowinski", 2380 | "scores": [ 2381 | { 2382 | "score": 20.1442549902647, 2383 | "type": "exam" 2384 | }, 2385 | { 2386 | "score": 47.66457425945161, 2387 | "type": "quiz" 2388 | }, 2389 | { 2390 | "score": 77.87844292368344, 2391 | "type": "homework" 2392 | } 2393 | ] 2394 | } 2395 | { 2396 | "_id": 133, 2397 | "name": "Gisela Levin", 2398 | "scores": [ 2399 | { 2400 | "score": 15.88727528055548, 2401 | "type": "exam" 2402 | }, 2403 | { 2404 | "score": 91.49884857295594, 2405 | "type": "quiz" 2406 | }, 2407 | { 2408 | "score": 16.56032169309347, 2409 | "type": "homework" 2410 | } 2411 | ] 2412 | } 2413 | { 2414 | "_id": 134, 2415 | "name": "Tressa Schwing", 2416 | "scores": [ 2417 | { 2418 | "score": 54.53947018434061, 2419 | "type": "exam" 2420 | }, 2421 | { 2422 | "score": 22.26443529294689, 2423 | "type": "quiz" 2424 | }, 2425 | { 2426 | "score": 89.29532364756331, 2427 | "type": "homework" 2428 | } 2429 | ] 2430 | } 2431 | { 2432 | "_id": 135, 2433 | "name": "Rosana Vales", 2434 | "scores": [ 2435 | { 2436 | "score": 15.73156258820246, 2437 | "type": "exam" 2438 | }, 2439 | { 2440 | "score": 33.70281347493842, 2441 | "type": "quiz" 2442 | }, 2443 | { 2444 | "score": 62.79875994037851, 2445 | "type": "homework" 2446 | } 2447 | ] 2448 | } 2449 | { 2450 | "_id": 136, 2451 | "name": "Margart Vitello", 2452 | "scores": [ 2453 | { 2454 | "score": 99.33685767140612, 2455 | "type": "exam" 2456 | }, 2457 | { 2458 | "score": 1.25322762871457, 2459 | "type": "quiz" 2460 | }, 2461 | { 2462 | "score": 66.22827571617455, 2463 | "type": "homework" 2464 | } 2465 | ] 2466 | } 2467 | { 2468 | "_id": 137, 2469 | "name": "Tamika Schildgen", 2470 | "scores": [ 2471 | { 2472 | "score": 4.433956226109692, 2473 | "type": "exam" 2474 | }, 2475 | { 2476 | "score": 65.50313785402548, 2477 | "type": "quiz" 2478 | }, 2479 | { 2480 | "score": 89.5950384993947, 2481 | "type": "homework" 2482 | } 2483 | ] 2484 | } 2485 | { 2486 | "_id": 138, 2487 | "name": "Jesusa Rickenbacker", 2488 | "scores": [ 2489 | { 2490 | "score": 15.6237624645333, 2491 | "type": "exam" 2492 | }, 2493 | { 2494 | "score": 7.856092232737, 2495 | "type": "quiz" 2496 | }, 2497 | { 2498 | "score": 92.06889864132863, 2499 | "type": "homework" 2500 | } 2501 | ] 2502 | } 2503 | { 2504 | "_id": 139, 2505 | "name": "Rudolph Domingo", 2506 | "scores": [ 2507 | { 2508 | "score": 33.02956040417582, 2509 | "type": "exam" 2510 | }, 2511 | { 2512 | "score": 35.99586495205484, 2513 | "type": "quiz" 2514 | }, 2515 | { 2516 | "score": 91.06098699300175, 2517 | "type": "homework" 2518 | } 2519 | ] 2520 | } 2521 | { 2522 | "_id": 140, 2523 | "name": "Jonie Raby", 2524 | "scores": [ 2525 | { 2526 | "score": 7.307863391324043, 2527 | "type": "exam" 2528 | }, 2529 | { 2530 | "score": 21.72514968277675, 2531 | "type": "quiz" 2532 | }, 2533 | { 2534 | "score": 73.8284408290604, 2535 | "type": "homework" 2536 | } 2537 | ] 2538 | } 2539 | { 2540 | "_id": 141, 2541 | "name": "Edgar Sarkis", 2542 | "scores": [ 2543 | { 2544 | "score": 65.99888014434269, 2545 | "type": "exam" 2546 | }, 2547 | { 2548 | "score": 58.75598946266268, 2549 | "type": "quiz" 2550 | }, 2551 | { 2552 | "score": 75.06379354463246, 2553 | "type": "homework" 2554 | } 2555 | ] 2556 | } 2557 | { 2558 | "_id": 142, 2559 | "name": "Laureen Salomone", 2560 | "scores": [ 2561 | { 2562 | "score": 42.54322973844196, 2563 | "type": "exam" 2564 | }, 2565 | { 2566 | "score": 33.03152379449381, 2567 | "type": "quiz" 2568 | }, 2569 | { 2570 | "score": 77.52357320933667, 2571 | "type": "homework" 2572 | } 2573 | ] 2574 | } 2575 | { 2576 | "_id": 143, 2577 | "name": "Gwyneth Garling", 2578 | "scores": [ 2579 | { 2580 | "score": 44.29553481758053, 2581 | "type": "exam" 2582 | }, 2583 | { 2584 | "score": 23.15599504527296, 2585 | "type": "quiz" 2586 | }, 2587 | { 2588 | "score": 84.83695219376807, 2589 | "type": "homework" 2590 | } 2591 | ] 2592 | } 2593 | { 2594 | "_id": 144, 2595 | "name": "Kaila Deibler", 2596 | "scores": [ 2597 | { 2598 | "score": 20.85988856264308, 2599 | "type": "exam" 2600 | }, 2601 | { 2602 | "score": 73.51120532285645, 2603 | "type": "quiz" 2604 | }, 2605 | { 2606 | "score": 88.72483530139125, 2607 | "type": "homework" 2608 | } 2609 | ] 2610 | } 2611 | { 2612 | "_id": 145, 2613 | "name": "Tandra Meadows", 2614 | "scores": [ 2615 | { 2616 | "score": 19.07796402740767, 2617 | "type": "exam" 2618 | }, 2619 | { 2620 | "score": 7.63846325490759, 2621 | "type": "quiz" 2622 | }, 2623 | { 2624 | "score": 60.84655775785094, 2625 | "type": "homework" 2626 | } 2627 | ] 2628 | } 2629 | { 2630 | "_id": 146, 2631 | "name": "Gwen Honig", 2632 | "scores": [ 2633 | { 2634 | "score": 35.99646382910844, 2635 | "type": "exam" 2636 | }, 2637 | { 2638 | "score": 74.46323507534565, 2639 | "type": "quiz" 2640 | }, 2641 | { 2642 | "score": 90.95590422002779, 2643 | "type": "homework" 2644 | } 2645 | ] 2646 | } 2647 | { 2648 | "_id": 147, 2649 | "name": "Sadie Jernigan", 2650 | "scores": [ 2651 | { 2652 | "score": 6.14281392478545, 2653 | "type": "exam" 2654 | }, 2655 | { 2656 | "score": 44.94102013771302, 2657 | "type": "quiz" 2658 | }, 2659 | { 2660 | "score": 89.94407975401369, 2661 | "type": "homework" 2662 | } 2663 | ] 2664 | } 2665 | { 2666 | "_id": 148, 2667 | "name": "Carli Belvins", 2668 | "scores": [ 2669 | { 2670 | "score": 84.4361816750119, 2671 | "type": "exam" 2672 | }, 2673 | { 2674 | "score": 1.702113040528119, 2675 | "type": "quiz" 2676 | }, 2677 | { 2678 | "score": 88.48032660881387, 2679 | "type": "homework" 2680 | } 2681 | ] 2682 | } 2683 | { 2684 | "_id": 149, 2685 | "name": "Synthia Labelle", 2686 | "scores": [ 2687 | { 2688 | "score": 11.06312649271668, 2689 | "type": "exam" 2690 | }, 2691 | { 2692 | "score": 89.27462706564148, 2693 | "type": "quiz" 2694 | }, 2695 | { 2696 | "score": 41.1722010153017, 2697 | "type": "homework" 2698 | } 2699 | ] 2700 | } 2701 | { 2702 | "_id": 150, 2703 | "name": "Eugene Magdaleno", 2704 | "scores": [ 2705 | { 2706 | "score": 69.64543341032858, 2707 | "type": "exam" 2708 | }, 2709 | { 2710 | "score": 17.46202326917462, 2711 | "type": "quiz" 2712 | }, 2713 | { 2714 | "score": 39.41502498794787, 2715 | "type": "homework" 2716 | } 2717 | ] 2718 | } 2719 | { 2720 | "_id": 151, 2721 | "name": "Meagan Oakes", 2722 | "scores": [ 2723 | { 2724 | "score": 75.02808260234913, 2725 | "type": "exam" 2726 | }, 2727 | { 2728 | "score": 35.45524188731927, 2729 | "type": "quiz" 2730 | }, 2731 | { 2732 | "score": 75.84754202828454, 2733 | "type": "homework" 2734 | } 2735 | ] 2736 | } 2737 | { 2738 | "_id": 152, 2739 | "name": "Richelle Siemers", 2740 | "scores": [ 2741 | { 2742 | "score": 52.0158789874646, 2743 | "type": "exam" 2744 | }, 2745 | { 2746 | "score": 19.25549934746802, 2747 | "type": "quiz" 2748 | }, 2749 | { 2750 | "score": 68.33217408510437, 2751 | "type": "homework" 2752 | } 2753 | ] 2754 | } 2755 | { 2756 | "_id": 153, 2757 | "name": "Mariette Batdorf", 2758 | "scores": [ 2759 | { 2760 | "score": 91.38690728885123, 2761 | "type": "exam" 2762 | }, 2763 | { 2764 | "score": 39.98831767858929, 2765 | "type": "quiz" 2766 | }, 2767 | { 2768 | "score": 51.59702098442595, 2769 | "type": "homework" 2770 | } 2771 | ] 2772 | } 2773 | { 2774 | "_id": 154, 2775 | "name": "Rachell Aman", 2776 | "scores": [ 2777 | { 2778 | "score": 94.50988306850947, 2779 | "type": "exam" 2780 | }, 2781 | { 2782 | "score": 5.68414255121964, 2783 | "type": "quiz" 2784 | }, 2785 | { 2786 | "score": 64.46720717616572, 2787 | "type": "homework" 2788 | } 2789 | ] 2790 | } 2791 | { 2792 | "_id": 155, 2793 | "name": "Aleida Elsass", 2794 | "scores": [ 2795 | { 2796 | "score": 42.89558347656537, 2797 | "type": "exam" 2798 | }, 2799 | { 2800 | "score": 94.10647660402866, 2801 | "type": "quiz" 2802 | }, 2803 | { 2804 | "score": 30.56402201379193, 2805 | "type": "homework" 2806 | } 2807 | ] 2808 | } 2809 | { 2810 | "_id": 156, 2811 | "name": "Kayce Kenyon", 2812 | "scores": [ 2813 | { 2814 | "score": 54.00824880446614, 2815 | "type": "exam" 2816 | }, 2817 | { 2818 | "score": 19.20300722190935, 2819 | "type": "quiz" 2820 | }, 2821 | { 2822 | "score": 71.57649363606814, 2823 | "type": "homework" 2824 | } 2825 | ] 2826 | } 2827 | { 2828 | "_id": 157, 2829 | "name": "Ernestine Macfarland", 2830 | "scores": [ 2831 | { 2832 | "score": 9.666623747888858, 2833 | "type": "exam" 2834 | }, 2835 | { 2836 | "score": 98.76040135775126, 2837 | "type": "quiz" 2838 | }, 2839 | { 2840 | "score": 51.67453757397309, 2841 | "type": "homework" 2842 | } 2843 | ] 2844 | } 2845 | { 2846 | "_id": 158, 2847 | "name": "Houston Valenti", 2848 | "scores": [ 2849 | { 2850 | "score": 68.36209185504055, 2851 | "type": "exam" 2852 | }, 2853 | { 2854 | "score": 15.83819664395878, 2855 | "type": "quiz" 2856 | }, 2857 | { 2858 | "score": 81.7258704821604, 2859 | "type": "homework" 2860 | } 2861 | ] 2862 | } 2863 | { 2864 | "_id": 159, 2865 | "name": "Terica Brugger", 2866 | "scores": [ 2867 | { 2868 | "score": 97.822030541043, 2869 | "type": "exam" 2870 | }, 2871 | { 2872 | "score": 91.56280485763772, 2873 | "type": "quiz" 2874 | }, 2875 | { 2876 | "score": 62.01976292987356, 2877 | "type": "homework" 2878 | } 2879 | ] 2880 | } 2881 | { 2882 | "_id": 160, 2883 | "name": "Lady Lefevers", 2884 | "scores": [ 2885 | { 2886 | "score": 89.14702404133767, 2887 | "type": "exam" 2888 | }, 2889 | { 2890 | "score": 11.85715160788611, 2891 | "type": "quiz" 2892 | }, 2893 | { 2894 | "score": 87.70817474845785, 2895 | "type": "homework" 2896 | } 2897 | ] 2898 | } 2899 | { 2900 | "_id": 161, 2901 | "name": "Kurtis Jiles", 2902 | "scores": [ 2903 | { 2904 | "score": 38.84932631249875, 2905 | "type": "exam" 2906 | }, 2907 | { 2908 | "score": 75.6856190089661, 2909 | "type": "quiz" 2910 | }, 2911 | { 2912 | "score": 54.8262895255851, 2913 | "type": "homework" 2914 | } 2915 | ] 2916 | } 2917 | { 2918 | "_id": 162, 2919 | "name": "Barbera Lippman", 2920 | "scores": [ 2921 | { 2922 | "score": 10.1210778879972, 2923 | "type": "exam" 2924 | }, 2925 | { 2926 | "score": 57.39236107118298, 2927 | "type": "quiz" 2928 | }, 2929 | { 2930 | "score": 56.36039761834183, 2931 | "type": "homework" 2932 | } 2933 | ] 2934 | } 2935 | { 2936 | "_id": 163, 2937 | "name": "Dinah Sauve", 2938 | "scores": [ 2939 | { 2940 | "score": 9.660849614328693, 2941 | "type": "exam" 2942 | }, 2943 | { 2944 | "score": 0.710026283123355, 2945 | "type": "quiz" 2946 | }, 2947 | { 2948 | "score": 64.85706587155985, 2949 | "type": "homework" 2950 | } 2951 | ] 2952 | } 2953 | { 2954 | "_id": 164, 2955 | "name": "Alica Pasley", 2956 | "scores": [ 2957 | { 2958 | "score": 41.3852820348269, 2959 | "type": "exam" 2960 | }, 2961 | { 2962 | "score": 87.0183839032626, 2963 | "type": "quiz" 2964 | }, 2965 | { 2966 | "score": 37.22917544696978, 2967 | "type": "homework" 2968 | } 2969 | ] 2970 | } 2971 | { 2972 | "_id": 165, 2973 | "name": "Elizabet Kleine", 2974 | "scores": [ 2975 | { 2976 | "score": 23.35599596646158, 2977 | "type": "exam" 2978 | }, 2979 | { 2980 | "score": 45.42989961046475, 2981 | "type": "quiz" 2982 | }, 2983 | { 2984 | "score": 59.29421526983006, 2985 | "type": "homework" 2986 | } 2987 | ] 2988 | } 2989 | { 2990 | "_id": 166, 2991 | "name": "Tawana Oberg", 2992 | "scores": [ 2993 | { 2994 | "score": 79.24755285478162, 2995 | "type": "exam" 2996 | }, 2997 | { 2998 | "score": 97.28127199858804, 2999 | "type": "quiz" 3000 | }, 3001 | { 3002 | "score": 67.0528222080174, 3003 | "type": "homework" 3004 | } 3005 | ] 3006 | } 3007 | { 3008 | "_id": 167, 3009 | "name": "Malisa Jeanes", 3010 | "scores": [ 3011 | { 3012 | "score": 40.68676040665008, 3013 | "type": "exam" 3014 | }, 3015 | { 3016 | "score": 52.60826688242043, 3017 | "type": "quiz" 3018 | }, 3019 | { 3020 | "score": 94.67979508129564, 3021 | "type": "homework" 3022 | } 3023 | ] 3024 | } 3025 | { 3026 | "_id": 168, 3027 | "name": "Joel Rueter", 3028 | "scores": [ 3029 | { 3030 | "score": 21.78981361637835, 3031 | "type": "exam" 3032 | }, 3033 | { 3034 | "score": 1.182228345865832, 3035 | "type": "quiz" 3036 | }, 3037 | { 3038 | "score": 43.70843975739338, 3039 | "type": "homework" 3040 | } 3041 | ] 3042 | } 3043 | { 3044 | "_id": 169, 3045 | "name": "Tresa Sinha", 3046 | "scores": [ 3047 | { 3048 | "score": 52.22632020277269, 3049 | "type": "exam" 3050 | }, 3051 | { 3052 | "score": 65.68701091428014, 3053 | "type": "quiz" 3054 | }, 3055 | { 3056 | "score": 86.80410157346574, 3057 | "type": "homework" 3058 | } 3059 | ] 3060 | } 3061 | { 3062 | "_id": 170, 3063 | "name": "Danika Loeffler", 3064 | "scores": [ 3065 | { 3066 | "score": 80.13802901122058, 3067 | "type": "exam" 3068 | }, 3069 | { 3070 | "score": 9.613195588726075, 3071 | "type": "quiz" 3072 | }, 3073 | { 3074 | "score": 88.1580114788293, 3075 | "type": "homework" 3076 | } 3077 | ] 3078 | } 3079 | { 3080 | "_id": 171, 3081 | "name": "Chad Rahe", 3082 | "scores": [ 3083 | { 3084 | "score": 81.24054522370292, 3085 | "type": "exam" 3086 | }, 3087 | { 3088 | "score": 17.44929152365297, 3089 | "type": "quiz" 3090 | }, 3091 | { 3092 | "score": 82.77870021356301, 3093 | "type": "homework" 3094 | } 3095 | ] 3096 | } 3097 | { 3098 | "_id": 172, 3099 | "name": "Joaquina Arbuckle", 3100 | "scores": [ 3101 | { 3102 | "score": 35.43562368815135, 3103 | "type": "exam" 3104 | }, 3105 | { 3106 | "score": 89.74640983145014, 3107 | "type": "quiz" 3108 | }, 3109 | { 3110 | "score": 99.13868686848834, 3111 | "type": "homework" 3112 | } 3113 | ] 3114 | } 3115 | { 3116 | "_id": 173, 3117 | "name": "Vinnie Auerbach", 3118 | "scores": [ 3119 | { 3120 | "score": 57.26312067710243, 3121 | "type": "exam" 3122 | }, 3123 | { 3124 | "score": 20.63583040849144, 3125 | "type": "quiz" 3126 | }, 3127 | { 3128 | "score": 77.02638482252677, 3129 | "type": "homework" 3130 | } 3131 | ] 3132 | } 3133 | { 3134 | "_id": 174, 3135 | "name": "Dusti Lemmond", 3136 | "scores": [ 3137 | { 3138 | "score": 91.51968055194875, 3139 | "type": "exam" 3140 | }, 3141 | { 3142 | "score": 50.37682668957234, 3143 | "type": "quiz" 3144 | }, 3145 | { 3146 | "score": 51.53939113583016, 3147 | "type": "homework" 3148 | } 3149 | ] 3150 | } 3151 | { 3152 | "_id": 175, 3153 | "name": "Grady Zemke", 3154 | "scores": [ 3155 | { 3156 | "score": 10.37320113489379, 3157 | "type": "exam" 3158 | }, 3159 | { 3160 | "score": 10.51344428386458, 3161 | "type": "quiz" 3162 | }, 3163 | { 3164 | "score": 85.47180043794621, 3165 | "type": "homework" 3166 | } 3167 | ] 3168 | } 3169 | { 3170 | "_id": 176, 3171 | "name": "Vina Matsunaga", 3172 | "scores": [ 3173 | { 3174 | "score": 73.30054989074031, 3175 | "type": "exam" 3176 | }, 3177 | { 3178 | "score": 4.21754550016783, 3179 | "type": "quiz" 3180 | }, 3181 | { 3182 | "score": 56.31150858550771, 3183 | "type": "homework" 3184 | } 3185 | ] 3186 | } 3187 | { 3188 | "_id": 177, 3189 | "name": "Rubie Winton", 3190 | "scores": [ 3191 | { 3192 | "score": 36.1767454709986, 3193 | "type": "exam" 3194 | }, 3195 | { 3196 | "score": 89.39738121365069, 3197 | "type": "quiz" 3198 | }, 3199 | { 3200 | "score": 90.83326208217305, 3201 | "type": "homework" 3202 | } 3203 | ] 3204 | } 3205 | { 3206 | "_id": 178, 3207 | "name": "Whitley Fears", 3208 | "scores": [ 3209 | { 3210 | "score": 20.84454374176408, 3211 | "type": "exam" 3212 | }, 3213 | { 3214 | "score": 57.14851257871499, 3215 | "type": "quiz" 3216 | }, 3217 | { 3218 | "score": 99.77237745070993, 3219 | "type": "homework" 3220 | } 3221 | ] 3222 | } 3223 | { 3224 | "_id": 179, 3225 | "name": "Gena Riccio", 3226 | "scores": [ 3227 | { 3228 | "score": 81.49070346172086, 3229 | "type": "exam" 3230 | }, 3231 | { 3232 | "score": 23.12653402998139, 3233 | "type": "quiz" 3234 | }, 3235 | { 3236 | "score": 96.54590960898932, 3237 | "type": "homework" 3238 | } 3239 | ] 3240 | } 3241 | { 3242 | "_id": 180, 3243 | "name": "Kim Xu", 3244 | "scores": [ 3245 | { 3246 | "score": 29.1596029917098, 3247 | "type": "exam" 3248 | }, 3249 | { 3250 | "score": 74.41836270655918, 3251 | "type": "quiz" 3252 | }, 3253 | { 3254 | "score": 56.64965514703727, 3255 | "type": "homework" 3256 | } 3257 | ] 3258 | } 3259 | { 3260 | "_id": 181, 3261 | "name": "Merissa Mann", 3262 | "scores": [ 3263 | { 3264 | "score": 0.7300279717432967, 3265 | "type": "exam" 3266 | }, 3267 | { 3268 | "score": 39.49170592908128, 3269 | "type": "quiz" 3270 | }, 3271 | { 3272 | "score": 60.49619334485811, 3273 | "type": "homework" 3274 | } 3275 | ] 3276 | } 3277 | { 3278 | "_id": 182, 3279 | "name": "Jenise Mcguffie", 3280 | "scores": [ 3281 | { 3282 | "score": 83.68438201130127, 3283 | "type": "exam" 3284 | }, 3285 | { 3286 | "score": 73.79931763764928, 3287 | "type": "quiz" 3288 | }, 3289 | { 3290 | "score": 89.57200947426745, 3291 | "type": "homework" 3292 | } 3293 | ] 3294 | } 3295 | { 3296 | "_id": 183, 3297 | "name": "Cody Strouth", 3298 | "scores": [ 3299 | { 3300 | "score": 32.99854612126559, 3301 | "type": "exam" 3302 | }, 3303 | { 3304 | "score": 78.61720316992681, 3305 | "type": "quiz" 3306 | }, 3307 | { 3308 | "score": 89.62847560459466, 3309 | "type": "homework" 3310 | } 3311 | ] 3312 | } 3313 | { 3314 | "_id": 184, 3315 | "name": "Harriett Velarde", 3316 | "scores": [ 3317 | { 3318 | "score": 41.47988283148075, 3319 | "type": "exam" 3320 | }, 3321 | { 3322 | "score": 95.69493673358075, 3323 | "type": "quiz" 3324 | }, 3325 | { 3326 | "score": 83.03916048182315, 3327 | "type": "homework" 3328 | } 3329 | ] 3330 | } 3331 | { 3332 | "_id": 185, 3333 | "name": "Kam Senters", 3334 | "scores": [ 3335 | { 3336 | "score": 49.8822537074033, 3337 | "type": "exam" 3338 | }, 3339 | { 3340 | "score": 45.29515361387067, 3341 | "type": "quiz" 3342 | }, 3343 | { 3344 | "score": 68.88048980292801, 3345 | "type": "homework" 3346 | } 3347 | ] 3348 | } 3349 | { 3350 | "_id": 186, 3351 | "name": "Leonida Lafond", 3352 | "scores": [ 3353 | { 3354 | "score": 8.125073097960179, 3355 | "type": "exam" 3356 | }, 3357 | { 3358 | "score": 0.2017888852605676, 3359 | "type": "quiz" 3360 | }, 3361 | { 3362 | "score": 90.13081857264544, 3363 | "type": "homework" 3364 | } 3365 | ] 3366 | } 3367 | { 3368 | "_id": 187, 3369 | "name": "Devorah Smartt", 3370 | "scores": [ 3371 | { 3372 | "score": 23.94616611315642, 3373 | "type": "exam" 3374 | }, 3375 | { 3376 | "score": 13.27371116063025, 3377 | "type": "quiz" 3378 | }, 3379 | { 3380 | "score": 63.17281121561749, 3381 | "type": "homework" 3382 | } 3383 | ] 3384 | } 3385 | { 3386 | "_id": 188, 3387 | "name": "Leola Lundin", 3388 | "scores": [ 3389 | { 3390 | "score": 60.314725741828, 3391 | "type": "exam" 3392 | }, 3393 | { 3394 | "score": 41.12327471818652, 3395 | "type": "quiz" 3396 | }, 3397 | { 3398 | "score": 74.8699176311771, 3399 | "type": "homework" 3400 | } 3401 | ] 3402 | } 3403 | { 3404 | "_id": 189, 3405 | "name": "Tonia Surace", 3406 | "scores": [ 3407 | { 3408 | "score": 67.93405589675187, 3409 | "type": "exam" 3410 | }, 3411 | { 3412 | "score": 31.49721116485943, 3413 | "type": "quiz" 3414 | }, 3415 | { 3416 | "score": 82.36495908047985, 3417 | "type": "homework" 3418 | } 3419 | ] 3420 | } 3421 | { 3422 | "_id": 190, 3423 | "name": "Adrien Renda", 3424 | "scores": [ 3425 | { 3426 | "score": 64.16109192679477, 3427 | "type": "exam" 3428 | }, 3429 | { 3430 | "score": 66.93730600935531, 3431 | "type": "quiz" 3432 | }, 3433 | { 3434 | "score": 96.0560340227047, 3435 | "type": "homework" 3436 | } 3437 | ] 3438 | } 3439 | { 3440 | "_id": 191, 3441 | "name": "Efrain Claw", 3442 | "scores": [ 3443 | { 3444 | "score": 94.67153825229884, 3445 | "type": "exam" 3446 | }, 3447 | { 3448 | "score": 82.30087932110595, 3449 | "type": "quiz" 3450 | }, 3451 | { 3452 | "score": 75.86075840047938, 3453 | "type": "homework" 3454 | } 3455 | ] 3456 | } 3457 | { 3458 | "_id": 192, 3459 | "name": "Len Treiber", 3460 | "scores": [ 3461 | { 3462 | "score": 39.19832917406515, 3463 | "type": "exam" 3464 | }, 3465 | { 3466 | "score": 98.71679252899352, 3467 | "type": "quiz" 3468 | }, 3469 | { 3470 | "score": 44.8228929481132, 3471 | "type": "homework" 3472 | } 3473 | ] 3474 | } 3475 | { 3476 | "_id": 193, 3477 | "name": "Mariela Sherer", 3478 | "scores": [ 3479 | { 3480 | "score": 47.67196715489599, 3481 | "type": "exam" 3482 | }, 3483 | { 3484 | "score": 41.55743490493954, 3485 | "type": "quiz" 3486 | }, 3487 | { 3488 | "score": 70.4612811769744, 3489 | "type": "homework" 3490 | } 3491 | ] 3492 | } 3493 | { 3494 | "_id": 194, 3495 | "name": "Echo Pippins", 3496 | "scores": [ 3497 | { 3498 | "score": 18.09013691507853, 3499 | "type": "exam" 3500 | }, 3501 | { 3502 | "score": 35.00306967250408, 3503 | "type": "quiz" 3504 | }, 3505 | { 3506 | "score": 80.17965154316731, 3507 | "type": "homework" 3508 | } 3509 | ] 3510 | } 3511 | { 3512 | "_id": 195, 3513 | "name": "Linnie Weigel", 3514 | "scores": [ 3515 | { 3516 | "score": 52.44578368517977, 3517 | "type": "exam" 3518 | }, 3519 | { 3520 | "score": 90.7775054046383, 3521 | "type": "quiz" 3522 | }, 3523 | { 3524 | "score": 11.75008382913026, 3525 | "type": "homework" 3526 | } 3527 | ] 3528 | } 3529 | { 3530 | "_id": 196, 3531 | "name": "Santiago Dollins", 3532 | "scores": [ 3533 | { 3534 | "score": 52.04052571137036, 3535 | "type": "exam" 3536 | }, 3537 | { 3538 | "score": 33.63300076481705, 3539 | "type": "quiz" 3540 | }, 3541 | { 3542 | "score": 78.79257377604428, 3543 | "type": "homework" 3544 | } 3545 | ] 3546 | } 3547 | { 3548 | "_id": 197, 3549 | "name": "Tonisha Games", 3550 | "scores": [ 3551 | { 3552 | "score": 38.51269589995049, 3553 | "type": "exam" 3554 | }, 3555 | { 3556 | "score": 31.16287577231703, 3557 | "type": "quiz" 3558 | }, 3559 | { 3560 | "score": 79.15856355963004, 3561 | "type": "homework" 3562 | } 3563 | ] 3564 | } 3565 | { 3566 | "_id": 198, 3567 | "name": "Timothy Harrod", 3568 | "scores": [ 3569 | { 3570 | "score": 11.9075674046519, 3571 | "type": "exam" 3572 | }, 3573 | { 3574 | "score": 20.51879961777022, 3575 | "type": "quiz" 3576 | }, 3577 | { 3578 | "score": 64.85650354990375, 3579 | "type": "homework" 3580 | } 3581 | ] 3582 | } 3583 | { 3584 | "_id": 199, 3585 | "name": "Rae Kohout", 3586 | "scores": [ 3587 | { 3588 | "score": 82.11742562118049, 3589 | "type": "exam" 3590 | }, 3591 | { 3592 | "score": 49.61295450928224, 3593 | "type": "quiz" 3594 | }, 3595 | { 3596 | "score": 28.86823689842918, 3597 | "type": "homework" 3598 | } 3599 | ] 3600 | } 3601 | -------------------------------------------------------------------------------- /Databases/MongoDB/tweets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/MongoDB/tweets.zip -------------------------------------------------------------------------------- /Databases/MongoDB/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Max", 4 | "hobbies": [ 5 | { 6 | "title": "Sports", 7 | "frequency": 3 8 | }, 9 | { 10 | "title": "Cooking", 11 | "frequency": 6 12 | } 13 | ], 14 | "phone": 131782734 15 | }, 16 | { 17 | "name": "Manuel", 18 | "hobbies": [ 19 | { 20 | "title": "Cooking", 21 | "frequency": 5 22 | }, 23 | { 24 | "title": "Cars", 25 | "frequency": 2 26 | } 27 | ], 28 | "phone": "012177972", 29 | "age": 30 30 | }, 31 | { 32 | "name": "Anna", 33 | "hobbies": [ 34 | { 35 | "title": "Sports", 36 | "frequency": 2 37 | }, 38 | { 39 | "title": "Yoga", 40 | "frequency": 3 41 | } 42 | ], 43 | "phone": "80811987291", 44 | "age": null 45 | }, 46 | { 47 | "name": "Chris", 48 | "hobbies": [ 49 | "Sports", 50 | "Cooking", 51 | "Hiking" 52 | ] 53 | } 54 | ] 55 | -------------------------------------------------------------------------------- /Databases/PostgreSQL/dvdrental.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Databases/PostgreSQL/dvdrental.tar -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /Lecture 11 - MongoDB security.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 11 - MongoDB security.pdf -------------------------------------------------------------------------------- /Lecture 2 - Python Part 2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 2 - Python Part 2.pdf -------------------------------------------------------------------------------- /Lecture 3 - Introducing Psycopg, and CRUD using Psycopg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 3 - Introducing Psycopg, and CRUD using Psycopg.pdf -------------------------------------------------------------------------------- /Lecture 4- Introduction NOSQL, and MongoDB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 4- Introduction NOSQL, and MongoDB.pdf -------------------------------------------------------------------------------- /Lecture 5 - CRUD operations in MongoDB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 5 - CRUD operations in MongoDB.pdf -------------------------------------------------------------------------------- /Lecture 6 - MongoDB Performance, Fault tolerance, and deployment Part1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 6 - MongoDB Performance, Fault tolerance, and deployment Part1.pdf -------------------------------------------------------------------------------- /Lecture 8 - How to structure documents (schemas, and relations).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 8 - How to structure documents (schemas, and relations).pdf -------------------------------------------------------------------------------- /Lecture 9 - Introducing PyMongo, and CRUD using PyMongo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Lecture 9 - Introducing PyMongo, and CRUD using PyMongo.pdf -------------------------------------------------------------------------------- /Mid-term review.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Mid-term review.pdf -------------------------------------------------------------------------------- /Python Warm Up - Lab Exercises.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/Python Warm Up - Lab Exercises.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CSC-424-Advanced-Database-Management-Systems 2 | CSC 424 Advanced Database Management Systems 3 | 4 | 4 hours; 4 credits. Extend the knowledge of database systems to cover non-traditional databases. Topics covered may include: Parallel system for Online Transaction Processing (OLTP), column stores for Online Analytical Processing (OLAP), transaction management, concurrent and distributed databases (cloud databases), object-oriented and multimedia databases, as well as NoSQL based databases. Use of Hadoop and Map Reduce for cloud databases. Prerequisite: CSC 315 with a grade of C or higher. -------------------------------------------------------------------------------- /week10/Anaconda-setup.md: -------------------------------------------------------------------------------- 1 | # Setting up PyMongo for Anaconda environment 2 | 3 | ``` 4 | conda create -n CSC424-PyMongo python=3.6 5 | ``` 6 | 7 | ``` 8 | # 9 | # To activate this environment, use: 10 | # > source activate CSC424-PyMongo 11 | # 12 | # To deactivate an active environment, use: 13 | # > source deactivate 14 | # 15 | ``` 16 | 17 | ## Installing PyMongo 18 | ``` 19 | conda install -c anaconda pymongo 20 | ``` 21 | 22 | ## Installing Mongoengine 23 | ``` 24 | conda install -c conda-forge mongoengine 25 | ``` -------------------------------------------------------------------------------- /week10/post.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | from mongoengine import * 3 | 4 | 5 | class Post(Document): 6 | """ 7 | Post document 8 | """ 9 | title = StringField(required=True, max_length=200) 10 | content = StringField(required=True) 11 | author = StringField(required=True, max_length=50) 12 | published = DateTimeField(default=datetime.datetime.now) 13 | -------------------------------------------------------------------------------- /week10/post/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshmelvinsigera/CSC-424-Advanced-Database-Management-Systems/f695db4548229398f9fe96022c8bfb4c8e9664bf/week10/post/__init__.py -------------------------------------------------------------------------------- /week10/post/article.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | from post import Post 4 | 5 | try: 6 | client = pymongo.MongoClient('localhost', 27017) 7 | print('Connected') 8 | except ConnectionFailure as e: 9 | print('Error', e) 10 | 11 | db = client.website # accessing the website database 12 | # you can also use the dictionary-style access: 13 | # db = client['website'] 14 | 15 | post = Post( 16 | title='Sample Post', 17 | content='Some engaging content', 18 | author='Scott Smith' 19 | ) 20 | 21 | post.save() 22 | -------------------------------------------------------------------------------- /week10/post/post.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | from mongoengine import * 3 | 4 | 5 | class Post(Document): 6 | """ 7 | Post document 8 | """ 9 | title = StringField(required=True, max_length=200) 10 | content = StringField(required=True) 11 | author = StringField(required=True, max_length=50) 12 | published = DateTimeField(default=datetime.datetime.now) 13 | -------------------------------------------------------------------------------- /week10/post/pymongo-1.5.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | from post import Post 4 | 5 | try: 6 | client = pymongo.MongoClient('localhost', 27017) 7 | print('Connected') 8 | except ConnectionFailure as e: 9 | print('Error', e) 10 | 11 | db = client.website # accessing the website database 12 | # you can also use the dictionary-style access: 13 | # db = client['website'] 14 | 15 | posts_collection = db.posts 16 | 17 | scotts_posts = posts_collection.find({'author': 'Steve Harley'}) 18 | 19 | # print(scotts_posts) 20 | for post in scotts_posts: 21 | print(post['title']) 22 | -------------------------------------------------------------------------------- /week10/pymongo-1.1.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | 4 | try: 5 | client = pymongo.MongoClient('localhost', 27017) 6 | print('Connected') 7 | except ConnectionFailure as e: 8 | print('Error', e) 9 | 10 | db = client.website # accessing the website database 11 | # you can also use the dictionary-style access: 12 | # db = client['website'] 13 | -------------------------------------------------------------------------------- /week10/pymongo-1.2.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | 4 | try: 5 | client = pymongo.MongoClient('localhost', 27017) 6 | print('Connected') 7 | except ConnectionFailure as e: 8 | print('Error', e) 9 | 10 | db = client.website # accessing the website database 11 | # you can also use the dictionary-style access: 12 | # db = client['website'] 13 | 14 | posts_collection = db.posts.find() 15 | 16 | # print all the posts 17 | for post in posts_collection: 18 | print(post['title']) 19 | -------------------------------------------------------------------------------- /week10/pymongo-1.3.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | 4 | try: 5 | client = pymongo.MongoClient('localhost', 27017) 6 | print('Connected') 7 | except ConnectionFailure as e: 8 | print('Error', e) 9 | 10 | db = client.website # accessing the website database 11 | # you can also use the dictionary-style access: 12 | # db = client['website'] 13 | 14 | posts_collection = db.posts 15 | 16 | post_1 = { 17 | 'title': 'Python and MongoDB', 18 | 'content': 'PyMongo is fun, you guys', 19 | 'author': 'Scott Smith' 20 | } 21 | post_2 = { 22 | 'title': 'Anaconda Virtual Environments', 23 | 'content': 'Use virtual environments', 24 | 'author': 'Scott Smith' 25 | } 26 | post_3 = { 27 | 'title': 'Learning Python and Amazon EC2', 28 | 'content': 'Learn Python, it is easy', 29 | 'author': 'Bill Smith' 30 | } 31 | 32 | # insert many 33 | result = posts_collection.insert_many([post_1, post_2, post_3]) 34 | 35 | print('Multiple posts: {0}'.format(result.inserted_ids)) 36 | -------------------------------------------------------------------------------- /week10/pymongo-1.4.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | 4 | try: 5 | client = pymongo.MongoClient('localhost', 27017) 6 | print('Connected') 7 | except ConnectionFailure as e: 8 | print('Error', e) 9 | 10 | db = client.website # accessing the website database 11 | # you can also use the dictionary-style access: 12 | # db = client['website'] 13 | 14 | posts_collection = db.posts 15 | 16 | scotts_posts = posts_collection.find({'author': 'Steve Harley'}) 17 | 18 | # print(scotts_posts) 19 | for post in scotts_posts: 20 | print(post['title']) -------------------------------------------------------------------------------- /week10/pymongo-1.5.py: -------------------------------------------------------------------------------- 1 | import pymongo # importing Python MongoDB driver 2 | from pymongo.errors import ConnectionFailure 3 | 4 | try: 5 | client = pymongo.MongoClient('localhost', 27017) 6 | print('Connected') 7 | except ConnectionFailure as e: 8 | print('Error', e) 9 | 10 | db = client.website # accessing the website database 11 | # you can also use the dictionary-style access: 12 | # db = client['website'] 13 | 14 | posts_collection = db.posts 15 | 16 | posts = posts_collection.find() 17 | 18 | query = {"title": "Python and MongoDB"} 19 | update_query = {"$set": {"title": "Python and MongoDB for developers"}} 20 | 21 | posts_collection.update_one(query, update_query) 22 | 23 | for post in posts: 24 | print(post['title']) 25 | -------------------------------------------------------------------------------- /week11/security1.1: -------------------------------------------------------------------------------- 1 | use admin 2 | 3 | db.addUser("root", "abcd"); -------------------------------------------------------------------------------- /week11/security1.2: -------------------------------------------------------------------------------- 1 | use admin 2 | 3 | db.createUser( { 4 | user: "cscuser", pwd: "csc", 5 | roles:[ 6 | { 7 | role: "userAdminAnyDatabase" , 8 | } 9 | ] 10 | } 11 | ) 12 | -------------------------------------------------------------------------------- /week11/security1.3: -------------------------------------------------------------------------------- 1 | use student 2 | 3 | db.createUser({ 4 | user: "Employeeadmin", pwd: "password", 5 | roles: 6 | [ 7 | { 8 | role: "userAdmin" , db:"Employee" 9 | } 10 | ] 11 | }) 12 | -------------------------------------------------------------------------------- /week11/security1.4: -------------------------------------------------------------------------------- 1 | use admin 2 | 3 | db.createUser( { 4 | user: "Suresh", pwd: "Sigera", 5 | roles:[ 6 | { 7 | role: "userAdminAnyDatabase" , 8 | db:"admin" 9 | } 10 | ] 11 | } 12 | ) 13 | -------------------------------------------------------------------------------- /week11/security1.5: -------------------------------------------------------------------------------- 1 | use admin 2 | 3 | db.createUser( { 4 | user: "Suresh", pwd: "Sigera", 5 | roles:[ 6 | { 7 | role: "userAdminAnyDatabase" , 8 | db:"admin" 9 | } 10 | ] 11 | } 12 | ) 13 | -------------------------------------------------------------------------------- /week11/security1.6: -------------------------------------------------------------------------------- 1 | db.createUser({ 2 | user: "Tom", pwd: "Cruise", 3 | roles:[{ 4 | role: "read" , db:"MI3" 5 | }, 6 | role: "readWrite" , db:"JackReacher" 7 | }} 8 | ] 9 | }) 10 | -------------------------------------------------------------------------------- /week2/arguments-part1.1.py: -------------------------------------------------------------------------------- 1 | def load_cats(owner, *all_cats): 2 | print(owner, 'owns ') 3 | for cat in all_cats: 4 | print(cat) 5 | 6 | 7 | def load_good_cats(owner, *arg): 8 | print(owner, 'owns ') 9 | for value in arg: 10 | print(value) 11 | 12 | 13 | cats = ['Oscar', 'Max', 'Tiger', 'Sam', 'Misty', 'Simba', 'Coco', 'Chloe', 'Lucy', 'Molly'] 14 | load_cats('James', cats) 15 | load_good_cats('James', cats) 16 | -------------------------------------------------------------------------------- /week2/arguments-part1.2.py: -------------------------------------------------------------------------------- 1 | def load_grades(a, b, c, *args): 2 | print(a) 3 | print(b) 4 | print(c) 5 | print(args) 6 | 7 | 8 | grades = [10, 20, 60, 90, 50] 9 | load_grades(*grades) 10 | -------------------------------------------------------------------------------- /week2/arguments-part1.3.py: -------------------------------------------------------------------------------- 1 | students = { 2 | 1: 3 | { 4 | 'name': 'John', 5 | 'gpa': 3.0, 6 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 7 | }, 8 | 2: 9 | { 10 | 'name': 'Mike', 11 | 'gpa': 2.0, 12 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 13 | }, 14 | } 15 | 16 | 17 | def load_student(**kwargs): 18 | for key, values in kwargs.items(): 19 | print('\n') 20 | for value in values: 21 | print(values[value]) 22 | 23 | 24 | load_student(data=students) 25 | -------------------------------------------------------------------------------- /week2/arguments-part1.4.py: -------------------------------------------------------------------------------- 1 | def func(a, b, c=7, *args, **kwargs): 2 | print('a, b, c:', a, b, c) 3 | print('args:', args) 4 | print('kwargs:', kwargs) 5 | 6 | 7 | func(1, 2, 3, *(5, 7, 9), **{'A': 'a', 'B': 'b'}) 8 | func(1, 2, 3, 5, 7, 9, A='a', B='b') # same as previous one 9 | -------------------------------------------------------------------------------- /week2/class-part-1.1.py: -------------------------------------------------------------------------------- 1 | class Student: 2 | pass 3 | -------------------------------------------------------------------------------- /week2/class-part-1.2.py: -------------------------------------------------------------------------------- 1 | class Actor: 2 | def __init__(self, actor_name, actor_age, movie_list): 3 | print('Creating the actor profile') 4 | self.name = actor_name 5 | self.age = actor_age 6 | self.movies = movie_list 7 | 8 | def print_actor_information(self): 9 | print(self.name) 10 | print(self.age) 11 | for movie in self.movies: 12 | print(movie) 13 | print('\n===') 14 | 15 | # creating actor objects 16 | anthony = Actor('Anthony Hopkins', 81, ['Solace', 'Fracture']) 17 | mark = Actor('Mark Wahlberg', 47, ['Mile 22', 'Ted']) 18 | ed = Actor('Ed Harris', 68, ['A Beautiful Mind', 'Apollo 13']) 19 | harrison = Actor('Harrison Ford', 76, ['Cowboys & Aliens', 'Morning Glory']) 20 | 21 | anthony.print_actor_information() 22 | mark.print_actor_information() 23 | ed.print_actor_information() 24 | harrison.print_actor_information() 25 | -------------------------------------------------------------------------------- /week2/class-part-1.3.py: -------------------------------------------------------------------------------- 1 | class Account(object): 2 | """ 3 | A customer of ABC Bank with a checking account. Customers have the 4 | following properties: 5 | 6 | Attributes: 7 | name: A string representing the customer's name. 8 | balance: A float tracking the current balance of the customer's account. 9 | """ 10 | 11 | def __init__(self, name, balance): 12 | """Return a Customer object whose name is *name*. 13 | :param name: 14 | :param balance: 15 | """ 16 | self.name = name 17 | self.balance = balance 18 | 19 | def withdraw(self, amount): 20 | """Return the balance remaining after withdrawing *amount* 21 | dollars. 22 | :param amount: 23 | :return: 24 | """ 25 | if amount > self.balance: 26 | raise RuntimeError('Amount greater than available balance.') 27 | self.balance -= amount 28 | return self.balance 29 | 30 | def deposit(self, amount): 31 | """Return the balance remaining after depositing *amount* 32 | dollars. 33 | :param amount: 34 | :return: 35 | balance 36 | """ 37 | self.balance += amount 38 | return self.balance 39 | 40 | def print_info(self): 41 | """Prints account information 42 | :return: 43 | None 44 | """ 45 | print('-----------------------------') 46 | print('Customer name : ', self.name) 47 | print('Balance : $', self.balance) 48 | print('-----------------------------\n') 49 | -------------------------------------------------------------------------------- /week2/conditions-part1.1.py: -------------------------------------------------------------------------------- 1 | x = 10 2 | 3 | if x == 10: 4 | print('x is 10') 5 | else: 6 | print('x is not equal to 10') 7 | -------------------------------------------------------------------------------- /week2/conditions-part1.2.py: -------------------------------------------------------------------------------- 1 | trip_status = True 2 | 3 | if trip_status: 4 | print('We are going hiking!') 5 | else: 6 | print('Weather is not good, better to stay home') 7 | -------------------------------------------------------------------------------- /week2/conditions-part1.3.py: -------------------------------------------------------------------------------- 1 | def get_letter_grade(scores): 2 | if scores >= 90 and scores <= 100: 3 | return 'A' 4 | elif scores >= 80 and scores <= 89: 5 | return 'B' 6 | elif scores >= 70 and scores <= 79: 7 | return 'C' 8 | elif scores >= 60 and scores <= 69: 9 | return 'D' 10 | elif scores >= 50 and scores <= 59: 11 | return 'E' 12 | else: 13 | return 'F' 14 | 15 | 16 | score = get_letter_grade(67) 17 | print('Grade is ', score) 18 | -------------------------------------------------------------------------------- /week2/dictionary-part1.1.py: -------------------------------------------------------------------------------- 1 | student = { 2 | 'name': 'John', 3 | 'GPA': 3.2, 4 | 'Major': 'Physics' 5 | } 6 | 7 | for k, v in student.items(): 8 | print(k, v) 9 | -------------------------------------------------------------------------------- /week2/dictionary-part1.2.py: -------------------------------------------------------------------------------- 1 | students = { 2 | 1: 3 | { 4 | 'name': 'John', 5 | 'gpa': 3.0, 6 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 7 | }, 8 | 2: 9 | { 10 | 'name': 'Mike', 11 | 'gpa': 2.0, 12 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 13 | }, 14 | 3: 15 | { 16 | 'name': 'Stacy', 17 | 'gpa': 4.0, 18 | 'Major': 'CS', 19 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 20 | }, 21 | 4: 22 | { 23 | 'name': 'Bruce', 24 | 'gpa': 3.2, 25 | 'Major': 'CSI', 26 | 'Minor': 'ISI', 27 | 'classes_taken': ('CSC211', 'CSC326') 28 | } 29 | } 30 | 31 | for key, values in students.items(): 32 | print('\n') 33 | for value in values: 34 | print(values[value]) 35 | -------------------------------------------------------------------------------- /week2/dictionary-part1.3.py: -------------------------------------------------------------------------------- 1 | students = { 2 | 1: 3 | { 4 | 'name': 'John', 5 | 'gpa': 3.0, 6 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 7 | }, 8 | 2: 9 | { 10 | 'name': 'Mike', 11 | 'gpa': 2.0, 12 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 13 | }, 14 | 3: 15 | { 16 | 'name': 'Stacy', 17 | 'gpa': 4.0, 18 | 'Major': 'CS', 19 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326') 20 | }, 21 | 4: 22 | { 23 | 'name': 'Bruce', 24 | 'gpa': 3.2, 25 | 'Major': 'CSI', 26 | 'Minor': 'ISI', 27 | 'classes_taken': ('CSC211', 'CSC326') 28 | }, 29 | 5: 30 | { 31 | 'name': 'Jane', 32 | 'gpa': 3.7, 33 | 'Major': 'CSI', 34 | 'Minor': 'ISI', 35 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326', 'CSC330', 'CSC490') 36 | } 37 | } 38 | 39 | # print(students[1]['name'], students[1]['gpa']) 40 | # print(students[2]['name'], students[2]['gpa']) 41 | 42 | good_students = [] 43 | 44 | for key, values in students.items(): 45 | # print('key : ', key) 46 | if values['gpa'] > 3.0: 47 | # print('firing if key : ', key) 48 | good_students.append(values['name']) 49 | 50 | print('Students with gpa > 3.0') 51 | for i in good_students: 52 | print(i) 53 | -------------------------------------------------------------------------------- /week2/dictionary-part1.4.py: -------------------------------------------------------------------------------- 1 | students = { 2 | 1: 3 | { 4 | 'name': 'John', 5 | 'gpa': 3.0, 6 | 'classes_taken': ('490',) 7 | }, 8 | 2: 9 | { 10 | 'name': 'Mike', 11 | 'gpa': 2.0, 12 | 'classes_taken': ('CSC211', 'CSC220', 'CSC326',) 13 | }, 14 | 3: 15 | { 16 | 'name': 'Stacy', 17 | 'gpa': 4.0, 18 | 'Major': 'CS', 19 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326',) 20 | }, 21 | 4: 22 | { 23 | 'name': 'Bruce', 24 | 'gpa': 3.2, 25 | 'Major': 'CSI', 26 | 'Minor': 'ISI', 27 | 'classes_taken': ('CSC211', 'CSC326',) 28 | }, 29 | 5: 30 | { 31 | 'name': 'Jane', 32 | 'gpa': 3.7, 33 | 'major': 'CSI', 34 | 'minor': 'ISI', 35 | 'classes_taken': ('CSC126', 'CSC211', 'CSC326', 'CSC330', 'CSC490') 36 | } 37 | } 38 | 39 | for key, values in students.items(): 40 | # print(type(key), type(values)) 41 | for k, v in values.items(): 42 | # print(k, values[k]) 43 | if k == 'classes_taken': 44 | for i in values[k]: 45 | if i == 'CSC126': 46 | print(values['name']) 47 | -------------------------------------------------------------------------------- /week2/list-loop-part1.1.py: -------------------------------------------------------------------------------- 1 | grades = [100, 20, 90, 100, 89] 2 | 3 | for grade in grades: 4 | print(grade) 5 | -------------------------------------------------------------------------------- /week2/list-loop-part1.2.py: -------------------------------------------------------------------------------- 1 | grades = [100, 20, 90, 100, 89] 2 | 3 | for i in range(len(grades)): 4 | print(grades[i]) 5 | -------------------------------------------------------------------------------- /week2/list-loop-part1.3.py: -------------------------------------------------------------------------------- 1 | grades = [100, 20, 90, 100, 89] 2 | 3 | for pos, value in enumerate(grades): 4 | print(pos, ' ', value) 5 | -------------------------------------------------------------------------------- /week2/module-part1.1/customer.py: -------------------------------------------------------------------------------- 1 | class Account(object): 2 | """ 3 | A customer of ABC Bank with a checking account. Customers have the 4 | following properties: 5 | 6 | Attributes: 7 | name: A string representing the customer's name. 8 | balance: A float tracking the current balance of the customer's account. 9 | """ 10 | 11 | def __init__(self, name, balance): 12 | """Return a Customer object whose name is *name*. 13 | :param name: 14 | :param balance: 15 | """ 16 | self.name = name 17 | self.balance = balance 18 | 19 | def withdraw(self, amount): 20 | """Return the balance remaining after withdrawing *amount* 21 | dollars. 22 | :param amount: 23 | :return: 24 | """ 25 | if amount > self.balance: 26 | raise RuntimeError('Amount greater than available balance.') 27 | self.balance -= amount 28 | return self.balance 29 | 30 | def deposit(self, amount): 31 | """Return the balance remaining after depositing *amount* 32 | dollars. 33 | :param amount: 34 | :return: 35 | balance 36 | """ 37 | self.balance += amount 38 | return self.balance 39 | 40 | def print_info(self): 41 | """Prints account information 42 | :return: 43 | None 44 | """ 45 | print('-----------------------------') 46 | print('Customer name : ', self.name) 47 | print('Balance : $', self.balance) 48 | print('-----------------------------\n') 49 | -------------------------------------------------------------------------------- /week2/module-part1.1/modules-part1.1.py: -------------------------------------------------------------------------------- 1 | from customer import Account # importing the account module 2 | 3 | ed = Account("Ed Harris", 67000) # creating the account Account object named ed 4 | ed.print_info() # print balance 5 | ed.withdraw(7000) 6 | ed.print_info() # print balance 7 | ed.deposit(7000) 8 | ed.print_info() -------------------------------------------------------------------------------- /week3/psycopg2-part1.1.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | # create the to the connection database via psycopg2.connect 4 | connection = psycopg2.connect( 5 | database='sample', 6 | user='postgres', 7 | password='CSI1', 8 | host='localhost', 9 | port='5432' 10 | ) 11 | 12 | # print out the connection information 13 | print(connection) 14 | -------------------------------------------------------------------------------- /week3/psycopg2-part1.2.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | # create the to the connection database via psycopg2.connect 4 | connection = psycopg2.connect( 5 | database='sample', 6 | user='postgres', 7 | password='CSI1', 8 | host='localhost', 9 | port='5432' 10 | ) 11 | 12 | cur = connection.cursor() 13 | cur.execute( 14 | ''' 15 | CREATE TABLE COMPANY 16 | (ID INT PRIMARY KEY NOT NULL, 17 | NAME TEXT NOT NULL, 18 | AGE INT NOT NULL, 19 | ADDRESS CHAR(50), 20 | SALARY REAL); 21 | ''' 22 | ) 23 | print("Table created successfully") 24 | connection.commit() # apply the changes 25 | connection.close() # close the connection 26 | -------------------------------------------------------------------------------- /week3/psycopg2-part1.py: -------------------------------------------------------------------------------- 1 | # import Python PostgreSQL DB API 2 | import psycopg2 3 | 4 | # Connect to the PostgreSQL database 5 | conn = psycopg2.connect("dbname=testdb user=postgres password='CSI1'") 6 | 7 | print(conn) -------------------------------------------------------------------------------- /week3/psycopg2-part2.py: -------------------------------------------------------------------------------- 1 | # import Python PostgreSQL DB API 2 | import psycopg2 3 | 4 | # Connect to the PostgreSQL database 5 | conn = psycopg2.connect(dbname='testdb', user='postgres', password='CSI1') 6 | 7 | print(conn) -------------------------------------------------------------------------------- /week3/psycopg2-part3.py: -------------------------------------------------------------------------------- 1 | # import Python PostgreSQL DB API 2 | import psycopg2 3 | 4 | conn = None 5 | cur = None 6 | # try to connect to the DB 7 | try: 8 | conn = psycopg2.connect( 9 | user="postgres", 10 | password="CSI1", 11 | host="localhost", 12 | port="5432", 13 | database="postgres" 14 | ) 15 | cur = conn.cursor() 16 | # execute 1st statement 17 | # cur.execute(statement_1) 18 | # execute 2nd statement 19 | # cur.execute(statement_1) 20 | 21 | # commit the transaction 22 | conn.commit() 23 | 24 | # close the database communication 25 | cur.close() 26 | # accept the error 27 | except psycopg2.DatabaseError as error: 28 | print(error) 29 | finally: 30 | if conn is not None: 31 | print(conn) 32 | conn.close() 33 | -------------------------------------------------------------------------------- /week3/psycopg2-suppliers-create.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | 4 | def create_tables(): 5 | """ create tables in the PostgreSQL database 6 | :return: None 7 | """ 8 | commands = ( 9 | """ 10 | CREATE TABLE vendors ( 11 | vendor_id SERIAL PRIMARY KEY, 12 | vendor_name VARCHAR(255) NOT NULL 13 | ) 14 | """, 15 | """ CREATE TABLE parts ( 16 | part_id SERIAL PRIMARY KEY, 17 | part_name VARCHAR(255) NOT NULL 18 | ) 19 | """, 20 | """ 21 | CREATE TABLE part_drawings ( 22 | part_id INTEGER PRIMARY KEY, 23 | file_extension VARCHAR(5) NOT NULL, 24 | drawing_data BYTEA NOT NULL, 25 | FOREIGN KEY (part_id) 26 | REFERENCES parts (part_id) 27 | ON UPDATE CASCADE ON DELETE CASCADE 28 | ) 29 | """, 30 | """ 31 | CREATE TABLE vendor_parts ( 32 | vendor_id INTEGER NOT NULL, 33 | part_id INTEGER NOT NULL, 34 | PRIMARY KEY (vendor_id , part_id), 35 | FOREIGN KEY (vendor_id) 36 | REFERENCES vendors (vendor_id) 37 | ON UPDATE CASCADE ON DELETE CASCADE, 38 | FOREIGN KEY (part_id) 39 | REFERENCES parts (part_id) 40 | ON UPDATE CASCADE ON DELETE CASCADE 41 | ) 42 | """) 43 | conn = None 44 | cur = None 45 | try: 46 | # connect to the PostgreSQL server 47 | conn = psycopg2.connect(user="postgres", 48 | password="CSI1", 49 | host="localhost", 50 | port="5432", 51 | database="suppliers") 52 | cur = conn.cursor() 53 | # create table one by one 54 | for command in commands: 55 | cur.execute(command) 56 | # close communication with the PostgreSQL database server 57 | cur.close() 58 | # commit the changes 59 | conn.commit() 60 | except (Exception, psycopg2.DatabaseError) as error: 61 | print(error) 62 | conn.rollback() 63 | finally: 64 | # closing database connection. 65 | if conn is not None: 66 | cur.close() 67 | conn.close() 68 | 69 | 70 | if __name__ == '__main__': 71 | create_tables() 72 | -------------------------------------------------------------------------------- /week3/psycopg2-suppliers-delete.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | 4 | def delete_part(part_id): 5 | """delete part by part id 6 | :param part_id: 7 | :return: rows_deleted 8 | """ 9 | conn = None 10 | rows_deleted = 0 11 | try: 12 | # connect to the PostgreSQL database 13 | conn = psycopg2.connect(user="postgres", 14 | password="CSI1", 15 | host="localhost", 16 | port="5432", 17 | database="suppliers") 18 | # create a new cursor 19 | cur = conn.cursor() 20 | # execute the UPDATE statement 21 | cur.execute("""DELETE FROM parts WHERE part_id = %s""", (part_id,)) 22 | # get the number of updated rows 23 | rows_deleted = cur.rowcount 24 | # Commit the changes to the database 25 | conn.commit() 26 | # Close communication with the PostgreSQL database 27 | cur.close() 28 | except (Exception, psycopg2.DatabaseError) as error: 29 | conn.rollback() 30 | print(error) 31 | finally: 32 | if conn is not None: 33 | conn.close() 34 | 35 | return rows_deleted 36 | 37 | 38 | if __name__ == '__main__': 39 | deleted_rows = delete_part(2) 40 | print('The number of deleted rows: ', deleted_rows) 41 | -------------------------------------------------------------------------------- /week3/psycopg2-suppliers-insert-manny-rows.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | 4 | def insert_vendor_list(vendor_list): 5 | """ insert multiple vendors into the vendors table 6 | :param vendor_list: 7 | :return: None 8 | """ 9 | sql = """INSERT INTO vendors(vendor_name) VALUES(%s)""" 10 | conn = None 11 | try: 12 | # connect to the PostgreSQL database 13 | conn = psycopg2.connect(user="postgres", 14 | password="CSI1", 15 | host="localhost", 16 | port="5432", 17 | database="suppliers") 18 | # create a new cursor 19 | cur = conn.cursor() 20 | # execute the INSERT statement 21 | cur.executemany(sql, vendor_list) 22 | # commit the changes to the database 23 | conn.commit() 24 | # close communication with the database 25 | cur.close() 26 | except (Exception, psycopg2.DatabaseError) as error: 27 | conn.rollback() 28 | print(error) 29 | finally: 30 | if conn is not None: 31 | conn.close() 32 | 33 | 34 | if __name__ == '__main__': 35 | vendors = [ 36 | ('AKM Semiconductor Inc.',), 37 | ('Asahi Glass Co Ltd.',), 38 | ('Daikin Industries Ltd.',), 39 | ('Dynacast International Inc.',), 40 | ('Foster Electric Co. Ltd.',), 41 | ('Murata Manufacturing Co. Ltd.',) 42 | ] 43 | insert_vendor_list(vendors) 44 | -------------------------------------------------------------------------------- /week3/psycopg2-suppliers-insert-one-row.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | 4 | def insert_vendor(vendor_name): 5 | """ insert a new vendor into the vendors table 6 | :param vendor_name: 7 | :return: vendor_id 8 | """ 9 | sql = """INSERT INTO vendors(vendor_name) 10 | VALUES(%s) RETURNING vendor_id;""" 11 | conn = None 12 | vendor_id = None 13 | try: 14 | # connect to the PostgreSQL database 15 | conn = psycopg2.connect(user="postgres", 16 | password="CSI1", 17 | host="localhost", 18 | port="5432", 19 | database="suppliers") 20 | # create a new cursor 21 | cur = conn.cursor() 22 | # execute the INSERT statement 23 | cur.execute(sql, (vendor_name,)) 24 | # get the generated id back 25 | vendor_id = cur.fetchone()[0] 26 | # commit the changes to the database 27 | conn.commit() 28 | # close communication with the database 29 | cur.close() 30 | except (Exception, psycopg2.DatabaseError) as error: 31 | conn.rollback() 32 | print(error) 33 | finally: 34 | if conn is not None: 35 | conn.close() 36 | 37 | return vendor_id 38 | 39 | 40 | if __name__ == '__main__': 41 | insert_vendor("3M Co.") -------------------------------------------------------------------------------- /week3/psycopg2-suppliers-transaction.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | 4 | def add_part(part_name, vendor_list): 5 | """ Add new part and assign a vendor 6 | :param part_name: 7 | :param vendor_list: 8 | :return: None 9 | """ 10 | # statement for inserting a new row into the parts table 11 | insert_part = """INSERT INTO parts(part_name) VALUES(%s) RETURNING part_id;""" 12 | 13 | # statement for inserting a new row into the vendor_parts table 14 | assign_vendor = """INSERT INTO vendor_parts(vendor_id,part_id) VALUES(%s,%s)""" 15 | 16 | conn = None 17 | try: 18 | # connect to the PostgreSQL database 19 | conn = psycopg2.connect(user="postgres", 20 | password="CSI1", 21 | host="localhost", 22 | port="5432", 23 | database="suppliers") 24 | # create a new cursor 25 | cur = conn.cursor() 26 | # insert a new part 27 | cur.execute(insert_part, (part_name,)) 28 | # get the part id 29 | part_id = cur.fetchone()[0] 30 | # assign parts provided by vendors 31 | for vendor_id in vendor_list: 32 | cur.execute(assign_vendor, (vendor_id, part_id)) 33 | 34 | # close communication with the database 35 | conn.commit() 36 | except (Exception, psycopg2.DatabaseError) as error: 37 | conn.rollback() 38 | print(error) 39 | finally: 40 | if conn is not None: 41 | conn.close() 42 | 43 | 44 | if __name__ == '__main__': 45 | add_part('SIM Tray', (1, 2)) 46 | add_part('Speaker', (3, 4)) 47 | add_part('Vibrator', (5, 6)) 48 | add_part('Antenna', (6, 7)) 49 | add_part('Home Button', (1, 5)) 50 | add_part('LTE Modem', (1, 5)) 51 | -------------------------------------------------------------------------------- /week3/psycopg2-suppliers-update.py: -------------------------------------------------------------------------------- 1 | import psycopg2 2 | 3 | 4 | def update_vendor(vendor_id, vendor_name): 5 | """ update vendor name based on the vendor id 6 | :param vendor_id: 7 | :param vendor_name: 8 | :return: updated_rows 9 | """ 10 | sql = """ UPDATE vendors 11 | SET vendor_name = %s 12 | WHERE vendor_id = %s""" 13 | conn = None 14 | updated_rows = 0 15 | try: 16 | # connect to the PostgreSQL database 17 | conn = psycopg2.connect(user="postgres", 18 | password="CSI1", 19 | host="localhost", 20 | port="5432", 21 | database="suppliers") 22 | # create a new cursor 23 | cur = conn.cursor() 24 | # execute the UPDATE statement 25 | cur.execute(sql, (vendor_name, vendor_id)) 26 | # get the number of updated rows 27 | updated_rows = cur.rowcount 28 | # Commit the changes to the database 29 | conn.commit() 30 | # Close communication with the PostgreSQL database 31 | cur.close() 32 | except (Exception, psycopg2.DatabaseError) as error: 33 | conn.rollback() 34 | print(error) 35 | finally: 36 | if conn is not None: 37 | conn.close() 38 | 39 | return updated_rows 40 | 41 | 42 | if __name__ == '__main__': 43 | update_vendor(1, "3M Inc.") 44 | -------------------------------------------------------------------------------- /week3/restore-databse.txt: -------------------------------------------------------------------------------- 1 | pg_restore -U postgres -d dvd dvdrental.tar -------------------------------------------------------------------------------- /week4/json-part1.1.py: -------------------------------------------------------------------------------- 1 | student = { 2 | 1: { 3 | 'name': ' John', 4 | 'age': 25, 5 | 'position': 'software engineer' 6 | }, 7 | 2: { 8 | 'name': ' Melvin', 9 | 'age': 25, 10 | 'position': 'intern' 11 | }, 12 | 3: { 13 | 'name': ' Stacy', 14 | 'age': 23, 15 | 'position': 'software engineer' 16 | } 17 | } 18 | 19 | good_students = [] 20 | 21 | for key, values in student.items(): 22 | if values['position'] == 'software engineer': 23 | print(values['name']) 24 | -------------------------------------------------------------------------------- /week4/mongodb-part1.txt: -------------------------------------------------------------------------------- 1 | show dbs 2 | use CSC424 3 | db.createCollection("students") 4 | show collections 5 | db 6 | db.dropDatabase() -------------------------------------------------------------------------------- /week5/mongodb-part1.txt: -------------------------------------------------------------------------------- 1 | show dbs 2 | use CSC424 3 | db.createCollection("movies") -------------------------------------------------------------------------------- /week5/mongodb-part10.txt: -------------------------------------------------------------------------------- 1 | db.users.updateOne({"name": "Chris"}, { 2 | $set: { 3 | "hobbies": [ 4 | {title: "Sports", "frequency": 2}, 5 | {title: "Cooking", "frequency": 3}, 6 | {title: "Hiking", "frequency": 3} 7 | ] 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /week5/mongodb-part11.txt: -------------------------------------------------------------------------------- 1 | db.users.updateMany({"hobbies.title": "Sports"}, { 2 | $set: { 3 | "isSporty": true 4 | } 5 | }) -------------------------------------------------------------------------------- /week5/mongodb-part12.txt: -------------------------------------------------------------------------------- 1 | db.users.updateOne({"name": "Chris"}, { 2 | $set: { 3 | "age": 40, 4 | "phone": 2122221222 5 | } 6 | }) -------------------------------------------------------------------------------- /week5/mongodb-part13.txt: -------------------------------------------------------------------------------- 1 | db.users.updateOne({"name": "Manuel"}, { 2 | $inc: { 3 | "age": 1, 4 | } 5 | }) -------------------------------------------------------------------------------- /week5/mongodb-part14.txt: -------------------------------------------------------------------------------- 1 | db.users.updateOne({"name": "Manuel"}, { 2 | $inc: { 3 | "age": -1, 4 | } 5 | }) -------------------------------------------------------------------------------- /week5/mongodb-part15.txt: -------------------------------------------------------------------------------- 1 | db.users.updateMany({"isSporty": true}, { 2 | $unset: { 3 | "phone": "", 4 | } 5 | }) 6 | -------------------------------------------------------------------------------- /week5/mongodb-part16.txt: -------------------------------------------------------------------------------- 1 | db.users.updateMany({}, { 2 | $rename: { 3 | "name": "username", 4 | } 5 | }) -------------------------------------------------------------------------------- /week5/mongodb-part17.txt: -------------------------------------------------------------------------------- 1 | db.users.updateOne({"name": "Suresh"}, { 2 | $set: { 3 | "age": 25, 4 | "hobbies":[ 5 | { 6 | "title": "Cooking", 7 | "frequency":3 8 | } 9 | ], 10 | "isSporty": true 11 | } 12 | }, 13 | {upsert:true}) -------------------------------------------------------------------------------- /week5/mongodb-part18.txt: -------------------------------------------------------------------------------- 1 | db.users.find({$and: 2 | [ 3 | {"hobbies.title": "Sports"}, 4 | {"hobbies.frequency": {$gte: 3}} 5 | ] 6 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part19.txt: -------------------------------------------------------------------------------- 1 | db.users.find({ 2 | "hobbies":{ 3 | $elemMatch:{ 4 | "title": "Sports", 5 | "frequency": {$gte:3} 6 | } 7 | } 8 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part2.txt: -------------------------------------------------------------------------------- 1 | db.movies.insertOne({"title" : "Stand by Me"}) 2 | db.movies.insertOne({"title" : "Kingsman: The Secret Service"}) 3 | db.movies.insertOne({"title" : "Tinker, Tailor, Soldier, Spy"}) 4 | db.movies.insertOne({"title" : "Argo"}) -------------------------------------------------------------------------------- /week5/mongodb-part20.txt: -------------------------------------------------------------------------------- 1 | db.users.updateMany({ 2 | "hobbies":{ 3 | $elemMatch:{ 4 | "title": "Sports", 5 | "frequency": {$gte:3} 6 | } 7 | } 8 | },{ $set:{ "hobbies.$.highFrequency": true } }) -------------------------------------------------------------------------------- /week5/mongodb-part21.txt: -------------------------------------------------------------------------------- 1 | mongoimport --db catalog --collection books --type json --drop --file catalog.books.json -------------------------------------------------------------------------------- /week5/mongodb-part22.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$eq:300} 3 | }).count() 4 | -------------------------------------------------------------------------------- /week5/mongodb-part23.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$ne:300} 3 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part24.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$lte:300} 3 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part25.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$gte:300} 3 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part26.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$gt:300} 3 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part27.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$lt:300} 3 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part28.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$in: [300,400]} 3 | }).count() 4 | -------------------------------------------------------------------------------- /week5/mongodb-part29.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | pageCount:{$nin: [300,400]} 3 | }).count() 4 | -------------------------------------------------------------------------------- /week5/mongodb-part3.txt: -------------------------------------------------------------------------------- 1 | db.movies.insertMany([ 2 | {"title" : "Ghostbusters"}, 3 | {"title" : "E.T."}, 4 | {"title" : "Blade Runner"} 5 | {"title" : "007"} 6 | {"title" : "War"} 7 | {"title" : "IP Man"} 8 | ]); 9 | -------------------------------------------------------------------------------- /week5/mongodb-part30.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | $and:[ 3 | {"categories" : "Java"}, {"status" : "PUBLISH"} 4 | ] 5 | }).count() 6 | -------------------------------------------------------------------------------- /week5/mongodb-part31.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | $or:[ 3 | {"categories" : "Java"}, {"categories" : "Python"} 4 | ] 5 | }).count() 6 | -------------------------------------------------------------------------------- /week5/mongodb-part32.txt: -------------------------------------------------------------------------------- 1 | db.books.find({ 2 | $nor:[ 3 | {"categories" : "Java"}, {"categories" : "Python"} 4 | ] 5 | }).count() -------------------------------------------------------------------------------- /week5/mongodb-part33.txt: -------------------------------------------------------------------------------- 1 | db.books.find({"categories":"Java"}, {"isbn":1, "title":1}) -------------------------------------------------------------------------------- /week5/mongodb-part34.txt: -------------------------------------------------------------------------------- 1 | db.books.find({"authors":"Dave Crane"}, {"authors":1, "title":1}) -------------------------------------------------------------------------------- /week5/mongodb-part36.txt: -------------------------------------------------------------------------------- 1 | db.movies.deleteOne({name: "Chris"}) -------------------------------------------------------------------------------- /week5/mongodb-part4.txt: -------------------------------------------------------------------------------- 1 | db.movies.find().pretty() -------------------------------------------------------------------------------- /week5/mongodb-part5.txt: -------------------------------------------------------------------------------- 1 | db.movies.findOne({title:"War"}) -------------------------------------------------------------------------------- /week5/mongodb-part6.txt: -------------------------------------------------------------------------------- 1 | mongoimport --db tv-shows --collection shows --file tv-shows.json --jsonArray -------------------------------------------------------------------------------- /week5/mongodb-part7.txt: -------------------------------------------------------------------------------- 1 | db.movies.insertOne({ 2 | "title": "Ip Man 2", 3 | "rating": 7.6, 4 | "director": 5 | ["Wilson Yip"], 6 | "languages": [ 7 | "English", 8 | "Standard Mandarin", 9 | "Cantonese"], 10 | "actors": [ 11 | "Donnie Yen", 12 | "Sammo Hung", 13 | "Lynn Hung", 14 | "Louis Fan", 15 | "Simon Yam" 16 | ]} 17 | ) 18 | 19 | db.movies.insertOne({ 20 | "title": "Ip Man 3", 21 | "rating": 7.1, 22 | "director": 23 | ["Wilson Yip"], 24 | "languages": [ 25 | "English", 26 | "Standard Mandarin", 27 | "Cantonese"], 28 | "actors": [ 29 | "Donnie Yen", 30 | "Zhang Jin", 31 | "Mike Tyson", 32 | "Danny Chan Kwok-kwan", 33 | ]} 34 | ) -------------------------------------------------------------------------------- /week5/mongodb-part8.txt: -------------------------------------------------------------------------------- 1 | db.movies.insertMany([ 2 | { 3 | "title": "Black Panther", 4 | "rating": 7.4, 5 | "director": 6 | ["Ryan Coogler"], 7 | "languages": [ 8 | "English", 9 | ], 10 | "actors": [ 11 | "Chadwick Boseman", 12 | "Michael B. Jordan", 13 | "Lupita Nyong'o", 14 | ] 15 | } 16 | , 17 | { 18 | "title": "Mission: Impossible – Fallout", 19 | "rating": 7.8, 20 | "director": 21 | ["Christopher McQuarrie"], 22 | "languages": [ 23 | "English", 24 | ], 25 | "actors": [ 26 | "Tom Cruise", 27 | "Henry Cavill", 28 | "Rebecca Ferguson", 29 | ] 30 | } 31 | ]) 32 | -------------------------------------------------------------------------------- /week5/mongodb-part9.txt: -------------------------------------------------------------------------------- 1 | db.createCollection('users') 2 | db.users.insertMany( 3 | [ 4 | { 5 | "name": "Max", 6 | "hobbies": [ 7 | { 8 | "title": "Sports", 9 | "frequency": 3 10 | }, 11 | { 12 | "title": "Cooking", 13 | "frequency": 6 14 | } 15 | ], 16 | "phone": 131782734 17 | }, 18 | { 19 | "name": "Manuel", 20 | "hobbies": [ 21 | { 22 | "title": "Cooking", 23 | "frequency": 5 24 | }, 25 | { 26 | "title": "Cars", 27 | "frequency": 2 28 | } 29 | ], 30 | "phone": "012177972", 31 | "age": 30 32 | }, 33 | { 34 | "name": "Anna", 35 | "hobbies": [ 36 | { 37 | "title": "Sports", 38 | "frequency": 2 39 | }, 40 | { 41 | "title": "Yoga", 42 | "frequency": 3 43 | } 44 | ], 45 | "phone": "80811987291", 46 | "age": null 47 | }, 48 | { 49 | "name": "Chris", 50 | "hobbies": [ 51 | "Sports", 52 | "Cooking", 53 | "Hiking" 54 | ] 55 | } 56 | ]) -------------------------------------------------------------------------------- /week6/index-part1.1: -------------------------------------------------------------------------------- 1 | mongoimport persons.json -d people -c contacts --jsonArray --drop 2 | 3 | connected to: localhost 4 | dropping: people.contacts 5 | imported 5000 documents 6 | 7 | db.contacts.find({ "dob.age": {$gt: 50} }).count() -------------------------------------------------------------------------------- /week6/index-part1.10: -------------------------------------------------------------------------------- 1 | db.contacts.explain().find({ "dob.age": 35 }).sort({ gender:1 }) 2 | 3 | { 4 | "queryPlanner" : { 5 | "plannerVersion" : 1, 6 | "namespace" : "people.contacts", 7 | "indexFilterSet" : false, 8 | "parsedQuery" : { 9 | "dob.age" : { 10 | "$eq" : 35 11 | } 12 | }, 13 | "winningPlan" : { 14 | "stage" : "FETCH", 15 | "inputStage" : { 16 | "stage" : "IXSCAN", 17 | "keyPattern" : { 18 | "dob.age" : 1, 19 | "gender" : 1 20 | }, 21 | "indexName" : "dob.age_1_gender_1", 22 | "isMultiKey" : false, 23 | "multiKeyPaths" : { 24 | "dob.age" : [ ], 25 | "gender" : [ ] 26 | }, 27 | "isUnique" : false, 28 | "isSparse" : false, 29 | "isPartial" : false, 30 | "indexVersion" : 2, 31 | "direction" : "forward", 32 | "indexBounds" : { 33 | "dob.age" : [ 34 | "[35.0, 35.0]" 35 | ], 36 | "gender" : [ 37 | "[MinKey, MaxKey]" 38 | ] 39 | } 40 | } 41 | }, 42 | "rejectedPlans" : [ ] 43 | }, 44 | "serverInfo" : { 45 | "host" : "snowball", 46 | "port" : 27017, 47 | "version" : "4.0.5", 48 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 49 | }, 50 | "ok" : 1 51 | } 52 | 53 | db.contacts.explain().find({ "dob.age": 35 }).sort({ gender: -1 }) -------------------------------------------------------------------------------- /week6/index-part1.11: -------------------------------------------------------------------------------- 1 | /* DuplicateKey issue */ 2 | 3 | db.contacts.createIndex({ email:1 }, { unique: true }) 4 | 5 | { 6 | "ok" : 0, 7 | "errmsg" : "E11000 duplicate key error collection: people.contacts index: email_1 dup key: { : \"abigail.clark@example.com\" }", 8 | "code" : 11000, 9 | "codeName" : "DuplicateKey" 10 | } 11 | 12 | db.contacts.find({ email: "abigail.clark@example.com" }).count() -------------------------------------------------------------------------------- /week6/index-part1.12: -------------------------------------------------------------------------------- 1 | db.contacts.createIndex({ "dob.age" : 1 }, { partialFilterExpression: { gender: "male" }}) 2 | 3 | db.contacts.explain().find({ "dob.age": {$gt: 60}, gender: "male" }) 4 | 5 | db.contacts.explain().find({ "dob.age": {$gt: 60}, gender: "male" }) 6 | { 7 | "queryPlanner" : { 8 | "plannerVersion" : 1, 9 | "namespace" : "people.contacts", 10 | "indexFilterSet" : false, 11 | "parsedQuery" : { 12 | "$and" : [ 13 | { 14 | "gender" : { 15 | "$eq" : "male" 16 | } 17 | }, 18 | { 19 | "dob.age" : { 20 | "$gt" : 60 21 | } 22 | } 23 | ] 24 | }, 25 | "winningPlan" : { 26 | "stage" : "FETCH", 27 | "filter" : { 28 | "gender" : { 29 | "$eq" : "male" 30 | } 31 | }, 32 | "inputStage" : { 33 | "stage" : "IXSCAN", 34 | "keyPattern" : { 35 | "dob.age" : 1 36 | }, 37 | "indexName" : "dob.age_1", 38 | "isMultiKey" : false, 39 | "multiKeyPaths" : { 40 | "dob.age" : [ ] 41 | }, 42 | "isUnique" : false, 43 | "isSparse" : false, 44 | "isPartial" : true, 45 | "indexVersion" : 2, 46 | "direction" : "forward", 47 | "indexBounds" : { 48 | "dob.age" : [ 49 | "(60.0, inf.0]" 50 | ] 51 | } 52 | } 53 | }, 54 | "rejectedPlans" : [ ] 55 | }, 56 | "serverInfo" : { 57 | "host" : "snowball", 58 | "port" : 27017, 59 | "version" : "4.0.5", 60 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 61 | }, 62 | "ok" : 1 63 | } 64 | 65 | db.contacts.find({ "dob.age": {$gt: 60}, gender: "male" }).pretty() -------------------------------------------------------------------------------- /week6/index-part1.2: -------------------------------------------------------------------------------- 1 | db.contacts.explain().find({ "dob.age": {$gt: 50} }).count() 2 | 3 | { 4 | "queryPlanner" : { 5 | "plannerVersion" : 1, 6 | "namespace" : "people.contacts", 7 | "indexFilterSet" : false, 8 | "parsedQuery" : { 9 | "dob.age" : { 10 | "$gt" : 50 11 | } 12 | }, 13 | "winningPlan" : { 14 | "stage" : "COUNT", 15 | "inputStage" : { 16 | "stage" : "COLLSCAN", 17 | "filter" : { 18 | "dob.age" : { 19 | "$gt" : 50 20 | } 21 | }, 22 | "direction" : "forward" 23 | } 24 | }, 25 | "rejectedPlans" : [ ] 26 | }, 27 | "serverInfo" : { 28 | "host" : "snowball", 29 | "port" : 27017, 30 | "version" : "4.0.5", 31 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 32 | }, 33 | "ok" : 1 34 | } -------------------------------------------------------------------------------- /week6/index-part1.3: -------------------------------------------------------------------------------- 1 | db.contacts.explain().find({ "dob.age": {$gt: 50} }).count() 2 | 3 | { 4 | "queryPlanner" : { 5 | "plannerVersion" : 1, 6 | "namespace" : "people.contacts", 7 | "indexFilterSet" : false, 8 | "parsedQuery" : { 9 | "dob.age" : { 10 | "$gt" : 50 11 | } 12 | }, 13 | "winningPlan" : { 14 | "stage" : "COUNT", 15 | "inputStage" : { 16 | "stage" : "COLLSCAN", 17 | "filter" : { 18 | "dob.age" : { 19 | "$gt" : 50 20 | } 21 | }, 22 | "direction" : "forward" 23 | } 24 | }, 25 | "rejectedPlans" : [ ] 26 | }, 27 | "executionStats" : { 28 | "executionSuccess" : true, 29 | "nReturned" : 0, 30 | "executionTimeMillis" : 12, 31 | "totalKeysExamined" : 0, 32 | "totalDocsExamined" : 5000, 33 | "executionStages" : { 34 | "stage" : "COUNT", 35 | "nReturned" : 0, 36 | "executionTimeMillisEstimate" : 10, 37 | "works" : 5002, 38 | "advanced" : 0, 39 | "needTime" : 5001, 40 | "needYield" : 0, 41 | "saveState" : 39, 42 | "restoreState" : 39, 43 | "isEOF" : 1, 44 | "invalidates" : 0, 45 | "nCounted" : 2204, 46 | "nSkipped" : 0, 47 | "inputStage" : { 48 | "stage" : "COLLSCAN", 49 | "filter" : { 50 | "dob.age" : { 51 | "$gt" : 50 52 | } 53 | }, 54 | "nReturned" : 2204, 55 | "executionTimeMillisEstimate" : 10, 56 | "works" : 5002, 57 | "advanced" : 2204, 58 | "needTime" : 2797, 59 | "needYield" : 0, 60 | "saveState" : 39, 61 | "restoreState" : 39, 62 | "isEOF" : 1, 63 | "invalidates" : 0, 64 | "direction" : "forward", 65 | "docsExamined" : 5000 66 | } 67 | } 68 | }, 69 | "serverInfo" : { 70 | "host" : "snowball", 71 | "port" : 27017, 72 | "version" : "4.0.5", 73 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 74 | }, 75 | "ok" : 1 76 | } -------------------------------------------------------------------------------- /week6/index-part1.4: -------------------------------------------------------------------------------- 1 | db.contacts.createIndex({ "dob.age": 1 }) 2 | 3 | db.contacts.explain("executionStats").find({ "dob.age": {$gt: 50} }).count() 4 | 5 | { 6 | "queryPlanner" : { 7 | "plannerVersion" : 1, 8 | "namespace" : "people.contacts", 9 | "indexFilterSet" : false, 10 | "parsedQuery" : { 11 | "dob.age" : { 12 | "$gt" : 50 13 | } 14 | }, 15 | "winningPlan" : { 16 | "stage" : "COUNT", 17 | "inputStage" : { 18 | "stage" : "COUNT_SCAN", 19 | "keyPattern" : { 20 | "dob.age" : 1 21 | }, 22 | "indexName" : "dob.age_1", 23 | "isMultiKey" : false, 24 | "multiKeyPaths" : { 25 | "dob.age" : [ ] 26 | }, 27 | "isUnique" : false, 28 | "isSparse" : false, 29 | "isPartial" : false, 30 | "indexVersion" : 2, 31 | "indexBounds" : { 32 | "startKey" : { 33 | "dob.age" : 50 34 | }, 35 | "startKeyInclusive" : false, 36 | "endKey" : { 37 | "dob.age" : Infinity 38 | }, 39 | "endKeyInclusive" : true 40 | } 41 | } 42 | }, 43 | "rejectedPlans" : [ ] 44 | }, 45 | "executionStats" : { 46 | "executionSuccess" : true, 47 | "nReturned" : 0, 48 | "executionTimeMillis" : 0, 49 | "totalKeysExamined" : 2205, 50 | "totalDocsExamined" : 0, 51 | "executionStages" : { 52 | "stage" : "COUNT", 53 | "nReturned" : 0, 54 | "executionTimeMillisEstimate" : 0, 55 | "works" : 2205, 56 | "advanced" : 0, 57 | "needTime" : 2204, 58 | "needYield" : 0, 59 | "saveState" : 17, 60 | "restoreState" : 17, 61 | "isEOF" : 1, 62 | "invalidates" : 0, 63 | "nCounted" : 2204, 64 | "nSkipped" : 0, 65 | "inputStage" : { 66 | "stage" : "COUNT_SCAN", 67 | "nReturned" : 2204, 68 | "executionTimeMillisEstimate" : 0, 69 | "works" : 2205, 70 | "advanced" : 2204, 71 | "needTime" : 0, 72 | "needYield" : 0, 73 | "saveState" : 17, 74 | "restoreState" : 17, 75 | "isEOF" : 1, 76 | "invalidates" : 0, 77 | "keysExamined" : 2205, 78 | "keyPattern" : { 79 | "dob.age" : 1 80 | }, 81 | "indexName" : "dob.age_1", 82 | "isMultiKey" : false, 83 | "multiKeyPaths" : { 84 | "dob.age" : [ ] 85 | }, 86 | "isUnique" : false, 87 | "isSparse" : false, 88 | "isPartial" : false, 89 | "indexVersion" : 2, 90 | "indexBounds" : { 91 | "startKey" : { 92 | "dob.age" : 50 93 | }, 94 | "startKeyInclusive" : false, 95 | "endKey" : { 96 | "dob.age" : Infinity 97 | }, 98 | "endKeyInclusive" : true 99 | } 100 | } 101 | } 102 | }, 103 | "serverInfo" : { 104 | "host" : "snowball", 105 | "port" : 27017, 106 | "version" : "4.0.5", 107 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 108 | }, 109 | "ok" : 1 110 | } -------------------------------------------------------------------------------- /week6/index-part1.5: -------------------------------------------------------------------------------- 1 | db.contacts.dropIndex({"dob.age":1}) -------------------------------------------------------------------------------- /week6/index-part1.6: -------------------------------------------------------------------------------- 1 | db.contacts.dropIndex({"dob.age":1}) 2 | 3 | db.contacts.explain("executionStats").find({ "gender": "male" }) 4 | 5 | /* generated output 6 | { 7 | "queryPlanner" : { 8 | "plannerVersion" : 1, 9 | "namespace" : "people.contacts", 10 | "indexFilterSet" : false, 11 | "parsedQuery" : { 12 | "gender" : { 13 | "$eq" : "male" 14 | } 15 | }, 16 | "winningPlan" : { 17 | "stage" : "FETCH", 18 | "inputStage" : { 19 | "stage" : "IXSCAN", 20 | "keyPattern" : { 21 | "gender" : 1 22 | }, 23 | "indexName" : "gender_1", 24 | "isMultiKey" : false, 25 | "multiKeyPaths" : { 26 | "gender" : [ ] 27 | }, 28 | "isUnique" : false, 29 | "isSparse" : false, 30 | "isPartial" : false, 31 | "indexVersion" : 2, 32 | "direction" : "forward", 33 | "indexBounds" : { 34 | "gender" : [ 35 | "[\"male\", \"male\"]" 36 | ] 37 | } 38 | } 39 | }, 40 | "rejectedPlans" : [ ] 41 | }, 42 | "executionStats" : { 43 | "executionSuccess" : true, 44 | "nReturned" : 2435, 45 | "executionTimeMillis" : 9, 46 | "totalKeysExamined" : 2435, 47 | "totalDocsExamined" : 2435, 48 | "executionStages" : { 49 | "stage" : "FETCH", 50 | "nReturned" : 2435, 51 | "executionTimeMillisEstimate" : 0, 52 | "works" : 2436, 53 | "advanced" : 2435, 54 | "needTime" : 0, 55 | "needYield" : 0, 56 | "saveState" : 19, 57 | "restoreState" : 19, 58 | "isEOF" : 1, 59 | "invalidates" : 0, 60 | "docsExamined" : 2435, 61 | "alreadyHasObj" : 0, 62 | "inputStage" : { 63 | "stage" : "IXSCAN", 64 | "nReturned" : 2435, 65 | "executionTimeMillisEstimate" : 0, 66 | "works" : 2436, 67 | "advanced" : 2435, 68 | "needTime" : 0, 69 | "needYield" : 0, 70 | "saveState" : 19, 71 | "restoreState" : 19, 72 | "isEOF" : 1, 73 | "invalidates" : 0, 74 | "keyPattern" : { 75 | "gender" : 1 76 | }, 77 | "indexName" : "gender_1", 78 | "isMultiKey" : false, 79 | "multiKeyPaths" : { 80 | "gender" : [ ] 81 | }, 82 | "isUnique" : false, 83 | "isSparse" : false, 84 | "isPartial" : false, 85 | "indexVersion" : 2, 86 | "direction" : "forward", 87 | "indexBounds" : { 88 | "gender" : [ 89 | "[\"male\", \"male\"]" 90 | ] 91 | }, 92 | "keysExamined" : 2435, 93 | "seeks" : 1, 94 | "dupsTested" : 0, 95 | "dupsDropped" : 0, 96 | "seenInvalidated" : 0 97 | } 98 | } 99 | }, 100 | "serverInfo" : { 101 | "host" : "snowball", 102 | "port" : 27017, 103 | "version" : "4.0.5", 104 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 105 | }, 106 | "ok" : 1 107 | } 108 | */ -------------------------------------------------------------------------------- /week6/index-part1.7: -------------------------------------------------------------------------------- 1 | db.contacts.dropIndex({"gender": 1}) -------------------------------------------------------------------------------- /week6/index-part1.8: -------------------------------------------------------------------------------- 1 | db.contacts.createIndex({ "dob.age":1, gender:1 }) 2 | 3 | db.contacts.explain().find({ "dob.age": 30, gender:"male" }) 4 | 5 | { 6 | "queryPlanner" : { 7 | "plannerVersion" : 1, 8 | "namespace" : "people.contacts", 9 | "indexFilterSet" : false, 10 | "parsedQuery" : { 11 | "$and" : [ 12 | { 13 | "dob.age" : { 14 | "$eq" : 30 15 | } 16 | }, 17 | { 18 | "gender" : { 19 | "$eq" : "male" 20 | } 21 | } 22 | ] 23 | }, 24 | "winningPlan" : { 25 | "stage" : "FETCH", 26 | "inputStage" : { 27 | "stage" : "IXSCAN", 28 | "keyPattern" : { 29 | "dob.age" : 1, 30 | "gender" : 1 31 | }, 32 | "indexName" : "dob.age_1_gender_1", 33 | "isMultiKey" : false, 34 | "multiKeyPaths" : { 35 | "dob.age" : [ ], 36 | "gender" : [ ] 37 | }, 38 | "isUnique" : false, 39 | "isSparse" : false, 40 | "isPartial" : false, 41 | "indexVersion" : 2, 42 | "direction" : "forward", 43 | "indexBounds" : { 44 | "dob.age" : [ 45 | "[30.0, 30.0]" 46 | ], 47 | "gender" : [ 48 | "[\"male\", \"male\"]" 49 | ] 50 | } 51 | } 52 | }, 53 | "rejectedPlans" : [ ] 54 | }, 55 | "serverInfo" : { 56 | "host" : "snowball", 57 | "port" : 27017, 58 | "version" : "4.0.5", 59 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 60 | }, 61 | "ok" : 1 62 | } -------------------------------------------------------------------------------- /week6/index-part1.9: -------------------------------------------------------------------------------- 1 | db.contacts.explain().find({ "dob.age": 30}) 2 | 3 | { 4 | "queryPlanner" : { 5 | "plannerVersion" : 1, 6 | "namespace" : "people.contacts", 7 | "indexFilterSet" : false, 8 | "parsedQuery" : { 9 | "dob.age" : { 10 | "$eq" : 30 11 | } 12 | }, 13 | "winningPlan" : { 14 | "stage" : "FETCH", 15 | "inputStage" : { 16 | "stage" : "IXSCAN", 17 | "keyPattern" : { 18 | "dob.age" : 1, 19 | "gender" : 1 20 | }, 21 | "indexName" : "dob.age_1_gender_1", 22 | "isMultiKey" : false, 23 | "multiKeyPaths" : { 24 | "dob.age" : [ ], 25 | "gender" : [ ] 26 | }, 27 | "isUnique" : false, 28 | "isSparse" : false, 29 | "isPartial" : false, 30 | "indexVersion" : 2, 31 | "direction" : "forward", 32 | "indexBounds" : { 33 | "dob.age" : [ 34 | "[30.0, 30.0]" 35 | ], 36 | "gender" : [ 37 | "[MinKey, MaxKey]" 38 | ] 39 | } 40 | } 41 | }, 42 | "rejectedPlans" : [ ] 43 | }, 44 | "serverInfo" : { 45 | "host" : "snowball", 46 | "port" : 27017, 47 | "version" : "4.0.5", 48 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 49 | }, 50 | "ok" : 1 51 | } 52 | 53 | db.contacts.explain().find({ "gender": "male"}) 54 | 55 | { 56 | "queryPlanner" : { 57 | "plannerVersion" : 1, 58 | "namespace" : "people.contacts", 59 | "indexFilterSet" : false, 60 | "parsedQuery" : { 61 | "gender" : { 62 | "$eq" : "male" 63 | } 64 | }, 65 | "winningPlan" : { 66 | "stage" : "COLLSCAN", 67 | "filter" : { 68 | "gender" : { 69 | "$eq" : "male" 70 | } 71 | }, 72 | "direction" : "forward" 73 | }, 74 | "rejectedPlans" : [ ] 75 | }, 76 | "serverInfo" : { 77 | "host" : "snowball", 78 | "port" : 27017, 79 | "version" : "4.0.5", 80 | "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412" 81 | }, 82 | "ok" : 1 83 | } 84 | -------------------------------------------------------------------------------- /week7/index-part1.1: -------------------------------------------------------------------------------- 1 | use people 2 | db.createCollection('users') 3 | 4 | db.users.insertMany([ {name:'john', email: 'john@john.com' }, {name: 'Melvin'} ]) 5 | 6 | db.users.createIndex( { email: 1 }, {unique: true } ) 7 | 8 | db.users.insertOne({ name: 'Stacy' }) 9 | 2019-03-07T13:58:29.622-0500 E QUERY [js] WriteError: E11000 duplicate key error collection: people.users index: email_1 dup key: { : null } : 10 | WriteError({ 11 | "index" : 0, 12 | "code" : 1100 0, 13 | "errmsg" : "E11000 duplicate key error collection: people.users index: email_1 dup key: { : null }", 14 | "op" : { 15 | "_id" : ObjectId("5c8169d56333cb23e075cff3"), 16 | "name" : "Stacy" 17 | } 18 | }) 19 | 20 | db.users.dropIndex( { email: 1 }) -------------------------------------------------------------------------------- /week7/index-part1.2: -------------------------------------------------------------------------------- 1 | db.createCollection('sessions') 2 | 3 | db.sessions.insertOne({ sessions: 'Some data' , "created_at_date": 1, expireAfterSeconds: 86400 }) -------------------------------------------------------------------------------- /week9/schemas1.1: -------------------------------------------------------------------------------- 1 | use shop 2 | db.createCollection('products') 3 | db.products.insertOne({ 'name' : 'Best of Python', 'price' : 49.99 }) 4 | 5 | db.products.insertOne({ 6 | name: "Gildan Men's Assorted Crew T-Shirt Multipack", 7 | price: 11.99, 8 | seller: 9 | { 10 | name:"Gildan", 11 | category: "t-shirts", 12 | } 13 | }) 14 | 15 | 16 | --------------------------------------------------------------------------------