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 autoconf system. Correctness and performance debugging, performance analysis. Group development practices and version control. Use of third-party libraries and software licensing.