How do mining apps work (like SilentArmy, NH, etc)

If you build ZCahs on your linux machine, you can run the native miner. But how are the current miners created? How are they integrated into the ZEC network? Do they try to optimize the generalized bday problem and then use the ZCash API to submit the PoW? Just trying to understand whats under the hood so to speak

@freshfish SilentArmy, Claymore, Zogminer, etc. support stratum, which is a client-server protocol. Whatever mining software you chose, they all run a client instance and use stratum to connect to a pool on the server side. The pools submit the PoW and use PPLNS to determine payouts, so as a miner you'll never get a full block reward, but mining solo is a waste of time unless you have some serious hardware.

Thanks...but are they coming up with the algos to solve the bday equation or is that provided by zcash? I'm just curious as to how they optimize their miners

The algo is provided by zcash i.e. all miners use the same algo. Miner devs write the code needed to execute the algo on hardware. They can optimize the speed by optimizing the code and the way it is executed.

Thanks...but I couldnt find where the algo is located. Is it on the Zcahs website?

All details should be in the whitepaper :