Practical aspects of application development for high performance computing. Programming language choice; compilers; compiler usage. Build management using make and other tools. Library development and usage. Portability and the GNU auto-configure system. Correctness and performance debugging, performance analysis. Group development practices and version control. Use of thirdparty libraries and software licensing.