# Fresher's Tasks 2019-20

These tasks are meant to help you in understanding the basics of various fields in CS; moreover, they will help you in building confidence in reading and writing code. In the present world, learning to learn is one of the key skills that one should develop which will help you grow. So approach these problems with the curiosity to learn and try to build your skills.

**Submission Guidelines**

Make a repository in GitHub with the name *amfoss-tasks* and please store your results and project code in the respective folders with the name *task-#* (where # is the task number). You can explain how you have approached the solution in a README.MD file.

Updated Deadline - 7 January, 2020

**Make sure you don’t get sidetracked into learning the whole language for completing a task. You only have to learn the necessary things which are required to complete the task.**

**Note - Check your email inbox regularly so that you do not miss important communication from us.**

Resources: <https://github.com/amfoss/vidyaratna>

## 0. Install Ubuntu 18.04

Resources: <https://github.com/amfoss/vidyaratna#linux>

You can get the ISO file from your friends or download it from the [Ubuntu website](https://ubuntu.com/#download). Try writing a blog on the same so that it’s useful for others. [Create a Blog](https://github.com/amfoss/vidyaratna#blogging) \[Wordpress, [dev.to](https://dev.to/)]. You can also mention about the errors that you encountered.

You may encounter errors while installing Ubuntu, so keep a separate copy of your data. If you need help in installing the same, [send us an email.](mailto:amritapurifoss@gmail.com)

1\. Star all the [amFOSS](https://github.com/amfoss) repositories\
Since you have made it here, we thought you would be interested in them. You can use this if you need some help in automating this whole process : )

<https://github.com/amfoss/star-me>

Please add your final successful screenshot in the *task-1* folder in the amfoss-tasks repository.

**Note: Do not run the script more than once consecutively - at least not within a short time span.**

## 2. Programming

Solve the following problems from HackerRank and Codeforces in **Python/C/C++** or any other programming language. We will be evaluating everyone’s code submissions, so please don’t copy the code. **Plagiarism is not the way to get into the club** :)

Show us what you did and we’ll be happy with it.

*Try:* [*https://www.codechef.com/ide*](https://www.codechef.com/ide) *to run your solutions*

**HackerRank**:

<https://www.hackerrank.com/challenges/compare-the-triplets/problem>

[https://www.hackerrank.com/challenges/diagonal-difference](https://www.hackerrank.com/challenges/diagonal-difference/problem)

<https://www.hackerrank.com/challenges/staircase/problem>

<https://www.hackerrank.com/challenges/birthday-cake-candles/problem>

<https://www.hackerrank.com/challenges/time-conversion/problem>

**Codeforces**:

<http://codeforces.com/problemset/problem/1/A>

<http://codeforces.com/problemset/problem/71/A>

<http://codeforces.com/problemset/problem/158/A>

<http://codeforces.com/problemset/problem/282/A>

<http://codeforces.com/problemset/problem/96/A>

Please push your solutions to the task-2 folder and in the respective HackerRank and Codeforces sub-folders.

## 3. Google Scraping using Ruby

Given a keyword example, ”Linux”, you need to get the top 10 Google search results for the given particular word. You can use Ruby for doing this task. Ruby has a gem (library), nokogiri which is an HTML, CSS and XML parser.

<https://github.com/sparklemotion/nokogiri>

## 4. Advanced XOR:

1. Read the encryption script "xor\_adv.py" and try to understand how the encryption is really working.
2. You have been given the ciphertext in "ciphertext.txt" which has been encrypted using the script mentioned in Point Number 1
3. Try finding the key length and then the plaintext to get the flag (You will have to make a python script for this)
4. After you get the flag, run the script "check\_hash.py" and submit your flag there!
5. [Encryption, Ciphertext and ChekFlag script here](https://drive.google.com/drive/folders/0B_VIn9iHJACxYnhhUGtNSGlfMEE?usp=sharing)

## 5. Get it using Javascript:

1. In this challenge, you need to generate a web page using the GitHub API. Please use the latest version, GraphQL for accessing the data.

<https://developer.github.com/v4/>

1. Write a function to take GitHub username as an argument and display the information of the user (anyone valid information). If no user exists, return “No person exists”.
   1. Username
   2. Name
   3. Avatar
   4. Bio
   5. [Identicon](https://github.blog/2013-08-14-identicons/)

## 6. CLI App using Go

Using the flags package in Go, build a command-line tool that prints the details (count of followers, user handle, etc) of a Twitter user. You must give the Twitter handle as input to the flag. The output must be written to a text file (learn about file handling in Go).

Resources\*\*:\*\*

* <https://tour.golang.org/> (basic understanding of Go syntax)
* <https://gobyexample.com/command-line-flags> (learn about the flags package)

## 7. Rusted Email

Patterns are really fun to work with and finding one in real life gives you extreme happiness. There exists a unique pattern with email ids too. It would be wonderful if you can write a program in Rust to find whether the given input is an email or not.

Example: <good@email.com> is a VALID EMAIL

Hint: <https://docs.rs/regex/1.1.9/regex/>

## 8. Captcha Breaking:

We would like to know whether your a human or a robot? Download/Create a .png file which contains a simple arithmetic expression like “2 + 2”. Write a python script which can interpret the expression, evaluate it and return the calculated value.

## 9. Setup a Simple Personal Website

It would be cool if you can have a personal website of your own. We will help you with that. Please look at this awesome repository. Go through the documentation and try to set up your personal portfolio and blog.

<https://github.com/github/personal-website>

## 10. CS50

Watch all [CS50 lectures](http://cs50.tv/2017/fall/#about,lectures) and complete problem sets till week-4. Save the work that you have done and try to work on the [CS50 IDE](https://ide.cs50.io/) itself. Please update your status in the GitHub repository and have your problem solutions in a separate pset sub-folder.

**Additional Tasks**

## 11. A Pong game

To create a clone of Pong using Javascript (minimal GUI is enough).

* It should be multiplayer.
* It can be offline.

## 12. Python Source

1. In this challenge, you are expected to find a string whose hash is similar to a given hash in the program, which when passed as input to program produces the output "You are a Genius"
2. [Download the python code here](https://drive.google.com/file/d/0B3sOPp4yzeLTdHZiazhmNFZ2VEE/view?usp=sharing)

## 13. Project Euler (for math freaks)

<https://www.hackerrank.com/contests/projecteuler/challenges/euler001>

<https://www.hackerrank.com/contests/projecteuler/challenges/euler002>

<https://www.hackerrank.com/contests/projecteuler/challenges/euler003>

<https://www.hackerrank.com/contests/projecteuler/challenges/euler004>

<https://www.hackerrank.com/contests/projecteuler/challenges/euler005>

## 14. Bandit

Complete Bandit till level 10.

Refer: <http://overthewire.org/wargames/bandit/>

Please store the password of each level in a .txt file and upload it to your project repository.

You are expected to try the tasks only on Ubuntu or whatever distribution of Linux you prefer as part of the first task.

It is recommended to begin with Task 10 (CS50) if you do not have / or if you feel you aren't confident enough, and then move to the other tasks.
