Forgot your password?

Ask Slashdot: Beginner To Intermediate Programming Projects? 172

Posted by Soulskill
from the port-quake-3-to-my-microwave dept.
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."
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Beginner To Intermediate Programming Projects?

Comments Filter:
  • by DerekLyons (302214) <fairwater@gmail. c o m> on Tuesday May 06, 2014 @08:21PM (#46935363) Homepage

    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.

  • Simple (Score:2, Insightful)

    by Anonymous Coward on Tuesday May 06, 2014 @08:21PM (#46935373)

    Break up those "impossible" projects into manageable chunks. That's sure to be a helpful skill when you move into even larger projects.

  • by crgrace (220738) on Tuesday May 06, 2014 @08:38PM (#46935499)

    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.

  • by PopeRatzo (965947) on Tuesday May 06, 2014 @09:11PM (#46935705) Homepage Journal

    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.

  • Different mindset (Score:4, Insightful)

    by thatkid_2002 (1529917) on Tuesday May 06, 2014 @09:53PM (#46935953)
    Stop thinking in terms of difficulty levels and programming problems. Go out there and just do stuff, easy or hard, with the objective of making something meaningful happen. Have another look at Open Source - maybe you don't grok open source and the ecosystem yet, but give it a bit more time and start with the simplest bugs rather than feature development.

    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.
  • Re:Something else? (Score:4, Insightful)

    by TapeCutter (624760) on Wednesday May 07, 2014 @05:03AM (#46937421) Journal
    Agree, find a problem. Work out an algorithm/heuristic that solves it, then attempt to implement it. If you are not sure how to implement it then you have found a problem of suitable difficulty and you may then want to look at how others have attacked it.

    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 []
    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.

"A great many people think they are thinking when they are merely rearranging their prejudices." -- William James