************************************************************ PHY 504: Computational Methods in Physics and Astrophysics I ************************************************************ Spring 2022 =========== 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 .. toctree:: :maxdepth: 1 :caption: Shell Scripting shell-looping shell-scripts permissions finding .. toctree:: :maxdepth: 1 :caption: Introduction to Programming book hardware development-tools development-cycle structure tools compiling first_project .. toctree:: :maxdepth: 1 :caption: Tools editors random-tools .. toctree:: :maxdepth: 1 :caption: C++ Basics cxx-datatypes cxx-vectors cxx-more-vectors cxx-matrix-example cxx-strings cxx-auto-decltype cxx-structs cxx-arrays cxx-references cxx-pointers cxx-statements cxx-io .. toctree:: :maxdepth: 1 :caption: Functions cxx-functions cxx-functions-example cxx-orbit-example cxx-lambdas cxx-functions-planets .. toctree:: :maxdepth: 1 :caption: Elements of Software Engineering multiple-files make .. toctree:: :maxdepth: 1 :caption: Classes cxx-classes-intro cxx-vector2d-class contiguous_array .. toctree:: :maxdepth: 1 :caption: Some Random Bits... cxx-iomanip operators floating-point .. toctree:: :maxdepth: 1 :caption: Testing testing cxx-unit-tests cxx-convergence-tests valgrind debugging .. toctree:: :maxdepth: 1 :caption: Digging Deeper into C++ Classes object-oriented inheritance-and-access this-class copy_and_assignment compound-operators cxx-move cxx-allocating cxx-simple-container .. toctree:: :maxdepth: 1 :caption: Documenting Code html-css github-pages doxygen sphinx .. toctree:: :maxdepth: 1 :caption: Templates templates-intro cxx-template-array templates-more functionals .. toctree:: :maxdepth: 1 :caption: Some Numerical Algorithms roots monte-carlo poisson-relax .. toctree:: :maxdepth: 1 :caption: Parallel Programming parallel-intro trivially-parallel openmp-intro openmp-relax openmp-pi mpi-intro mpi-sendrecv .. toctree:: :maxdepth: 1 :caption: To Be Continued... didnt_cover .. 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