“Without coding, computers would literally do nothing. They would be completely useless. That’s because source code is the set of instructions that tells the computer what to do. Computers have no free will, after all, so without explicit instruction, they’re just sophisticated hunks of metal.” - Travis Addair, Software Engineer, on Quora.
1. On a scale of 0 (not any) to 10 (sophisticated), how to describe your programming experience?
2. Are you familiar with the following languages?
3. Do you use the following languages for data analysis?
4. What do you use for data visualization?
5. Have you heard about Git?
6. Do you know how to use command-lines?
7. What is your laptop’s operating system (OS)?
8. In your view, why is programming necessary? (open question)
9. In your view, why is programming hard? (open question, source)
10. Name one thing you want to achieve at the end of the semester (open question)
Research in the ESE field (in fact, any field) is all about
data:
Hopefully, this course will make your life easier when it comes to
interpret and visualize data.
Course topics:
numpy
,
scipy
, matplotlib
, pandas
, and
xarray
This course is designed for ESE graduate students having NO or WEAK programming background, with emphasis on Python, FORTRAN, Git, and Linux (BASH).
Good reasons for NOT taking the course:
Bad reasons for NOT taking the course:
By taking the course, you commit yourself to work on time-consuming assignments and final project.
Very often, we find programming difficult because we fail to break down the initial research question into small parts, which I refer as conceptual model, math or logic model, and computer model.
The most crucial step is to have a well-defined conceptual model. This involves simplifying and generalizing your initial question so that you can describe the gist in one sentence. Once you have a well-defined conceptual model, building a math or logic model would become straightforward. And coding is just the last step of the programming process where you use suitable languages and tools to let the computer know what you exactly want to do.
The above process of programming, however, can not be ideal as you can probably not make it with one shot. In reality, you need to modify those models iteratively before finally solving the question, so the chart would be more like as follow.
Now suppose our research question is:
Can you think about a few ways to solve this?
If r is the radius of a circle, then the surface of this circle is \(\pi*r^{2}\). Therefore, if we know the radius of a circle, and the surface of this circle, we can estimate \(\pi\). Then how can we estimate the surface of a circle?
A circle (red) in a square (black) is our solution. Indeed, this is very easy to know the surface of a square. It is the square of the length of one of its sides. Do you see where this is leading us? What if we were able to estimate the rate between the surface of the circle and the surface of the square? Then we would know the surface of the circle.
Finally, we just need to estimate (surfaceCircle/surfaceSquare). We can apply the Monte Carlo method here. If we uniformly drop N random points (blue) in the square and count how many of them are in the circle, then we have a proxy of the quantity surfaceCircle/surfaceSquare. (source: Estimation of the number PI – A Monte Carlo simulation)
Following the above idea, the conceptual model would be: The proportion between the number of points within the circle (n) and the square (N) is equal to surfaceCircle/surfaceSquare.
Simply translating the conceptual model, we have \[n/N = \pi / 4\]
We will learn how to do this with python in later sections.
Brainstorm one research question
What is the conceptual model?
What is the math/logic model?