9 ms·
A list of practical projects that anyone can solve in any programming language
- madsbuch 9y agoGreat list for inspiration! Though, it is not true that all the problems can be solved in any programming language: try to make a "Bandwidth Monitor" in Coq.
- twic 9y agoCoq's not really a programming language, is it? It's a proof language. So, you could prove the correctness, or perhaps possibility, of a bandwidth monitor in Coq, given certain assumptions, but it would be up to some other poor schmuck to actually write it.
- madsbuch 9y agoWell, what constitutes a programming language then? It sounds like there is a clear definition :-) Coq is certainly a programming language, as you can build programs. But you can't interact with the subsystem, you can only build pure functions (Therefore it is quite hard to build a performance monitor). In my opinion English could also go as a programming language. Especially given the rise in NLP products. You can actually program a computer to do quite advanced tasks solely through natural languages.
- gerdesj 9y ago"Well, what constitutes a programming language then? It sounds like there is a clear definition :-)" Some bloke called Turing had a few ideas on a definition. (I'll whisper "whoosh" here - for my own note) Given that any programming language can be defined in English (or any other human language, with a few contortions as required, if any) then of course English can be used to create a Turing Machine (TM). It doesn't take much NLP to define a full TM via speech.
- madsbuch 9y agoI am not aware of his definition? I can't find it on google either. Can you point me to it? A Turing machine does not talk about expressing computations, but rather a class of problems that can be computed. Remember, not all programming languages are Turing complete (Coq being one of them).
- gerdesj 9y agoI can still hear "whoosh" in my own ears here 8) Given how simple a Turing Machine can be, I seriously doubt (without any proof) that coq is not able to recreate a TM. I am not an expert but the explanation about Turing Machines I read was in GED and involved a simple tape and a slack handful of symbols and operations and some basic hand waving. If coq can't manage that then it is unlikely to be useful - which I doubt.
- madsbuch 9y agoYou should check you ears. Coq only accepts well funded recursion. Non-bound Turing machines span a bigger complexity class. In other words: Turing machines can loop forever, Coq can not express programs that can do so. Read your CS 101:
- brians 9y agoI think that looks like a framework for proving things about the bandwidth usage of other programs, no?
- madsbuch 9y agoYou are right :-) But we could also consider another example: try to return the nth digit using a regular expression.
- flavio81 9y ago+1 Or try to make an <insert non-trivial application> in Brainf*uck.
- djaychela 9y agoThanks for this - I'm just beginning on the long journey of learning programming, and have been looking for challenges to set myself now that I have (some) of the basics down (but large, practical projects are still somewhat daunting).
- thearn4 9y agoThanks for sharing. I'm putting together materials for a course on data structures that I'm teaching this fall. I have the theory part covered, but I'm always on the lookout for things that could make for decent practical assignment problems - reasonably attainable in scope, but without being too contrived.
- mekicha 9y agoI agree. This is a great list. Will like to see some game projects as well, and more in the security section too.
- grimmfang 9y agoShould one consider them self skilled if they can complete all of these projects with some amount of ease?
- lgas 9y agoSkilled relative to... ...most of the population? Yes. ...John Carmack? No.
- lanna 9y ago> Prime Factorization - Have the user enter a number and find all Prime Factors (if there are any) and display them. not to sound pedantic, but for any integer greater than 1 there is always at least one prime factor: https://en.wikipedia.org/wiki/Fundamental_theorem_of_arithmetic https://en.wikipedia.org/wiki/Fundamental_theorem_of_arithme... edit: for prime numbers, it is the number itself
- Twisol 9y agoNot to sound pedantic, but a number is only its own prime factor if it itself is prime! (Your point stands, though: every integer > 1 has at least one prime factor.)
- lanna 9y agofixed, thank you
- wayn3 9y agoand "1" does not, so the thing youre trying to be pedantic about isnt even wrong.
- e12e 9y agoTrue, and when talking about "numbers" one would generally include 3/7 and maybe e, negative numbers and perhaps complex numbers... or at the very least negative integers...
- wayn3 9y agoall of which have prime factors ;) besides, you may as well consider 1 a prime factor. the task is just a silly programming toy problem. 1 not being prime is pure definition, including 1 in the primes would not materially change the definition of primes. just make a lot of advanced math tedious to write down.
- 9y ago
- eridius 9y agoMy go-to for this sort of thing has always been Project Euler (https://projecteuler.net/ https://projecteuler.net/).
- johnchristopher 9y agoBut project Euler never challenged me to build a cms like joomla or drupal :-).
- careersuicide 9y agoI've posted this several times, but... https://github.com/seaneshbaugh/rosetta-euler https://github.com/seaneshbaugh/rosetta-euler It's an ongoing thing I work on when I'm not working on anything in particular.
- lunixbochs 9y agoSweet, I've been working on one of those too: https://github.com/lunixbochs/project-euler https://github.com/lunixbochs/project-euler Dare you to add an HDL.
- throwaway7645 9y agoYou're missing an array language like APL, J, or K.
- saagarjha 9y agoI'd like to mention that Project Euler states that they'd prefer that people not publish the solutions publicly: > I learned so much solving problem XXX so is it okay to publish my solution elsewhere? It appears that you have answered your own question. There is nothing quite like that "Aha!" moment when you finally beat a problem which you have been working on for some time. It is often through the best of intentions in wishing to share our insights so that others can enjoy that moment too. Sadly, however, that will not be the case for your readers. Real learning is an active process and seeing how it is done is a long way from experiencing that epiphany of discovery. Please do not deny others what you have so richly valued yourself. Just saying.
- jnbiche 9y agoAny other lists of projects like this?
- wst_ 9y agoAdvent of Code. Not a list but also a set of problems to solve - nice for learning. https://adventofcode.com/ https://adventofcode.com/
- vesche 9y agohttp://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/ http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-... https://www.reddit.com/r/learnprogramming/comments/2a9ygh/1000_beginner_programming_projects_xpost/ https://www.reddit.com/r/learnprogramming/comments/2a9ygh/10... https://www.reddit.com/r/dailyprogrammer https://www.reddit.com/r/dailyprogrammer
- nknj 9y agohttps://projecteuler.net/ https://projecteuler.net/
- jnbiche 9y agoTo my own question, I'll add the 99 Problems for Scheme, Prolog, Ocaml, Haskell, Scala, and various other languages, as mentioned elsewhere on this thread. They contain a surprising amount of basic computer science in very short questions. Master them and you'll be well on your way to understanding functional (or declarative, in the case of Prolog) programming.
- doc_gunthrop 9y agoCodewars provides (mostly) bite-sized coding challenges in a wide range of programming languages. Each challenge is ranked by difficulty, and, once completed, you can view other user solutions for learning and comparison (which other similarly-designed sites do not allow). Link: https://www.codewars.com/r/F4g9Rg https://www.codewars.com/r/F4g9Rg
- slaymaker1907 9y agoYou might add in some basic (useful) encryption like RSA. There's a running joke in the CS department at my university that every other class has to teach RSA, so it is not incredibly difficulty to do.
- gruez 9y ago>SQL Query Analyzer - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. Non-trivial if "look for ways to make it more efficient" means non-trivial suggestions (ie. not "add moar indexes").
- rtpg 9y agoI've actually been working on this while trying to help a friend learn programming. I've been looking for some meatier projects that still have good feedback loops, without requiring too much domain knowledge. For example, I've been working through a project with the friend that involves scraping prices off of a website and trying to build a thing to automatically order things off of the websites. Multiple distinct parts, each with their own, very visible, success state. But at the same time, not too many challenging domain specific issues (main issue was just explaining CSS selectors and form POSTs).
- karangoeluw 9y agoHi all. It's Karan here - the creator of this repo. Thanks OP for posting the link; I'm glad to see people like it. I'll be reading comments here, so keep 'em coming. ;)
- bloaf 9y agoI'd like to make a wikipedia-of-code where each page corresponds to a "project" like the ones listed here. The project entry would look like a Jupyter notebook, and you can edit/execute the code freely.
- abecedarius 9y agoI made a start on that once with http://wry.me/~darius/hacks/howtodothingswithdocs.tar.gz http://wry.me/~darius/hacks/howtodothingswithdocs.tar.gz -- it runs literate programs in Scheme on the server. Ancient Python code.
- bloaf 9y agoI don't know if I'd be courageous enough to run random internet code server side, but I know there are some people that do. I was thinking about trying to get a lisp-to-javascript compiler, then use it to compile a lisp-interpreter-written-in-lisp to javascript, then the notebook would just be a fancy client-side lisp REPL.
- abecedarius 9y agoThe part you might find interesting is how it treats pages as modules you can import (from other pages), and integrates that with built-in version control (though I never got to the UI for the version control). Yeah, running it all client-side makes more sense. See my profile info if you ever feel like chatting about it.
- ghubbard 9y agoThere's also http://exercism.io/ http://exercism.io/ where you can solve problems and get/give feedback on the solutions. The platform is all open source on Github.
- icc97 9y agoThere is also the 99-problems sets, started in Prolog [0], then Lisp [1], Haskell [2], Python [3], and more. [0]: https://sites.google.com/site/prologsite/prolog-problems https://sites.google.com/site/prologsite/prolog-problems [1]: http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/func... [2]: https://wiki.haskell.org/99_questions https://wiki.haskell.org/99_questions [3]: https://wiki.python.org/moin/ProblemSets/99%20Prolog%20Problems%20Solutions https://wiki.python.org/moin/ProblemSets/99%20Prolog%20Probl...
- bonoetmalo 9y agoI really like Rosetta Code esque projects. Rosetta Code has been somewhat abandoned as of late recently though.
- deleted 9y ago[deleted]
- megamindbrian 9y agoHow do you feel about actually solving them in any language and then documenting the solution? https://github.com/megamindbrian/jupytangular https://github.com/megamindbrian/jupytangular
- cylinder714 9y agoExercises for Programmers: 57 Challenges to Develop Your Coding Skills by Brian P. Hogan https://pragprog.com/book/bhwb/exercises-for-programmers https://pragprog.com/book/bhwb/exercises-for-programmers