Orientation and Tools
Assistant Professor Justin Dressel
Faculty of Mathematics, Physics, and Computation
Schmid College of Science and Technology
Modeling
Processing
Visualization
Mathematical objects
Physical states
CS types/structures
Transformations/Morphisms
Evolution/state updates
Algorithms/programs
Plots/graphs/movies/arrays
Scientific problems are data-centric
Problem
(why)
Interface (what)
Test Cases (verify)
Implementation (how)
Each small problem is an encapsulated module
To answer the main question, many modules must work together
Changing the implementation should not affect the interface
"Object-oriented"
"Functional"
"Logical"
"Procedural"
e.g.: C, MATLAB, Python, Julia, Go, Rust
(Others: concurrent, actor-based, data-flow, rule-based, symbolic, etc.)
Increasing abstraction away from hardware:
increases portability, simplifies coding, decreases efficiency
High-level
Low-level
Rule of thumb
Order of Importance:
Low-level code is difficult to write correctly, and scientific problems are often hard to solve
A more effective strategy: solve problem with high-level language, then...
We will also briefly become acquainted with C++, the object-oriented evolution of the C language.
However, our main focus will be on the problem-solving and software-development process