Teaching parallel processing: development of curriculum and software tools