# Praveshan - Join amFOSS

How to Join amFOSS

## Introduction

Greetings, fellow tech enthusiasts. Praveshan is the first step that you need to take to become a member at amFOSS. To get accepted, you will be required to complete a set of tasks that will test your problem-solving skills, determination, and most importantly - The ability to learn how to learn.

The goal of these tasks is not to alienate those without a background in computer science but to get yourself acquainted with the process of acquiring skills on your own, all tasks are designed in a way so as to promote active learning. You could take a look at the previous-year’s challenges to get a rough idea of the process, but of course, do not expect the same questions.

## Pipelines

There are 2 main pipelines to enter amFOSS, specifically:

* [S1](#i.-for-freshers-s1) (for freshers)
* [S2+](#ii.-for-others-s2-and-above)

Detailed below are a few of the guidelines and eligibility criteria that you should go through before applying to a certain pipeline.

## Eligibility

### Requirements

* You must be a student at Amrita Vishwa Vidyapeetham, Amritapuri Campus.
* You must be ready to devote your time and effort to the club, such as staying back after classes every day and even working on holidays and vacations.
* You must be willing to mentor your juniors and perform the responsibilities/tasks that are assigned to you.
* You must strictly adhere to the Code of Conduct of the club.

### Not required

* You Need Not be in a CS-related branch.
* You Need Not have any prior experience in computer science.

## Guidelines

**Google is your best friend**

Students are encouraged to learn how to use Google efficiently and try their best to be self-sufficient in solving the problems they face while doing the tasks. While mentors will be assigned to you during Praveshan to clear your doubts, self-reliance is an important skill that we look for in members.

**Plagiarism and copy-pasting from AI are strictly prohibited**

While referring to online sources like websites, and blogs and even taking help from AI like chatGPT are allowed, directly copying code from them is prohibited. Plagiarism checkers will be employed to make sure that all work done is genuine. In addition to this, sharing code between participants is strictly forbidden; if this is discovered, both parties will immediately be disqualified.

**Avoid using Windows/GUI tools**

Considering that amFOSS is at its heart an open-source club, you must use a Linux/macOS system to complete the tasks. You should also try to minimize the use of the mouse, and try to use the terminal to do whatever work that you need to do.

**Communicate effectively**

Clearly communicate your thought process, challenges faced and progress to the mentors assigned to you during Praveshan. The ability to communicate effectively is essential for fostering collaboration and understanding.

***FAQs***

**Q: How are participants evaluated during Praveshan?**

A: Evaluation is based on a variety of factors including but not limited to: No of tasks completed, frequency of updates, code quality, interview performance, etc.

**Q: What kind of tasks can we expect during Praveshan?**

A: The tasks are designed to promote active learning and problem-solving. We have taken care to make sure that all of them can be completed with proper research, various domains will be touched upon like web dev, mobile dev, scraping, git, etc.

**Q: Is there a specific timeline for completing Praveshan tasks?**

A: The timelines are specific to each pipeline and hence will be updated on their respective pages.

## I. For Freshers (S1):

This is the first pipeline to join amFOSS, which will commence after the start of the college term. Interested students are expected to undertake a series of designated tasks (that consist of both technical and non-technical tasks). Evaluation will be conducted based on the completion of these tasks, followed by an interview.

Fill out the following form to register: <https://forms.gle/TmpJuERyUyEgnSQYA>​

Status: **Open**

## II. For Others (S2 and above):

This is the second pipeline for joining amFOSS. Interested students will have to complete all designated tasks. Evaluation will be conducted based on the completion of these tasks, followed by an interview.

Fill out the following form to register: <https://forms.gle/TmpJuERyUyEgnSQYA>​

Status: **Open**


# Selection Process

Description of the overall selection process and the ways to get in.

### (For Freshers)

### Fresher's Tasks

Interested students can attempt to complete the Fresher's Tasks - It is a series of tasks which test aspects like your problem solving skills, the ability to decompose a problem into sub-problems to solve it, and most fundamentally - the ability to learn to learn. Remember - **unless the foundations are strong, nothing solid can be built on the top,** the goal of these tasks is to to get yourself acquainted with learning and acquiring skills by your own.

Do not expect to find the solutions with a simple google search, while there is no exact list of topics on which these tasks will be based on, it is guaranteed that only the fundamentals would be tested. You could have a look into [the previous year challenges](https://join.amfoss.in/contest-archive/contest-archive) to get a rough idea of the skills we look for in candidates, but of course, do not expect the same questions.

Your overall performance will be judged by seniors headed by Vipin sir, who have been involved throughout the selection process.<br>


# Eligibility

**Requirements**

* You must be a current student at Amrita Vishwa Vidyapeetham, Amritapuri.
* You must be ready to devote your time and effort to the club, such as staying back after classes everyday and working on holidays.
* You must be willing to share and pass-on your knowledge with anyone, mentor your juniors and perform responsibilities/ tasks that are assigned to you.
* You must strictly adhere to the Code of Conduct of the club.

**Not Required**

* You need **not** be in a CS-related branch.
* You need **not** have any prior experience in Computer Science.


# General Guidelines

## **Plagiarism is strictly prohibited**

As stated above, referring online sources is allowed, but directly copying code from a website is prohibited. Sharing code between participants is also prohibited. Plagiarism checkers will be used to ensure all work done is genuine.

## **Google is your best friend**

Students are encouraged to learn[ to use Google efficiently](https://in.pinterest.com/pin/319755642267805699/) and be self sufficient to solve [the problems that they face.](https://medium.com/how-i-learned-ruby-rails/why-googling-is-the-most-important-skill-a-developer-must-have-d69b89b22218)

Here's our own curated list of resources if you need help - [Vidyaratna](https://gitlab.com/amfoss/vidyaratna)

## **Reduce usage of GUI**

Basic tasks like navigation, editing files and unzipping should not be done using GUI i.e. the use of mouse and window managers is discouraged. Do as much of your work as possible on your terminal - make the terminal your home ;)

## **Disqualification**

Student(s) found violating any of the guidelines or displaying other unsporting behaviour will be subject to disqualification.

**You must not use Windows/similar for completing the tasks ,** feel free to use any Linux distribution/ macOS


# Contest Archive

The past tasks/contests held have been archived and put into separate branches of this repository. If you are interested in joining the club, we recommend you check them out.

| Title                                                                                             | Date          | Type    | Contestants |
| ------------------------------------------------------------------------------------------------- | ------------- | ------- | ----------- |
| [Fresher Tasks 2025-26](/contest-archive/contest-archive/fresher-tasks-2025-26)                   | August 2025   | Tasks   | S1          |
| [Second Year Tasks - 2025-26](/contest-archive/contest-archive/second-year-tasks-2025-26)         | August 2025   | Tasks   | S3          |
| [Fresher Tasks(S2) 2024-25](/contest-archive/contest-archive/fresher-tasks-s2-2024-25)            | December 2024 | Tasks   | S2          |
| [Fresher Tasks(S1) 2024-25](/contest-archive/contest-archive/fresher-tasks-s1-2024-25)            | August 2024   | Tasks   | S1          |
| [Second Year Tasks 2024-25](/contest-archive/contest-archive/second-year-tasks-2024-25)           | August 2024   | Tasks   | S3          |
| [Fresher Tasks 2023-24](/contest-archive/contest-archive/fresher-tasks-2023-24)                   | August 2023   | Tasks   | S1          |
| [Fresher's Tasks 2019-20](/contest-archive/contest-archive/fresher-tasks)                         | July 2019     | Tasks   | S1          |
| [Fresher's Contest - February 2019](/contest-archive/contest-archive/feb-2019-freshers-challenge) | Feb 24, 2019  | Contest | S2          |
| [Fresher's Tasks - October 2018](/contest-archive/contest-archive/october-2018-freshers-tasks)    | October 2018  | Tasks   | S1          |
| [Fresher's Tasks - July 2018](/contest-archive/contest-archive/july-2018-freshers-tasks)          | July 2018     | Tasks   | S1          |


# Fresher Tasks 2025-26

This document contains the tasks necessary to proceed with the amFOSS Praveshan process. These tasks are designed to test your skills, and determination, and introduce you to various aspects of software development.

If you're new to programming or need a quick review, we suggest taking Harvard University's free online course, [CS50’s Introduction to Computer Science](https://cs50.harvard.edu/x/2024/). Focus on weeks zero, one, two, and six initially.

Ensure you stay focused on learning only what's necessary to complete each task, without delving into mastering an entire programming language. Google will be your best friend throughout the journey. While it may be testing at times, developing efficient Googling skills will greatly assist you.

We hope you find these tasks engaging and that you enjoy yourself completing them. All the very best!

### Submission Guidelines <a href="#vpde3w62k3uj" id="vpde3w62k3uj"></a>

* Create a private GitHub repository named amfoss-tasks.
* Create a README.md file in the root directory of your repository to introduce yourself and answer the following questions:
  * Why should we choose you?
  * How do you intend to contribute back to the club?
  * What are your fields of interest, and how do you plan on working on them?
* Create directories titled task-## (where ## is the task's serial number) to upload your work for each corresponding task.
* Include a brief explanation in the README.md file within each task folder, that portrays your approach to the task and also shares your review on the task, unless instructed otherwise.

**You may refer to this repository to get an idea of how to format yours**: <https://github.com/AadarshM07/amfoss-tasks>

### Tasks <a href="#id-1cn5ygyaicyq" id="id-1cn5ygyaicyq"></a>

#### 0. Install Linux <a href="#gwou14gcdnpp" id="gwou14gcdnpp"></a>

Linux is widely recognized among developers for its robust security measures, stable performance, and flexibility. Its open-source nature allows for extensive customization and adaptation to various development needs.

To get you started we need you to install Linux. Don’t forget to backup important data before adjusting disk partitions. You could either switch your OS to Linux or dual boot along with Windows. Mac users are encouraged to use the terminal and Homebrew for package management.

**Make sure that all the following tasks are performed on Linux or MacOS.**

Resources:

* [amFOSS Vidyaratna - Linux](https://github.com/amfoss/vidyaratna/blob/master/docs/resources.md#linux)
* [macOS - Homebrew](https://brew.sh/)

#### 1. Terminal Hunt <a href="#h61dixfxtvok" id="h61dixfxtvok"></a>

This engaging, game-like task, inspired by the theme of interstellar survival, is designed to introduce you to the fundamentals of **Git and terminal commands**. You'll embark on a journey from a dying Earth to the depths of space, solving puzzles and navigating cosmic challenges using your command-line skills. Be prepared to learn, explore, and utilize online resources to complete your mission!

GitHub repository - <https://github.com/Nishthajain7/Terminal-Hunt>

#### 2. The Cyberpunk Syndicate <a href="#e25rhxle0z3u" id="e25rhxle0z3u"></a>

In this **contest**, you'll be a street-smart hacker navigating a world of advanced tech and shadowy corporations. Your mission: crack secure networks, optimize data streams, and outmaneuver rival syndicates through a series of challenging coding problems. Only the sharpest minds will thrive in this high-stakes digital landscape. You have to complete the following **competitive programming** contest.

HackerRank contest - <https://www.hackerrank.com/praveshan-competitive-programming-s1>

#### 3. The Circularity Challenge <a href="#z9h4qt5k3dkc" id="z9h4qt5k3dkc"></a>

Inspired by neal.fun, your task is to build a web-based game where users attempt to draw a perfect circle using only **HTML, CSS, and JavaScript**. This project offers a fantastic opportunity to hone your skills in **HTML Canvas API**, master **mouse event handling**, implement **geometric calculations for scoring**, utilize **session storage**, and polish your application with **audio integration and a slick UI**. Get ready to combine design intuition with mathematical precision to create an engaging and satisfying user experience!

GitHub repository - <https://github.com/Harshith-2208/Fun-Zone>

#### 4. CineScope <a href="#iehi8cpu39d9" id="iehi8cpu39d9"></a>

In this exciting mini-project, you'll step into the role of a data hero at CineScope Studios. Your mission is to bring a pre-built movie database visualizer to life by connecting its sleek **PySide6 UI** to a robust **MySQL backend**. This task is perfect for those looking to apply their skills in **Python**, **SQL (SELECT, WHERE, LIKE, etc.)**, and **GUI fundamentals** as you set up a database, populate it with movie data, and craft the backend logic to dynamically filter, display, and export cinematic information based on user input. Get ready to transform raw data into a polished, functional movie archive!

GitHub repository - <https://github.com/AadarshM07/CineScope>

#### 5. TimeTickQuiz CLI <a href="#gslupiggpwd6" id="gslupiggpwd6"></a>

At the prestigious TimeTick Academy, quick wits and rapid reflexes are paramount. Your mission, should you choose to accept it, is to forge a powerful knowledge weapon: a lightning-fast, command-line quiz game built in Python. This challenge will push your skills as you learn to integrate with the **Open Trivia Database API** to fetch live questions, construct an **interactive CLI**, implement **real-time timers and threads** for pressure-cooker gameplay, and master **JSON data management**. Can you beat the 15-second countdown, prove your speed and knowledge, and become the ultimate TimeTickQuiz champion? Time is ticking!

GitHub repository - <https://github.com/Kota-Jagadeesh/TimeTickQuiz>

#### 6. LyricLounge Discord bot <a href="#us5wtyn8xsna" id="us5wtyn8xsna"></a>

This project challenges you to create a versatile bot that transforms virtual gatherings into vibrant karaoke nights. You'll learn to leverage **Discord.py** to build interactive commands for fetching song lyrics, retrieving music track information, and even generating personalized song recommendations. This is an excellent opportunity to explore integrating **external APIs** (like Lyrics.ovh, Genius, or Spotify), implement best coding practices such as **environment variables**, and master **robust error handling** to create a seamless user experience.

GitHub repository - <https://github.com/Malavika05M/LyricLounge>

#### 7. WordRush Mobile app <a href="#kqvubgwj0oso" id="kqvubgwj0oso"></a>

This engaging mobile game tests your vocabulary and quick thinking as you race against the clock to unscramble 4- to 5-letter words. Each successful word keeps the game going, but an incorrect answer or a ticking timer will bring your run to an end. Track your progress with a displayed high score, and push yourself to achieve new personal bests in this thrilling word puzzle!

GitHub repository - <https://github.com/PinJinx/Flutter-Task-Word-Rush>

#### 8. OpenCV Treasure Map <a href="#id-5rd8bpfwbdii" id="id-5rd8bpfwbdii"></a>

Embark on an epic quest worthy of a seasoned Minecraft adventurer! You've uncovered whispers of a legendary treasure, but the map to its location is fragmented into a series of cryptic "Biome Scans." These aren't ordinary maps; each piece is a unique visual snapshot of a specific block type within a biome. Your challenge is to channel your inner explorer and utilize your **Python and OpenCV skills** to meticulously piece together these digital fragments, decode the wise Villager's scattered clues, and ultimately reveal the path to their hidden riches. Prepare to delve deep into image processing to conquer this blocky enigma!

GitHub repository - <https://github.com/flykrth/Treasure-Map>

#### 9. SysForge challenge <a href="#ut846dnetdy6" id="ut846dnetdy6"></a>

In this task, you'll delve deep into the fundamentals of operating systems by **reimplementing essential Unix command-line tools** such as ls, wc, cat, and grep entirely from scratch using **C and the Standard C Library**. Beyond just building simplified versions, you'll customize their names and ensure they function seamlessly from the terminal, supporting key flags like -a, -l, -1 for listit; -n, -b, -s for showtext; -l, -w, -c for countit; and -i, -n, -v for finder. This challenge offers a unique opportunity to deepen your understanding of **file handling, string manipulation, and argument parsing in C**, while gaining invaluable insights into the design and functionality of the utilities that power the Unix world.

GitHub repository - <https://github.com/AnandajithS/sysforge>

#### 10.BattleCraft: Daily CSS Challenges

In this challenge, you'll dive into the core of visual web development by recreating five recent targets from CSSBattle Daily using only HTML and CSS. Each target presents a unique visual puzzle, requiring you to think critically about positioning, layering, shapes, gradients, and transforms.Through this task, you'll strengthen your understanding of the CSS box model, develop precision in layout techniques, and improve your ability to write clean, optimized styling code.

GitHub repository - <https://github.com/A-Rohit-Reddy/CSS-Battle>

### Additional Tasks <a href="#id-652br9lbqxtt" id="id-652br9lbqxtt"></a>

#### 11. OverTheWire Bandit <a href="#id-8v63zg411db7" id="id-8v63zg411db7"></a>

Embark on a thrilling journey into the world of cybersecurity with the **OverTheWire Bandit** series! This task will challenge you to sharpen your Linux command-line skills, understand fundamental security concepts, and practice various exploitation techniques. By progressing through the Bandit levels **up to Level 15**, you'll gain hands-on experience with file permissions, network basics, common utilities, and more, all while navigating a series of increasingly complex puzzles. Prepare to dive deep into the terminal and unlock the secrets of secure systems! Upload screenshots and the required files to complete this task.

OverTheWire Bandit - <https://overthewire.org/wargames/bandit/>

#### 12. Hello, World! <a href="#qt472jjuz27j" id="qt472jjuz27j"></a>

Welcome to the fascinating world of [computer science](https://en.wikipedia.org/wiki/Computer_science)! Here, programming languages come in all shapes and sizes, each with its own distinct characteristics. From the detailed landscape of C, where efficiency is key, to the user-friendly realm of Python, celebrated for its simplicity, the options are plentiful.\
\
In this task, you are given 3 sub-tasks. You need to solve the below given sub-tasks in all of the following languages to complete this task successfully: Python, Ruby, Elixir, Javascript, Java, Go, C, C++, Rust, and Haskell

1. **Sub-Task 1:** Write a "Hello, World!" program.
2. **Sub-Task 2:** Write a program that prints a triangular outlined pyramid pattern with a filled base to the console, as shown in the reference image.
3. ***Sub-Task 3**:* Write a program that reads a number `n` from a file named `input.txt` and writes the outlined pyramid pattern of height `n` to the console.

<div align="left"><figure><img src="https://836424088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FE2SRMzuCj79yuRDm49qA%2Fuploads%2FqAoX7yBJRCNmeoJq1037%2Fimage.png?alt=media&#x26;token=e99d29e2-98fb-4eaa-8872-cc87095e9cf4" alt=""><figcaption></figcaption></figure></div>

#### 13. Lessgo Hugo <a href="#id-9bkbmphm639y" id="id-9bkbmphm639y"></a>

This task challenges you to design and launch a personalized portfolio website using **Hugo**, a powerful open-source static site generator. You'll explore Hugo's diverse themes to find a template that resonates with your style, then customize it to showcase your work or passion project—all without writing a single line of code. Once your masterpiece is complete, you'll learn to host it online using **GitHub Pages**, making your website accessible to the world. Get ready to transform your ideas into a captivating web experience! Inside your task folder, add both the link to your **Hugo repository** and the link to your website in the **README.md** file.

#### 14. Sand Simulation <a href="#ys751qm85r3" id="ys751qm85r3"></a>

For this task, you are required to create a basic sand simulation using C++ and SFML. Sand particles should fall under the influence of gravity, interact with neighboring particles, and form natural-looking piles. The simulation must be rendered in real time using SFML, and users should be able to place or remove sand using mouse input. This project will help you understand particle behavior, graphics rendering, and real-time simulation using modern C++.

Github repository - <https://github.com/Iron-56/sand-simulation>


# Second Year Tasks 2025-26

This document contains the tasks necessary to proceed with the amFOSS Praveshan process. These tasks are designed to test your skills, and determination, and introduce you to various aspects of software development.

If you're new to programming or need a quick review, we suggest taking Harvard University's free online course, [CS50’s Introduction to Computer Science](https://cs50.harvard.edu/x/2024/). Focus on weeks zero, one, two, and six initially.

Ensure you stay focused on learning only what's necessary to complete each task, without delving into mastering an entire programming language. Google will be your best friend throughout the journey. While it may be testing at times, developing efficient Googling skills will greatly assist you.

We hope you find these tasks engaging and that you enjoy yourself completing them. All the very best!

### Submission Guidelines

* Create a private GitHub repository named amfoss-tasks.
* Create a README.md file in the root directory of your repository to introduce yourself and answer the following questions:
  * Why should we choose you?
  * How do you intend to contribute back to the club?
  * What are your fields of interest, and how do you plan on working on them?
* Create directories titled task-## (where ## is the task's serial number) to upload your work for each corresponding task.
* Include a brief explanation in the README.md file within each task folder, that portrays your approach to the task and also shares your review on the task, unless instructed otherwise.

## Tasks

#### 0. Install Linux

Linux is widely recognized among developers for its robust security measures, stable performance, and flexibility. Its open-source nature allows for extensive customization and adaptation to various development needs.

To get you started we need you to install Linux. Don’t forget to backup important data before adjusting disk partitions. You could either switch your OS to Linux or dual boot along with Windows. Mac users are encouraged to use the terminal and Homebrew for package management. Make sure that all the following tasks are performed on Linux or MacOS.

Resources:

* [amFOSS Vidyaratna - Linux](https://github.com/amfoss/vidyaratna/blob/master/docs/resources.md#linux)
* [macOS - Homebrew](https://brew.sh/)

#### 1. Terminal Wizard

Have you seen the Harry Potter movies or read the books? If you have, then you must be familiar with the Triwizard Tournament, where participants must complete a series of dangerous and thrilling tasks. The winner is awarded the Triwizard Cup and eternal glory. Now, for this task, imagine yourself as a daring participant in the real-life magical spectacle known as the Terminal Wizard Championship! Imagine the Linux terminal as your wand, and let its powerful commands be your spells, which will help you to conquer the championship.

Your objective is to explore the Linux command line and complete the given task by using the necessary terminal commands. As you complete each challenge, you’ll receive fragments of a secret code that are scattered across countless files and git branches. You have to find all the secret codes to win the Terminal Wizard Cup and thus, complete the task. Check out the given repository for further instructions.

GitHub Repository: <https://github.com/KshitijThareja/TerminalWizard>

#### 2. CodeRush: Global Offensive

Forget the usual defusal maps and hostage rescues; your battlefield is the digital realm, and your weapon is your keyboard. The bomb site? HackerRank.

You're a rogue programmer, a digital operative in a world where data is the ultimate currency and algorithms are your ammo. Your mission, should you choose to accept it, is to out-code rival syndicates and secure critical information by disarming complex coding challenges on HackerRank. Each successfully solved problem is a headshot against the competition, a defused cyber-threat. Only the sharpest minds, those who can optimize data streams faster than a quick-scope and crack secure networks like a well-placed flashbang, will rise through the ranks and dominate this high-stakes, high-ping digital warzone. Gear up, soldier – it's time to show them who's the true Global Elite of competitive programming!

Contest - <https://www.hackerrank.com/praveshan-competitive-programming-s3>

#### 3. Circularity Challenge Pro

Build an advanced web-based game designed to push your front-end development and computational geometry skills to their limits! Building upon the foundational concepts of its predecessor, this iteration transforms simple circle drawing into a rigorous test of precision, algorithmic thinking, and UI/UX mastery. Get ready to dive deep into HTML Canvas API, implement sophisticated geometric calculations, optimize for performance, and craft an engaging experience that challenges you to draw, analyze, and perfect circular forms under a variety of demanding constraints.

GitHub Repository: <https://github.com/Harshith-2208/Fun-Zone-S3>

#### 4. CineScope Advanced

This task elevates your challenge from simply visualizing movie data to building a comprehensive and robust platform. You'll dive deep into database normalization, leverage powerful Object-Relational Mappers (ORMs) like SQLAlchemy, and craft a sophisticated PySide6 UI that supports dynamic data manipulation. Beyond just displaying information, you'll integrate with external APIs for enriched content, implement crucial user authentication and authorization, and even develop a user review and rating system. Get ready to transform raw data into a polished, functional, and intelligent movie archive that showcases your advanced skills in Python, database design, and GUI development.

GitHub Repository: <https://github.com/AadarshM07/CineScope-S3>

#### 5. TimeTickQuiz v2

At the prestigious TimeTick Academy, quick wits and rapid reflexes are paramount. Your mission, should you choose to accept it, is to forge a powerful knowledge weapon: a lightning-fast, command-line quiz game built in Python. This challenge will push your skills as you learn to integrate with the Open Trivia Database API to fetch live questions, construct an interactive CLI, implement real-time timers and threads for pressure-cooker gameplay, and master JSON data management. Can you beat the 15-second countdown, prove your speed and knowledge, and become the ultimate TimeTickQuiz champion? Time is ticking!

GitHub Repository: <https://github.com/Kota-Jagadeesh/TimeTickQuiz-2>

#### 6. Friendly Neighborhood Bot

Welcome, aspiring developers, to a critical mission within the digital halls of Midtown Tech! Our vibrant online community, much like the bustling streets of New York, faces the ever-present threat of chaos. We're calling upon you to don your coding capes and construct the "Friendly Neighborhood Bot," a vital automated guardian designed to bring order, foster collaboration, and ensure Midtown Tech remains a safe and inspiring hub for all. Prepare to weave a web of code that will empower our community and protect its future!

GitHub Repository: <https://github.com/Malavika05M/The-Friendly-Neighbourhood-Bot>

#### 7. WordRush+ Mobile app

This engaging mobile game tests your vocabulary and quick thinking as you race against the clock to unscramble 4- to 5-letter words. Each successful word keeps the game going, but an incorrect answer or a ticking timer will bring your run to an end. Track your progress with a displayed high score, and push yourself to achieve new personal bests in this thrilling word puzzle!

GitHub Repository: <https://github.com/PinJinx/S3-Word-Rush>

#### 8. CSS Master

CSSBattle is a platform where developers improve their CSS skills by visually replicating given targets using the least amount of code possible. In this task, you are challenged to recreate a specific design using only HTML and CSS, focusing on accuracy, optimization, and creative problem-solving. The goal is to match the target image as closely as possible, which helps you get a deeper understanding of CSS properties, layout techniques, and visual thinking.

GitHub Repository: <https://github.com/A-Rohit-Reddy/CSSMaster>

#### 9. SysForge Mastery

In this task, you'll delve deep into the fundamentals of operating systems by reimplementing essential Unix command-line tools entirely from scratch using C and the Standard C Library. Beyond just building simplified versions, you'll customize their names and ensure they function seamlessly from the terminal, supporting key flags also. This challenge offers a unique opportunity to deepen your understanding of file handling, string manipulation, and argument parsing in C, while gaining invaluable insights into the design and functionality of the utilities that power the Unix world.

GitHub Repository:[https://github.com/AnandajithS/sysforge-advanced](https://github.com/AnandajithS/sysforge-advanced.git)

#### 10. OpenCV Treasure Map

Embark on an epic quest worthy of a seasoned Minecraft adventurer! You've uncovered whispers of a legendary treasure, but the map to its location is fragmented into a series of cryptic "Biome Scans." These aren't ordinary maps; each piece is a unique visual snapshot of a specific block type within a biome. Your challenge is to channel your inner explorer and utilize your Python and OpenCV skills to meticulously piece together these digital fragments, decode the wise Villager's scattered clues, and ultimately reveal the path to their hidden riches. Prepare to delve deep into image processing to conquer this blocky enigma!

GitHub repository - <https://github.com/flykrth/Treasure-Map>


# Fresher Tasks(S2) 2024-25

This document contains the tasks necessary to proceed with the amFOSS Praveshan process. These tasks are designed to test your skills, and determination, and introduce you to various aspects of software development.

Ensure you stay focused on learning only what's necessary to complete each task, without delving into mastering an entire programming language. Google will be your best friend throughout the journey. While it may be testing at times, developing efficient Googling skills will greatly assist you.

We hope you find these tasks engaging and that you enjoy yourself completing them. All the very best!

## Submission Guidelines:

* **The use of AI tools is strictly not allowed.**
* Create a private GitHub repository named amfoss-tasks.
* Create a README.md file in the root directory of your repository to introduce yourself and answer the following questions:
  * Why should we choose you?
  * How do you intend to contribute back to the club?
  * What are your fields of interest (doesn’t have to be strictly technical) and how do you plan on working on them?
* Create directories titled task-## (where ## is the task's serial number) to upload your work for each corresponding task.
* Include a brief explanation in the README.md file within each task folder, that portrays your approach to the task and also share your review on the task, unless instructed otherwise.

You may refer to this repository to get an idea of how to format yours:[ ](https://github.com/AadarshM07/amfoss-tasks)<https://github.com/AadarshM07/amfoss-tasks>

## TASKS

### 0. Install Linux

Linux is widely recognized among developers for its robust security measures, stable performance, and flexibility. Its open-source nature allows for extensive customization and adaptation to various development needs.

To get you started we need you to install Linux. Don’t forget to backup important data before adjusting disk partitions. You could either switch your OS to Linux or dual boot along with Windows. Mac users are encouraged to use the terminal and Homebrew for package management.

**Make sure that all the following tasks are performed on Linux or MacOS.**

Resources:

1. [amFOSS Vidyaratna - Linux](https://github.com/amfoss/vidyaratna/blob/master/docs/resources.md%23linux)
2. [macOS - Homebrew](https://brew.sh/)

### 1. The Command Line Cup

Have you seen the Harry Potter movies or read the books? If you have, then you must be familiar with the Triwizard Tournament, where participants must complete a series of dangerous and thrilling tasks. The winner is awarded the Triwizard Cup and eternal glory. Now, for this task, imagine yourself as a daring participant in the real-life magical spectacle known as the Terminal Wizard Championship! Imagine the Linux terminal as your wand, and let its powerful commands be your spells, which will help you to conquer the championship.

Your objective is to explore the Linux command line and complete the given task by using the necessary terminal commands. As you complete each challenge, you’ll receive fragments of a secret code that are scattered across countless files and git branches. You have to find all the secret codes to win the Terminal Wizard Cup and thus, complete the task.

Check out the given repository for further instructions.

GitHub Repository:[ ](https://github.com/KshitijThareja/TheCommandLineCup)<https://github.com/KshitijThareja/TheCommandLineCup>

### 2. Pixelated Problem Solver

We would like to confirm whether you are a human or a robot! Download or create a simple .png file that contains a simple arithmetic expression like “2 + 2”. Write a Python script that can interpret the expression, evaluate it, and return the calculated value.

### 3. Beat The Buttons

Here you will uniquely explore JavaScript and get to know its power! There are 4 levels in this exploration. The site is a drum kit site with 7 different buttons. The task starts from the basics, i.e. linking the CSS and JS to the index.html. Post this, you have to add event listeners to the button so that when any of the 7 buttons is pressed, a unique sound should be played. Lastly, you have to do some basic styling on the website to make it look unique and embed attractive fonts from Google Fonts into the site.

GitHub Repository:[ ](https://github.com/amfoss/praveshan-tasks/tree/2022/task-08)<https://github.com/amfoss/praveshan-tasks/tree/2022/task-08>

### 4. Code The Puzzles

Once you start programming, you don’t just learn how to code but you also learn how to think logically and clearly. In this task, we’ve come up with a few puzzles for you to put your logical ability to the test. You’ll need to solve these questions and implement the solutions in a programming language of your choice. For those who are new to programming, we suggest Python as it hides a lot of complexity with its simple, easy-to-use functions.

Once your answers have been accepted, upload the files for the solutions to directory task-04 in your repository. Provide your Hackerrank username in the README file in this directory.

Contest Link:[ ](https://www.hackerrank.com/cp-praveshan-24)[www.hackerrank.com/cp-praveshan-24](https://www.hackerrank.com/cp-praveshan-24)

### 5. Pokémon Rescue

Professor Oak urgently needs your assistance! While he was diligently working on an essential update for the Pokedex, disaster struck, and he accidentally deleted some code from the main repository. Now, he's in dire need of your Python programming skills to help him rebuild the necessary functions using PySide6 and retrieve Pokemon data through the Poke API. Your task is crucial to ensure that his work gets back on track.

GitHub Repository:[ https://github.com/amfoss/tasks/tree/2023/task-08](https://github.com/amfoss/tasks/tree/2023/task-08)

### 6. Flutter JumpStart

Have you ever played Shadow Fight or Super Mario? Well! What about them is similar? One is from the smartphone era, the other dates back to the 1990s. The similarity is that both are games. To be more precise, both games are in the second dimension and need us to move a character, the player, or the game's protagonist. Have you ever considered creating your character and running it wherever you please? What if we told you that by writing code in just one language, you could create a gaming application that runs on both Android and iOS mobile devices? You now have the opportunity to accomplish that. You can achieve this simply by using Google's Flutter framework. Navigate to the repo link and look into the demo bunny game and replicate it. The assets required are contained in the repo itself.

GitHub Repository:[ ](https://github.com/amfoss/praveshan-tasks/tree/2022/task-06)<https://github.com/amfoss/praveshan-tasks/tree/2022/task-06>

Add your project files into the task-6 folder of your amfoss-tasks repository. Add a README.md to the folder as well, and add a short screen recording of the UI you made.

References -

1. [Flutter Installation](https://docs.flutter.dev/get-started/install)
2. [Flutter Docs](https://docs.flutter.dev/)
3. [Flame Package](https://pub.dev/packages/flame)
4. [Flame Doc](https://docs.flame-engine.org/)
5. [Sprite Component](https://docs.flame-engine.org/1.2.0/flame/components.html%23spritecomponent)
6. [Flame Inputs](https://docs.flame-engine.org/1.2.0/flame/inputs/inputs.html)

### 7. Weather Guardian

Comrade Kalashnikov got drenched on his visit to the motherland. He was punished by his superiors for not being properly dressed. Create a handy chrome extension for

Kalashnikov which will keep him well informed about the weather at his next rendezvous location so that he can prepare and dress accordingly to not get reprimanded by his superiors again.

Use HTML, CSS, and JavaScript to complete the task. The extension should return real-time weather data of any location according to user input.

As a developer, nothing is more satisfying than seeing your product out in the wild being helpful to a lot of people. While deploying your extension on the Chrome store would benefit a lot of people, that is beyond the scope of this task and is completely optional.

GitHub Repository:[ ](https://github.com/amfoss/tasks/tree/2023/task-07)<https://github.com/amfoss/tasks/tree/2023/task-07>

Resources:

1. [Extension Demo](https://chrome.google.com/webstore/detail/amfoss-weathercaster/kddidipdkgeefchigfgbjmonjpaknjfc?hl=en\&authuser=0)
2. [Chrome Extension Documentation](https://developer.chrome.com/docs/extensions/)
3. [Weather API](https://openweathermap.org/api)

### 8. Compute Shader

Dive into the world of Vulkan and discover the true potential of compute shaders by mastering Shader Storage Buffer Objects (SSBOs). SSBOs are like a GPU’s superpower — they provide flexible, high-performance storage for reading and writing large amounts of data directly in your shaders.

In this task, you’ll:

1. Get to grips with how SSBOs work and how they can transform your data processing workflows.
2. Upgrade a basic compute shader to integrate SSBOs, allowing it to efficiently read and write complex data in GPU memory.
3. Learn to manage and synchronize SSBOs to ensure smooth, high-performance operations while minimizing errors or data mismatches.
4. Experiment with custom algorithms and use SSBOs for tasks like simulations, image processing, or other computationally intensive applications.

By the end of this task, you’ll have a solid understanding of SSBOs and how to use them to unlock new levels of efficiency in Vulkan. Whether you're building simulations or pushing complex algorithms to their limits, you’ll be ready to let the GPU handle the heavy lifting.

**Review the previous tutorials and documentation, then implement the code based on the concepts covered.**

### Resources:

<https://vulkan-tutorial.com/Drawing\\_a\\_triangle/Graphics\\_pipeline\\_basics/Introduction\\>
<https://vulkan-tutorial.com/Vertex\\_buffers/Vertex\\_input\\_description\\>
<https://vulkan-tutorial.com/Uniform\\_buffers/Descriptor\\_layout\\_and\\_buffer\\>
<https://vulkan-tutorial.com/Compute\\_Shader#page\\_Shader-storage-buffer-objects-SSBO>

### 9. Operation Kernel

A kernel is the core program around which an operating system is built. Using a custom open-source or self-made kernel can mitigate potential spyware built into operating systems such as Windows.

Tanya Von Degourachaff was delivering a package on behalf of Doktor Wilhelm Voigt that contained such a kernel. It was a little program called the Kreschnder cypher, a kernel written in Rust that contained a unique text pattern required to activate their new state-of-the-art aerial defence system.

Unfortunately, the kernel sustained some damage due to an enemy ambush on the way to the destination. Now it’s up to you, a field engineer Dingus, to restore the kernel before shipping it back out.

GitHub Repository: <https://github.com/BiscuitBobby/ruskos-problem-repo>

Resources:

1. [What is a Kernel?](https://www.geeksforgeeks.org/kernel-in-operating-system/)
2. [Getting started with Rust](https://doc.rust-lang.org/book/ch01-00-getting-started.html)
3. [Making a kernel in Rust](https://os.phil-opp.com/minimal-rust-kernel/)


# Fresher Tasks(S1) 2024-25

This document contains the tasks necessary to proceed with the amFOSS Praveshan process. These tasks are designed to test your skills, and determination, and introduce you to various aspects of software development.

If you're new to programming or need a quick review, we suggest taking Harvard University's free online course, [CS50’s Introduction to Computer Science](https://cs50.harvard.edu/x/2023/). Focus on weeks zero, one, two, and six initially.

Ensure you stay focused on learning only what's necessary to complete each task, without delving into mastering an entire programming language. Google will be your best friend throughout the journey. While it may be testing at times, developing efficient Googling skills will greatly assist you.

We hope you find these tasks engaging and that you enjoy yourself completing them. All the very best!

### Submission Guidelines:

* Create a private GitHub repository named amfoss-tasks.
* Create a README.md file in the root directory of your repository to introduce yourself and answer the following questions:
  * Why should we choose you?
  * How do you intend to contribute back to the club?
  * What are your fields of interest, and how do you plan on working on them?
* Create directories titled task-## (where ## is the task's serial number) to upload your work for each corresponding task.
* Include a brief explanation in the README.md file within each task folder, that portrays your approach to the task and also share your review on the task, unless instructed otherwise.

You may refer to this repository to get an idea of how to format yours: <https://github.com/TheHuntsman4/amfoss-tasks>

### Tasks

#### 0. Install Linux

Linux is widely recognized among developers for its robust security measures, stable performance, and flexibility. Its open-source nature allows for extensive customization and adaptation to various development needs.

To get you started we need you to install Linux. Don’t forget to backup important data before adjusting disk partitions. You could either switch your OS to Linux or dual boot along with Windows. Mac users are encouraged to use the terminal and Homebrew for package management.

**Make sure that all the following tasks are performed on Linux or MacOS.**

Resources:

* [amFOSS Vidyaratna - Linux](https://github.com/amfoss/vidyaratna#linux)
* [macOS - Homebrew](https://brew.sh/)

#### 1. Type Maestro

Typing is the bread and butter of programming, despite that, many programmers struggle with proper typing techniques. This task aims to introduce you to the system of[ touch typing](https://en.wikipedia.org/wiki/Touch_typing#Advantages), not only will it make you a blazingly fast keyboard wiz, it will also save you from chronic neck pain years down the line!

Create an account on [typing.com](http://typing.com) and follow the guided lessons. Aim to put in at least 5-10 mins every single day, it takes consistency to build muscle memory, not large chunks of dedicated time. You may be slow at the start, but after a few weeks, you’ll be typing faster than most of your peers.

You can consider yourself as having passed this task if you’re able to type at least 50 WPM (Words per minute) on [monkeytype](https://monkeytype.com/) 30 seconds with at least 95% accuracy. Go ahead and post your high score in #general on Discord for some extra brownie points :)

**Note that you must use touch typing to achieve this WPM.**

#### 2. Terminal Chaos

Have you ever experienced the unforgiving environments of the Warhammer universe, a universe marked by an unending war where no clear distinction between good and evil exists? Do not fret, as you will be playing the role of an Astarte, mighty warriors of the Imperium of man, forged through Terminal training and gene-git augmentation. Amidst the relentless battle against the Orbs, an unexpected twist transports you to the desolate planet Arrakis-dex, where your journey begins.

Explore the Linux command line and use it to your advantage. Overcome the obstacles and solve the riddles to get secret codes which will lead you to the completion of this task. Survive and break the chains that seal you, Astarte. Purge all heretics. Glory to the EMPEROR!!!

Check out the given repository for further instructions.

GitHub repository: <https://github.com/angrezichatterbox/Terminal-Chaos-User-Edition>

#### 3. Hello, World!

Welcome to the fascinating world of [computer science](https://en.wikipedia.org/wiki/Computer_science)! Here, programming languages come in all shapes and sizes, each with its own distinct characteristics. From the detailed landscape of C, where efficiency is key, to the user-friendly realm of Python, celebrated for its simplicity, the options are plentiful.

Implement a binary search algorithm from scratch to find a target value within a sorted array of integers. **As a bonus challenge, if the input array is not sorted, you can optionally implement a sorting algorithm** of your choice (e.g., quicksort, mergesort) to sort the array before performing the binary search.

You need to solve this problem in all of the following languages to complete this task successfully: Python, Ruby, Elixir, Javascript, Java, Go, C, C++, Rust, and Haskell.

Once you've conquered the task, organise your solutions into separate files for each language within the task-03 folder of your repository.

#### 4. Gopal and his PagePal

Meet Gopal, a book enthusiast who has a great passion for reading books. He ran into trouble trying to locate his favourite books, which led to him coming up with the idea of creating a chatbot that would assist him by recommending a list of books with the necessary details. Unfortunately, Gopal's lack of programming skills proved a significant obstacle in making his "PagePal" a reality.

As a programmer, help Gopal in uniting him with his PagePal. Create a book recommendation telegram bot that displays a list of books with details like Book title, author, description, year published (originally), language, and preview (if available) when the user types in the genre of the book they want to read. Feel free to customise your PagePal with more features.

GitHub repository: <https://github.com/shraavv/PagePal-TelegramBot>

Resources:

* [Google Books API](https://developers.google.com/books/docs/v1/using)

#### 5. TerminalTrolly

Greetings, Sneakerheads! Welcome to the TerminalTrolly Challenge—a test of your problem-solving skills in the world of web.

Imagine you're part of a team responsible for managing a trendy online shoe boutique. Unfortunately, our e-commerce platform has encountered unexpected technical issues, leaving customers unable to make purchases through the website.

To keep our loyal customers happy and the business running smoothly, we've devised a special challenge for you. Using a terminal-based interface—a digital lifeline to our shop's backend—you'll step into the shoes of our tech-savvy troubleshooters.

Your mission is clear: navigate through the virtual maze of glitchy code and faulty scripts to successfully purchase a pair of shoes from our boutique.

GitHub repository: <https://github.com/Drone944/TerminalTrolly>

Resources:

* [Building your first with HTML and CSS](https://learn.shayhowe.com/html-css/building-your-first-web-page/)
* [What is Javascript](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps)

#### 6. Blog Burst

Blogging is like having your own digital campfire where you can share your passions, expertise, and stories with a global audience. It's an effective tool for networking, gaining credibility, and reaching a wider audience on the huge internet. Write a Medium blog post on the task that you enjoyed working on the most. Include an introduction, technical details, your thoughts and experience. Feel free to change the structure and add new details.

#### 7. OpenDocs

Welcome, brave coder, to the world of [Open Source Documentation](https://www.writethedocs.org/guide/writing/beginners-guide-to-docs/#why-write-docs)! Documenting software projects is not just a technical task but an important element in fostering collaboration, allowing users to understand, contribute to, and utilise code effectively.

Open-source documentation serves as a guide, providing users with essential information on project setup, usage, and contribution guidelines. Clear and concise documentation is the cornerstone of any successful open-source project.

Your task is to choose an open-source repository to document (If you’re unsure, your mentor can help you out). Once you have decided on a repository, create comprehensive documentation. Start with an overview of the project, its features, and its purpose. Focus on documenting the code itself, provide descriptions of what each module does, and directory structure. Additionally, highlight and document key functions, explaining their implementation and usage.

#### 8. Pirate's Dilemma

Captain Jack Sparrow, a brave soul on the lookout for treasures, has recently laid his hands on the latest cinematic marvel from the vast expanse of [archive.org](http://archive.org). A true gem it be, a movie that promises laughter, tears, and the thrill of the high seas. Yet, in a twist of fate, our dear captain finds himself adrift without the companion that every movie marauder longs for – subtitles!

The quest is clear – to **scrape** the subtitle shores and uncover the hidden text that shall accompany their voyage.

Create a [CLI](https://en.wikipedia.org/wiki/Command-line_interface) app using Python that accepts an mp4 file and returns a list of subtitles for it, allowing the user to choose and download their preferred option.

GitHub repository: <https://github.com/hrideshmg/subtitle_cli>

Resources:

* [Open Subtitles](https://www.opensubtitles.org/en/search)
* [Click Documentation](https://click.palletsprojects.com/en/8.1.x/)
* [BS4 Documentation](https://www.crummy.com/software/BeautifulSoup/)

#### 9. Debug Rust OS

A kernel serves as the core program underlying an operating system, managing hardware resources and providing essential services for software. Kernels ensure the optimal utilisation of system resources. They manage processes with precision, allocate memory efficiently, and streamline device driver interfaces. Kernels are crucial for maintaining the system's performance, fortifying its security, and ensuring unwavering stability.

This project involves debugging a Rust-based custom kernel, correcting syntax problems, changing the text and background colours of the VGA buffer to yellow on black, and adjusting the keyboard port address for the x86 architecture are among the tasks at hand. Rust is used to write the kernel, which controls

interrupts and text output to provide dependable functionality. For testing, QEMU is utilised along with Rust nightly.

You are supposed to list out the bugs in the code, feel free to make a fixed version. The final objective is to recover the kernel from an enemy ambush so that the defence system may be activated.

GitHub repository: <https://github.com/BiscuitBobby/ruskos-problem-repo>

#### 10. HERO-DEX!

The nefarious villain, Dr.Dulldev, has unleashed a wave of confusion upon the world. People are struggling to remember even the most basic details of their favourite heroes! Can you help?

Build a user-friendly superhero encyclopaedia app with Flutter and vanquish Dr.Dulldev’s schemes forever! This powerful framework by Google allows you to create beautiful and functional mobile applications for both Android and iOS.

GitHub repository: <https://github.com/chimnayajith/hero-dex/>

Resources:

* [Flutter Installation](https://docs.flutter.dev/get-started/install)
* [Flutter Docs](https://docs.flutter.dev/)

#### 11. Operation Pixel Merge

You assume the role of Fleet Admiral Reinhard von Lohengramm, leading the Galactic Empire’s forces in a crucial war. You have recently received a transmission from one of your captains, most likely containing some very important information regarding the ongoing war but alas, it seems to be split into a hundred different images!

Create a script using OpenCV and Pillow utilising some clever image recognition and manipulation techniques to stitch together these fragmented parts to reveal the secret message!

GitHub repository: <https://github.com/hrideshmg/Operation-Pixel-Merge>

Resources:

* [OpenCV](https://docs.opencv.org/4.x/)
* [Pillow](https://pillow.readthedocs.io/en/stable/reference/ImageDraw.html)


# Second Year Tasks 2024-25

This document contains the tasks necessary to proceed with the amFOSS Praveshan process. These tasks are designed to test your skills, and determination, and introduce you to various aspects of software development.

If you're new to programming or need a quick review, we suggest taking Harvard University's free online course, [CS50’s Introduction to Computer Science](https://cs50.harvard.edu/x/2024/). Focus on weeks zero, one, two, and six initially.

Ensure you stay focused on learning only what's necessary to complete each task, without delving into mastering an entire programming language. Google will be your best friend throughout the journey. While it may be testing at times, developing efficient Googling skills will greatly assist you.

We hope you find these tasks engaging and that you enjoy yourself completing them. All the very best!

### Submission Guidelines:

* Create a private GitHub repository named amfoss-tasks.
* Create a README.md file in the root directory of your repository to introduce yourself and answer the following questions:
  * Why should we choose you?
  * How do you intend to contribute back to the club?
  * What are your fields of interest, and how do you plan on working on them?
* Create directories titled task-## (where ## is the task's serial number) to upload your work for each corresponding task.
* Include a brief explanation in the README.md file within each task folder, that portrays your approach to the task and also share your review on the task, unless instructed otherwise.

You may refer to this repository to get an idea of how to format yours: <https://github.com/KKSurendran06/amfoss-tasks>

### Tasks

#### 0. Install Linux <a href="#sk8927dnxcje" id="sk8927dnxcje"></a>

Linux is widely recognized among developers for its robust security measures, stable performance, and flexibility. Its open-source nature allows for extensive customization and adaptation to various development needs.

To get you started we need you to install Linux. Don’t forget to backup important data before adjusting disk partitions. You could either switch your OS to Linux or dual boot along with Windows. Mac users are encouraged to use the terminal and Homebrew for package management.

**Make sure that all the following tasks are performed on Linux or MacOS.**

Resources:

* [amFOSS Vidyaratna - Linux](https://github.com/amfoss/vidyaratna#linux)
* [macOS - Homebrew](https://brew.sh/)

#### 1. Type Maestro <a href="#s8cd75oenu9m" id="s8cd75oenu9m"></a>

Typing is the bread and butter of programming, despite that, many programmers struggle with proper typing techniques. This task aims to introduce you to the system of[ touch typing](https://en.wikipedia.org/wiki/Touch_typing#Advantages), not only will it make you a blazingly fast keyboard wiz, it will also save you from chronic neck pain years down the line!

Create an account on [typing.com](http://typing.com) and follow the guided lessons. Aim to put in at least 5-10 mins every single day, it takes consistency to build muscle memory, not large chunks of dedicated time. You may be slow at the start, but after a few weeks, you’ll be typing faster than most of your peers.

You can consider yourself as having passed this task if you’re able to type at least 60 WPM (Words per minute) on [monkeytype](https://monkeytype.com/) 30 seconds with at least 95% accuracy. Go ahead and post your high score in #general on Discord for some extra brownie points :)

**Note that you must use touch typing to achieve this WPM.**

#### 2. Terminal Chaos <a href="#asq858cmmsqi" id="asq858cmmsqi"></a>

In the unforgiving environments of the Warhammer universe, unending war blurs the lines between good and evil. You will assume the role of an Astarte, a mighty warrior of the Imperium of Man, forged through rigorous terminal training and gene-git augmentation. Amidst the relentless battle against the Orbs, an unexpected twist transports you to the desolate planet Arrakis-dex, where your journey begins.

Explore the Linux command line and use it to your advantage. Overcome the obstacles and solve the riddles to get secret codes which will lead you to the completion of this task. Survive and break the chains that seal you, Astarte. Purge all heretics. Glory to the EMPEROR!!!

This task aims to familiarise you with basic terminal and **git** commands in a fun and interactive way. You can refer to the following [resource](https://linuxjourney.com/lesson/the-shell) for a primer on terminal commands. We expect you to find the rest yourself via googling, good luck :)

GitHub repository: <https://github.com/amansxcalibur/Terminal-Chaos>

#### 3. Hello, World! <a href="#id-4kvzd3jz0sg1" id="id-4kvzd3jz0sg1"></a>

Welcome to the fascinating world of [computer science](https://en.wikipedia.org/wiki/Computer_science)! Here, programming languages come in all shapes and sizes, each with its own distinct characteristics. From the detailed landscape of C, where efficiency is key, to the user-friendly realm of Python, celebrated for its simplicity, the options are plentiful.\
\
In this task, you are given 4 sub-tasks. You need to solve the below given sub-tasks in all of the following languages to complete this task successfully: **Python, Ruby, Elixir, Javascript, Java, Go, C, C++, Rust, and Haskell**.\
\
You have the following sub-tasks to implement:

1. **Sub-Task 1:** Write a "Hello, World!" program.
2. **Sub-Task 2:** Write a program that reads a string from a file named input.txt and writes that string to another file named output.txt.
3. **Sub-Task 3:** Write a program that takes a number n from user and generates a diamond pattern of asterisks (\*) and prints it to the console.
4. **Sub-Task 4:** Write a program that reads a number n from a file named input.txt and generates a diamond pattern of asterisks (\*) in another file named output.txt.

*For example, if n is 5, the pattern should be:*

| <p><br><br><br><br>\*</p> |
| ------------------------- |

Once you conquer the task, organise your solutions into folders for each programming language inside the task-03 folder of your repository. Each language folder should have separate files for Sub-Task 1, Sub-Task 2, Sub-Task 3 and Sub-Task 4.

#### 4. Gopal and his PagePal <a href="#id-6uoq6e2aa3xi" id="id-6uoq6e2aa3xi"></a>

Meet Gopal, a book enthusiast who has a great passion for reading books. He ran into trouble trying to locate his favourite books, which led to him coming up with the idea of creating a chatbot that would assist him by recommending a list of books with the necessary details. Unfortunately, Gopal's lack of programming skills proved a significant obstacle in making his "PagePal" a reality.

As a programmer, help Gopal in uniting him with his PagePal. Create a book recommendation telegram bot that displays a list of books with details like Book title, author, description, year published (originally), language, and preview (if available) when the user types in the genre of the book they want to read. Feel free to customise your PagePal with more features.

GitHub repository: <https://github.com/shraavv/PagePal-Telegram-bot-phase2>

Resources:

* [Google Books API](https://developers.google.com/books/docs/v1/using)

#### 5. TerminalTrolly

Greetings, Shoppers! Welcome to the TerminalTrolly Challenge - a test of your problem-solving skills in the world of web.

Imagine you're part of a team responsible for managing a trendy online hypermarket. Unfortunately, our e-commerce platform has encountered unexpected technical issues, leaving customers unable to make purchases through the website.

To keep our loyal customers happy and the business running smoothly, we've devised a special challenge for you. Using a terminal-based interface—a digital lifeline to our shop's backend—you'll step into the shoes of our tech-savvy troubleshooters.

Your mission is clear: navigate through the virtual maze of glitchy code and faulty scripts to successfully purchase products from our hypermarket.

GitHub Repository : <https://github.com/swayam-agrahari/TerminalTrolly>

Resources :

* [Building your first with HTML and CSS](https://learn.shayhowe.com/html-css/building-your-first-web-page/)
* [What is Javascript](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps)

#### 6. OpenDocs

Welcome, brave coder, to the world of [Open Source Documentation](https://www.writethedocs.org/guide/writing/beginners-guide-to-docs/#why-write-docs)! Documenting software projects isn't just a technical task—it's a key part of fostering collaboration. Good documentation helps users understand, contribute to, and use code effectively. It serves as a guide, providing essential information on project setup, usage, and contribution guidelines. Clear and concise documentation is the cornerstone of any successful open-source project.

Your task is to choose an open-source repository to document (If you’re unsure, your mentor can help you out). Once you've decided on a repository, review it with your mentor before you start documenting it.

Create comprehensive documentation, starting with an overview of the project, its features, and its purpose. Focus on documenting the code itself, describing what each module does and the directory structure. Highlight and explain key functions, detailing their implementation and usage.

**Documentation Files:**

1. **README.md**: Include information on how to set it up.
2. **Documentation.md**: A detailed overview of the project, its features, and its purpose. Document the code itself, describing what each module does. Explain key functions, their implementation, and usage.
3. **DirectoryStructure.md**: Highlight the project's directory structure.

Here’s a sample repository: <https://github.com/addynair/OpenDocs>

#### 7. Pirate's Dilemma <a href="#ofdplwv2reu1" id="ofdplwv2reu1"></a>

Captain Jack Sparrow, a brave soul on the lookout for treasures, has recently laid his hands on the latest cinematic marvel from the vast expanse of [archive.org](http://archive.org). A true gem it be, a movie that promises laughter, tears, and the thrill of the high seas. Yet, in a twist of fate, our dear captain finds himself adrift without the companion that every movie marauder longs for – subtitles!

The quest is clear – to **scrape** the subtitle shores and uncover the hidden text that shall accompany their voyage.

Create a [CLI](https://en.wikipedia.org/wiki/Command-line_interface) app using Python that accepts an mp4 file and returns a list of subtitles for it, allowing the user to choose and download their preferred option.

GitHub Repository: <https://github.com/hrideshmg/Pirates-Dilemma>

Resources:

* [Open Subtitles](https://www.opensubtitles.org/en/search)
* [Click Documentation](https://click.palletsprojects.com/en/8.1.x/)
* [BS4 Documentation](https://www.crummy.com/software/BeautifulSoup/)

#### 8. Blog Burst <a href="#id-8b3aoiyir0te" id="id-8b3aoiyir0te"></a>

Blogging is like having your own digital campfire where you can share your passions, expertise, and stories with a global audience. It's an effective tool for networking, gaining credibility, and reaching a wider audience on the huge internet. Write a Medium blog post on the task that you enjoyed working on the most. Include an introduction, technical details, your thoughts and experience. Feel free to change the structure, add new details and also refrain from using any AI tools.

Also ensure your README files as mentioned above in submission guidelines are well-structured and properly document your experiences.

#### 9. HERO-DEX! <a href="#pvcylh2cruw8" id="pvcylh2cruw8"></a>

The nefarious villain, Dr.Dulldev, has unleashed a wave of confusion upon the world. People are struggling to remember even the most basic details of their favourite heroes! Can you help?

Build a user-friendly superhero encyclopaedia app with Flutter and vanquish Dr.Dulldev’s schemes forever! This powerful framework by Google allows you to create beautiful and functional mobile applications for both Android and iOS.

GitHub repository: <https://github.com/chimnayajith/hero-dex-phase2/>

Resources:

* [Flutter Installation](https://docs.flutter.dev/get-started/install)
* [Flutter Docs](https://docs.flutter.dev/)

#### 10. Operation Pixel Merge <a href="#id-97to1zq87cwj" id="id-97to1zq87cwj"></a>

You assume the role of Fleet Admiral Reinhard von Lohengramm, leading the Galactic Empire’s forces in a crucial war. You have recently received a transmission from one of your captains, most likely containing some very important information regarding the ongoing war but alas, it seems to be split into a hundred different images!

Create a script using OpenCV and Pillow utilising some clever image recognition and manipulation techniques to stitch together these fragmented parts to reveal the secret message!

GitHub repository: <https://github.com/hrideshmg/Operation-Pixel-Merge>

Resources:

* [OpenCV](https://docs.opencv.org/4.x/)
* [Pillow](https://pillow.readthedocs.io/en/stable/reference/ImageDraw.html)


# Fresher Tasks 2023-24

This document comprises the tasks you will need to complete to proceed further in the Praveshan process. These tasks are meant to challenge your skills and put your determination to the test, as well as to introduce you to multiple domains of software development.

If you’re completely new to programming or if you need a quick refresher, we recommend going through Harvard University’s free and online course [CS50](https://cs50.harvard.edu/x/2023/)[’s Introduction to Computer Science](https://cs50.harvard.edu/x/2023/). We advise focusing only on weeks zero, one, two, and six for now.

Finally, keep in mind that these tasks are aimed at making you comfortable being uncomfortable. Don’t get sidetracked into mastering any of the tools you’ll be using. Instead, learn just enough to get the task done well.

We hope you enjoy working on the tasks as much as we enjoyed making them. Good luck!

### Submission Guidelines <a href="#u24wmvsszfbt" id="u24wmvsszfbt"></a>

1. Make a **private** GitHub repository titled *amfoss-tasks.*
2. Create a README.md file in the root of the repository to introduce yourself and answer the following questions:
   1. Why should we choose you?
   2. What are your goals for the next six months? How will you accomplish them?
   3. How will you contribute back to the club?

Do include any thoughts or feedback you have on the praveshan process as well.

1. Create folders titled task-## (where ## is the serial number of the task) to upload your work for the corresponding task.
2. Unless mentioned otherwise, include a brief explanation of how you approached each task in a README.md file in the corresponding folders.

Take a look at this repository if you still have any doubts about the intended structure: <https://github.com/TheHuntsman4/amfoss-tasks>

### Tasks <a href="#btu9vnkgzgn6" id="btu9vnkgzgn6"></a>

#### 0. Install Linux <a href="#a2drnxqxjbuu" id="a2drnxqxjbuu"></a>

Linux is a free and open-source operating system. Many developers prefer Linux over other operating systems for its security, stability, and customizability. **All the following tasks are meant to be done only on Linux or MacOS.**

Since you’ll be messing around with your disk partitions, make sure you keep a backup of any important data on an external device. If you’re new to Linux, we highly\*\* recommend installing Ubuntu. If you already have Windows installed, you could dual-boot your preferred distro alongside Windows. For macOS users, just start using the terminal more and check out Homebrew as well.

Resources:

* [amFOSS Vidyaratna - Linux](https://github.com/amfoss/vidyaratna#linux)
* [macOS - Homebrew](https://brew.sh/)

#### 1. Terminal Wizard <a href="#kktnns815h7z" id="kktnns815h7z"></a>

Have you seen the Harry Potter movies or read the books? If you have, then you must be familiar with the Triwizard Tournament, where participants must complete a series of dangerous and thrilling tasks. The winner is awarded the Triwizard Cup and eternal glory. Now, for this task, imagine yourself as a daring participant in the real-life magical spectacle known as the Terminal Wizard Championship! Imagine the Linux terminal as your wand, and let its powerful commands be your spells, which will help you to conquer the championship.

Your objective is to explore the Linux command line and complete the given task by using the necessary terminal commands. As you complete each challenge, you’ll receive fragments of a secret code that are scattered across countless files and git branches. You have to find all the secret codes to win the Terminal Wizard Cup and thus, complete the task.

Check out the given repository for further instructions.

GitHub Repository: <https://github.com/KshitijThareja/TerminalWizard>

#### 2. Lessgo Hugo <a href="#id-90yk7xlvazsr" id="id-90yk7xlvazsr"></a>

Have you ever come across stunning portfolio websites and blogs and wanted to build something similar but didn’t know how? Hugo helps you to build such captivating websites without writing a single line of code.

For this task, you have to create a simple portfolio website showcasing your creativity using Hugo, a popular open-source website generator. Use Hugo’s website themes to choose a website template that reflects your style and build on it. You will then have to host your portfolio website on Github Pages, a service that allows you to put your website up on the internet for anyone to view!

In your task-02 folder, add both the link to your Hugo repository and the link to your website in the README.md file. Instead of including your approach to this task in the README, make a blog post on your website.

\
Resources:

* [Hugo Themes](https://themes.gohugo.io/)
* [GitHub Pages](https://pages.github.com/)

#### 3. Hello, World! <a href="#kezkmuvom2hw" id="kezkmuvom2hw"></a>

Programming languages serve as a medium for you to communicate instructions to your computer. But not all of them go about it in the same way. Some languages are built to make communication as simple as possible, while others are built to ensure that it’s as fast as possible. In this task, you’ll use different languages to solve the same problem and learn about each language’s approach and implementation.

The problem is simple. Given any number *n*, find all the prime numbers up to and including *n* and print them out to the terminal. The number *n* must be taken as input from the user.

You need to solve this problem in all of the following languages to complete this task successfully: Python, Ruby, Elixir, Javascript, Java, Go, C, C++, Rust and Haskell.

Upload all necessary files for each language in separate folders within the task-03 folder in your repository.

#### 4. Competitive Programming <a href="#nozwh7yepm74" id="nozwh7yepm74"></a>

Once you start programming, you don’t just learn how to code but you also learn how to think logically and clearly. In this task, we’ve come up with a few puzzles for you to put your logical ability to the test. You’ll need to solve these questions and implement the solutions in a programming language of your choice. For those who are new to programming, we suggest Python as it hides a lot of complexity with its simple, easy-to-use functions.

Once your answers have been accepted, upload the files for the solutions to directory task-04 in your repository. Provide your Hackerrank username in the README file in this directory.

Contest link: <https://www.hackerrank.com/cp-praveshan-2023>

#### 5. Hypertext Mockup Language <a href="#id-3o0cs8q89oju" id="id-3o0cs8q89oju"></a>

A popular rock band is looking to generate some extra revenue by selling their music and branded merchandise online. They decided to make a website for their online shop. As an artistic lot, they already have in mind what it should look like. However, being musicians and not web developers, they are clueless about how to translate their design to code that can be displayed on a browser.

You have been employed by the band to build two web pages imitating the design given. You must recreate it as closely as possible, using only HTML and CSS. Luckily, you’re provided with all the assets to make your work easier. If all works perfectly, they have promised you a ticket to their next show! Ready to rock out?

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-05>

#### 6. Cricket Vault <a href="#ukw4rcvrew51" id="ukw4rcvrew51"></a>

In the vast realm of cricket fandom, where matches unfold like epic battles, there is always a group of avid fans yearning for a seamless way to stay connected to the live game. Enter Harigovind, a coding virtuoso with an unwavering passion for the sport. Fueled by his love for cricket, he embarks on a mission to create the ultimate Discord bot – "Crickey." With its unrivalled ability to crawl the web, "Crickey" bestows live updates upon its users, and will become the heartbeat of cricket discussions worldwide and a loyal companion to fans during every match. But to make this grand bot, Harigovind needs an assistant.

In this task, you'll prove your skills to Harigovind by building an initial prototype that has the most basic features that the bot "Crickey" should have. But beware! There are several others who are aiming to be the great Harigovind's assistant. Distinguish yourself from others by adding your own commands to make the prototype more lively. We wish you luck!

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-06>

Resources:

* [ESPN Cricket](https://www.espncricinfo.com/live-cricket-score)
* [Making a Discord bot](https://discordpy.readthedocs.io/en/stable/discord.html)

#### 7. AK-47℃ <a href="#y3ao2u7j07vw" id="y3ao2u7j07vw"></a>

Comrade Kalashnikov got drenched on his visit to the motherland. He was punished by his superiors for not being properly dressed. Create a handy chrome extension for Kalashnikov which will keep him well informed about the weather at his next rendezvous location so that he can prepare and dress accordingly to not get reprimanded by his superiors again.

Use HTML, CSS, and JavaScript to complete the task. The extension should return real-time weather data of any location according to user input.

As a developer, nothing is more satisfying than seeing your product out in the wild being helpful to a lot of people. While deploying your extension on the Chrome store would benefit a lot of people, that is beyond the scope of this task and is completely optional.

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-07>

Resources:

* [Extension Demo](https://chrome.google.com/webstore/detail/amfoss-weathercaster/kddidipdkgeefchigfgbjmonjpaknjfc?hl=en\&authuser=0)
* [Chrome Extension Documentation](https://developer.chrome.com/docs/extensions/)
* [Weather API](https://openweathermap.org/api)

#### 8. Poke-Search! <a href="#mrpjwkl1zpo" id="mrpjwkl1zpo"></a>

Professor Oak urgently needs your assistance! While he was diligently working on an essential update for the Pokedex, disaster struck, and he accidentally deleted some code from the main repository. Now, he's in dire need of your Python programming skills to help him rebuild the necessary functions using PySide6 and retrieve Pokemon data through the Poke API. Your task is crucial to ensure that his work gets back on track.

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-08>

Resources:

* [Python API tutorial](https://www.dataquest.io/blog/python-api-tutorial/)
* [Poke API](https://pokeapi.co/)
* [PySide6](https://doc.qt.io/qtforpython-6/)[ Documentation](https://doc.qt.io/qtforpython-6/)

#### 9. GeoQuest <a href="#pwmmyzc5qpd6" id="pwmmyzc5qpd6"></a>

In the covert world of high-stakes espionage, you, codename CartoGrapher, are recruited into a secret organisation with a mission to build a unique map application. Using Google's Flutter framework for Android and iOS, combined with OpenStreetMap, an open-source tool at your disposal, your mission is to create a powerful app enabling agents to drop pins on locations they wish to travel to while displaying the distance and time required for each journey. With your coding prowess, this covert travel app will be a vital tool for the organisation's agents as they embark on top-secret assignments across the world, navigating with precision and speed through the shadows of espionage.

Check out the given Github Repository for more intel!

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-09>

#### 10. RuskOS <a href="#wop4aaw4ye8t" id="wop4aaw4ye8t"></a>

A kernel is the core program around which an operating system is built. Using a custom open-source or self-made kernel can mitigate potential spyware built into operating systems such as Windows.

Tanya Von Degourachaff was delivering a package on behalf of Doktor Wilhelm Voigt that contained such a kernel. It was a little program called the Kreschnder cypher, a kernel written in Rust that contained a unique text pattern required to activate their new state-of-the-art aerial defence system.

Unfortunately, the kernel sustained some damage due to an enemy ambush on the way to the destination. Now it’s up to you, a field engineer Dingus, to restore the kernel before shipping it back out.

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-10>

Resources:

* [What is a Kernel?](https://www.geeksforgeeks.org/kernel-in-operating-system/)
* [Getting started with Rust](https://doc.rust-lang.org/book/ch01-00-getting-started.html)
* [Making a kernel in Rust](https://os.phil-opp.com/minimal-rust-kernel/)

### Additional Tasks <a href="#c66aj8n75i3j" id="c66aj8n75i3j"></a>

#### 11. TinkerCAD <a href="#id-2rt9evkmrji5" id="id-2rt9evkmrji5"></a>

Design a functional device using Arduino on TinkerCad for an automatic retractable roof in a farming environment.Try to create an accurate mimicry of an automatic retractable roof by Integrating a Servo motor, LDR sensor, and LCD screen to simulate the roof automation. Upon LDR sensor light detection, ensure the Servo activates, while displaying "ROOF OPEN" on the LCD. Conversely, when light is not detected, deactivate the Servo, and display "ROOF CLOSED" on the LCD.

Resources:

* [Tinkercad](https://www.tinkercad.com/)
* [Arduino](https://www.tinkercad.com/https://www.arduino.cc/)
* [About Servo Motor](https://www.arduino.cc/en/Reference/Servo)
* [Light Sensor(LDR)](https://projecthub.arduino.cc/edgar123/ldr-808444)
* [LCD](https://docs.arduino.cc/learn/electronics/lcd-displays)

#### 12. Godot <a href="#id-8ezfj87yph40" id="id-8ezfj87yph40"></a>

In the realm of shadows and secrets, the legendary ninja, Ninja Hattori, finds himself entangled in trouble. As he trains diligently in his ancient dojo, distressing news reaches him - the sacred flag, an emblem of honour and wisdom, has been stolen by a malevolent force.

Feeling the weight of responsibility, Ninja Hattori knows he cannot face this perilous challenge alone. Help him on his quest using the Godot engine to create a 3D game virtual world of obstacles and train him to capture the flag.

GitHub Repository: <https://github.com/amfoss/tasks/tree/2023/task-12>

Resources:

* [Godot](https://godotengine.org/article/godot-4-0-sets-sail/)
* [Tutorial on the mechanics of the game.](https://www.gdquest.com/tutorial/godot/learning-paths/getting-started-in-2021/chapter/11.your-first-3d-game/)

#### 13. Vim <a href="#jre8gnz7hk3v" id="jre8gnz7hk3v"></a>

Ever wanted to impress your family and friends with how quickly you can write and edit code? Vim or Vi Improved is a free and open-source text editor built on keybindings that will help you write code blazing fast.

To get started, install Vim and type in “vimtutor” into your terminal. Complete all chapters of vimtutor and upload the final txt file into your amfoss-tasks repository to complete this task successfully.

Resources:

* [Vim](https://www.vim.org/)
* [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=vscodevim.vim)

#### 14. Bandit <a href="#jo0q6co0ut23" id="jo0q6co0ut23"></a>

Ever wanted to test your cybersecurity skills? Just visit Bandit OverTheWire and dive in. Use your Linux terminal skills to find passwords, and store them in 'pass.txt' files in level-specific folders. This challenge will deepen your grasp of command-line operations and security methods. Complete ten levels of OverTheWire and upload the required files to your repository to complete this task.

Resources:

* [OverTheWire](https://overthewire.org/wargames/bandit/)

#### 15. Project Euler <a href="#nhk2qfhnyn5e" id="nhk2qfhnyn5e"></a>

Complete the first five questions from Project Euler, an exploration of mathematical and computational problems. As you solve each problem, store your solutions in their respective folders within your tasks repository. And don’t forget to let us know your approach in the README.md file for this task.

* [Euler001](https://www.hackerrank.com/contests/projecteuler/challenges/euler001)
* [Euler002](https://www.hackerrank.com/contests/projecteuler/challenges/euler002)
* [Euler003](https://www.hackerrank.com/contests/projecteuler/challenges/euler003)
* [Euler004](https://www.hackerrank.com/contests/projecteuler/challenges/euler004)
* [Euler005](https://www.hackerrank.com/contests/projecteuler/challenges/euler005)


# 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.


# Feb 2019 - Fresher's Challenge

**Participants** : First Years - Even Semester, 2022 Batch

Follow the below tasks and submit an ISSUE in this repository so that we can check your progress among all the people.

### Base Rules

**You are not allowed to use GUI-based navigation/operations like Editing, Unzipping, etc., but are excepted to find out a solution with your coding and commanding skills** - you are accountable to show us `proof of work`, by creating your own repository named `tasks-amfoss` which will contain whatever work you do for the test. Push all your codes and screenshots to that repository. For avoiding malpractice, make your repository as *private* so that no one can take your code. Make it *public* before you submit.

**Plagiarism will not be entertained** - You are allowed to refer to any online portal, tutorials, forum-answers etc. but copying your code from your friends (or as such from any online source) is strictly forbidden.

**Note that Individuals can be disqualified from the test at the organizers' discretion.** Reasons might include but are not limited to breaking the competition rules, or other unsporting behaviors.

### The Tasks

#### 0. Star all the [amFOSS](https://github.com/amfoss) repositories.

Since you have made it here, we thought you would be interested in them.

> You should probably try this - <https://github.com/amfoss/star-me>

> *PAUSE*: I know you have already starred this repository, but why don't you fork it too. I think you know about the fork. If not, please see the top right side and click on the fork button and select the user. That's it! You are awesome. You just forked a repository. Keep on going :thumbsup: .

#### 1. We Want YOU to Introduce :smiley:

Vipin Pavithran, the founder and chief mentor of the club, as well as others in the club, are excited to welcome you onboard! Why don't you write us an email addressing them all? Check out your email, you must have received a mail under the thread name, `FOSS@Amrita - Freshers Introduction Mail`. Send in a mail replying the thread, which answers the following -

* About You
* What according to you is FOSS\@Amrita?
* Why do you want to join FOSS\@Amrita?

> Make sure you follow mailing etiquettes. You can learn about them here - <https://www.dailywritingtips.com/email-etiquette/>

#### 2. Oswald and his Foolish Photographer

Oswald and Weenie want their picture to be hanged on the wall, but their foolish photographer he gave them a manipulated image. Can you help them to fix it? Btw, they also wanted it to be a Grayscale image. So, get started and earn some *Good Karma*. :)

You will get the picture by running this below command.

```
$ curl -o oswald.png https://raw.githubusercontent.com/amfoss/amfoss-freshers-test/master/assets/oswald.png
```

> **Hint**: You can refer to <https://automatetheboringstuff.com/chapter17/>

#### 3. Correct your Emails

Last night, someone from DPRK had sneaked into our system and manipulated all of your emails in our records. We are unsure of the mistakes that might have crept in and we want you guys to fix them for us. We host our records right here in this repository, in a markdown file in this repository. Go ahead and correct *your* email. Create a branch named `#2-<email>-fix` and send a PR. Remember to have a meaningful commit message, ofc :grin: .

See ISSUE [#2](https://github.com/amfoss/amfoss-freshers-test/issues/2)

> **Help**: [Git Branch](https://www.git-scm.com/docs/git-branch/1.7.10), [Pull Requests](https://help.github.com/en/articles/about-pull-requests)

#### 4. Here is an exciting Contest!

We know that you all love Problem Solving, and we have planned a special contest for you! Are you ready?\
Oops, we have a slight problem! We have lost the link generated in the morning and we have contacted the Police to find it. Maybe you should try too (You guys are problem-solvers after all). Until then, you can proceed to solve the below challenges :point\_down: .

> BTW, remember that the Hackerrank challenge link always starts with the URL, <https://www.hackerrank.com/>

#### 5. Kim's Gift

Did you try to open the `hahahaha` file yet? It was left by the DPRK attacker last night, maybe it contains Kim's nuke or some chocolates for you. Who doesn't like chocolates?

Write a bash script which does the whole thing, in the end.

> **Help**\
> `file a` gives you the details about the file *a*\
> `touch a` will create new file *a*\
> `rmdir a` deletes directory *a*\
> `mv a b` transfers the contents of file *a* to *b*\
> `chgrp` changes the group ownership of files\
> For more, you can refer at [CLI Commands](https://en.wikibooks.org/wiki/Guide_to_Unix/Commands/File_System_Utilities)

#### 6. Doval's Secret Agents

Now comes the most interesting task of all. Wait, before starting I want to ask if you got the SECRET\_MESSAGE.

```
if(SECRET_MESSAGE):
  task.proceed()
else:
  SECRET_MESSAGE.search()
```

The task is simple, host a small website on GitHub pages saying that **SECRET\_MESSAGE is "###"** in a Level 3 Header. You can use README or HTML. We don't bother about design but who doesn't like good websites :wink: .

> **Help**: [GitHub Pages](https://pages.github.com/)

#### 7. Post it!

We hope you all have a blog. You can write a blog post on your overall experience and how did you solve the tasks. Remember this is also a task but will be evaluated later. You can share the links in the Telegram group along with your status updates at the end of the day.

You can update it later in the ISSUE submission.

> **Reference**: You can have a look at some of the previous blog posts of the club members like <https://kalidindiamitraja.wordpress.com/2018/10/25/sending-email-with-python/><https://anandinblog.wordpress.com/2018/09/10/dual-booting-ubuntu-with-windows/>

#### 8. Race it, Raise it!

Once you are done with the 7 tasks above, you are **required** to submit **all your work** which includes your code (or maybe even screenshots) so that we can verify that you completed the tasks. To do that, you must raise an issue in the repository and fill the template.

Here are some more rules (we know you are pro's, just be sure of these) -

1. Every individual should submit an **ISSUE** and fill that template so that we can evaluate the test.
2. The **ISSUE TEMPLATE** must be strictly followed. A submission without following the template will be considered as**INVALID** and hence will not be evaluated.
3. Only a single issue has to be made for each individual, multiple submissions will not be considered.

> **Sample**: <https://github.com/amfoss/Praveshan/issues/1>

Thank You for participating in the contest! We would be happy if you could kindly also fill the [feedback form](https://goo.gl/forms/QeU76AlyOTODS0vt1) too :grin: .


# October 2018 - Fresher's Tasks

**Type I: Easy**\
Stone Paper Scissors Game\
\
We assume that all of you have played this at least in your childhood. Battle yourself with the computer to be the king, the basic rule for the game is that you and the computer both choose rock, paper or scissors the winner is decided based on:

* Rock blunts scissors.
* Paper covers rock.
* Scissors cut paper.

Fill up the rest using your logic.\
\
Simple Telegram chatbot\
\
Here we expect you to develop a simple telegram chatting bot where you could chat with a bot for timepass when there is no one around. We would propose you to use the telebot API for this development \[1].\
\
\
**Type II: Medium**\
\
Plagiarism checker using Web Scraping\
\
The intention of this project is to create a small command line application where it should check whether the contents you feed into the command line application is a plagiarized content or not.\
\
What we expect from you is to have a text file or a PDF file which will be passed as input, then parse that file using python. After that split each phrase or sentence as far as you like then do a simple Google search of it via command line. Then produce an output or display that you found matches in so and so websites.\
\
One possible approach you could take is like :<br>

* Take the input as a text file or a PDF.<br>
* Parse the file using python.<br>
* Split the phrases using .split() function in python.<br>
* Add a small functionality to do google search via terminal/command line.<br>
* Do a double quote search in Google through the CMD<br>
* Produce the results with the matches and print it out.<br>

\
CLI Shopping Cart\
\
Write a python program which would enable to shop items using the command line interface. The program should be able to list the available products and asks the customer to select the lists of products which he/she needs. Furthermore, the user can select needed items and proceed to check out which would show them the amount payable along with coupon options which will give 4% discount and also have some sort of fancy steps showing payment, also as a task you have done captcha reading and you could also improvise this here for gimmicking the payment step. The idea is so much vast and so much expandable.\
\
**Type III: Hard**\
\
Send a tweet using python\
\
Here we intend to make an application where you would take an input from the user and after that tweet that input.\
One possible approach you could take is like :<br>

* Create a twitter app and generate key<br>
* Store Credentials of the user in a separate file “tokens.py”<br>
* OAuth Authentication where you would import the tokens and using tweepy.AuthHandler complete the authentication<br>
* Get input from user about the tweet about to be send<br>
* Update the tweet using update\_status of tweepy API.

That's pretty much outline for this task for more information go to tweepy\[2] documentation and find out \[2]\
\
\
Send mail via CLI\
\
Here, what we expect you to do is to create a small python script that automatically sends in emails. You just need to take in the ‘To’ address, the subject, the description and send an email via command line to the recipient. Refer Gmail API \[3] for more information on how to do this.\
\
Hint: You might have to authenticate yourself at first.\
\[1]: <https://github.com/eternnoir/pyTelegramBotAPI>

\[2]: <http://docs.tweepy.org/en/v3.5.0/>\
\[3]: [https://developers.google.com/gmail/api/quickstart/](https://developers.google.com/gmail/api/quickstart/python)


# July 2018 - Fresher's Tasks

**Participants** : First Years - Odd Semester, 2022 Batch

The following comprises of the set of tasks that you can try to complete to join FOSS\@Amrita. It will help you in understanding the basics of various fields in CS, moreover it will help you in building confidence in reading and writing code. In the present world, learning to learn is one of the key skill one should develop which will help you grow. So, approach these problems with the to curiosity to learn and try to build your skills.

Throughout all your tasks **Google** will be your best friend and you can take references wherever required but Plagiarism is strictly considered. Complete as many as tasks you can, and send us your work on or before 31st July. It’s not mandatory that you should complete all the tasks.

### Base Rules

**Plagiarism will not be entertained** - You are allowed to refer to any online portal, tutorials, forum-answers etc. but copying your code from your friends (or as such from any online source) is strictly forbidden.

**Note that Individuals can be disqualified from the intake procedure at the organizer's discretion.** Reasons might include but are not limited to plagiarism, or other unsporting behaviors.

### Tasks

#### 0. Install Ubuntu 18.04

You can get the ISO file from your friends or download it from the Ubuntu website. Try writing a blog on the same so that it’s useful for others.

Create a Blog \[Wordpress, Medium].You can also mention about the errors that you encountered. You may encounter errors while installing Ubuntu, so keep a seperate copy of your data. If you need help in installing the same, write an email to us.

#### 1. Programming

Solve problems from Hackerrank and Codeforces in Python/C/C++ or any other programming language. We will be evaluating everyone’s code submissions, so please do not 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.

Hackerrank:

* <https://www.hackerrank.com/challenges/simple-array-sum/problem>
* <https://www.hackerrank.com/challenges/compare-the-triplets/problem>
* <https://www.hackerrank.com/challenges/diagonal-difference>
* <https://www.hackerrank.com/challenges/a-very-big-sum/problem/problem>
* <https://www.hackerrank.com/challenges/plus-minus/problem>
* <https://www.hackerrank.com/challenges/staircase/problem>
* <https://www.hackerrank.com/challenges/mini-max-sum/problem>
* <https://www.hackerrank.com/challenges/birthday-cake-candles/problem>
* <https://www.hackerrank.com/challenges/time-conversion/problem>

Codeforces: Try: <https://www.codechef.com/ide> to run your solutions

* <http://codeforces.com/problemset/problem/4/A>
* <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/118/A>
* <http://codeforces.com/problemset/problem/50/A>
* <http://codeforces.com/problemset/problem/231/A>
* <http://codeforces.com/problemset/problem/282/A>
* <http://codeforces.com/problemset/problem/96/A>
* <http://codeforces.com/problemset/problem/112/A>

#### 2. CS50

Watch all cs50 lectures and complete [problem sets](https://docs.google.com/document/d/1JWL3YxBHTPaVITfda4wVuuT9-7xuTdDralVpbtNjVvM/edit#) till week-4. Save the work that you have done and Try to work on the [CS50 IDE](https://docs.google.com/document/d/1JWL3YxBHTPaVITfda4wVuuT9-7xuTdDralVpbtNjVvM/edit#) itself.

#### 3. Begining with Python

You will need to learn the basics of Python to complete this task. You can make use of online IDE such as: <https://www.onlinegdb.com/online_python_compiler>

Complete the following tasks:

* Get input of 12 strings, concatenate them 3 at a time, and check if the result is a palindrome.
* Try to sort a List of numbers with any technique that has been taught in CS50 lecture without using any inbuilt functions.

#### 4. Google Scraping using Python

Given a keyword example,”FOSS\@Amrita”, you need to scrape the top ten results related to the keyword given and show the output in the terminal. Write a python script to get the results. You will need to learn the basics of Python and some of to complete this task. You can refer:

* [https://automatetheboringstuff.com](https://automatetheboringstuff.com/)

#### 5. Advanced XOR:

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

#### 6. Captcha Breaking:

Download a png file(using python) with two numbers and an operation, write a python script to read the numbers and operation and outputting the result of operation performed on the numbers.

#### 7. A simple website using HTML+CSS (JS or PHP):

Make a simple website using HTML and CSS. Make a validation form to get the input from the user (email-id, username, and password). Validate whether the username and password are correct. If it’s correct then show “Login successful” in a separate page.

#### 8. Javascript:

* In this challenge, you will be given an api (json data)
* Use this link to get the data of various pokemons: <https://pokeapi.co/api/v2/pokemon/>
* Write a function to take pokemon’s name as argument and display the information of that pokemon(any one valid information)
* Write a function that take a “Weakness” as an input and gives the names of all pokemon who have that Weakness. (check the weakness array in the dataset)

#### 9. A Pong game

To create a pong game using javascript (minimal GUI is enough).

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

#### 10. Git and GitHub:

Get familiar with Git commands by referring online resources. Push all your work into your Github profile by properly placing them into separate repositories for Python, Javascript, Problems and CS50 which will be used for evaluating.

### Additional Tasks

#### 1. Python Source:

* 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"
* Download the [python code here](https://drive.google.com/file/d/0B3sOPp4yzeLTdHZiazhmNFZ2VEE/view?usp=sharing)

#### 2. 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>

#### 3. Bandit:

Complete Bandit till level 10. Refer: <http://overthewire.org/wargames/bandit/>


