Muyiwa's Domain
IEEE | ACM | SIAM | CS Home | Resume | Bio

Intro

Hi Everyone, This is my own space on the web. My name is Olumuyiwa Oluwasanmi. Well for those of you who find that too much of a mouthful please call me "M". Pronounced the same as the letter in the Alphabet of course. I am currently a PhD student in the Department of Computer Science  and a Masters student in the Department of Mathematics at the University of New Mexico , Albuquerque. My goal is to learn as much as possible and get out of school as quick as possible I don't intend to spend the rest of my life in school :) More seriously, so I can begin to make my own contributions to science eh?

My interests are in provably secure, distributed computation and algorithms, partial differential equations, differential equations, programming(I thought I was done with that), Martial arts(Jujitsu) and learning about different people and cultures and lastly finance.


 Papers

  1. An Empirical Study of a scaleable Byzantine Agreement Algorithm by Olumuyiwa Oluwasanmi, Jared Saia and Valerie King, HCW 2010.

Algorithms and Theory

A nice dealing with algorithms of almost every kind Alg Site  
A nice page with tutorials on Parallel computing Parallel Computing 
A nice  web site for tutorials on Game Theory Game Theory   
Another nice site with tutorials in game theory Game Theory
AI tutorial page AI  
A small tutorial in Computational Neuroscience CNS  
A cool theoretical computer science cheat sheet  cheat  


Applied Mathematics

A nice site with links to tutorials in Math Math Site  
A nice simple tutorial in functional analysis Analysis 
A small tutorial in Cryptography from New Zealand Crypt  
A nice site on number theory Numtheory  
Joseph Flaherty's course notes on Computational Linear Algebra, Ordinary Differential Equations, Partial Differential Equations and Finite and Finite Element Analysis MiscMath  
A simple introduction to Tensor analysis tutorial page Tensor    
A little introduction to Computational Finance/Financial Engineering  page Finance  


C/C++ Resources

A nice C/C++ tutorial By Bruce Eckel Thinking in C++  
A nice library of algorithms Boost Library 
A C/C++ magazine for developers C/C++ Journal  
The ever popular Dr Dobbs DDJ  
All things Haskell Haskell the coolest functional language yet.  


Java

Here are a few Java resources tutorials, IDE's

A nice tutorial from Bruce EckelThinking in Java tutorial by Bruce Eckel 
A nice introduction to Templates Templates  
Eclipse A nice Java IDE  
Main Java Site Java at Sun  
Tutorial on Unit Testing using JUnit in Eclipse JUnit


CS Theory Group

Theory Group meetings Theory Group Dates and Meetings


.NET


 Courses

  1. CS 509 ( Introduction to Parallel Algorithms).
  2. CS 580 ( Software Specification).
  3. CS 561 (Data Structures and Algorithms ).
  4. CS 530 (Probabilistic Mmethods in Computer Science).
  5. CS 500 (Introduction to Theoretical Computer Science).
  6. CS 591 (Special Topics in Cybersecurity).
  7. CS 451 (Programming Languages and Systems).
  8. CS 591 (Computational Optimization).
  9. CS 583 (Object Oriented Software Testing).
  10. CS 550 (Programming Languages and Systems).
  11. CS 510 (Randomised Algorithms).
  12. CS 587 (Advanced Operating Systems).
  13. PHY 581 (Introduction to Quantum Information).
  14. CS 591 (Introduction to Theretical Cybersecurity).
  15. MATH 505 (Approximation and Differential Equations).
  16. MATH 504 (Numerical Linear Algebra).
  17. CS 574 (Quantum Algorithms).
  18. MATH 512 (Differential Equations and Dynamical Systems).
  19. MATH 513 (Introduction to Partial Differential Equtions).
  20. MATH 561 (Complex Variables and Analysis I).
  21. MATH 583 (Introduction to Mathematical Methods I)
  22. MATH 584 (Introduction to Mathematical Methods II)
  23. MATH 562 (Complex Variables and Analysis II)
  24. CS 591 (Markov Chain Monte-Carlo)

Poetry

The Perfect Woman

