diff --git a/README.md b/README.md index cfe670b09..343480ce0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has its own folder. To get started, simply fork this repo. @@ -14,21 +14,38 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). -## Donations +## Credits -If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. +This repo was compiled by [Karan Goel](http://twitter.com/karangoel). -**- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** +Problems are motivated by the ones shared at: -**- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) -================================ +## Table of Contents + +- [Numbers](https://github.com/karan/Projects#numbers) +- [Classic Algorithms](https://github.com/karan/Projects#classic-algorithms) +- [Graph](https://github.com/karan/Projects#graph) +- [Data Structures](https://github.com/karan/Projects#data-structures) +- [Text](https://github.com/karan/Projects#text) +- [Networking](https://github.com/karan/Projects#networking) +- [Classes](https://github.com/karan/Projects#classes) +- [Threading](https://github.com/karan/Projects#threading) +- [Web](https://github.com/karan/Projects#web) +- [Files](https://github.com/karan/Projects#files) +- [Databases](https://github.com/karan/Projects#databases) +- [Graphics and Multimedia](https://github.com/karan/Projects#graphics-and-multimedia) +- [Security](https://github.com/karan/Projects#security) Numbers --------- **Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find e to the Nth Digit** - Just like the previous problem, but with e instead of PI. Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go. + **Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. **Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. @@ -37,7 +54,7 @@ Numbers **Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually). **Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. @@ -65,6 +82,9 @@ Numbers **Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. +**Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* + +**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity. Classic Algorithms ----------------- @@ -89,6 +109,9 @@ Graph **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Minimum Spanning Tree** - Create a program which takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a +subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible. + Data Structures --------- @@ -99,6 +122,8 @@ Data Structures Text --------- +**Fizz Buzz** - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. + **Reverse a String** - Enter a string and the program will reverse it and print it out. **Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. @@ -147,6 +172,9 @@ Classes **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Company Manager** - Create an hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager and Executive. Every one's pay is calculated differently, research a bit about it. +After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire and raise employees. + **Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -233,7 +261,7 @@ Graphics and Multimedia **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player. **Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* @@ -246,10 +274,3 @@ Security ------------- **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 000000000..7dc5a55a2 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +nojs.club \ No newline at end of file