This chapter provides a gentle introduction to programming in OPUS. It is intended not for software developers but for model users, who need to understand enough about the underlying software to be able to use all of the capabilities of the system, and to extend these capabilities. OPUS is implemented in the Python programming language, so we begin with a review of the language in Section 4.1. Numpy is a numerical library for Python that is used exensively in the OPUS system, so this is covered in Section 4.2. Using Python and Numpy, many of the OPUS Variables are coded as modules, and these are explained in Section 4.3. Finally, a recent and extremely valuable addition to the OPUS architecture is a small language for OPUS Expressions, which makes the need to code variables as separate modules unnecessary in most cases. The expression language is the subject of Section 4.4.