Everyday I dream of her eyes so clear, 
I can see myself as I truly am  
Idiosyncracies, faults and fears,  
My wish of how her body is sculpted,  
with the perfect algorithm.  
The way I imagine our hearts beating,  
In a perfect synchronous rhythm.  
Being alone with her is a shear joy  
As I imagine her outpouring the treasure's of her love,  
like layers of sweet chocolate  
As our love grows sweeter and deeper.  
sometimes not understanding why I seem to get so 
obsessed, with the perfection of her faults.  
That sweet prison of loving her, 
the feeling of knowing you have a beautiful thing locked in a vault.  
Looking forward to every quarrel, knowing that our temporary parting North and South,  Will only bring us together stronger than ever 
because the world is round.  
The pain of how much we will ever hurt each other,  
Is no match for the forgiveness and comfort we give one another.  
Our closeness and understanding so hard to describe,  
How we can't differentiate between the thoughts of
one another's minds.  
This sweet long conversations we have between our
hearts, that are so loud and clear with each unspoken word.  
Who can describe the unimaginable contentment,  
pride and happiness a man feels with all of his heart,  
knowing this perfect Woman loves him back.  
A Man may have pride and sometimes indifference he may feign,  
But he can't deny that all he wants is for her love for him to continue to reign.  

My blog

My blog.

Link to the blog.

Jujutsu

Wa Shin Ryu

Link to the UNM Wa Shin Ryu Jujutsu club. Current Rank: Ni-Kyu

Some Code in C++0x

Choosing random numbers without replacement

Some coding tutorials

#include <boost/unordered_set.hpp>
#include <algorithm>

#include <boost/random/uniform_int.hpp>
#include <boost/random/variate_generator.hpp>

boost::minstd_rand cgen;
boost::uniform_int<int> cunif(1, 1000); //uniform random numbers between 1 and 1000 or [1,1000] for those mathematically inclined!

boost::unordered_set<int> nums; //use set to handle without replacement
while (nums.size() < 100)labels.insert(cunif(cgen)); //insert 100 numbers without replacement.

Generating a sequence of random numbers in parallel using boost and the the gcc standard library parallel mode.

#include <vector>
#include <algorithm>

#include <parallel/algorithm>

using namespace std;

class Primes{
public:

	static vector<int> prm;
	Primes();
    static vector<int> *getPrimes()
    {

        return &prm;
    }
    /**
    * @param int n, all the primes up to which we are generating
    */
    	static void initPrimes(int n){

    		//std::vector<int> *(primes) =new std::vector<int>(n);
    		Primes::getPrimesUpToN(n);
    	}
    	/**
    	 *This function gets all primes upto n the second value of the argument
    	 *@param std::vector<int> &v a vector that is initially empty
    	 *@param int n the integer upto for which we are finding primes.
    	 */

    		static void getPrimesUpToN(int n){
    			prm.push_back(2);prm.push_back(3);prm.push_back(5);prm.push_back(7);prm.push_back(11);prm.push_back(13);

    			for(int i=15; i<=n;i=i+2)if((i%3)!=0 && (i%5)!=0 && (i%7)!=0 && (i%11)!=0 && (i %13)!=0){

    				prm.push_back(i);
    			}

    			unsigned int j=6;

    			int rval = static_cast<int>(ceil(sqrt(static_cast<double>(n))));

    			std::vector<int>::iterator newend=prm.end();
    			while(j<prm.size()){

    				if(prm[j-1]>rval)break;
    				int val = prm[j-1];

    				newend =__gnu_parallel::remove_if((prm.begin()+j),prm.end(),[val](int v)->bool{return (v%val==0);});

    				prm.erase(newend,prm.end()); //remove all the multiples of the current number.
    				j++;
    			}
    		}

   /**
	* @param std::vector<int> &v, vector containing primes
	* @param int n  the number for which we are selecting
	* a prime greeater than
	* @return int the lowest prime greater than n
	* @see getPrimesUptoN
	*/
	static int getPrimeGreaterThanN(int n){

		std::vector<int>::iterator it;
		it=__gnu_parallel::lower_bound(prm.begin(),prm.end(),n);

		return(*it);
	}
    static void removePrimes(){
        	prm.~vector();
        }

	virtual ~Primes();
};