Coding Practices#

The following pages provide the self-study notes for the courses that CfRR offers in coding practices.

Computational Thinking#

Clickable Link to Coding Practices Courses for Computational Thinking

These self-study courses provide an introduction to computational thinking, emphasizing the importance of algorithms in coding and problem-solving. Participants will develop a foundational understanding of computational approaches and learn to design effective algorithms for a variety of tasks. The courses also focus on improving debugging skills by distinguishing between syntax errors and algorithmic issues, fostering more efficient troubleshooting.

High Performance Computing#

Clickable Link to Coding Practices Courses for High Performance Computing

These self-study courses provide a comprehensive introduction to high-performance computing (HPC), focusing on using clusters for managing large computational workloads. Participants will learn to navigate HPC environments, manage job scheduling, and efficiently parallelize tasks using array jobs and other techniques. The courses also cover the fundamentals of parallel computing, including distributed and shared-memory parallelism, with practical experience in writing and optimizing parallel code using MPI and multithreading.

Software Development#

Clickable Link to Coding Practices Courses for Software Development

These self-study courses provide an introduction to best practices in software development, focusing on creating reproducible and collaborative research code. Participants will learn techniques to make their code accessible and useful to others, enhancing the impact and reliability of their work. The courses also lay the groundwork for more advanced topics in software development, preparing students for intermediate-level learning.

Version Control#

Clickable Link to Coding Practices Courses for Version Control

These self-study courses provide a comprehensive introduction to version control, focusing on managing software development using Git and collaborating through platforms like GitHub. Participants will gain foundational skills in repository management, essential Git commands, and best practices for sharing and maintaining code. Building on these basics, the courses explore advanced Git configurations, branching strategies, and techniques for rewriting history, equipping learners with robust tools for effective and collaborative version control workflows.