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. 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
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 typing, 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 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 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
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 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!
Welcome to the fascinating world of 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:
Sub-Task 1: Write a "Hello, World!" program.
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.
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.
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:
* *** ***** *** *
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
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:
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 :
6. OpenDocs
Welcome, brave coder, to the world of Open Source Documentation! 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:
README.md: Include information on how to set it up.
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.
DirectoryStructure.md: Highlight the project's directory structure.
Here’s a sample repository: https://github.com/addynair/OpenDocs
7. 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. 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 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:
8. 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, 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!
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:
10. 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:
Last updated