├── README.md ├── Week_1_Python ├── README.md ├── graph.png ├── marksheet.csv ├── script.png └── toy_dataset.csv ├── Week_2_CC └── README.md ├── Week_3_ML ├── README.md └── denoising-task │ ├── MRF_Denoising_Soultion.ipynb │ ├── Slides_MIC_ImageDenoising.pdf │ ├── Slides_MIC_ImagePrior.pdf │ ├── data │ ├── mri_image_noise_level_high.png │ ├── mri_image_noise_level_low.png │ ├── mri_image_noise_level_medium.png │ └── mri_image_noiseless.png │ └── task.pdf ├── Week_4_Git ├── README.md ├── initial.PNG ├── q4.zip └── result.PNG ├── Week_5_FrontEnd └── README.md ├── Week_6_Backend └── README.md ├── Week_7_AdvancedFrontEnd ├── README.md ├── contact.png ├── stocks.jpg └── weather.png └── Week_8_Blockchain └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Code in Quarantine 2 | 3 | ## By the Web & Coding Club IIT Bombay 4 | 5 | Greetings from the Web & Coding Club! 6 | 7 | As promised, we are back to help you begin your coding journey! WnCC proudly presents __Code in Quarantine__ - your first step towards getting started with programming. Starting from 6th April, over a span of 8 weeks, we'll provide resources for you to get started with 8 diverse topics. 8 | 9 | Here's the list of topics being covered: 10 | - [Week 1 - Python](./Week_1_Python/README.md) 11 | - [Week 2 - Competitive Programming](./Week_2_CC/README.md) 12 | - [Week 3 - Machine Learning](./Week_3_ML/README.md) 13 | - [Week 4 - Git/GitHub](./Week_4_Git/README.md) 14 | - [Week 5 - FrontEnd Dev](./Week_5_FrontEnd/README.md) 15 | - [Week 6 - BackEnd Dev](./Week_6_Backend/README.md) 16 | - [Week 7 - Advanced FrontEnd Dev](./Week_7_AdvancedFrontEnd/README.md) 17 | - [Week 8 - Blockchain](./Week_8_Blockchain/README.md) 18 | 19 | Every Monday, a tutorial containing links to some beginner-friendly resources will be shared, along with a task to assess your learning. You can freely discuss your doubts while understanding the tutorial or solving the task on our Telegram group. 20 | 21 | Join our [Telegram group](https://t.me/joinchat/Go8oWRUqXsSufvCA75qMUQ) for discussing your doubts. 22 | 23 | *** 24 | 25 |

Created with :heart: by WnCC

