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 Sciencearrow-up-right. 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-tasksarrow-up-right

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. 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 typingarrow-up-right, 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.comarrow-up-right 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 monkeytypearrow-up-right 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-Editionarrow-up-right

3. Hello, World!

Welcome to the fascinating world of computer sciencearrow-up-right! 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-TelegramBotarrow-up-right

Resources:

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/TerminalTrollyarrow-up-right

Resources:

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 Documentationarrow-up-right! 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.orgarrow-up-right. 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 CLIarrow-up-right 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_cliarrow-up-right

Resources:

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-repoarrow-up-right

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/arrow-up-right

Resources:

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-Mergearrow-up-right

Resources:

Last updated