
Ask Slashdot: Beginner To Intermediate Programming Projects? 172
An anonymous reader writes "I've been teaching myself to code recently. I've made good progress so far, and I've written a bunch of little scripts to make my life easier. Here's the problem: most project ideas I come up with now either seem pretty easy or pretty impossible. I'm having trouble thinking of a project that'll stretch my skills without overloading them. I've tried finding open source projects to read through, but I run into the same thing: either it's straight-forward, or it requires reading a half-dozen dependencies, each of which has dependencies of their own. Anyone have suggestions on some intermediate-skill projects to undertake? Or some project files in an online repo that go beyond the basics without getting overwhelming? My language of choice is Python, but other languages are welcome."
Try a microcontroller project. (Score:5, Informative)
I would suggest getting an Arduino. There's tons and tons of example code out there at all levels of expertise. And it's fun.
Re:Try a microcontroller project. (Score:5, Insightful)
I don't know dick about programming, and I've been having fun with my little Arduino.
It brings me back to my callow youth, playing with a breadboard and figuring out how to make LED's flash. Except this Arduino can actually do stuff.
Right now, I'm playing with making a sort of frankenstein controller for an old analog modular synthesizer. A cross between a Theremin and a Kaoss pad and percussion pads.
But it might end up as a cat torture device, if that damn thing doesn't stop chewing on my earbud cables.
Re: Try some of that gay buttsex (Score:1)
Re:Not kidding (Score:5, Funny)
Re: (Score:2)
1)I have had to work with machine automation in both of my programming jobs extensively. Knowing how to program 'realtime' devices is very useful in an industrial environment (Reading barcode readers, processing, output....or reading relay state/change, determining course of action, switching relay or sending notifications to a user...or com
Something else? (Score:5, Interesting)
Programming isn't an end to itself. Well it can be but, generally we program to do something else - payroll, missile guidance, selling stuff over the internet, etc.
What else do you know? Are you an expert in newt farming? Write an application to automate the tedious aspects of new farming.
Once you have a problem to solve, it becomes attackable. Having to hunting around for the right sized problem suggests you aren't acknowledging the problems you already have.
Re: (Score:3)
Now that you're an "intermediate" programmer, find an existing piece of code somewhere and modify it to do something you want. You'll cover a lot of ground, since you're already starting from a fairly capable codebase, and you'll learn a lot about what you like and don't like from trying to read other people's code. Python is a great "glue" language, so the code you're looking at using need not even be in the same language.
Back in the day I hacked up some 3D gnome tetris game in C to output game state to
Not intermediate yet (Score:3)
I would move past writing software for yourself. While "intermediate" is obviously subjective, you are very unlikely to be at that skill level if you have never sold software or written software for money. Writing software for yourself is so much easier. You can change your goals based on what is easier or what skills you already have. You don't have to figure out difficult problems just because that is what the customer wants.
Since it can be so hard to find work with no experience, and with no academic cre
Re:Something else? (Score:4, Insightful)
AI, simulations, and number theory are (for my tastes) great places to find intermediate to difficult problems (and the algorithms that solve them), 25yrs as a commercial developer and I'm still finding new stuff in those fields. For example I started learning python (for work) by implementing my favourite intermediate "hello world" program, an n-body gravity simulation. I'm currently looking at CUDA (for fun) using my trusty "hello world" sim, they supply an optimised example of the same problem but I won't look at it until I have mine working.
Also it depends on what you call "intermediate". Python is a "batteries included" language, how much do you know about language independent data structures such as trees, vector, matrices? Take a look at "The art and science of programming" by Donald Knuth, it's examples are in Pascal but if you inhale the wisdom in the book you will understand when I say that the language it uses is irrelevant.
Here's an ancient problem I found in the early 80's that I still don't have a programmatic solution for, pretty sure algorithms exists to solve it but I don't want to look at any "spoilers", would much rather find an answer on my own.
1. Create a 6x6 magic square [wikipedia.org]
2. All columns, rows and diagonals must sum to 666
3. All 36 numbers in the square must be prime numbers
4. Marvel at the fact that Issac Newton solved it in his head! Ironically while hand-writing nearly a million words of drivel on the "number of the beast".
5. Bonus points if you find more than one solution.
Re: (Score:3)
Re: (Score:2)
Take a look at "The art and science of programming" by Donald Knuth, it's examples are in Pascal but if you inhale the wisdom in the book you will understand when I say that the language it uses is irrelevant.
Just in case this confuses the submitter, the actual title is "The Art of Computer Programming". And IIRC the code examples aren't in Pascal, but rather in "MIX" assembly, which is a hypothetical language for a hypothetical machine. Also, be forewarned that it has a steep learning curve...
Re: (Score:2)
While I agree with parent in the case you actually are interested in newt farming, I actually code mostly just for the fun of coding, and focus on the type of code rather than the end product. To give an alternate approach, then, depending on what type of code you like there's probably a hackathon or a set of "challenges" or some competition that can provide motivation if you just want random problems to solve. I'm mostly an algorithms guy, so I do a lot in Kaggle [kaggle.com], and Project Euler [projecteuler.net]. Project Euler for ex
Re: (Score:2)
I'm not going to condemn you for this. My own perceptions of what I would be doing with my engineering degree turned out to be so far off target that it's not even funny. I'm not working on the stuff that fascinated me. I'm working on the stuff my boss lets me do. I try to find the "joy of engineering" when and where I can, but it is very difficult to earn a living, raise a family, have the intrinsic qualifications and market demand to pursue one's very specific interests. I suspect that many other read
Re: (Score:3)
I'm not going to condemn you for this. My own perceptions of what I would be doing with my engineering degree turned out to be so far off target that it's not even funny. I'm not working on the stuff that fascinated me. I'm working on the stuff my boss lets me do. I try to find the "joy of engineering" when and where I can, but it is very difficult to earn a living, raise a family, have the intrinsic qualifications and market demand to pursue one's very specific interests. I suspect that many other readers here would agree.
This is not to mention that working on the stuff that fascinates you doesn't mean it's all joy. I've found this even in my hobbies: I want to make video games, but there is a lot of tedium involved. At my day job, I've spent days hunting down intermittent software bugs, and just because I do it for rockets and missiles and satellites doesn't make it any more fun than doing it for industrial wastewater management systems.
Re: (Score:2)
I would say petition for a law where everyone gets paid the same no matter what they do.
....I'd rather not. If a coworker is competent, then I don't really care why they're working with me, as long as they're doing good work.
Project Euler (Score:5, Informative)
project Euler [projecteuler.net]
Re: (Score:2)
My wife the math professor loves that site. She cops stuff off there all the time that she ends up using.
IIRC, she's talked to the people from that site, to thank them and offer an idea or two. I'll ask her later.
Yes, Project Euler is the goods.
Pieces of impossible (Score:3)
Re: (Score:2)
Seconded. All seemingly impossible projects can be broken down into manageable pieces. Break it down logically and tackle specific pieces that seem doable, then build on top of them.
Re: (Score:2)
Yes, but if he tries he will learn a lot about software engineering and project management, skills that go way beyond basic coding; skills that employers are hiring for. Being totally self-driven would just be icing on the cake. I would however suggest a slight modification to the "break it down" strategy. And that is, write modular programs that can work with the other programs you write but could also each function as a stand-alone program. You still need to decide what direction you want to take your
Re: (Score:1)
Re:Pieces of impossible (Score:4, Interesting)
I think this is a good answer. Dream big, start small. About a decade ago I decided I'd like to create a web-based computer game. I had some very beginner web, PHP, and MySQL skills. In theory that was enough of a foundation, as long as I continued learning, but it was a daunting task, because I didn't know many of the simplest things, like even how to keep track of values behind the scenes (such as with session variables). I started very small, coding little pieces, figuring out just enough. Some of the really early components were actually gambling mini games, because those have such strictly defined rules. Once I had a rock-paper-scissors game and a craps game, I'd picked up just enough that I felt I could also implement a simple store. After coding a store, I realized I knew almost enough that, with a little more research, I could code an equipment page that added and removed gear, without really paying any attention to the benefits on the gear. From that came the character sheet which displayed gear plus other stats, then some simple noncombat adventures which gave players equipment and money or increased stats ... and so on. Each new thing required some learning, but most of it was incremental enough, and the learning specific enough, that I could bite off one interface/interaction at a time and keep going.
Sure, it took me six months until I thought I had anything worth inviting play-testers, and a year to go into beta testing, plus a couple more of development, but eventually I had a complete game, a sprawling thing of size and complexity I couldn't remotely have imagined at the beginning. It wasn't only fun, but also somewhat profitable, and in retrospect it's one of the greatest creative efforts of my life. That's something which would have sounded silly to say as I was testing out code for those first couple of exercises with RPS and craps, but that's what they led to.
apply to rl situations (Score:1)
I have found looking for things in my everyday life that could be made easyier or better with the use of programming such as general computer use and so on.
a good example is i wanted to lower power usage in my general computing so i recycled and old eee to use as a master machine to turn on and off my other computers as i needed them i used python php and shell script.
so i recommend just look at the things you do and try apply programming to it, hope this suggestion helps and lots of luck!!
Pygame? (Score:3, Informative)
http://www.pygame.org/ [pygame.org]
A basic banner ad type game tutorial.
http://www.pygame.org/docs/tut... [pygame.org]
Re: (Score:2)
pygame is a good recommendation. Once I found a nice game that was written by a beginner, so I took his code and made some improvements, just to show how it could be done. Perhaps the OP might find interesting the historic of this git repo: https://github.com/dmbasso/ent... [github.com]
Don't overlook the easy (Score:5, Insightful)
Don't sneer at the easy/simple/etc... Just because they seem so at first blush doesn't always mean they are so once you get into them. Not to mention, working on the basics never hurts no matter what you're trying to learn.
Re: (Score:1)
Re: (Score:1)
As mundane as it is doing the routine "easy" projects, keep doing them! Practice. Practice. Practice!!!
During the routine projects you might come up with a more convoluted idea to do the same exact task which will require x5 the work and try to do it just because you can. It's when doing mundane tasks I've had many a brain storm to try a new method. Most of the time my brain storm was Hurricane Katrina (a disaster) but there were a couple of legitimately cool things I accidentally did in the process!
Patterns (Score:1)
Many websites offer lists of programming patterns http://rosettacode.org/wiki/Rosetta_Code I like rosetta code but there are many more websites, plus books to peruse. Try to find what fascinates you and see if any new ideas come out of it.
Simple (Score:2, Insightful)
Break up those "impossible" projects into manageable chunks. That's sure to be a helpful skill when you move into even larger projects.
Write a game (Score:1)
Games are a classic programming project. Depending on your level of interest, you could go with something fairly simple (like a card game) or an implementation of a classic video game (something like Breakout or Space Invaders). I've had friends who wrote simple role-playing games as well.
Managing dependencies is a key skill... (Score:3, Informative)
... and if that is all that stands between you and every single project that isn't "too easy" for you, then THAT is exactly what you should be working on.
However, you can learn SDL and fairly easily use it with C and/or C++ and make simple games and graphical apps with no or at least very few additional dependencies.
Try a totally different programming language (Score:1)
and not just a offshoot, like say C to C++ or C#. Just a completely different one.
It may make the impossible seem possible. And a bunch of other new insights.
When all you ever used is a hammer....
Zen (Score:3, Interesting)
Study Zen. Not from a religious standpoint but from a philosophical one. Once you grasp these concepts, you are ready to become a programmer or anything else you want.
The first lesson is that an object falls into a pond directly. The object splashes directly. The object sinks directly. The sequence out of order is unnatural.
Okay so this idea informs you about security, and about data flow. More lessons await! :)
Re: (Score:2)
Re: (Score:3)
This is an example of a koan [wikipedia.org].
What is the Buddha nature of programming? I see this only as to, with heart, effortlessly spawn systems.
The koan of the pebble as it is tossed into a pool is powerful and yet effortless.
From a programming standpoint, the server is the pond. The pebble is the data that will connect to and be placed into the server. The person tossing the pebble is the user. Each activity will take the shortest path, perhaps to the farthest depth. The pond can reject pebbles (frozen). :-)
Systems r
Re: (Score:2)
Re: (Score:2)
I had never considered that the spoon in the film The Matrix could be also representative of the system itself.
Re: (Score:2)
Re: (Score:2)
The first lesson is that an object falls into a pond directly. The object splashes directly. The object sinks directly. The sequence out of order is unnatural.
Aha! This koan is a warning against multithreading.
checkio and hackerrank (Score:4, Informative)
The two sites checkio and hackerrank can probably provide you some challenges. They will force you to learn some algorithms (trees, graphs, etc.) which will provide you with tools you need for more complex projects.
Re: (Score:1)
Re: (Score:1)
Games! (Score:2)
Make a game. Or contribute to an existing open source game. You can easily set and adjust the scope and depth of the project so that it's fun and challenging. Chances are, you already play some games you like, and chances are you can get inspired for your own game project there. And perhaps others will even find it fun to play.
Somehow, when I get playing a game for any period of time, sooner or later I slowly switch to hacking the codebase as it ends up being even more fun. :-) If you're interested in b
Re: (Score:2)
Yup, simple implementations of games you know. I like cards - dealing a poker hand, determining what hand it is, comparing with other hands, determining winner. Then run it in a loop a few thousand times, recording results to a database, or a csv file, or ...
Relationships (Score:2, Informative)
Simulate a microprocessor. (Score:4, Insightful)
When I was in graduate school I had to write a C program to simulate the operation of a small custom microprocessor. It was a truly fascinating experience (and not terribly difficult). You can start with something really simple like a MIPS variant and go from there. I actually had to write several simulators at different levels of abstraction (one only simulated the instruction set, another simulated down to the microcode, etc). Just simulating a small instruction set is a great way to get started.
The cool part of this kind of project is it gets you learning so many different things out of necessity. To run assembly code on my C-based microprocessor simulation I had to learn to write assembly language programs. Then I had to learn how to write an assembler (I did it in C but if I were doing it today I would use Perl or Python) to generate object code for my microprocessor simulation.. Then to debug the microprocessor I needed to write a disassembler and so on.
The microprocessor was microcoded so I also got to learn how to write microcode to verify fine details of the microprocessor. I got some great insight to computer arithmetic and really enjoyed it.
I can't tell you what a cool experience it is to see a simple assembly code you wrote run on a microprocessor simulation you wrote. This can lead to getting involved in emulation but I didn't do that. I'm in the chip design business now so I write simulations and models of all kinds of analog and digital circuits and it is a blast.
oh the places you'll go... Re:Simulate a micropro (Score:2)
crgrace: r.e. micoprocessor simulator, that is a smashing idea... it sounds very cool.
orignal poster (an anonyous reader): Let's assume you're doing this for fun - as a hobby.
car analogy: I read that you don't need to know how an engine works to drive a car, but a good racers will know something about engines.
So... if you want to really learn programming, learn some assembler - doesn't have to be a lot, but every little bit you do learn will help you. Simpler chips are probably better to get started w
Simple web frontend for a database (Score:1)
One small project that also gives you a useful tool is building a really simple web front-end for a database. I'm not talking about anything complex like a CRUD layer, just an HTML form with a multi-line input box where you type your query; then when you submit the form, produce an HTML table with the result rows/columns.
To get started, you don't need a database server - you can just use SQLite. You also don't need a web framework - you can just do it as a CGI script initially. Then once you have somethi
Re: (Score:2)
Enhance your old projects (Score:2)
Try adding new features to your existing simple projects. If for example you are a musician, your beginner project might have been a simple metronome app. You could then hone your UI skills by creating a new interface for easier dialing in a tempo rather than the simple text field widget you used initially. Or you could try enhancing it to accent the downbeat for various time signatures (for which you will also need to come up with more advanced UIs). Then you can enhance the beat generation code even furth
SICP (Score:3)
I'd go for the classic medium and I want to get better SICP.
Online course: http://ocw.mit.edu/courses/ele... [mit.edu]
Online book + problems +... http://mitpress.mit.edu/sicp/ [mit.edu]
This book more than any other will take your programming to a new level.
Intermediate Programming (Score:2)
If you are really trying to get to an "intermediate" level you could start doing simple data structures and algorithms. Learn the classic sorting routines, linked lists, etc. Once you understand those you can start seeing how they are used in large programs. Look at some of the annotated programs -- the Lion's book on Unix is a good collection of readings to see how an operating system is structured for example. Games are a great way to develop your skills but you may not have enough background yet to get v
Easy (Score:2)
Learn a framework well (Score:2)
You'll learn a ton, many of them no longer suck, and it can definitely speed-up the development time of future projects.
On the web I work primarily with PHP and for a long time the frameworks weren't any better than reusing my own class libraries. These days there's some very comprehensive ones that do things faster and simpler than I do already, and have been well worth my time to get better at.
A quick Google search shows there's some mature ones for different use cases of Python as well. Research a few an
Try TopCoder (Score:2)
Specifically, try doing past algorithm competitions - probably starting with their High School level competitions (that may sound insulting, but there's some very good programmers in that division). Once you've done some TopCoder, the data manipulations and calculations you do in "normal" programming will seem really easy. And they always post good solution explanations (or you can look at other people's solutions) to get you started.
Algorithm work like this isn't the end and and be all of programming, bu
Groovy? (Score:2)
Its a good segue into Java, which is marketable, and advanced OO techniques. The name is unfortunate but it is very useful. It is in fact said it should have been named JavaScript, but the name was taken.
What does intermediate mean? I am not sure. But I would first ID what sorts of problems interest me and then start chipping away at simpler sub-problems related to those problems or problem domains. The as time went on take on more challenging problems in the same problem domain.
low level, high level, and object GUI (Score:2)
It's really hard to suggest specific projects because "intermediate" is such an imprecise term. Stay away from anything security sensitive, especially WEB FACING security sensitive applications. Web scripts get attacked several times per day.
Other than that, something that can really teach you a lot in a short time is to become familiar with a low-level language like C (not C++). Even if you don't USE C much, being familiar with it will let you understand your Python code so much better - you'll know WHY s
To the tune: Let it be (Score:5, Funny)
When I find my code in tons of trouble,
Friends and colleagues come to me,
Speaking words of wisdom:
"Write in C."
As the deadline fast approaches,
And bugs are all that I can see,
Somewhere, someone whispers:
"Write in C."
Write in C, Write in C,
Write in C, oh, Write in C.
LOGO's dead and buried,
Write in C.
I used to write a lot of FORTRAN,
For science it worked flawlessly.
Try using it for graphics!
Write in C.
If you've just spent nearly 30 hours
Debugging some assembly,
Soon you will be glad to
Write in C.
Write in C, Write in C,
Write in C, yeah, Write in C.
Only wimps use BASIC.
Write in C.
Write in C, Write in C
Write in C, oh, Write in C.
Pascal won't quite cut it.
Write in C.
Write in C, Write in C,
Write in C, yeah, Write in C.
Don't even mention COBOL.
Write in C.
Re: To the tune: Let it be (Score:1)
You misspelled Go.
Re: (Score:2)
There is no Go.
Probably just as well, someone might consider it harmful.
Re: (Score:2)
There is no Go.
Probably just as well, someone might consider it harmful.
Only v2.
Re: (Score:1)
You mean Brand X [cowlark.com]?
Selenium (Score:2)
I think you would be challenged by working with selenium and webdriver to control web browsers for developing web tests. This will involve learning xpath which is recommended knowledge if you don't know it. This skillset is marketable, I might add.
Fix bugs (Score:2)
Games and ProjectEuler (Score:4, Interesting)
Secondly I recommend making some games. Pacman, space invaders, something 3D. They don't have to be good. But ideally you move onto multi player.
Basically if you can make a multi-player multi-platform pacman in an isometric view in OpenGL driven 3D with a server(SQL/NoSQL) driven leaderboard with a distrubution/installer module for each platform then you are done. There isn't a whole lot of programming that you can't do.
Not to mention your friends will think that you are a whole lot cooler making a game than when you try to explain the challanges of problem 132 in Project Euler.
Many people here are mentioning Arduino (which I love) it is a cool thing to add to your resume but unless you do something fairly strange then it won't expand your programming skills much. Arduino programming is usually fairly straight forward act / react. Although dealing with crappy sensor data and having motors not do exactly what you meant and then having to compensate is both frustrating and oddly satisfying.
Bowling league (Score:2)
Grit (Score:2)
Calculator (Score:4, Interesting)
Write a calculator.
Sounds easy right?
Good luck.
Different mindset (Score:4, Insightful)
Something that I have found particularly helpful is having a go at using open source tools and libraries and then when you find something hard to use (and with a lot of swearing, eventually understand it) go and write a tool or a library to make it easier. There's so many rough edges out there that you can smooth out and these problems tend to have a fairly confined complexity in my experience. You've already started this with your scripting so take it to the next level.
Try some classic problems? (Score:1)
Camera tracking (Score:2)
I'm trying to do a similar thing. I'm pretty decent with Perl (or at least used to be) and know enough C and Java to get myself in trouble. I'm trying to learn Python now.
So... my other hobby is video production. One of the things that's expensive to do is to track a camera so that that it can be replayed to CGI software. This allows almost seamless effects. For example, film an object against a green screen as the camera pans. In normal chromakey, it's quite obvious because the background doesn't track the
Text-scanning programs (Score:1)
Android root toolkit for Linux? (Score:2)
You didn't say directly which OS you're programming on but I'm going to infer it's Linux (common I think with python/open source types). Since one thing I did recently was root my galaxy nexus with the windows-only Wug's Nexus Root Toolkit [xda-developers.com] I would suggest creating something similar to this for Linux. It always seemed strange to me that so many Android rooting tools were windows-exclusive. Doesn't have to be for a galaxy or nexus device obviously, any/all models of android/I'll leave that up to you. This par
Re: (Score:2)
It always seemed strange to me that so many Android rooting tools were windows-exclusive.
They're generally just front-ends for adb and fastboot (and possibly curl, if they fetch the files, too), because average windows users are afraid of command lines. The equivalent tool in linux would be little more than a very small shell script.
don't be afraid (Score:1)
to start something you're not sure you can finish. i wrote a framework in perl to generate some pdf reports, complete with graphs and automated text. took me quite a while, and a lot of "i'll come back to this part later". i went from the script being used to piece together bash/shell commands, to it doing everything.
but the point is, i kept at it. taking a little part at a time and futzing around with it till it worked a little better.
Field mapping with javascript/xml (Score:2)
If you need an easy problem that quickly turns into a nightmare, try writing a program that allows the user to map one set of database/data structure/XML fields to another set of database/data structure/XML fields.
For bonus points the user can use javascript to do the transform, as well as using a nice GUI.
But what do you want to DO? (Score:3)
You're asking the wrong question. Programming isn't an end in itself, it's a means to an end. Ask yourself what practical application you want to accomplish, then teach yourself the appropriate language.
Personally, I always liked website development. I like that I can keep my fingers in a few pies that I enjoy -- graphic design, sometimes photography, the occasional copy writing and the code to put it all together. So, naturally, I gravitated towards PHP, JavaScript, HTML and CSS (OK, those last two aren't really programming). I'll admit, I like the instant feedback and gratification of interpreted languages.
So come up with an end goal that interests you, then do some research to find the best language(s) suited to the task. If it seems too complicated, scale back your ambitions a bit until you find something suitably challenging without being overwhelming, then work your way up. You'll find that many of the skills and principles you learn from one language translate pretty quickly to others.
Into tabletop RPGs? (Score:2)
do the pretty impossible (Score:2)
Ruby Warrior (Score:2)
If you like Python you might like Ruby too (I love em both). I always wished I had learned Ruby with ruby warrior:
https://www.bloc.io/ruby-warri... [www.bloc.io]
https://github.com/ryanb/ruby-... [github.com]
30 years ago... (Score:2)
I would suggest writing a DB app to organize your CDs.
Oh well.
Good game to try (Score:1)
Do something impossible (Score:1)
Create a Doubly Linked List (Score:2)
Write all the parts...:
You can do this in C. C comes with EVERY Linux distribution so no additional parts or bits required. If you can do this, you really can do most anything and further more you will understand some of the more advanced concepts of computer programming, one of the most important is Memory Management. Now I know that with languages like Java you are far removed
Try this (Score:2)
Try Fractals (Score:3)
Fractals [wikipedia.org] are complex images generated out of amazingly simple algorithms and math.
You can quite easily go from easy to sophisticated solution, you'll get exposure to different aspects of programming, and it's something you could spend as little or as much time as you'd like. They literally go on for infinity so in addition to the mandelbrot set and the julia set that you have probably seen a million times before, you can create many amazing different images from them.
Plus you'll get a "cool man" feeling when you print up a giant psychedelic sized poster and people visiting comment on how awesome it looks.
If you want to learn (Score:2)
If you are into learning, and don't already have a specific goal you can work towards, I strongly suggest re-inventing the wheel, specifically the file manager wheel, it covers a LOT of ground and will earn you invaluable experience. After writing one you will have solid experience in
other challenge sites (Score:1)
C++ Mp3 player? (Score:1)
Grab yourself :
- Qt http://qt-project.org/ [qt-project.org]
- Bass API http://www.un4seen.com/bass.ht... [un4seen.com]
Get coding. Make it a simple MP3 player, or, expand on it until your hearts content.
Qt is great for making quick apps and learning a bit of C++ in the process.
The rest of time, you'll be learning "Qt functions", not a bad thing, as it pretty much contains everything you'll need to make a cross platform GUI program. Qt is quick to learn, very simple compared to most things out there.
If you prefer Visual Studio, or prefer mo
jump into the deep end (Score:2)
Same thing with programming. Forget that intermediate stuff bullshit. Jump into the deep end, and learn to code or sink trying. Either way, you'll know what your limits are, fast.
Learn a language with a different paradigm. (Score:2)
Chances are that all of the software you know is written in an imperative language that is derived from C. It's pretty much any language that uses curly brackets: {} Note that even Python and JavaScript share a lot of concepts with C.
Try a Lisp family language to get exposed to functional programming. Scheme has already been mentioned via SICP. Or go further with functional programming and do ML, Ocaml, Haskell, F#, Scala.
Prolog. Dec
Contribute to Open Source (Score:2)
Common question . . . (Score:2)
SpamBayes (Score:2)
The SpamBayes email filter hasn't been updated in forever. The actual filtering part works great. The problem that needs solving is that it needs to be updated for Outlook 2013 (using the Ribbon) and for 64 bit platforms. It's open source, and written in Python.
http://spambayes.sourceforge.n... [sourceforge.net]
It starts and ends with a game (Score:2)
As someone who's been programming for right around 30 years, more than 20 of it professionally, and has written a number of books along the way, I get asked for advice fairly often. One of the questions I get asked most is a variation on this one... for me, the answer is always the same: WRITE A GAME!
What developers often don't realize is that few programming projects touch on as wide a range of topics and disciplines as games do. Things like data structures, AI, file handling, input processing, obviously
A puzzle solver (Score:2)
I recently had to refresh my C++ skills, so I decided to write a sudoku solver. The neat thing about this particular problem is that it can be as complex as you want it to be. There are a large number of techniques available to solve increasingly difficult puzzles (check the sudoku wiki if you aren't an avid fan of sudoku), and you can implement as many of them as you want as optimizations before resorting to brute force. You can further challenge yourself by setting different requirements. For example,
Take on one of your impossible projects (Score:2)
Seriously. Every huge, impossible project is made up of a bunch of smaller projects that are totally doable, plus maybe a couple that are actually hard. Divide and conquer is one of the most important skills you can develop as a programmer. Start with the first easy thing you can think of that you'll need to do before you get to the big hard thing, and get some code on the screen. Keep doing that. Pretty soon you'll find you have most of it done.
And as for the reading thing, you should expect to be spending
make your own hex dump (Score:2)
Re: (Score:2)
You're an arrogant fool and would be downvoted if I'd not already posted on this article.
I taught myself programming on Z80 and 6502 machines many years ago and I could lose and find a lot professional programmers these days. University graduates in particular seem to have no idea how the systems work, god knows why, you'd think they'd teach the basics but apparently not everywhere!
Do you wear a suit to work? You sound like you do.