John and Marcia Price College of Engineering
13 A Jupyter Notebook Educational Repository
Nicholas Baker
Faculty Mentor: Tony Saad (Chemical Engineering, University of Utah)
There are very few straightforward, useful resources for numerical methods both online and in text. Occasionally, there are some articles on how to do one task, but often they are more confusing than helpful, or contain false information. The other main available resource is documentation from creators of python packages, but a coder often finds themselves in horribly written documentation that also makes them more confused than when they started. A student needing several small bits of information will spend hours looking for specifically what they need, rather than working on the actual assignment. A simple and straightforward guide in one place would be a very useful tool for anyone trying to use different numerical methods and relieve a lot of the time spent looking for one specific line of code. Additionally, most students in the chemical engineering program at the University of Utah have already learned these techniques, so they don’t need unnecessary detail, they need just a simple refresher. This creates a need for a simple to use repository, so students can easily find the tools they need to accomplish the task at hand, whether that be reaction engineering, or fluid dynamics. As such, it was decided to create such a repository for the department. This will be done using several different concepts and ideas, including varying depths of notebooks, and a long term plan for a user interface.
Relevant Background
Numerical methods are a vitally important part of chemical engineering. They allow engineers to solve math related problems that would be traditionally extraordinarily difficult or impossible. As such, the numerical methods course is a crucial part of the curriculum here at the University of Utah. Due to their nature, numerical methods often rely on raw computing power, and complex techniques that aren’t built into normal calculators. This complexity makes the use of coding vitally important. In the chemical engineering department, the programming language used is python. All coding languages, including python, have extremely specific syntaxes than are required for the coder to communicate with the computer. There are a wide variety of different techniques that an engineer needs to know, each with their own syntax. This makes it incredibly difficult to remember how to do a wide variety of very specific tasks. To make it easier for students to remember or find the specific syntaxes, a repository or library of reference code with the required syntax would be a useful and powerful tool.
Jupyter notebook is a popular and powerful integrated development environment (IDE). It is the perfect platform for this project, as it mixes code and regular text in a simple, straightforward format. This allows the notebook creator to create a functioning block of code to demonstrate the syntax of certain techniques and insert text above and below that code in the same notebook. In this format, information can be provided in plain text as to what the code is doing, and what is needed to run it, while having examples all in the same place. Additionally, it is an IDE that is covered in the chemical engineering department, so it will be familiar and easy to use for the students in the program. These notebooks will have simple information for students to quickly and easily get what they need to solve problems in their coursework, and beyond.
Notebook Formatting
The most important part of this project and research is to find a way to ease the way of finding information. As such, flexibility is needed for different situations. Early on it was decided to have a mixture of different types of notebooks. The two main types were lightbooks, and full explainer notebooks. These two types are the majority of the notebooks created, however as time and research went into what best serves the students, a third type was created that is in-between the lightbooks and full explainers. These were deemed medium notebooks.
Lightbooks are very simple notebooks, with just a small snipet of code and as little information as possible in them. Their purpose is simply to get the syntax required for the code and maybe an example, and that it is. By design, they are very short, and are the easiest and quickest to make. These are designed for the case of a user already knowing what they need and are doing, they just need to know the exact structure of how to produce the result required. However, it doesn’t really explain the bounds of the method, and it doesn’t really clarify how it is solving things. These are important things, and as time goes on, very easy to forget. As such, full explainer notebooks are required.
Full explainer notebooks go in depth in how the model works, and why it works. These are for when students need a crash course in remembering how to use the method. These will cover everything in depth, from the mathematical principles behind the methods, to the logic behind the way the code works.
The medium notebooks are shorter notebooks, that don’t fully explain a method, but explain some import concepts and help people who don’t know where to start to navigate. These include descriptions on the difference between a linear and a nonlinear method, or the difference between a direct and indirect solver.
Organizational Structure
An important aspect of finding information is an organization structure. Due to time constraints, this is something that could have been investigate further, but some ideas and groundwork has been laid out, for future students to create later on. The ideas include a tag system to allow for searching, and a by topic drop down if the user knows what they are looking for.
Conclusions
This project led to the creation of a very powerful and useful system, and hopes are many students will use it moving forward.