26 | 27 | -------------------------------------------------------------------------------- /Week_1_Python/README.md: -------------------------------------------------------------------------------- 1 | # Week 1 | Python 2 | 3 | ## Introduction 4 | Python is one of the widely used programming languages in the world. Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built-in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python's simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms and can be freely distributed. 5 | 6 | 7 | ## Resources 8 | 9 | - ### [I am new to Python - How can I learn the basics of Python](https://www.wiki.wncc-iitb.org/index.php/Python_for_Beginners) 10 | _This is ideal for people who have either almost never coded in their lives, or were intimidated by CS101. Starting from what variables are, we'll see how Python can be used to automate many repetitive tasks in everyday life._ 11 | - ### [I am an intermediate Python developer - How do I start using packages for real-life use cases](https://www.wiki.wncc-iitb.org/index.php/Intermediate_Python_Programming) 12 | _Once familiar with the basic concepts of Python, this tutorial will help you consolidate them & explore a wide variety of packages & modules for different use cases._ 13 | - ### [I am an advanced Python developer - How do I learn deeper concepts in Python](https://www.wiki.wncc-iitb.org/index.php/Advance_Python_Programming) 14 | _If you think you are quite comfortable with Python, this tutorial will help you to extend your knowlegde base by exploring some advance concepts like threading, socket programming, etc._ 15 | 16 | 17 | ## Tasks 18 | 19 | ### 1. Weather Data 20 | 21 | The first task is to report the average temperature and humidity of some cities over a week. 22 | 23 | The following information is given to help you: 24 | 25 | In a file named `input.txt`, you have a list of n cities. Create the file yourself, and list any nummber of cities you want the data for. 26 | You can use this [Website](https://www.wunderground.com) to scrape the required information, i.e. *Temperature* and *Humidity* of the cities given in `input.txt`. 27 | 28 | Scraping is essentially pulling text from an HTML page, programmatically. One can extract the HTML code directly, and then parse it for certain strings. In this case, the HTML code would contain the weather of city in question. One can store it as a string, and use normal string methods to extract useful information from it. The wiki link below contains a how-to guide to scraping, along with any additional information you may need for the task. 29 | 30 | 31 | Alternatively, you could use an Application Program Interface (API). This would essentially mean that you get the job done for you. You send a normal HTTP request to an API, and it returns data corresponding to what you asked for. This [Website](https://openweathermap.org/api) provides an API for the task. 32 | 33 | Check [this](http://wiki.wncc-iitb.org/index.php/Web_Scraping) out for an overview and resources for Web Scraping. 34 | 35 | 36 | ##### Sample Input (Contents of input.txt) 37 | >London 38 | >Paris 39 | >Berlin 40 | >Frankfurt 41 | 42 | ##### Sample Output (Could either be a new file or terminal) 43 | >London 13 80% 44 | >Paris 20 78% 45 | >Berlin 17 83% 46 | >Frankfurt 16 81% 47 | 48 | 49 | ### 2. Fetch My Rank 50 | 51 | A Physics Professor has just uploaded a sheet with marks of the 1000 freshmen who did his course. All the students want to know their ranks so that they can predict their grade. It’s very tedious to search for a given roll number and calculate their rank. Let's automate this! 52 | 53 | Your task is to create a script which keeps running and fetches the rank of a input roll number from the given `.csv` file. The valid range of roll numbers is from 1-1000. All are integers with no missing roll numbers. The script should keep running till the user types *`stop`*. 54 | The script should do something like this - 55 | 56 | ![](./script.png "script") 57 | 58 | This is just an example. [Here](./marksheet.csv) is the `.csv` file containing the required data to be used for this task. 59 | 60 | 61 | ### 3. Understanding Graphs 62 | 63 | A graph is a pictorial representation of a set of objects where some pairs of objects are connected by links. The interconnected objects are represented by points termed as vertices, and the links that connect the vertices are called edges. 64 | In a graph each of the edges can have a weight and an arrow depicting the direction. 65 | ![](./graph.png "graph") 66 | 67 | *In figure* : 68 | 69 | - Circles represent vertices. Each vertex has a name (0,1, 2,3,4) 70 | - Arrows between vertices represent edges. (Edge between 1 --> 3) 71 | - Each edge has a weight associated with it. (Edge between 1--> 3 has a weight =3) 72 | 73 | **Input**: 74 | 75 | Input to the task will be a graph in the following format: 76 | Connections: [[1, 2], [3], [1, 3, 4], [], [3]] 77 | 78 | Weights: [[5, 3], [3], [2, 5, 6], [], [1]] 79 | 80 | For the above format input example will be: 81 | 82 | >5 83 | >2 84 | >1 5 85 | >2 3 86 | >1 87 | >3 3 88 | >3 89 | >1 2 90 | >3 5 91 | >4 6 92 | >0 93 | >1 94 | >3 1 95 | 96 | First line represents the number of vertex. 97 | Next line shows the number of connections to 0th vertex (i.e. 2) 98 | Next 2 line shows the connected vertex and weight of edge to 0th vertex to connected vertex and so on. 99 | 100 | To understand more about graphs, we'll implement **2 algorithms**: 101 | 102 | #### Algorithm 1: Dijkstra's Shortest Path 103 | Given a source vertex, say vertex 0 you need to find the shortest path (the path with least weight) to all other vertices in the graph. 104 | **Output** : The minimum distance of each vertex from the given source vertex. 105 | 106 | Refer to this [pseudocode](https://brilliant.org/wiki/dijkstras-short-path-finder/) to learn about the algorithm. 107 | Hint: Use `math.inf` to initialize distances. 108 | 109 | #### Algorithm 2 : Breadth First Search (BFS) 110 | Breadth First Search (BFS) algorithm traverses a graph in a breadthward motion and uses a queue to remember to get the next vertex to start a search, when a dead end occurs in any iteration. 111 | 112 | **Output**: Print the breadth first traversal of the graph given in problem 1. 113 | Example: BFS for the example graph will be 0 2 1 3 4 114 | 115 | Refer to these sites to learn more about BFS - [HackerEarth](https://www.hackerearth.com/practice/algorithms/graphs/breadth-first-search/tutorial/), [TutorialsPoint](https://www.tutorialspoint.com/data_structures_algorithms/breadth_first_traversal.htm) 116 | 117 | 118 | ### 4. Telegram Bot 119 | 120 | If you have joined our [Telegram](https://t.me/joinchat/Go8oWRUqXsSufvCA75qMUQ) group, surely, you too would have been annoyed by the repeated notifications/messages of new people joining the group. So we give you the task of coding a Telegram Bot that automatically removes messages stating that a new person has joined the group, given it has admin privilages. Going through [this official documentation](https://python-telegram-bot.readthedocs.io/en/stable/) will certainly be useful. You might find this well documented [website](https://github.com/python-telegram-bot/python-telegram-bot/wiki/Code-snippets) more friendly and easy to understand if you are unable to comprehend the official documentation. 121 | 122 | -------------------------------------------------------------------------------- /Week_1_Python/graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_1_Python/graph.png -------------------------------------------------------------------------------- /Week_1_Python/marksheet.csv: -------------------------------------------------------------------------------- 1 | 1,76 2 | 2,99.5 3 | 3,66.5 4 | 4,91.5 5 | 5,1.5 6 | 6,37.5 7 | 7,23.5 8 | 8,90.5 9 | 9,18 10 | 10,13.5 11 | 11,72 12 | 12,94.5 13 | 13,74 14 | 14,29 15 | 15,9 16 | 16,29 17 | 17,19.5 18 | 18,55 19 | 19,80.5 20 | 20,68.5 21 | 21,47 22 | 22,19 23 | 23,33 24 | 24,6.5 25 | 25,89 26 | 26,52.5 27 | 27,71 28 | 28,89.5 29 | 29,62 30 | 30,40.5 31 | 31,89.5 32 | 32,48.5 33 | 33,40 34 | 34,18 35 | 35,30 36 | 36,78.5 37 | 37,18.5 38 | 38,5 39 | 39,46 40 | 40,2 41 | 41,65.5 42 | 42,76.5 43 | 43,6 44 | 44,88.5 45 | 45,5 46 | 46,12 47 | 47,52 48 | 48,10.5 49 | 49,47.5 50 | 50,65.5 51 | 51,96.5 52 | 52,85.5 53 | 53,85.5 54 | 54,57.5 55 | 55,25.5 56 | 56,6.5 57 | 57,24.5 58 | 58,68.5 59 | 59,31.5 60 | 60,71 61 | 61,77 62 | 62,97.5 63 | 63,28.5 64 | 64,72.5 65 | 65,95.5 66 | 66,19.5 67 | 67,73 68 | 68,93 69 | 69,77 70 | 70,20.5 71 | 71,24 72 | 72,21 73 | 73,86.5 74 | 74,45.5 75 | 75,20 76 | 76,96.5 77 | 77,84.5 78 | 78,58 79 | 79,28.5 80 | 80,30 81 | 81,39 82 | 82,83 83 | 83,31 84 | 84,70.5 85 | 85,74 86 | 86,22.5 87 | 87,22.5 88 | 88,7 89 | 89,76.5 90 | 90,23.5 91 | 91,44.5 92 | 92,32 93 | 93,64.5 94 | 94,71.5 95 | 95,85.5 96 | 96,9 97 | 97,90 98 | 98,28.5 99 | 99,23.5 100 | 100,3.5 101 | 101,35.5 102 | 102,4 103 | 103,74 104 | 104,85.5 105 | 105,1 106 | 106,93.5 107 | 107,92 108 | 108,23.5 109 | 109,36 110 | 110,80.5 111 | 111,23 112 | 112,85.5 113 | 113,30.5 114 | 114,74.5 115 | 115,7.5 116 | 116,64.5 117 | 117,53.5 118 | 118,73.5 119 | 119,93 120 | 120,76.5 121 | 121,60 122 | 122,42 123 | 123,3 124 | 124,76.5 125 | 125,60.5 126 | 126,52 127 | 127,45.5 128 | 128,33 129 | 129,11.5 130 | 130,26.5 131 | 131,90 132 | 132,24.5 133 | 133,28 134 | 134,81.5 135 | 135,55.5 136 | 136,46 137 | 137,80.5 138 | 138,75.5 139 | 139,25 140 | 140,73 141 | 141,27.5 142 | 142,72.5 143 | 143,55.5 144 | 144,87 145 | 145,20.5 146 | 146,9 147 | 147,11 148 | 148,62 149 | 149,72.5 150 | 150,28.5 151 | 151,25.5 152 | 152,98.5 153 | 153,71.5 154 | 154,84.5 155 | 155,3.5 156 | 156,12 157 | 157,74.5 158 | 158,59.5 159 | 159,96 160 | 160,42.5 161 | 161,35.5 162 | 162,49.5 163 | 163,25 164 | 164,30.5 165 | 165,32.5 166 | 166,87.5 167 | 167,17 168 | 168,71 169 | 169,6 170 | 170,27 171 | 171,90.5 172 | 172,60 173 | 173,23 174 | 174,9.5 175 | 175,22.5 176 | 176,65.5 177 | 177,29 178 | 178,67.5 179 | 179,41 180 | 180,15.5 181 | 181,44.5 182 | 182,62 183 | 183,69 184 | 184,76 185 | 185,34.5 186 | 186,40.5 187 | 187,85.5 188 | 188,54 189 | 189,45 190 | 190,52.5 191 | 191,83 192 | 192,49.5 193 | 193,85 194 | 194,97.5 195 | 195,62.5 196 | 196,50.5 197 | 197,11 198 | 198,64 199 | 199,55.5 200 | 200,50.5 201 | 201,12.5 202 | 202,71 203 | 203,91 204 | 204,2.5 205 | 205,46 206 | 206,53 207 | 207,54.5 208 | 208,70 209 | 209,48.5 210 | 210,41.5 211 | 211,62 212 | 212,32 213 | 213,99 214 | 214,15.5 215 | 215,5 216 | 216,36 217 | 217,60.5 218 | 218,40.5 219 | 219,3.5 220 | 220,28.5 221 | 221,88.5 222 | 222,24 223 | 223,64.5 224 | 224,91.5 225 | 225,86 226 | 226,32 227 | 227,83 228 | 228,74.5 229 | 229,72 230 | 230,72.5 231 | 231,66.5 232 | 232,93.5 233 | 233,49.5 234 | 234,22 235 | 235,13.5 236 | 236,30.5 237 | 237,22.5 238 | 238,59.5 239 | 239,73.5 240 | 240,75.5 241 | 241,94 242 | 242,38.5 243 | 243,58 244 | 244,84.5 245 | 245,36.5 246 | 246,87 247 | 247,84.5 248 | 248,27.5 249 | 249,2 250 | 250,55.5 251 | 251,58 252 | 252,71 253 | 253,54 254 | 254,11.5 255 | 255,59.5 256 | 256,33.5 257 | 257,12 258 | 258,81.5 259 | 259,63 260 | 260,58.5 261 | 261,20.5 262 | 262,84.5 263 | 263,1.5 264 | 264,41 265 | 265,32 266 | 266,81.5 267 | 267,70.5 268 | 268,89 269 | 269,36.5 270 | 270,72 271 | 271,39.5 272 | 272,85.5 273 | 273,64.5 274 | 274,83.5 275 | 275,85 276 | 276,11.5 277 | 277,75.5 278 | 278,55.5 279 | 279,89 280 | 280,27.5 281 | 281,99.5 282 | 282,1 283 | 283,69.5 284 | 284,38 285 | 285,77 286 | 286,95.5 287 | 287,7.5 288 | 288,65 289 | 289,40 290 | 290,43.5 291 | 291,26.5 292 | 292,22.5 293 | 293,5.5 294 | 294,97 295 | 295,10 296 | 296,62.5 297 | 297,92 298 | 298,54.5 299 | 299,68 300 | 300,45 301 | 301,86.5 302 | 302,33.5 303 | 303,6 304 | 304,32.5 305 | 305,82 306 | 306,25.5 307 | 307,23.5 308 | 308,16.5 309 | 309,14 310 | 310,61.5 311 | 311,84.5 312 | 312,47.5 313 | 313,39.5 314 | 314,38 315 | 315,17.5 316 | 316,3 317 | 317,32 318 | 318,5 319 | 319,16 320 | 320,15.5 321 | 321,10 322 | 322,88 323 | 323,98.5 324 | 324,57.5 325 | 325,83.5 326 | 326,30.5 327 | 327,7 328 | 328,59.5 329 | 329,36 330 | 330,36.5 331 | 331,53 332 | 332,79 333 | 333,37.5 334 | 334,83.5 335 | 335,74.5 336 | 336,82.5 337 | 337,61 338 | 338,33 339 | 339,34.5 340 | 340,77.5 341 | 341,77 342 | 342,25.5 343 | 343,68.5 344 | 344,32 345 | 345,7.5 346 | 346,79.5 347 | 347,97.5 348 | 348,60.5 349 | 349,85.5 350 | 350,18 351 | 351,17 352 | 352,39.5 353 | 353,68.5 354 | 354,66 355 | 355,63.5 356 | 356,27.5 357 | 357,64.5 358 | 358,29 359 | 359,17.5 360 | 360,68 361 | 361,88.5 362 | 362,31 363 | 363,60.5 364 | 364,3.5 365 | 365,68 366 | 366,67 367 | 367,46.5 368 | 368,40 369 | 369,49.5 370 | 370,7 371 | 371,7.5 372 | 372,48.5 373 | 373,73.5 374 | 374,43 375 | 375,30 376 | 376,63 377 | 377,37.5 378 | 378,92 379 | 379,79 380 | 380,32.5 381 | 381,47 382 | 382,69.5 383 | 383,21 384 | 384,37 385 | 385,30.5 386 | 386,3 387 | 387,10 388 | 388,74.5 389 | 389,67 390 | 390,67 391 | 391,28.5 392 | 392,67.5 393 | 393,58.5 394 | 394,44.5 395 | 395,77 396 | 396,48 397 | 397,36.5 398 | 398,32.5 399 | 399,75 400 | 400,48.5 401 | 401,87.5 402 | 402,77 403 | 403,21.5 404 | 404,58 405 | 405,45.5 406 | 406,96.5 407 | 407,97 408 | 408,63 409 | 409,69.5 410 | 410,98.5 411 | 411,52 412 | 412,68.5 413 | 413,27 414 | 414,48.5 415 | 415,64.5 416 | 416,49.5 417 | 417,24 418 | 418,6.5 419 | 419,89 420 | 420,19.5 421 | 421,70.5 422 | 422,54.5 423 | 423,49 424 | 424,76.5 425 | 425,80.5 426 | 426,90.5 427 | 427,86 428 | 428,83.5 429 | 429,19.5 430 | 430,36.5 431 | 431,23.5 432 | 432,94.5 433 | 433,58 434 | 434,8.5 435 | 435,89.5 436 | 436,18.5 437 | 437,22 438 | 438,46 439 | 439,95.5 440 | 440,99.5 441 | 441,2 442 | 442,80.5 443 | 443,82.5 444 | 444,51 445 | 445,86 446 | 446,5.5 447 | 447,68 448 | 448,60.5 449 | 449,51.5 450 | 450,72.5 451 | 451,67 452 | 452,62 453 | 453,70.5 454 | 454,33.5 455 | 455,57 456 | 456,59.5 457 | 457,76.5 458 | 458,95.5 459 | 459,25 460 | 460,6.5 461 | 461,71.5 462 | 462,46 463 | 463,10 464 | 464,12 465 | 465,44 466 | 466,1.5 467 | 467,17.5 468 | 468,24 469 | 469,77.5 470 | 470,42 471 | 471,93.5 472 | 472,86.5 473 | 473,41.5 474 | 474,83.5 475 | 475,66 476 | 476,96.5 477 | 477,91.5 478 | 478,52.5 479 | 479,92.5 480 | 480,1 481 | 481,36.5 482 | 482,83.5 483 | 483,77.5 484 | 484,93.5 485 | 485,28.5 486 | 486,87.5 487 | 487,56.5 488 | 488,30 489 | 489,4 490 | 490,1 491 | 491,37 492 | 492,51 493 | 493,83.5 494 | 494,49.5 495 | 495,67.5 496 | 496,81 497 | 497,75.5 498 | 498,94 499 | 499,55.5 500 | 500,57.5 501 | 501,76 502 | 502,28 503 | 503,66 504 | 504,86.5 505 | 505,58.5 506 | 506,18 507 | 507,83 508 | 508,61.5 509 | 509,65.5 510 | 510,70 511 | 511,81.5 512 | 512,55 513 | 513,81.5 514 | 514,16.5 515 | 515,74.5 516 | 516,90 517 | 517,27.5 518 | 518,42.5 519 | 519,25.5 520 | 520,54 521 | 521,11.5 522 | 522,62.5 523 | 523,25 524 | 524,95.5 525 | 525,27 526 | 526,44 527 | 527,94 528 | 528,40 529 | 529,87.5 530 | 530,77 531 | 531,50 532 | 532,91.5 533 | 533,34.5 534 | 534,36.5 535 | 535,38.5 536 | 536,18.5 537 | 537,41 538 | 538,65.5 539 | 539,46 540 | 540,40.5 541 | 541,42.5 542 | 542,9 543 | 543,24.5 544 | 544,61.5 545 | 545,17.5 546 | 546,38 547 | 547,85.5 548 | 548,23.5 549 | 549,27 550 | 550,66 551 | 551,74 552 | 552,52 553 | 553,86.5 554 | 554,59.5 555 | 555,2 556 | 556,56.5 557 | 557,10.5 558 | 558,55 559 | 559,9 560 | 560,76.5 561 | 561,71 562 | 562,77 563 | 563,98 564 | 564,92 565 | 565,64.5 566 | 566,98.5 567 | 567,43.5 568 | 568,54 569 | 569,46.5 570 | 570,77.5 571 | 571,57.5 572 | 572,72.5 573 | 573,18.5 574 | 574,89 575 | 575,4 576 | 576,14.5 577 | 577,57 578 | 578,19.5 579 | 579,66 580 | 580,53 581 | 581,10.5 582 | 582,80.5 583 | 583,98 584 | 584,1.5 585 | 585,19.5 586 | 586,94 587 | 587,47 588 | 588,95.5 589 | 589,33.5 590 | 590,28.5 591 | 591,97 592 | 592,41 593 | 593,28 594 | 594,75 595 | 595,3 596 | 596,25 597 | 597,34 598 | 598,47.5 599 | 599,74.5 600 | 600,28.5 601 | 601,55.5 602 | 602,81.5 603 | 603,62 604 | 604,47 605 | 605,10.5 606 | 606,10 607 | 607,54 608 | 608,65.5 609 | 609,54.5 610 | 610,26 611 | 611,53 612 | 612,46.5 613 | 613,42 614 | 614,52.5 615 | 615,30 616 | 616,39.5 617 | 617,45 618 | 618,96.5 619 | 619,59 620 | 620,27.5 621 | 621,39.5 622 | 622,38.5 623 | 623,77.5 624 | 624,45.5 625 | 625,21.5 626 | 626,7 627 | 627,20 628 | 628,50.5 629 | 629,21.5 630 | 630,17.5 631 | 631,38.5 632 | 632,36 633 | 633,23 634 | 634,85 635 | 635,1.5 636 | 636,3.5 637 | 637,3.5 638 | 638,46.5 639 | 639,9.5 640 | 640,36 641 | 641,46.5 642 | 642,35 643 | 643,12.5 644 | 644,64 645 | 645,22.5 646 | 646,9.5 647 | 647,87.5 648 | 648,72 649 | 649,4.5 650 | 650,25.5 651 | 651,9.5 652 | 652,16 653 | 653,69.5 654 | 654,89 655 | 655,39.5 656 | 656,63 657 | 657,29.5 658 | 658,58.5 659 | 659,18 660 | 660,35.5 661 | 661,59.5 662 | 662,48 663 | 663,10 664 | 664,39 665 | 665,36.5 666 | 666,75 667 | 667,59.5 668 | 668,30.5 669 | 669,5 670 | 670,57 671 | 671,56.5 672 | 672,11 673 | 673,16.5 674 | 674,25 675 | 675,99 676 | 676,76.5 677 | 677,35.5 678 | 678,32 679 | 679,37.5 680 | 680,69.5 681 | 681,90 682 | 682,71 683 | 683,88 684 | 684,82 685 | 685,13.5 686 | 686,20.5 687 | 687,8.5 688 | 688,42 689 | 689,1.5 690 | 690,79.5 691 | 691,26.5 692 | 692,49.5 693 | 693,95 694 | 694,91.5 695 | 695,80.5 696 | 696,68 697 | 697,62.5 698 | 698,25.5 699 | 699,28.5 700 | 700,78.5 701 | 701,1 702 | 702,86.5 703 | 703,93.5 704 | 704,43 705 | 705,42 706 | 706,87 707 | 707,11.5 708 | 708,58 709 | 709,6 710 | 710,65 711 | 711,37 712 | 712,72.5 713 | 713,9 714 | 714,65.5 715 | 715,70.5 716 | 716,3 717 | 717,63 718 | 718,5.5 719 | 719,89 720 | 720,94.5 721 | 721,8.5 722 | 722,79.5 723 | 723,92 724 | 724,76.5 725 | 725,47 726 | 726,9.5 727 | 727,17.5 728 | 728,26.5 729 | 729,4 730 | 730,94.5 731 | 731,50.5 732 | 732,56.5 733 | 733,5.5 734 | 734,66.5 735 | 735,79 736 | 736,61 737 | 737,50.5 738 | 738,27.5 739 | 739,31.5 740 | 740,96 741 | 741,51.5 742 | 742,16.5 743 | 743,97.5 744 | 744,94 745 | 745,24.5 746 | 746,75 747 | 747,57 748 | 748,19 749 | 749,69 750 | 750,57.5 751 | 751,31.5 752 | 752,12.5 753 | 753,95.5 754 | 754,34.5 755 | 755,32.5 756 | 756,8.5 757 | 757,46.5 758 | 758,77 759 | 759,9 760 | 760,89.5 761 | 761,53.5 762 | 762,36 763 | 763,75.5 764 | 764,36.5 765 | 765,14.5 766 | 766,19 767 | 767,83.5 768 | 768,67.5 769 | 769,68.5 770 | 770,65.5 771 | 771,93 772 | 772,91 773 | 773,36.5 774 | 774,58.5 775 | 775,31 776 | 776,29.5 777 | 777,18 778 | 778,11.5 779 | 779,37.5 780 | 780,34 781 | 781,90 782 | 782,37 783 | 783,68.5 784 | 784,61.5 785 | 785,37 786 | 786,87 787 | 787,83 788 | 788,52.5 789 | 789,1.5 790 | 790,96.5 791 | 791,28.5 792 | 792,16 793 | 793,44 794 | 794,93 795 | 795,16 796 | 796,55.5 797 | 797,62.5 798 | 798,62 799 | 799,46 800 | 800,44.5 801 | 801,81.5 802 | 802,44 803 | 803,31 804 | 804,61 805 | 805,22.5 806 | 806,38.5 807 | 807,4.5 808 | 808,47.5 809 | 809,39.5 810 | 810,28 811 | 811,33.5 812 | 812,21 813 | 813,46.5 814 | 814,47 815 | 815,81.5 816 | 816,91.5 817 | 817,89.5 818 | 818,53.5 819 | 819,59 820 | 820,37.5 821 | 821,40 822 | 822,83 823 | 823,77 824 | 824,42 825 | 825,3 826 | 826,11.5 827 | 827,96.5 828 | 828,20.5 829 | 829,71.5 830 | 830,13 831 | 831,27.5 832 | 832,56.5 833 | 833,79 834 | 834,27 835 | 835,27.5 836 | 836,42.5 837 | 837,25.5 838 | 838,73 839 | 839,91 840 | 840,2 841 | 841,58.5 842 | 842,33.5 843 | 843,60.5 844 | 844,22 845 | 845,72 846 | 846,39.5 847 | 847,48.5 848 | 848,33 849 | 849,43 850 | 850,22 851 | 851,3.5 852 | 852,10 853 | 853,78.5 854 | 854,82.5 855 | 855,43 856 | 856,88 857 | 857,8 858 | 858,31.5 859 | 859,10 860 | 860,11 861 | 861,4.5 862 | 862,84 863 | 863,59 864 | 864,53 865 | 865,16.5 866 | 866,6 867 | 867,68 868 | 868,95.5 869 | 869,64 870 | 870,58 871 | 871,34.5 872 | 872,34.5 873 | 873,19.5 874 | 874,81.5 875 | 875,75 876 | 876,54.5 877 | 877,75.5 878 | 878,20 879 | 879,94.5 880 | 880,5.5 881 | 881,74 882 | 882,60.5 883 | 883,37.5 884 | 884,46.5 885 | 885,56 886 | 886,65 887 | 887,52 888 | 888,66 889 | 889,34.5 890 | 890,1.5 891 | 891,66.5 892 | 892,83 893 | 893,20 894 | 894,98 895 | 895,1.5 896 | 896,73.5 897 | 897,56 898 | 898,98 899 | 899,5.5 900 | 900,8 901 | 901,18.5 902 | 902,68.5 903 | 903,81.5 904 | 904,73.5 905 | 905,95.5 906 | 906,86.5 907 | 907,33.5 908 | 908,12.5 909 | 909,80.5 910 | 910,48.5 911 | 911,52.5 912 | 912,16.5 913 | 913,5.5 914 | 914,17.5 915 | 915,21 916 | 916,46 917 | 917,3 918 | 918,34 919 | 919,22.5 920 | 920,76.5 921 | 921,14.5 922 | 922,73 923 | 923,52 924 | 924,70.5 925 | 925,27 926 | 926,82 927 | 927,92.5 928 | 928,47 929 | 929,37.5 930 | 930,60.5 931 | 931,92.5 932 | 932,96 933 | 933,78.5 934 | 934,59.5 935 | 935,55 936 | 936,42.5 937 | 937,41.5 938 | 938,18.5 939 | 939,38.5 940 | 940,69.5 941 | 941,90 942 | 942,44.5 943 | 943,6 944 | 944,67.5 945 | 945,45.5 946 | 946,24.5 947 | 947,2 948 | 948,41.5 949 | 949,82.5 950 | 950,26.5 951 | 951,15 952 | 952,11 953 | 953,85 954 | 954,11 955 | 955,78 956 | 956,87.5 957 | 957,33.5 958 | 958,71 959 | 959,6.5 960 | 960,97.5 961 | 961,11 962 | 962,75 963 | 963,56 964 | 964,10.5 965 | 965,98.5 966 | 966,76.5 967 | 967,97.5 968 | 968,56 969 | 969,41.5 970 | 970,8 971 | 971,96.5 972 | 972,84.5 973 | 973,33.5 974 | 974,87.5 975 | 975,53.5 976 | 976,57 977 | 977,56 978 | 978,99 979 | 979,65.5 980 | 980,99.5 981 | 981,54 982 | 982,18 983 | 983,90.5 984 | 984,63 985 | 985,48.5 986 | 986,89.5 987 | 987,36 988 | 988,36.5 989 | 989,2.5 990 | 990,17.5 991 | 991,99 992 | 992,48 993 | 993,8.5 994 | 994,72.5 995 | 995,35.5 996 | 996,32.5 997 | 997,52 998 | 998,50.5 999 | 999,25 1000 | 1000,34.5 -------------------------------------------------------------------------------- /Week_1_Python/script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_1_Python/script.png -------------------------------------------------------------------------------- /Week_2_CC/README.md: -------------------------------------------------------------------------------- 1 | # Week 2 | Competitive Coding 2 | 3 | ## Introduction 4 | 5 | Programming is a challenging role and once you enter this field you will encounter new challenges and you may have to solve some problems which no one has solved before or their solution doesn’t exist anywhere. At that time you are expected to come up with a solution in the least possible time using your problem-solving and logical ability. 6 | 7 | Competitive Programming is a sport! Take any sport, let’s consider cricket for that matter, you walk in to bat for the first time. Swing and a miss, do it couple of times and you’ll eventually hit one over the ropes. Now, consider a programming contest as a game of cricket, metaphorically. Compile a code and submit, you may get a WA (Wrong Answer). Make changes to code and eventually you will get your first AC (Accepted/Correct Answer). 8 | 9 | Many programmers argue that the problems in competitive programming do not relate to the real life programming work. For the most part, it is true. Then why do we do it? Because it makes you a better programmer. How? 10 | - Time limit always makes you write time efficient solutions. 11 | - Critical test data helps you write correct solutions, in one go! 12 | - Further it makes you great at debugging code. 13 | - Hard problems makes you break down the problem into chunks, solve them individually and bring it all together to solve the main problem. 14 | - A lot of big companies like Google, Facebook. Microsoft, Amazon hires through competitive programming 15 | 16 | Yes, competitive programming is not the only way to master these qualities but it is one of the best ways to do so. Give it a shot, if you enjoy it, it’s worth it. You will be rewarded with objective benefits. 17 | 18 | ## OK...So how do I start? 19 | 20 | Head over to [__this WnCC Wiki Article__](https://www.wncc-iitb.org/wiki/index.php/Competitive_Programming) to get started with your journey on Competitive Coding. 21 | 22 | For those who are new to this domain & wish to learn more about different Data Structures & Algorithms, check out the [__Excellent Resources > Algorithms__](https://www.wncc-iitb.org/wiki/index.php/Competitive_Programming#Algorithms:) section of the above article. 23 | 24 | ## Ready to Practice? Check out these Tutorials & Problems 25 | 26 | Competitive Coding is all about learning & practicing. To help you get hooked to CC, here are some resources along with a curated list of problems for you to practice: 27 | 28 | - Refer to [this site](https://cp-algorithms.com/) for standard code templates 29 | - If you feel you don’t understand a topic and need more practice for that topic , [here is a topic wise list of problems](https://codeforces.com/blog/entry/55274) 30 | 31 | ### Recommended Problems: 32 | 33 | ___Note:__ Most of the problems have editorials or tutorials , also you could refer to submissions for a problem to understand code implementation , but first try to do these problems on your own after reading the relevant topics._ 34 | 35 | #### Easy problems 36 | 37 | - Some Ad-hoc Problems 38 | 39 | - __Problem:__ [Watson asks Does Permutation Exist](https://www.codechef.com/problems/PERMEXIS) 40 | - __Problem:__ [Prefix Numbers](https://www.codechef.com/GWR18ROL/problems/PREFNUM) 41 | - __Problem:__ [Red Blue Green Balls (keteki)](https://www.codechef.com/problems/QM10P5A) 42 | - __Problem:__ [Game of Bullets](https://www.codechef.com/problems/BULLETS) (Read about [Nim game](https://plus.maths.org/content/play-win-nim)) 43 | - __Problem:__ [Black And White Cells](https://www.codechef.com/LTIME30/problems/BWCELL) 44 | 45 | - Binary Search 46 | - __Problem:__ [Aggressive Cows](https://www.spoj.com/problems/AGGRCOW/) 47 | - __Problem:__ [Multiplication Table](https://codeforces.com/contest/448/problem/D) 48 | - Strings 49 | - __Tutorial:__ Read about [Prefix Sum Array](https://www.geeksforgeeks.org/prefix-sum-array-implementation-applications-competitive-programming//) and their uses 50 | - __Problem:__ [Make Palindrome](https://www.codechef.com/LTIME27/problems/MAKPALIN) 51 | 52 | - Stacks 53 | - __Problem:__ [Largest Rectangle in Histogram](https://www.spoj.com/problems/HISTOGRA/) 54 | _(Try a O(n) solution)_ 55 | 56 | - Greedy Algorithms 57 | 58 | - __Problem:__ [Array Splitting](https://codeforces.com/contest/1175/problem/D) 59 | - __Problem:__ [IPC Trainers](https://www.codechef.com/JULY17/problems/IPCTRAIN) 60 | 61 | - Dynamic programming(DP) 62 | 63 | - __Problem:__ [Longest Regular Bracket Sequence](https://codeforces.com/contest/5/problem/C) (Stacks + DP) 64 | - __Problem:__ [Contest Setting](https://codeforces.com/gym/101982) _[Problem C > download pdf of problem statements and look for this problem > to submit just click on submit code and submit under C]_ 65 | 66 | __Intermediate Problems__ 67 | 68 | - Tree 69 | - __Tutorial:__ [Lowest Common Ancestor - Binary Lifting](https://cp-algorithms.com/graph/lca_binary_lifting.html) 70 | - __Problem:__ [Marathon on a Tree](https://www.codechef.com/problems/MOAT) 71 | 72 | - Djikstra's Algorithm 73 | - __Problem:__ [AND on Graph](https://www.codechef.com/KGP18ROL/problems/GRAPHAND) 74 | 75 | - Convex Hull Trick: 76 | - __Tutorial:__ [A Primer on the Convex Hull Trick](https://wcipeg.com/wiki/Convex_hull_trick) 77 | - __Problem:__ [Hit the Coconuts](https://www.codechef.com/JULY19A/problems/CCC) 78 | 79 | - Convex Hull 80 | - __Tutorial:__ [Graham's Scan for Convex Hull Construction](https://cp-algorithms.com/geometry/grahams-scan-convex-hull.html) 81 | - __Problem:__ [Save The Trees](https://www.codechef.com/ACM15KOL/problems/KOL1509) _(Easier)_ 82 | - __Problem:__ [Mancunian Candidate Master Forever](https://www.codechef.com/ACM16CHN/problems/CHN16B) 83 | 84 | 85 | - Disjoint Set Union (DSU) 86 | - __Tutorial:__ Read about [Kruskal’s Algo implementation using DSU](https://cp-algorithms.com/graph/mst_kruskal_with_dsu.html) 87 | - __Problem:__ [Gears](https://www.codechef.com/JULY18A/problems/GEARS) 88 | 89 | - Binary Indexed Tree (BIT) 90 | - __Tutorial:__ Find Number of Inversions in an Array using [BIT](https://www.geeksforgeeks.org/count-inversions-array-set-3-using-bit/) and [merge sort](https://www.geeksforgeeks.org/counting-inversions/) 91 | - __Problem:__ [Bye, inversions!](https://www.codechef.com/ACMKGP14/problems/ACM14KP2) 92 | 93 | - Square Root Decomposition 94 | - __Tutorial:__ [Applications of Square Root Trick](https://www.infoarena.ro/blog/square-root-trick) 95 | - __Problem__: [Just Update and Print the array](https://www.codechef.com/ACMKOL15/problems/KOL15C) 96 | 97 | - Mo’s Algorithm 98 | - __Tutorial:__ [Mo’s Algorithm](https://blog.anudeep2011.com/mos-algorithm/) 99 | - __Problem:__ [Traffic Count](https://www.codechef.com/problems/AUTCN) (Mo’s algorithm + BIT) 100 | 101 | 102 | - KMP/Z-Algorithm 103 | - __Tutorial:__ [Z-Algorithm](https://www.hackerearth.com/practice/notes/z-algorithm/) 104 | - __Tutorial:__ [KMP Algorithm](https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/) 105 | - __Problem:__ [Pattern matching](https://www.codechef.com/problems/PATTMATC) 106 | 107 | - Tries 108 | - __Tutorial:__ [Tries & Example Problems](https://www.quora.com/q/threadsiiithyderabad/Tutorial-on-Trie-and-example-problems) 109 | - __Problem:__ [Alice and Bob play Contact](https://www.codechef.com/ACM16CHN/problems/CHN16I) 110 | 111 | - Dynamic Programming 112 | - Bitmasks, Subsets and Digit DP 113 | - __Tutorial:__ [Dynamic Programming and Bit Masking](https://www.hackerearth.com/practice/algorithms/dynamic-programming/bit-masking/tutorial/) 114 | - __Tutorial:__ [Digit DP](https://www.geeksforgeeks.org/digit-dp-introduction/) 115 | - __Tutorial:__ [DP over Subsets](https://codeforces.com/blog/entry/337) 116 | - __Problem:__ [Pen Pineapple Apple Pen](https://www.codechef.com/ICPCIN19/problems/PENS) 117 | - __Problem:__ [Cardinality](https://www.codechef.com/problems/CARDINAL) 118 | - DP on Trees 119 | - __Tutorial:__ [DP on Trees - 1](https://www.geeksforgeeks.org/dynamic-programming-trees-set-1/) 120 | - __Tutorial:__ [DP on Trees - 2](https://www.geeksforgeeks.org/dynamic-programming-trees-set-2/) 121 | - __Problem:__ [Tree Height](https://www.codechef.com/problems/MCO16403) 122 | 123 | __Advanced Problems__ 124 | 125 | - Segment Tree + 2-Pointers 126 | - __Tutorial:__ [Using the 2 Pointer Technique](https://algodaily.com/lessons/using-the-two-pointer-technique) 127 | - __Problem:__ [Mei Mei and dress](https://www.codechef.com/problems/ALR20F) 128 | 129 | - Dynamic Programming 130 | - __Tutorial:__ [DP over Subsets](https://codeforces.com/blog/entry/337) 131 | - __Problem:__ [Disconnecting Cities](https://www.codechef.com/GW19MOS/problems/DICITIES) 132 | - __Hint:__ DP over Subsets _[think about solution close to O(3^(n-k))) (3^n operations are needed if you want to iterate through all subsets of set S for every S , where S is a subset of X , size of X is n. Proof : It is summation N_c_i * 2^i = 3^N)]_ 133 | 134 | - Graphs (Strongly Connected Components, Topological Sort, Binary Search) 135 | - __Problem:__ [Visiting Friends](https://www.codechef.com/problems/MCO16405) 136 | - __Problem:__ [Chef and Roads](https://www.codechef.com/problems/CL16BF) 137 | - __Problem:__ [Crypto Trading](https://www.codechef.com/AMR17ROL/problems/CRYPCUR) 138 | 139 | - Number Theoretic Transform (NTT) 140 | - __Tutorial:__ [Prufers Code](https://cp-algorithms.com/graph/pruefer_code.html) 141 | - __Tutorial:__ [Polynomial Multiplication using NTT](https://codeforces.com/blog/entry/43499) 142 | - __Problem:__ [High Interview](https://www.codechef.com/problems/HIGHINT) 143 | - __Problem:__ [Trees and Degrees](https://www.codechef.com/MAY19A/problems/TREDEG) 144 | 145 | - 2-Satisfiability Problem (2-SAT) 146 | - __Tutorial:__ [2-SAT Algorithm](https://cp-algorithms.com/graph/2SAT.html) 147 | - __Problem:__ [Constrained Selection](https://www.codechef.com/problems/CONSEL) 148 | - __Problem:__ [Vertex Cover](https://www.codechef.com/CHN17ROL/problems/VRTXCOVR) 149 | 150 | - Flows 151 | - Max flow (Simple) 152 | - __Tutorial:__ [Maximum Flow Introduction](https://www.geeksforgeeks.org/max-flow-problem-introduction/) 153 | - __Problem:__ [New Friends](https://www.hackerearth.com/practice/algorithms/graphs/maximum-flow/practice-problems/algorithm/new-friends/description/) 154 | - Minimum Cost Maximum Flow 155 | - __Tutorial:__ [Minimum Cost Maximum Flow](https://cp-algorithms.com/graph/min_cost_flow.html) 156 | - __Problem:__ [Bus Routes](https://www.codechef.com/problems/KGP16J) 157 | 158 | - Heavy-Light Decomposition 159 | - __Tutorial:__ [Heavy-Light Decomposition](https://blog.anudeep2011.com/heavy-light-decomposition/) 160 | - __Problem:__ [Adi and the Tree](https://www.codechef.com/SNCKEL19/problems/ADITREE) 161 | -------------------------------------------------------------------------------- /Week_3_ML/README.md: -------------------------------------------------------------------------------- 1 | # Week 3 | Machine Learning 2 | 3 | ## Introduction 4 | 5 | Even though ML doesn't actually need an introduction in today's world, where millions of people research in this field, and where every other day there's a new *state of the art* techinique. Machine Learning is basically automating and improving the learning process of computers based on their experiences without being actually programmed i.e. *without* any human assistance. 6 | 7 | In **Traditional Programming**, We feed in Data (*Input*) + Program (*Logic*), run it on machine and get output. 8 | 9 | While in **Machine Learning**, We feed in Data (*Input*) + *Output*, run it on machine during training and the machine creates its own program(*Logic*), which can be evaluated while testing. 10 | 11 | Excited? Now go on, begin your journey into this vast and the most buzzing field in Computer Science here. 12 | 13 | ## Resources 14 | 15 | - ### [Machine Learning](https://www.wncc-iitb.org/wiki/index.php/Machine_Learning) 16 | 17 | *This is for those who have some coding experience, but never done Machine Learning before. If you feel your concepts about Python or programming in general are shaky, first complete our tutorial on [**Python**](https://github.com/wncc/CodeInQuarantine/tree/master/Week_1_Python). Even if you have completed the much renowned **AndrewNG** [Machine Learning](https://www.coursera.org/learn/machine-learning) course, go through this article, because here we implement every algorithm in Python instead of MATLAB.* 18 | 19 | - ### [Deep Learning](https://www.wncc-iitb.org/wiki/index.php/Deep_Learning) 20 | 21 | *Only **after** you have gone through and implemented the algorithms in the above article should you continue with this one. It introduces you to all the important concepts and applications of **Neural Networks*** 22 | 23 | ## Tasks 24 | 25 | ### 1. Stanford CS231n Assignments 26 | 27 | Stanford runs an amazing course [CS231n: Convolutional Neural Networks for Visual Recognition](http://cs231n.stanford.edu/) whose assignments serve as a perfect way to practice and strengthen your concepts. 28 | 29 | - The [First Assignment](https://cs231n.github.io/assignments2019/assignment1/) makes you implement *kNN*, *SVM*, *Softmax*, and a simple *Neural Network* without any ML libraries. 30 | 31 | - The [Second Assignment](https://cs231n.github.io/assignments2019/assignment2/) helps you get acquainted with *Backpropogation*, *Batch Normalisation*,*Dropout*, *CNNs*, and *deep learning frameworks*. 32 | 33 | - The [Third Assignment](https://cs231n.github.io/assignments2019/assignment3/) is where you'll implement *RNNs*, *LSTMs*, and *GANs* 34 | 35 | _You should definitely checkout their excellent [Notes](https://cs231n.github.io/) and [Video Lectures](https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv) if you are stuck somewhere, or have difficulties in understanding some particular concepts._ 36 | 37 | ### 2. Document Classification 38 | 39 | Document classification is an example of Machine Learning (ML) in the form of Natural Language Processing (NLP). This is especially useful for publishers, news sites, blogs or anyone who deals with a lot of content. 40 | Through this assignment, we will try to implement different clustering algorithms to classify documents from the real-world [BBC Dataset](https://www.kaggle.com/shivamkushwaha/bbc-full-text-document-classification). 41 | 42 | #### Data Preprocessing: 43 | - Download the [__BBC Dataset__](https://www.kaggle.com/shivamkushwaha/bbc-full-text-document-classification) [~ 5 MB] which consists of 2225 documents from the BBC news website corresponding to stories in __5 topical areas__ (business, entertainment, politics, sport, tech) from 2004-2005. 44 | - Write a function that reads all the `*.txt` files present in each of the 5 topical folders, [normalize the text](https://programminghistorian.org/en/lessons/normalizing-data) for each document & create a dataframe (use `pandas`) with headers similar to: 45 | 46 | | sr_no | doc_text | class | 47 | |--|--| -- | 48 | | 1 | Ad sales boost time ... that stake. | business | 49 | | ... | ... | ... | 50 | 51 | - Now, we can create feature vectors for each of these documents & append them as corresponding columns to the above dataframe. Try to experiment with the following models to create feature vectors: 52 | - [Bag of Words Model](https://www.geeksforgeeks.org/bag-of-words-bow-model-in-nlp/) 53 | - [TF-IDF Model](https://towardsdatascience.com/natural-language-processing-feature-engineering-using-tf-idf-e8b9d00e7e76) 54 | - Any other that you may find interesting 55 | 56 | You can choose to implement these from scratch or use existing implementations from `sklearn`. 57 | 58 | The dataframe should now look like: 59 | | sr_no | doc_text | class | bow_vectors | tfidf_vectors | 60 | |--|--| -- | -- | -- | 61 | | 1 | ad sales boost time ... that stake | business | {"ad": 1, ...} | {"ad": 1, ...} 62 | | ... | ... | ... | .. | .. | 63 | 64 | - Shuffle the rows of this dataframe & split it into a training, validation & test set. You could choose splits such as 70 : 10 : 20 [training : validation : test] 65 | 66 | #### Training the Classifier 67 | 68 | You can now implement the following algorithms for the document classification task: 69 | - K-Means Clustering 70 | - KNN Clustering 71 | - Gaussian Mixture Model (GMM) 72 | 73 | You can try to work with different distance formulations like [Cosine Distance](https://en.wikipedia.org/wiki/Cosine_similarity), [Euclidean Distance](https://en.wikipedia.org/wiki/Euclidean_distance), [Manhattan Distance](https://xlinux.nist.gov/dads/HTML/manhattanDistance.html), [Chebyshev Distance](https://en.wikipedia.org/wiki/Chebyshev_distance), etc. 74 | 75 | You can use techniques such as K-Fold Cross-Validation to check for over-fitting of the model. 76 | 77 | Once trained, test your model on the 'test' split. 78 | 79 | 80 | ### 3. Kaggle Contests 81 | 82 | [Kaggle](https://www.kaggle.com/) is a platform for predictive modelling and analytics competitions in which companies and researchers post data and statisticians and data miners compete to produce the best models for predicting and describing the data. 83 | 84 | Following are a list of some contests that you can take part in by creating ML/DL Models: 85 | 86 | - [Dog Breed Identification Challenge](https://www.kaggle.com/c/dog-breed-identification/data) 87 | - [Mushroom Classification](https://www.kaggle.com/uciml/mushroom-classification) 88 | - [Hand Gesture Recognition](https://www.kaggle.com/sprakash08/hand-gestures-recognition) 89 | - [FIFA 2019 Players' Wages](https://www.kaggle.com/c/fifa2019wages/data) 90 | - [Elo Merchant Category Recommendation Challenge](https://www.kaggle.com/c/elo-merchant-category-recommendation) 91 | 92 | You can try any preprocessing methods, algorithms & ensembles for these challenges. Augmented deep Learning architectures such as CNNs, Autoencoders & RNNs could come in handy while attempting these challenges. 93 | 94 | 95 | ### 4. Denoising an image 96 | 97 | 98 | Go to [denoising-task](./denoising-task) to find the problem statement and relevant data. 99 | You don’t need to know about *Markov Random Fields* (MRF) priors for attempting this task. The following information is sufficient, though slides for MRF priors and image denoising are present if you wish to learn more: 100 | 101 | For each of the `g()` function : 102 | 103 | - Minimise the following function (by gradient descent) to get the denoised image : 104 | Σ{a*(yi-xi)2 + g(xi-xi1)+g(xi-xi2)+g(xi-xi3)+g(xi-xi4) } 105 | where i1, i2, i3, i4 are the 4 neighbouring pixels of i. `y` is the noisy image and `x` is the denoised image. 106 | 107 | - The role of `g()` is of *edge preservation* (neighbouring values of pixels shouldn’t differ by much , and should differ by much only at edges) 108 | , the role of **(yi-xi)2** is *noise removal*. While `a` is for giving weights to noise removal and edge preservation -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/Slides_MIC_ImageDenoising.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/Slides_MIC_ImageDenoising.pdf -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/Slides_MIC_ImagePrior.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/Slides_MIC_ImagePrior.pdf -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/data/mri_image_noise_level_high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/data/mri_image_noise_level_high.png -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/data/mri_image_noise_level_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/data/mri_image_noise_level_low.png -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/data/mri_image_noise_level_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/data/mri_image_noise_level_medium.png -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/data/mri_image_noiseless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/data/mri_image_noiseless.png -------------------------------------------------------------------------------- /Week_3_ML/denoising-task/task.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_3_ML/denoising-task/task.pdf -------------------------------------------------------------------------------- /Week_4_Git/README.md: -------------------------------------------------------------------------------- 1 | # Week 4 | Git/GitHub 2 | 3 | ## Introduction 4 | Git is a Version Control System which helps you collaborate and work with other programmers on projects easily. So now the question is what is a Version Control System? Version Control is a system that records all the changes you do to your files and logs them. This enables you to go back to them and start working on your files from that point. It's basically like time travel. If while working on your files you realise that you have done something majorly wrong but can't sit and undo every change. The best option for you is to ask your version control system to simply go back to the instance from where you want to start again. 5 | 6 | As you can see, having a version control system has a lot of benefits. It helps to keep track of previous versions of your code. On the other hand, GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. 7 | 8 | Whether or not you're working in a team you'd really want to use a Version Control System for managing project and a platform like GitHub to host your own code and share it with others. 9 | 10 | Version Control System is also an important tool for Open Source software. Open source software is software with source code that anyone can inspect, modify, and enhance. They use platforms like github to host the code and make it available for everyone. 11 | 12 | Follow the following resources to get acquainted with these important tools and begin collaborating with the world! 13 | 14 | ## Resources 15 | 16 | - ### [Git - A Version Control System](https://www.wiki.wncc-iitb.org/index.php?title=Git) 17 | - ### [Github - A Code Hosting Platform](https://www.wiki.wncc-iitb.org/index.php?title=Github-tutorial) 18 | - ### [Open Source basics](https://www.wiki.wncc-iitb.org/index.php?title=Open_Source) 19 | 20 | 21 | 22 | ## Tasks 23 | 24 | ### 1. Git Squashing 25 | 26 | Git squashing is an excellent way to keep commit histories clean, organized, and formal. The task is simple. Download the file [q4.zip](./q4.zip). It has a git folder named q4. 27 | 28 | `git log --all --graph` 29 | 30 | This command will give you the entire commit history of this git folder q4. It has 23 commits in total, from three different users, even on different bases that were later merged. Your task is to squash all consecutive commits from a user into a single commit. 31 | Here's how it looks right now: 32 | 33 | ![](./initial.PNG) 34 | 35 | Here's how it must look finally: 36 | 37 | ![](./final.PNG) 38 | 39 | 40 | ### 2. [Git Game](https://github.com/git-game/git-game) 41 | 42 | Once you are familiar with git and github give this a try. This is a terminal game designed to test your knowledge of git commands. Each level in the game is a task to perform on this repo. Once you perform that task, you will be given your next task. There are a total of ten levels, each one harder than last! 43 | 44 | ### 3. [Git Branching](https://learngitbranching.js.org/) 45 | 46 | Head to this link to practice and understand the concept of branching in git with an online git repository simulator. 47 | 48 | ### 4. [First Contribution](https://github.com/firstcontributions/first-contributions) 49 | 50 | Make your first Open Source contribution. 51 | 52 | -------------------------------------------------------------------------------- /Week_4_Git/initial.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_4_Git/initial.PNG -------------------------------------------------------------------------------- /Week_4_Git/q4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_4_Git/q4.zip -------------------------------------------------------------------------------- /Week_4_Git/result.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_4_Git/result.PNG -------------------------------------------------------------------------------- /Week_5_FrontEnd/README.md: -------------------------------------------------------------------------------- 1 | # Week 5 | Frontend Development 2 | 3 | ## Introduction 4 | 5 | In simple words, web development is using programming tools and writing codes *tell* a website what to do or how to function. Web Development is the one of the most sought-after field in CS, and a highly paid one as well. Being a developer, you can bring your ideas to life and help others see what you think a better world looks like. Most companies need Developers to develop, maintain and fix their applications & services. Either way, it's a good idea to start learning Development. 6 | 7 | ## Resources 8 | 9 | - ### [Introduction](https://www.wncc-iitb.org/wiki/index.php/Web_Development) 10 | 11 | *Don't have any clue what Web Development actually is? Head here to get an overall idea.* 12 | 13 | - ### [HTML](https://www.wncc-iitb.org/wiki/index.php/HTML) 14 | 15 | ***Hypertext Markup Language** is the first thing to learn when getting started with Web Developoment.* 16 | 17 | - ### [CSS](https://www.wncc-iitb.org/wiki/index.php/CSS) 18 | 19 | ***Cascading Style Sheets** is essential for controlling layout and aesthetics of a webpage. CSS basically helps create a uniform look and feel across several pages of a website* 20 | 21 | - ### [JavaScript](https://www.wncc-iitb.org/wiki/index.php/JavaScript_Basics) 22 | 23 | *JS allows the webpage to interact with user i.e. it allows developers to make **Dynamic** pages.* 24 | 25 | 26 | ## Tasks 27 | 28 | ### 1. Personal Website 29 | 30 | If this is the first time you're learning HTML & CSS, try making a website that has the following features - 31 | - More than 1 page, with inter-connectivity among pages 32 | - Tables, images, lists 33 | - A seperate stylesheet file with mobile responsive `@media` query, different selectors 34 | - Components of `Boostrap4` 35 | 36 | ### 2. Counter 37 | 38 | Write a simple script to implement the following: 39 | - The default counter begins at the number 0. 40 | - When you click *Lower Count*, the counter should decrement by 1. If the count goes below 0, the number should change to the color red. 41 | - When you click *Add Count*, the counter should increment by 1. If the count goes above 0, the number should change to the color green. 42 | 43 | [Template](https://romeojeremiah.github.io/Counter-Project/) 44 | [Source Code](https://github.com/romeojeremiah/Counter-Project) 45 | 46 | 47 | ### 3. Calculator 48 | 49 | Make a Calculator with basic functions, or with advanced ones as well, as you wish! 50 | 51 | [Template](https://romeojeremiah.github.io/Calculator-JavaScript-Project/) 52 | [Source Code](https://github.com/romeojeremiah/Calculator-JavaScript-Project) 53 | 54 | 55 | ### 4. Browser Extension 56 | 57 | There are thousands of browser extensions that exist, that run scripts to make your life simpler. Creating extensions is fairly simple, and you could create one to automate something that you regularly do. Head [here](https://developer.chrome.com/extensions) to get started with developing extensions for Google Chrome, you can also look at this [tutorial](https://medium.com/@LindaVivah/the-beginner-s-guide-build-a-simple-chrome-extension-in-minutes-498308ea406a). Although extensions exist for almost everything, you can remake your own as well! Here are some ideas for an extension - 58 | - Log in to `internet.iitb.ac.in` or `moodle.iitb.ac.in` with one click 59 | - Block Websites for a certain period of time everyday 60 | - A search bar which opens the top YouTube video recommendation for that keyword 61 | - Display the total duration of a youtube playlist, given its link 62 | 63 | ### 5. JavaScript Implementations 64 | 65 | These are some cool and simple implementations to help you realise how powerful JavaScript can be. You can implement them too : 66 | - [To-Do list](https://codepen.io/JohnPaulFich/pen/MXmzzM) 67 | - [Live Wallpaper](https://codepen.io/b4rb4tron/pen/wjyXNJ) 68 | - [Maze](https://codepen.io/TheCodeDepository/pen/jKBaoN?page=8) 69 | -------------------------------------------------------------------------------- /Week_6_Backend/README.md: -------------------------------------------------------------------------------- 1 | # Week 6 | Backend Development 2 | 3 | ## Introduction 4 | 5 | Last week we introduced you to basics of front end development. However the websites that you created did not have any state. Once you closed the site all information about what you did on the site was lost. Ideally you would like your application to interact with some server so that this information is stored. For instance in your personal website you would like it if a visitor can post a comment which gets stored permanently. This is where the backend comes in. The backend refers to the code running on the server of your website. This code thus allows you to modify resources on the server. For example this backend code could take the comment that you posted via an HTTP request and store it in a database. The next time your site is visited the backend would fetch data from the database and provide it to you through the HTML front end that we talked about last week. Your backend could also do computational heavy tasks which cannot be done in your computer alone. WolframAlpha is one example that uses this very innovatively in their backend. Google uses their backend to run crawlers on the internet that bring you your search results. 6 | 7 | It is however very difficult to write backend code without using external frameworks. You will have to manually listen for requests and then serve data while maintaining a connection. Fortunately there are some great frameworks out there that make this process very simple. Let us go through a very powerful framework called Django which allows you to write large scale applications using Python. 8 | 9 | ## Resources 10 | 11 | - ### [Introduction to Django](https://www.wncc-iitb.org/wiki/index.php/Django) 12 | *Get introduced to Django through this article* 13 | 14 | - ### [Basic Django Tutorial](https://www.wncc-iitb.org/wiki/index.php/The_Django_Logic) 15 | *Create a very simple backend using Django through this tutorial* 16 | 17 | - ### [Introduction to Databases](https://www.wncc-iitb.org/wiki/index.php/Database_Management_System) 18 | 19 | *Learn more about databases that you will use to add storage and other features to your backend application* 20 | 21 | - ### [Introduction to APIs in Django](https://www.wncc-iitb.org/wiki/index.php/Django_REST_Framework) 22 | *Provide extensibility to your applications by allowing other users to extend your applications using their own code* 23 | 24 | - ### [Introduction to NodeJS](https://www.wncc-iitb.org/wiki/index.php/Node.js) 25 | *There are other backend frameworks as well. This time we introduce you to NodeJS which allows you to run javascript on the backend also. This means that both your front end and backend can be in one single language, Javascript* 26 | ## Tasks 27 | 28 | ### 1. Your Own Blog 29 | 30 | All of us have at one point in time wanted to create a blog where we share our thoughts. Most people use Wordpress or Blogger for this. Your task, if you choose to accept it, is to create your own blogging system using Django. 31 | 32 | - The blog must have posts, comments and a login system 33 | - The login system will allow users to login and create new posts. 34 | - There should be an admin interace through which an admin can approve/reject posts so that malicious posts are kept out. 35 | - Add features like adding images to the blog and make the design more beautiful using frameworks like Bootstrap that we introduced you to last week. 36 | 37 | ### 2. Your Own Chat App 38 | 39 | Now we ask of you to make your own whatsapp! Your task is to create a simple chat application using Django. 40 | 41 | - The application does not have to be real time. You can simply make the front end make a request (this is called a GET or POST request) periodically to the server and get the messages. 42 | - Once you are done with this you can try researching on Sockets. Sockets allow communication to happen in real time over the internet by using what is called the WebSockets technology. There are numerous modules available for Django that make this simple for you to use. One such module is called SocketIO. You will have to google and read various tutorials to make this work. 43 | - Now you must implement an API for your application. Once you have done this try integrating your chat app to a python script that will send messages periodically. 44 | - If you want you can also do this task using NodeJS to learn a different way of doing things. 45 | 46 | ### 3. Your Own Instagram 47 | 48 | This time you will create a simple photo sharing application using Django. 49 | 50 | - This application will allow users to login and upload pictures. 51 | - Implement a common dashboard for every user where their pictures will be seen 52 | - Add commenting features and tagging features. 53 | - If you have done the Machine Learning Code in Quarantine, you could experiment with running your machine learning models on the backend. As your backend is in python and your ML code was also in python you can intergate them. Add a zone in your application for adding cat images. Create a classifier using Keras/TensorFlow that will detect cats in images and link this with your application. This may get a bit difficult to implement so make sure to search online for various implementations. 54 | 55 | That's it for this week. We hope to have you onboard next week for some advanced front end development. 56 | -------------------------------------------------------------------------------- /Week_7_AdvancedFrontEnd/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Week 7 | Advanced Frontend Development 3 | 4 | ## Introduction 5 | 6 | Back in the day, web developers would implement front end logic by relying heavily on vanilla JS and jQuery. But, as front end applications became more and more complex, the tools rose to meet that complexity and Javascript Frameworks came into picture. 7 | A **JavaScript framework** is a tool that you can leverage to develop advanced web applications.. At their most basic, JS frameworks are collections of JavaScript code libraries that provide developers with pre-written JS code to use for routine programming features and tasks—literally a framework to build websites or web applications around. 8 | 9 | Think of building websites and web apps like building a house—when you set out to build a house, you could create all of your own building materials from scratch and start building without any schematics, but that approach would be incredibly time-consuming and doesn’t make a lot of sense. It’s more likely that you would purchase pre-manufactured building materials (wood, bricks, countertops, etc.) and then assemble them based on a blueprint to fit your specific needs.Coding is very similar. When you set out to code a website, you could code every aspect of that site from scratch, but there are certain common website features that make more sense to apply from a template. And that’s where JavaScript frameworks come into play. 10 | 11 | **JS libraries** like jQuery are used by plugging library code into the rest of your site’s code when needed while with a framework the process is more holistic—a framework doesn’t just offer an individual solution to a coding problem, it provides a structure (like a skeleton or a scaffolding…or a framework) that organizes the parts of your site where the framework is implemented. 12 | 13 | [Here](https://blog.logrocket.com/history-of-frontend-frameworks/) is an interesting read if you would like to read about the history of frontend frameworks. 14 | 15 | **Native app development** is the creation of software programs that run on specific devices and platforms. Unlike websites and web applications, native mobile apps don’t run in the browser. You need to download them from platform-specific app stores such as Apple’s App Store and Google Play. Native app development requires different skills and technologies than mobile website development. You don’t have to worry about browser behavior and compatibility. You can use the native features of mobile OSs to deliver the user experience and implement the functionalities of your app. 16 | 17 | 18 | ## Resources 19 | 20 | - ### [ReactJS](https://www.wncc-iitb.org/wiki/index.php/ReactJs) 21 | *React is a front end tool to build both UI components and whole UIs – everything that concerns putting together visual elements, binding data to those elements, and specifying the logic governing it. Head to this link to more and learn how to build web apps with React* 22 | 23 | - ### [Angular](https://www.wncc-iitb.org/wiki/index.php/Angular) 24 | *Currently, one of the most popular frameworks for frontend development, Angular is a TypeScript-based open-source web application framework led by Google. While React is more geared towards being as flexible as possible, giving developers the choice of architectures and structures. Angular, however, enforces a certain structure onto the project.* 25 | 26 | - ### [Android App Dev](https://www.wncc-iitb.org/wiki/index.php/Android_App_Development) 27 | *Head here to get to know about the fundamentals of App Development* 28 | 29 | - ### [Android Studio Tutorial](https://www.wncc-iitb.org/wiki/index.php/Android_Studio) 30 | *Android Studio is Android's official IDE. It is a framework that includes every tools necessary to develop native Android apps. Head to this link to start making your first android application.* 31 | 32 | ## Tasks 33 | 34 | ### 1. React/Angular 35 | #### a) Weather App 36 | Display a 5-day weather forecast, where each day shows the high and low temperatures, and an image for sunny/rainy/cloudy/snowy. Use hard-coded data until you’ve got everything rendering correctly. 37 | 38 | 39 | ![](./weather.png) 40 | 41 | For added practice, here are a few ways you could expand on the app: 42 | - Add the ability to click on a day, and see its hourly forecast. 43 | - Add React Router to the project and follow the quick start guide [here](https://reacttraining.com/react-router/web/guides/quick-start) to add routes, such that "localhost:3000/" shows the 5-day forecast, and "localhost:3000/[name-of-day]" shows the hourly forecast for a particular day. 44 | - Sign up for a free API key from [Open Weather Map](https://openweathermap.org/api), fetch a real 5-day forecast, and feed that data into your app. 45 | 46 | 47 | #### b) Contact Us App 48 | All websites have a Contact Us page which allows the customer to enter their details and send their messages/queries directly from the website. 49 | - Your task is to create this Contact Us component in React having the fields as shown in the image below. This Contact Us component can then be easily integrated with any website/web app. The form should be complete with validation for fields like email and all fields are compulsory. 50 | - Finally, we have to send an email from the customer's email account to our email account with the contact form data. This will be handled from the backend. For the backend part you will need a web server. 51 | - You have to make an API which will take form data from the front end and handle the email functionality. You can chose to use any backend framework/language for this purpose. 52 | 53 | ![](./contact.png) 54 | 55 | #### c) Stock Market Dashboard 56 | Investors and analysts typically analyze the price movement of any stock before investing in it, so the graphical representation of this trend makes analysis easier. Through this task, we will create a dashboard to visualize and compare the stock prices of different companies (like GOOG, AAPL, GOOGL, AMZN, etc.). 57 | 58 | * To get started with such dashboards, the easiest way is to pick up a __Template__ & start modifying it according to your needs. There are tons of free templates avaiable for use (both for React & Angular). Here are some websites that offer great free templates: 59 | * [Angular Dashboard Templates](https://www.codeinwp.com/blog/best-angular-admin-dashboard-templates/) 60 | * [React Dashboard Templates](https://material-ui.com/store/collections/free-react-dashboard/) 61 | * Next, the most important aspect of this task is to obtain the data about stock prices. This can be done by leveraging APIs that offer such services. Some interesting APIs that can be queried to obtain stock-related data are: 62 | * [IEX API](https://iexcloud.io/docs/api/) 63 | * [Tiingo API](https://api.tiingo.com/documentation/general/overview) 64 | * [World Trading Data API](https://www.worldtradingdata.com/documentation) 65 | 66 | _Note: Most of these APIs are free for a certain threshold of requests (per hour basis), so go through the rate limits carefully_ 67 | 68 | Here are some tutorials that will help you understand how to send requests to API endpoints from Angular/React & use the obtained results: 69 | * [Angular REST API & Httpclient Tutorial](https://www.djamware.com/post/5d8d7fc10daa6c77eed3b2f2/angular-8-tutorial-rest-api-and-httpclient-examples) 70 | * [React API Usage Tutorial](https://pusher.com/tutorials/consume-restful-api-react) 71 | 72 | * Once built, your dashboard should look something similar to the image below (though not that complex! :P). The basic features include: 73 | * Allow a user to see the stock prices history of a particular company 74 | * Compare prices of stocks for different companies 75 | * Show details about stocks (trading volume, market cap, opening & closing prices, etc.) 76 | * You can add any more features that you wish to 77 | * _Bonus: With prior knowledge of ML & Backend Development, you could create a model to predict stock prices, expose this service as a REST API through a backend framework & integrate it with your dashboard to predict future stock prices of a company_ 78 | 79 | ![](./stocks.jpg) 80 | 81 | ### 2. Android Studio 82 | #### a) To-do App 83 | Make the classic To-Do app, with a layout and features that suit you. You could use it in your daily life too. [Here](https://github.com/avjinder/Minimal-Todo) is an implementation. 84 | 85 | #### b) Pedometer 86 | Make a simple, light-weight pedometer app which uses the hardware sensor of the device to calculate the steps taken. Find an example [here](https://github.com/j4velin/Pedometer). 87 | -------------------------------------------------------------------------------- /Week_7_AdvancedFrontEnd/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_7_AdvancedFrontEnd/contact.png -------------------------------------------------------------------------------- /Week_7_AdvancedFrontEnd/stocks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_7_AdvancedFrontEnd/stocks.jpg -------------------------------------------------------------------------------- /Week_7_AdvancedFrontEnd/weather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wncc/CodeInQuarantine/39284c5036d5b92fce75d913cf2409cacb36c191/Week_7_AdvancedFrontEnd/weather.png -------------------------------------------------------------------------------- /Week_8_Blockchain/README.md: -------------------------------------------------------------------------------- 1 | # Week 8 | Blockchain 2 | 3 | ## Introduction 4 | 5 | First, it was "cloud computing," then "big data," followed by the "internet of things" and "artificial intelligence" - these are all buzzwords from technological paradigm shifts that eventually push the privacy management envelope, & the next buzzword, which is capable of impacting the technology stack of several domains including financial firms, consultants & healthcare providers is "blockchain". However, for many, the blockchain is still a nebulous concept. And even if they understand the “what”, understanding why it should be used and what problems it can solve remains unclear. 6 | 7 | A blockchain is, in the simplest of terms, a time-stamped series of immutable records of data that is managed by a cluster of computers not owned by any single entity. Each of these blocks of data (i.e. block) is secured and bound to each other using cryptographic principles (i.e. chain). So, what is so special about it and why are we saying that it has industry-disrupting capabilities? 8 | 9 | To understand this, head over to the resources & dive into the world of blockchain technology. 10 | 11 | ## Resources 12 | 13 | - ### [Introduction to Blockchain](https://www.wncc-iitb.org/wiki/index.php/Introduction_to_Blockchain) 14 | _Head here to understand the fundamental concepts behind blockchain technology & what makes it so popular_ 15 | 16 | - ### [Smart Contract Development in Ethereum](https://www.wncc-iitb.org/wiki/index.php/Ethereum_Smart_Contracts_Tutorial) 17 | _A DApp (Decentralized Application) is similar to a traditional Web application, but communicates with a blockchain for data storage & retrieval. Since its inception, Ethereum has provided a large arena for a multitude of DApps to be built on top of it. The smart contract represents the core logic of a decentralized application because the business logic is represented by one or several smart contracts interacting with the underlying blockchain._ 18 | 19 | _With this tutorial, we walk you through the process of setting up your development environment for Ethereum development and creating, testing & deploying your first smart contract on Ethereum._ 20 | 21 | - ### [DApp Development on Ethereum with Solidity & Web3](https://www.wncc-iitb.org/wiki/index.php/DApp_Development) 22 | _Once you are familiar with basic smart contract development, you can actually use them & build your very own decentralized applications (DApps). This is an article that talks about the essentials of Ethereum DApp Development, including Web3 & the libraries to use Web3, along with a curated list of tutorials to help you understand how to build DApps from scratch._ 23 | 24 | - ### Blockchain Beyond Ethereum 25 | _Although we have spoken a lot about Ethereum & development on it, blockchain is certainly not limited to Ethereum. There are tons of other chains out there with hundreds of awesome DApps built on them. Here, we provide you with some resources to understand about different blockchains & also get started with developing on them. We also have some resources for __crypto & math enthusiasts__ about stuff like Zero-Knowledge Proofs._ 26 | 27 | - #### EOSIO 28 | - [Introduction to EOS [Part 1]](https://blockgeeks.com/guides/eos-beginners-guide-part-1/) [[Part 2]](https://blockgeeks.com/guides/what-is-eos-part-2/) 29 | - [Elemental Battles: Learn EOSIO by Building a Game](https://battles.eos.io/) 30 | - [EOSIO Developers Portal](https://developers.eos.io/welcome/latest/index) 31 | - [Comparison between EOS & Ethereum](https://blockgeeks.com/guides/ethereum-vs-eos-ultimate-comparison-guide/) 32 | 33 | - #### Tezos 34 | - [Beginner's Guide to Tezos](https://medium.com/@linda.xie/a-beginners-guide-to-tezos-c9618240183f) 35 | - [Tutorial: Building a DApp on Tezos](https://hackernoon.com/build-your-first-dapp-on-tezos-rwgl3ymb) 36 | - [Tezos Developer Documentation](https://tezos.gitlab.io/index.html) 37 | 38 | - #### Hyperledger Fabric 39 | - [What is Hyperledger?](https://blockgeeks.com/guides/hyperledger/) 40 | - [Guide to Setting up Hyperledger Fabric](https://medium.com/akeo-tech/step-by-step-guide-to-set-up-hyperledger-fabric-network-b80977c29b8a) 41 | - [Hyperledger Fabric Comprehensive Tutorial [Part 1]](https://blockgeeks.com/guides/hyperledger-fabric-tutorial-part-1) [[Part 2]](https://blockgeeks.com/guides/hyperledger-fabric-tutorial-2/) [[Part 3]](https://blockgeeks.com/guides/hyperledger-fabric-tutorial-part-3/) 42 | - [Official Fabric Documentation](https://hyperledger-fabric.readthedocs.io/en/release-2.0/) 43 | 44 | - #### Some Other Cryptocurreny & Blockchain Networks 45 | - [Quorum](https://blockgeeks.com/guides/quorum-a-blockchain-platform-for-the-enterprise/) 46 | - [Monero](https://blockgeeks.com/guides/monero/) 47 | - [ZCash](https://blockgeeks.com/guides/zcash/) 48 | - [Cardano](https://blockgeeks.com/guides/what-is-cardano/) 49 | - [AION Network](https://blockgeeks.com/guides/what-is-aion/) 50 | - [Cosmos Blockchain](https://blockgeeks.com/guides/cosmos-blockchain-guide/) 51 | 52 | - #### Zero-Knowledge Proofs 53 | - [Brief Introduction to Zero-Knowledge Proofs](https://towardsdatascience.com/what-are-zero-knowledge-proofs-7ef6aab955fc) 54 | - [zkSNARKs](https://z.cash/technology/zksnarks/) 55 | - [zkSTARKs [Part 1]](https://vitalik.ca/general/2017/11/09/starks_part_1.html) [[Part 2]](https://vitalik.ca/general/2017/11/22/starks_part_2.html) [[Part 3]](https://vitalik.ca/general/2018/07/21/starks_part_3.html) 56 | - [Bulletproofs](https://medium.com/coinmonks/zero-knowledge-proofs-using-bulletproofs-4a8e2579fc82) 57 | - [Zokrates: Zero-Knowledge on Ethereum](https://zokrates.github.io/) 58 | 59 | - ### Build Your Own Blockchain 60 | - [Build a Javascript Blockchain [Part 1]](https://www.codementor.io/@savjee/how-to-build-a-blockchain-with-javascript-part-1-k7d373dtk) [[Part 2]](https://www.codementor.io/@savjee/implementing-proof-of-work-blockchain-in-javascript-part-2-k9ozymkqw) 61 | - [Creating Minamist Blockchain using Python](https://hackernoon.com/learn-blockchains-by-building-one-117428612f46) 62 | - [Building a Blockchain in Golang (Video #18-27 in this Series)](https://www.youtube.com/watch?v=uCR_A-Bphl0&list=PLJbE2Yu2zumCe9cO3SIyragJ8pLmVv0z9) 63 | 64 | ## Tasks 65 | 66 | 1. ### Full-Fledged NFT 67 | In the [DApp Development on Ethereum with Solidity & Web3](https://www.wncc-iitb.org/wiki/index.php/DApp_Development) tutorial, we shared a tutorial to create a DApp & implement a basic custom ERC721 token. The tutorial only involves _minting_ these crypto-tokens. 68 | 69 | This task intends to extend the DApp created in the above tutorial to include the full functionality of an ERC721 NFT (which includes transferring tokens, setting allowances, buring tokens, etc.). For this, you would have to go through the [specifications of ERC721 Token Standard](https://medium.com/crypto-currently/the-anatomy-of-erc721-e9db77abfc24). 70 | 71 | The UI could should be modified to display the token owner as well with each token & have an interface for transferring these tokens. 72 | 73 | _Bonus: If you have a fair understaning of both ERC20 & ERC721, you could try and create a custom ERC20 token & bind it to your NFT to create a crypto marketplace for your NFTs. For this, you may need to add additional fields to the basic ERC721 token to include its cost in terms of the ERC20 token. Then, you would have to write a wrapper contract for the marketplace which basically uses the `transfer()` function from both tokens in a single transaction to conduct a transaction._ 74 | 75 | 2. ### Incentivized Content Sharing Platform (Minimalistic Version) 76 | In this task, you are supposed to extend the ideas discussed in the ERC20 & IPFS-related tutorial respectively in order to create a platform where a user can upload documents to IPFS, store the hash on the blockchain & share the hash with other users [This may not be done on the platform directly]. Functionality should be there such that a reader can tip the content creator (or person sharing the file) with some ERC20 tokens (or ETH as well) if (s)he finds the content interesting. --------------------------------------------------------------------------------