# COMP0233 - Day 7 (24th November 2022)
:::info
## :tada: Welcome to the seventh day! 📦🐍💄
### Today
Today we will look at
- How to choose libraries (and install them)
- How to create command line interfaces for your scripts
- How to create a package :package:
:::
:::warning
:warning::fist:🪧 There's **a UCU strike** today.🪧:fist::warning:
Read [this information collected by UCL's UCU members for students about this strike](https://docs.google.com/document/d/13w0T5cv-WY4HsLNLpHg5-bph73GSwtxFDKMPdbaECUI/edit?usp=sharing) to know more about it.
There won't be a class session today, but people in the teaching time may choose to work today. They may be available in zoom to answer questions.
:::
### Review from last week
- :books: Documentation
- :mag::hourglass_flowing_sand: finding problems in history
- :mag::bug: finding bugs with a debugger
#### What was discussed during the week :newspaper:
- You've told us about [your favourite :package: managers](https://moodle.ucl.ac.uk/mod/forum/view.php?f=182693)!
- Did you know what's also known as the [:cheese_wedge: shop](https://en.wikipedia.org/wiki/Cheese_Shop_sketch)? ([video](https://youtu.be/Hz1JWzyvv8A), [script](https://montycasinos.com/montypython/scripts/cheese.php.html))
#### Discussion forum - favorite package manager
### Groups :handshake:
:::warning
:question: :package:
From two libraries that seems to do the same and both have all the features you need, how do you choose which one to use?
:::
Discuss it within your teams and [select three characteristics to post **as a team** in the word cloud](https://www.menti.com/almuuvpn7twf).
### Exercise: Creating a command line interface
:::info
In your own teams, work together to generate a command line interface following the steps in RSE-classwork issues: [:hash::four::zero:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/40):heavy_minus_sign:[:hash::four::two:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/42)
```bash
python average_squares.py 1 2 3 --weights 0.1 0.4 0.5
```
:::
### Exercise: Creating a package
:::info
In your teams, help Charlene to make her script into a library.
Follow the instructions in RSE-classwork issues: [:hash::four::three:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/43):heavy_minus_sign:[:hash::four::seven:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/47)
:::
##### Links
- [packaging notes](https://nbviewer.jupyter.org/github/UCL/rsd-engineeringcourse/blob/master/ch04packaging/03Packaging.ipynb)
- [Sphinx and documentation](https://nbviewer.jupyter.org/github/UCL/rsd-engineeringcourse/blob/master/ch04packaging/04documentation.ipynb)
- [Coding conventions](https://github.com/UCL/rsd-engineeringcourse/blob/master/ch05construction/02conventions.ipynb)
### Next week
- Project management
# Questions
:::info
Feel free to add any question below. Remember the syntax:
```
- Example question
- [name=student_a] Example answer
- [name=TA_1] Example answer
```
:::
- Q:
- [name=...]
- Q:
- [name=...]
###### tags: `COMP0233` `teaching` `class`