# Week 5

:::{card} Learning goals
- Convert a console application to a GUI application
- Identify repetitive code that can be integrated in a function
- Implement reusable functionality using functions with arguments and return value.
- Create randomness in programs
- Model a process using a state machine
- Implement a state machine using an enumerated type and `switch`
:::


:::{toctree}
:hidden: true
week05/rock-paper-scissors-spock-lizard
week05/class-program-and-main
week05/creating-functions
week05/enumerated-types-and-state-machines
week05/switch
week05/generating-random-numbers
week05/currency-converter-with-gui
week05/back-to-the-problem
:::

<!--
TODO: I should move the object-oriented programming concept to next week
-->