## CMSE 202 - Midterm Study Guide

The following document is intended to provide you with a list of the types of tasks you may be asked to complete on your midterm exam for CMSE 202. You're welcome to refer to your previous assignments and course materials. However, you will not be allowed to access your email or any other means of person-to-person communication (i.e. Teams). **Generative AI tools are NOT allowed on the exam — with one possible exception:** your instructor may permit the use of **HiTA** (the CMSE 202 course assistant), so **check your section's policy**. No other AI tools (e.g. ChatGPT, Copilot) are allowed. See the exam policy for the course for full details.

For the midterm, you should be comfortable with:

* Adding files and committing changes to a GitHub repository that you own
* Pushing changes to a remote Git repository that you have permission to update
* Downloading files from the internet using the command line or the equivalent commands within a Jupyter Notebook
* Reading and understanding the documentation for an unfamiliar Python package so that you can use the package to complete a task
* Installing or updating a new Python package using `pip`
* Using and modifying a Python class (i.e. utilizing object-oriented programming)
* Writing a new Python class from scratch
* Loading data into a Jupyter notebook
* Exploring and analyzing an unfamiliar dataset using familiar Python packages (e.g. Pandas)
* Making plots using matplotlib
* Working with NumPy arrays
* Working with Python dictionaries
* Debugging malfunctioning or broken Python code
* Writing code using different programming paradigms (linear, object-oriented, functional)
* Explaining your reasoning in writing and checking that your code produces the correct result (not just that it runs without errors)

Some or all of these concepts may show up on the exam, so make sure you spend time reviewing the ones you're less comfortable with and don't hesitate to reach out on Teams to ask your fellow classmates or the instructors questions about things you don't understand.

If you're feeling uncertain about working with Python classes, we encourage you to practice in the HiTA environment and ask questions to HiTA to deepen your understanding.
The course instructors may also create a HiTA activity that will help you prepare for the exam, so be sure to check your section's Teams channel or keep an eye on email or D2L announcements for any updates.


**Final Note**: If you're currently having any issues with your JupyterHub, your local Python installation, GitHub, or any other software related to the course, contact your instructor as soon as possible and explain the issue so that it can be addressed before the exam!
