Multicore Applications: Programming and Debugging