************************************************************ PHY 504: Computational Methods in Physics and Astrophysics I ************************************************************ Spring 2024 =========== An introduction to procedural and object-oriented programming in a high-level language such as C++ or modern Fortran with examples and assignments consisting of rudimentary algorithms for problems in physics and astronomy. Students will use the UNIX/Linux operating system to write programs and manage data, and the course will include an introduction to parallel computing and good programming practices such as version control and verification. The course will prepare students for courses in algorithms and methods that assume a knowledge of programming. .. toctree:: :maxdepth: 1 :caption: Intro & Logistics getting_started topics computing hello_world .. toctree:: :maxdepth: 1 :caption: The UNIX Shell why_command_line shell shell-2 shell-3 .. toctree:: :maxdepth: 1 :caption: Git and Version Control version_control shell-setup git git-branches git-remotes github pull-requests .. toctree:: :maxdepth: 1 :caption: Shell Scripting shell-looping shell-scripts permissions finding .. toctree:: :maxdepth: 1 :caption: Introduction to Programming book hardware development-tools structure tools compiling editors first_project .. toctree:: :maxdepth: 1 :caption: C++ Basics cxx-datatypes cxx-vectors cxx-more-vectors cxx-matrix-example cxx-sequence-containers cxx-strings cxx-auto-decltype cxx-structs cxx-arrays cxx-references cxx-pointers cxx-statements cxx-maps cxx-io .. toctree:: :maxdepth: 1 :caption: Functions cxx-functions cxx-functions-example cxx-orbit-example inclass-rk2-orbit cxx-lambdas cxx-functions-planets .. toctree:: :maxdepth: 1 :caption: Elements of Software Engineering compiler-flags multiple-files make inclass-split-orbit .. toctree:: :maxdepth: 1 :caption: Classes cxx-classes-intro object-oriented inclass-class-example cxx-vector2d-class inclass-orbit-class contiguous_array .. toctree:: :maxdepth: 1 :caption: Some Random Bits... cxx-mdspan cxx-enumerate-zip cxx-enum cxx-casting cxx-iomanip cxx-print cxx-filesystem operators floating-point floating-point-exceptions .. toctree:: :maxdepth: 1 :caption: Testing testing cxx-unit-tests github-ci cxx-convergence-tests valgrind debugging clang-tidy .. toctree:: :maxdepth: 1 :caption: Digging Deeper into C++ Classes inheritance-and-access this-class copy_and_assignment compound-operators inclass-orbit-compound cxx-move cxx-allocating cxx-simple-container .. toctree:: :maxdepth: 1 :caption: Documenting Code html-css github-pages doxygen sphinx sphinx-doxygen .. toctree:: :maxdepth: 1 :caption: Templates templates-intro cxx-template-array templates-more cxx-constexpr functionals .. toctree:: :maxdepth: 1 :caption: Some Numerical Algorithms roots monte-carlo adaptive_rk4 poisson-relax .. toctree:: :maxdepth: 1 :caption: Parallel Programming parallel-intro openmp-intro openmp-relax openmp-pi mpi-intro mpi-sendrecv .. toctree:: :maxdepth: 1 :caption: Calling C++ from Python cxx-python cxx-python-array .. toctree:: :maxdepth: 1 :caption: To Be Continued... didnt_cover cxx20 cxx23 cxx-glossary .. toctree:: :maxdepth: 1 :caption: Homework homework/homework1 homework/homework2 homework/homework3 homework/homework4 homework/homework5 homework/homework6 homework/homework7 .. toctree:: :maxdepth: 1 :caption: Project project