Editing User:Dspies
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 30: | Line 30: | ||
'''C++'''<br /> | '''C++'''<br /> | ||
I've programmed somewhat on and off in C++, but I've never worked on a project with a group or intended for public consumption. A couple years ago I wrote a Quadratic Number Field Sieve using gmp and that was the first significant piece of code I wrote in C++. A couple months ago I wrote a preprocessor for grounded Answer Set Programs that does something analogous to forward-checking to infer binary constraints. During this project I read "Effective C++" and some of "C++ Templates: The Complete Guide". I did extensive online browsing to understand C++-11 rvalue references and perfect forwarding (although I realize Octave doesn't use C++-11 so those won't be available). I also posted a lot of questions on Stack Overflow.<br /> | I've programmed somewhat on and off in C++, but I've never worked on a project with a group or intended for public consumption. A couple years ago I wrote a Quadratic Number Field Sieve using gmp and that was the first significant piece of code I wrote in C++. A couple months ago I wrote a preprocessor for grounded Answer Set Programs that does something analogous to forward-checking to infer binary constraints. During this project I read "Effective C++" and some of "C++ Templates: The Complete Guide". I did extensive online browsing to understand C++-11 rvalue references and perfect forwarding (although I realize Octave doesn't use C++-11 so those won't be available). I also posted a lot of questions on Stack Overflow.<br /> | ||
'''Octave m-scripts'''<br /> | '''Octave m-scripts'''<br /> | ||
I use Octave a lot for minor tasks that come up in research. It's a wonderful tool and I love coming up with sneaky ways to vectorize bits of code. Sometimes I go on StackOverflow to look for "how do you vectorize x" questions just so I can answer them. Most of them are for Matlab though. I don't know why Octave isn't a more popular alternative.<br /> | I use Octave a lot for minor tasks that come up in research. It's a wonderful tool and I love coming up with sneaky ways to vectorize bits of code. Sometimes I go on StackOverflow to look for "how do you vectorize x" questions just so I can answer them. Most of them are for Matlab though. I don't know why Octave isn't a more popular alternative.<br /> | ||
Line 47: | Line 45: | ||
On the one hand, I confess my documentation was absolutely terrible where it existed at all (today I believe I could do much better, I've had practice explaining things more completely and simply as a TA for CMPUT 101 and tend to get fairly positive reviews), but also these students were almost always freshman who had only just taken their first CS class. My approach to indexing game-states relied heavily on dynamic programming as well as results from combinatorics and generating functions and most of these students had just taken freshman calculus and hadn't expected to be doing any math. | On the one hand, I confess my documentation was absolutely terrible where it existed at all (today I believe I could do much better, I've had practice explaining things more completely and simply as a TA for CMPUT 101 and tend to get fairly positive reviews), but also these students were almost always freshman who had only just taken their first CS class. My approach to indexing game-states relied heavily on dynamic programming as well as results from combinatorics and generating functions and most of these students had just taken freshman calculus and hadn't expected to be doing any math. | ||
* Please state the commits and patches you already contributed to Octave. | * Please state the commits and patches you already contributed to Octave. | ||
I made a minor change to the m-script for the issymmetric function | I made a minor change to the m-script for the issymmetric function. I also created a significant patch to the find-function which consolidates all the many implementations into one templatized function. This fixes a couple separate bugs/matlab incompatibilities (find(sparse(0,0)), find(sparse(0,1)) etc. all work the same, six or more return values doesn't cause Octave to crash). Additionally, I added a fourth parameter for specifying the desired dimension of the output vector: http://savannah.gnu.org/patch/?8386 | ||
I've reported many bugs relating to sparse matrices. | I've reported many bugs relating to sparse matrices. | ||
Line 112: | Line 110: | ||
== Y: Your task == | == Y: Your task == | ||
* Did you select a task from our list of proposals and ideas? | * Did you select a task from our list of proposals and ideas? | ||
I kind of had my own idea, but it's closely related to one of the tasks listed. | |||
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. | ** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. | ||
The Sparse Matrices Project: http://wiki.octave.org/Projects#Sparse_Matrices | The Sparse Matrices Project: http://wiki.octave.org/Projects#Sparse_Matrices | ||
I want to help improve Sparse Matrix support. | I want to help improve Sparse Matrix support. But I have a specific goal in mind, not just generally filling arbitrary gaps here and there. (see below) | ||
Particularly, I | ** If you apply for a task you have added yourself instead, please describe this task, its scope and people you already talked to concerning it. What field of tasks did you miss on the list? | ||
Particularly, I want to build a sparse matrix library tuned towards graph operations. I think that people often underestimate how many complex graph operations are possible with sparse matrices. In many cases, doing something like a breadth-first search can be equivalent to an operation which is almost just a matrix multiply.<br /> | |||
On the mailing list, I gave an example of a program that takes an undirected graph and finds the set of all maximal cliques. As I've mentioned, I've done a lot with this sort of thing, but constantly find myself working around gaps or bugs. I want to try to fill those gaps and build this graph library on top of it. <br/> | On the mailing list, I gave an example of a program that takes an undirected graph and finds the set of all maximal cliques. As I've mentioned, I've done a lot with this sort of thing, but constantly find myself working around gaps or bugs. I want to try to fill those gaps and build this graph library on top of it. <br/> | ||
UPDATE: After some discussion on the mailing list, one project | UPDATE: After some discussion on the mailing list, one project someone suggested was just to get Octave Sparse-Matrix indexing working properly. I'd be happy just working on this. It seems feasible since sparse column arrays are already stored in compressed format (and indexing generally requires converting back and forth between matrix and column format, but there shouldn't be any need to use row vectors) | ||
* Please provide a rough estimated timeline for your work on the task. | * Please provide a rough estimated timeline for your work on the task. | ||
I don't know how to estimate this. | |||
[[Category: Summer of Code]] | [[Category: Summer of Code]] | ||