Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Open Source Programming

Grad Student Looking To Contribute To Open Source 283

An anonymous reader writes "I'm an Applied Math grad student who knows a bit of Mathematics and a bit of programming. C++ is my first programming language — I am decent at it. I wish to start contributing to a numerical library with two purposes — contribute to open source and develop my C++ skills at the same time. I looked at the Boost libraries and joined the developer list. However, I have no idea on how to start contributing. I'm not an expert in template programming, having written only toy programs to understand that concept. I've used some of the OOP constructs like inheritance,but only for very small projects. Do you have any tips on how to get started on contribution? Are there any other emerging numerical libraries to which I can contribute? Are there any other avenues where I can contribute to open source and improve programming skills?"
This discussion has been archived. No new comments can be posted.

Grad Student Looking To Contribute To Open Source

Comments Filter:
  • Kinematics (Score:5, Interesting)

    by MichaelSmith ( 789609 ) on Tuesday October 12, 2010 @05:25AM (#33867298) Homepage Journal

    I work in air traffic control and kinematics are a big deal for us. This is the software which takes care of coordinate systems, motion and transformations. Say you have a vehicle with a particular WGS84 coordinate. Its moving at a particular speed in a particular direction relative to true north. After one hour where will it be in three dimensions relative to its original position? How much distance will it have covered? What happens if its trajectory went within two metres of the south pole? What path in 3D will it follow if it maintains a constant altitude above the datum along the way?

    Ok now say it is not allowed to fly into (say) North Korea which has a particular shape. How can you project its path forwards to determine if it goes into the air space over that country?

    And so on. Its bloody complicated stuff and I reckon a lot of open source software would benefit from a library which did this. Ideal for a maths guy.

  • Sage! (Score:2, Interesting)

    by Anonymous Coward on Tuesday October 12, 2010 @05:51AM (#33867410)

    Applied math student...knows C++...dude. Contribute to Sage [sagemath.org].

    The goal of the Sage project is to creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab. It is based on Python, but has many components written in C and C++. It has good capabilities for numerical computation, but more help is needed. It's pretty easy to dive in and start fixing bugs, and your work would immediately benefit thousands of mathematicians and mathematics students.

    Sign up for the sage-devel list [google.com] and start with Sage!

  • Boost Linear Algebra (Score:2, Interesting)

    by Anonymous Coward on Tuesday October 12, 2010 @06:13AM (#33867484)

    Hi,

    please contribute to the Boost Linear Algebra library, uBLAS.
    You or any other interested in contributing new algorithms can contact me directly on the boost ublas developpers mailing list.
    I'm the new maintainer of this library and will be happy to talk about any new contributions you want to make.
    This library is great and need serious love.

  • Re:Kinematics (Score:5, Interesting)

    by kinema ( 630983 ) on Tuesday October 12, 2010 @06:32AM (#33867544)
    Speaking of kinematics, you might want to take a look at a EMC [linuxcnc.org] (Enhanced Machine Controller). EMC is a CNC [wikipedia.org] package originating from NIST. EMC has an active community using and developing it. There are known bugs in the forward and inverse kinematics for PUMA style robots that could really uses the eye of a trained mathematician.

    I'm sure there are are plenty of other areas that the EMC project could utilize your math skills. There are many, many users and developers of EMC that would appreciate your skills.
  • octave (Score:3, Interesting)

    by gatzke ( 2977 ) on Tuesday October 12, 2010 @06:38AM (#33867570) Homepage Journal

    Octave is a Matlab clone that now works pretty well. Go make a toolbox or two for octave.

  • Re:Kinematics (Score:3, Interesting)

    by awjr ( 1248008 ) on Tuesday October 12, 2010 @06:44AM (#33867584)

    I was part of the team that developed the short-term collision alert system for Swanick, UK. This type of prediction is unnecessary and not very useful to air traffic controllers, particularly in Europe, where each air space has a different way of dealing with traffic.

    For example, pilots want to get their aircraft to specific altitudes to conserve fuel (usually around 29,000ft). In the UK, ATC keeps strict vertical and horizontal seperations, in France, they just let them hit the altitude they want, then play a complicated game of checkers with the planes.

    In Greece, seperation over certain space is maintained by transponders on the ground, so spacing has to be a lot more forgiving, which also limits the throughput of the aircraft.

    So in principle a plane, will fly at an optimum altitude and at a certain speed at that altitude primarily to conserve fuel. However when coming into an airport, control of altitude (and speed to a certain extent) will be handed to local ATC.

    Of note, ATC will 'hand off' a plane to the next air space by assigning a new frequency upon which the plane should be communicating. Planes fly with a specifi flight plan.

    Now unguided rockets.....that's a completely different matter.

  • Re:Maxima (Score:2, Interesting)

    by DMiax ( 915735 ) on Tuesday October 12, 2010 @06:46AM (#33867594)
    Eigen is probably the best starting point, since it is quite used (so your work is not too obscured), simple to extend, with good help from main programmers. Another project that would be nice to extend is GiNaC [ginac.de]. They have a TODO list with different difficulty levels.
  • Have a look at R (Score:3, Interesting)

    by G3ckoG33k ( 647276 ) on Tuesday October 12, 2010 @06:48AM (#33867602)

    Have a look at R, http://www.r-project.org/ [r-project.org], which is math related.

    Their developers page is at http://developer.r-project.org/ [r-project.org]

    The R Project has again participated in the Google Summer of Code during 2010 http://www.r-project.org/soc10/index.html [r-project.org] which had several projects in C++

    I think R could be nice as it combines a high level approach with the lower level of C++.

    They also have forum at http://groups.google.com/group/gsoc-r/topics [google.com]

  • by digitalderbs ( 718388 ) on Tuesday October 12, 2010 @07:11AM (#33867700)
    In addition to BOOST, you might want to consider looking at other projects. Some that might be a good fit, and might need developers are :

    - GSL [gnu.org] : The GNU Scientific Library is a scientific toolset for C and C++. These tools are quite modular, and you might be able to find your own module to code.

    - Plotting software : Help to any of the plotting programs would be a real boon for all scientists. This could involve developing non-linear fitting algorithms, GUI, or statistical analysis. Look at SciDAVis [sourceforge.net] and possibly GRACE [weizmann.ac.il].

    - non-linear fitting : C++ Minuit, or a CERNlib project may be a good match--I'm not sure whether these are only developed internally.

    good luck!
  • FIND bugs! (Score:3, Interesting)

    by Dr. Manhattan ( 29720 ) <(moc.liamg) (ta) (171rorecros)> on Tuesday October 12, 2010 @08:59AM (#33868284) Homepage
    If you know the math, you should be able to come up with regression tests and find corner cases and invalid approximations and so forth. In other words, you should be able to find bugs, or prove that certain bugs aren't present. This is a very valuable service, and you can get familiar with the code by writing the tests that use it and understanding the ways it implements the algorithms involved.
  • Open Object Rexx (Score:2, Interesting)

    by dashley ( 730044 ) on Tuesday October 12, 2010 @09:24AM (#33868626)

    Perhaps you might be interested in a smaller project where the number of developers is also small, but quite open to new blood. All of the current developers would be very happy to get you started with the ooRexx project. The source code is mostly C++ and we do not use templates, mainly because we have no need of them for our requirements.

    ooRexx is an interpreter for multiple platforms and has a very interesting math library. All interpreter calculations are done in floating decimal, not binary. The current library supports most typical math functions (add, subtract, divide, multiply, remainder) but it lack higher order functions such as trig functions.

    If this sounds interesting to you feel free to use the contact list at http://www.oorexx.org/contact.html [oorexx.org] to email one of us and we can get you started or supply you with more information.

    David Ashley
    Project Leader, ooRexx Project

  • by n01 ( 693310 ) on Tuesday October 12, 2010 @09:26AM (#33868666)
    Hello, anonymous submitter,

    About I year ago I've started a small project with a friend, written in C++, that does some improvements to lossless audio compression (currently to FLAC). It calculates the autoconvolution of the audio signal to find similar parts in the audio. Especially for electronically generated music, this can be used to predict other parts in the audio, and thus reduce the entropy of the signal (i.e. compress the file better).

    If you (or anybody else) are interested in further development, I would open-source the project, and may be start working on it again a bit myself. Just drop me a line, at polarspaceflo (at) googlemail (dot) com.
  • Re:Team Up (Score:2, Interesting)

    by Nemesisghost ( 1720424 ) on Tuesday October 12, 2010 @09:29AM (#33868696)
    I'm going to disagree with your assessment that just because he doesn't have an IT degree he will be unable to contribute to an OSS project. I've known plenty of people who didn't have an IT degree but were still damn good at anything IT related, including coding. He's not looking to contribute to the next Linux kernel or make improvements to the PERL RegEx engine. He's asking how can he contribute to what he knows, Math. And those kinds of libraries are more about the math(go figure) than memory management & code optimization.

    What you are purposing is that the only people who would be qualified to work on the libraries he's interested in are those with a PhD in Math & CS, which frankly isn't going to happen. You might also want to check out the degrees that a lot of CS professors have. You might be surprised to find out that they all don't have CS degrees. Some even have liberal arts degrees.
  • Octave. ARM. (Score:2, Interesting)

    by cfriedt ( 1189527 ) on Tuesday October 12, 2010 @09:44AM (#33868880)
    Improve Octave. Specifically, for ARM. Remember that open-source does not necessarily mean architecture independent. Practically all software is written with the perception that the compiler optimizes any poorly written C / C++ code and that the target is a PC. While this is good for x86, relying on hardware instruction rescheduling to make code more 'efficient', it's pretty awful for anything else. Having done a lot of work with ARM / NEON optimizations myself, I can tell you first-hand that gcc does not do a great job of optimizing C code at all. This is going to become increasingly important as ARM outpaces x86, so please do everyone a favour, and write the code correctly the first time. There are several books about why this is so important, e.g. this one [amazon.com], but you'll probably find that its easier to just dive right in. Look at the Android source code, that's always a good example. uClibc / uClibc++ are also good examples.
  • by Zero__Kelvin ( 151819 ) on Tuesday October 12, 2010 @09:46AM (#33868904) Homepage

    " ... In return you get multiple inheritance ..."

    OK, you had me until there. If you are using multiple inheritance you have a flaw at the architectural level. There is a saying among Software Engineers: "Just because you can do it, doesn't mean you should do it." Multiple Inheritance is the poster concept for this statement.

    Other than that, as a SE versed in numerous languages of all types, including C and C++, I can attest that every person saying "C" is better, or "C++" is better, or "C" is unsafe, etc. are simply people that lack a basic understanding of software engineering on some level, and completely lack an understanding of the language they are criticizing. Neither is "safe", or "better", or "implemented incorrectly", etc. (I promise you if you are one of these critics that Bjarne Stroustrop, Dennis Ritchie, and Brian Kernigan are smarter than you, and know much, much, much more than you do about language design.)

    I especially love it when people cite bad code as proof of poor language design. It is like saying you can prove that English is a horrible language by referencing a Rap song. Any good language can be misused, misunderstood, and abused and said abuse is not proof that the language itself is inferior or flawed.

  • by e065c8515d206cb0e190 ( 1785896 ) on Tuesday October 12, 2010 @09:48AM (#33868946)
    Trying to implement new functionalities is not easy if you're not an experience programmer.

    I recommend starting with an existing program or lib and try to fix the memory leaks. By doing that you will look at many lines of code, learn about coding standards, and still be able contribute. You'll also learn how to debug, which is the hard way to learn. And write proper code. Use valgrind.

    Hint: start with libxml2. And good luck.
  • Re:Team Up (Score:5, Interesting)

    by Blrfl ( 46596 ) on Tuesday October 12, 2010 @10:21AM (#33869410) Homepage

    I think you completely misread what I'm suggesting. What I propose is that the OP, who describes himself as a neophyte when it comes to software, find someone with some experience in that field to be a mentor and help get him off to a good start.

    Here's my rationale: I've been writing software for 31 years and have 25 years of industry experience. For the last seven years, I've been working for a company that is staffed mostly by electrical engineers who specialize in signal processing and are really, really good at it. A lot of what they write works, but software isn't their bailiwick, and it lacks the organization and forethought about how it might be used in the future that people who've been around the block tend to put into it.

    By teaming up with someone in CS, the OP won't be figuring out how to do it right by trial and error and perhaps turning out ugly code in the first place, and he gets to spread some of the applied math gospel to the heathens over in CS. :-)

  • by ari_j ( 90255 ) on Tuesday October 12, 2010 @12:04PM (#33871194)
    Here's an example of what the ledow is talking about with point #1. Or at least a corollary of his point in action. About a decade ago, I wanted to play with XML files in C++. There were no good, small libraries to do that. There were a couple of ridiculously large, complicated libraries that would handle XML files, but you'd lose more time learning the library than you would ever put into your actual code. So I created libxml++, to scratch my own personal itch [wikipedia.org]. It was, at the time, a small but useful wrapper around libxml. Very basic, and demonstrated mostly that I knew less about either C++ or XML than I thought I did.

    But people used it. (They also used my CLI Yahoo Messenger client, but that became defunct after I handed it off to other developers, due to the then-rapidly changing Yahoo protocol. The single most touching e-mail I have ever received was from a user of that client.) One of them submitted some patches, and eventually in 2002 I passed off ownership of the libxml++ project to him. I don't code in C++ much anymore, so I don't use my own library, but I do check in on it every so often. There are regular commits, including one last week, and an active mailing list, with several thousand messages. It's in Debian's main package repository and a number of diverse other packages depend on it.

    All of this is the result of an itch I had ten years ago. Don't let anyone tell you that this kind of thing never happens and that there are just a billion useless libraries and programs half-written out there. There are a billion of those, but if you have a need for something that nothing on the market seems to fill, the chances are good that you're not alone in that unfilled need. Fill it and make it easy for others to use it and contribute to it, and see where it ends up in 2020.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...