Our most up-to-date software is on github
cu-applied-math github, which we use when we teach our summer STEM camp
Github repos for current BS/MS/PhD students
Osman Malik's github projects (e.g., Tucker tensor sketch for our paper, Countsketch Interpolative Decomposition for our paper, Random approximate matrix multiplication for our paper, Tucker Ring sampling for our preprint, Sparse Khatri-Rao in Matlab, sketching of structured matrices for our paper)
Liam Madden's github projects (e.g., see Time-Varying experiments which is for our paper)
Jacob Tiede's github projects (e.g., see Capstone Project about using ML for genetics)
Jaden Wang's github projects (e.g., see Matrix Multiplication for finding faster matrix multiplication algorithms)
Github repos for former students
James Folberth's github projects (e.g., see Safe-NNLS for solving non-negative least-squares with provable guarantees)
Farhad Pourkamali-Anaraki's github projects (e.g., see Randomized clustered Nystrom
Eric Kightley's github projects (e.g., see Sparseklearn for fast methods for clustering (k-means and GMM))
Jeff Everett's github projects (e.g., see Hadamard Transform for fast code in C and Matlab)
Richard Border's github projects (e.g., see Stochastic Lanczos REML which is for our paper)
Will Shand's github projects (e.g., see LSH for locality-sensitive hashing in Julia)
Sparsified K-Means (faster K-means for big-data, 2015)
Uses fast Johnson-Lindenstrauss ideas to appropriately sample from big datasets. This is a one-pass algorithm that performs K-means clustering, suitable for distributed datasets. It also works on in-core problems and is much faster than Matlab's default K-means, and uses modern ideas on initialization. Hosted in github, BSD license. Preprint.
L-BFGS-B-C (C version of L-BFGS-B, 2015)
A version of L-BFGS-B 3.0 in C, with Matlab mex wrapper. Hosted on github, BSD license.
fastRPCA (fast robust PCA, 2014)
A Matlab software package to solve all variants of robust PCA and stable principal component pursuit (SPCP) problems. This is actively maintained, and hosted on github under the BSD license. Conference paper and book chapter.
zeroZR1 (2013)
A Matlab software package that is the only rigorous quasi-Newton method to solve the non-smooth LASSO problem. We use new results from convex analysis to show that a quasi-Newton update can be done in closed-form on a proximal objective. Existing approaches would solve the update via a slow iterative method, or smooth the problem, or apply quasi-Newton methods to the unsmooth problem in a heurstic fashion. Our solver is one of the most consistently fast LASSO solvers (it also solves non-linear least-squares problems, among others), and is faster than well-known algorithms like L-BFGS-B. This is also actively maintained on github under the BSD license.
TFOCS (Templates for First-Order Conic Solvers, 2010) Winner of MPS Beale-Orchard-Hays prize 2015
A Matlab software package designed to solve all compressed sensing (and low-rank recovery) problems, but in fact it goes much farther and solves all conic programming problems. Joint work with Michael Grant and Emmanuel Candès. This is actively maintained, and under the BSD license. Paper and book chapter.
NESTA (Nesterov's Algorithm, 2009)
A Matlab software package designed to solve some constrained compressed sensing problems, when the measurement matrix is a partial isometry or not too large (however, the analysis dictionary may be very large). Joint work with Jerome Bobin and Emmanuel Candès. Paper
SVT (Singular Value Thresholding, 2009)
A Matlab (with mex files) package for matrix completion via nuclear-norm minimization. Please email me if you have questions about the software (and include information on the verson of Matlab, the operating system, and the hardware – e.g. 32-bit or 64-bit). I am working on making it more compatible with 64-bit systems and compatible with complex-valued data. We have experimental versions using Nesterov stepsizes and even L-BFGS acceleration, but these are standard optimization tricks so we have not described them in papers. SVT is now one of the classic “reference” algorithms used in the field. The version provided is very simple and doesn't use a line search feature, and may even diverge if you set the stepsize above the legal limit. For this reason, we recommend using TFOCS, which is a more powerful version of SVT. Paper