Scientific Computing

  1. Foundational Computational Tools and Concepts
    1. Computer Systems Fundamentals
      1. Computer Architecture Overview
        1. Operating Systems Basics
          1. File Systems and Storage
            1. Process and Memory Management
            2. The Command-Line Environment
              1. Unix/Linux Shell Basics
                1. Shell Types
                  1. Command Syntax and Structure
                    1. File System Navigation
                      1. Directory Structure
                        1. File Manipulation Commands
                          1. Permissions and Ownership
                            1. Text Processing Tools
                              1. Regular Expressions
                                1. Scripting with Shell
                                  1. Writing Shell Scripts
                                    1. Variables and Control Flow
                                      1. Automating Tasks
                                      2. Programming Languages for Scientific Computing
                                        1. Python
                                          1. Core Syntax and Data Structures
                                            1. Variables and Types
                                              1. Control Structures
                                                1. Functions and Modules
                                                  1. Object-Oriented Programming
                                                    1. Exception Handling
                                                      1. File I/O Operations
                                                        1. Scientific Libraries
                                                          1. NumPy
                                                            1. Array Operations
                                                              1. Broadcasting
                                                                1. Linear Algebra Functions
                                                                  1. SciPy
                                                                    1. Optimization
                                                                      1. Integration
                                                                        1. Signal Processing
                                                                          1. Statistics
                                                                            1. Matplotlib
                                                                              1. Plotting Basics
                                                                                1. Customizing Plots
                                                                                  1. 3D Plotting
                                                                                    1. Pandas
                                                                                      1. Data Structures
                                                                                        1. Data Manipulation
                                                                                          1. Data Analysis
                                                                                        2. Compiled Languages
                                                                                          1. C++
                                                                                            1. Syntax and Data Types
                                                                                              1. Memory Management
                                                                                                1. Pointers and References
                                                                                                  1. Object-Oriented Features
                                                                                                    1. Standard Template Library
                                                                                                      1. Performance Considerations
                                                                                                      2. Fortran
                                                                                                        1. Syntax and Structure
                                                                                                          1. Array Operations
                                                                                                            1. Use in Legacy Scientific Codes
                                                                                                              1. Modern Fortran Features
                                                                                                            2. Just-In-Time Compilation
                                                                                                              1. Numba
                                                                                                                1. Accelerating Python Code
                                                                                                                  1. Supported Data Types and Functions
                                                                                                                    1. GPU Programming with Numba
                                                                                                                    2. Julia
                                                                                                                      1. Language Features
                                                                                                                        1. Performance Characteristics
                                                                                                                          1. Package Ecosystem
                                                                                                                      2. Software Development Practices
                                                                                                                        1. Version Control with Git
                                                                                                                          1. Repositories and Commits
                                                                                                                            1. Branching and Merging
                                                                                                                              1. Collaboration Workflows
                                                                                                                                1. Remote Repositories
                                                                                                                                  1. Conflict Resolution
                                                                                                                                  2. Debugging Techniques and Tools
                                                                                                                                    1. Interactive Debuggers
                                                                                                                                      1. Profiling Tools
                                                                                                                                        1. Memory Debugging
                                                                                                                                        2. Testing and Validation
                                                                                                                                          1. Unit Testing
                                                                                                                                            1. Integration Testing
                                                                                                                                              1. Test-Driven Development
                                                                                                                                                1. Continuous Integration
                                                                                                                                                2. Code Documentation and Style
                                                                                                                                                  1. Writing Docstrings and Comments
                                                                                                                                                    1. Code Formatting Standards
                                                                                                                                                      1. Linting and Static Analysis
                                                                                                                                                        1. API Documentation
                                                                                                                                                      2. Understanding Computer Hardware
                                                                                                                                                        1. CPU Architecture
                                                                                                                                                          1. Instruction Set Architecture
                                                                                                                                                            1. Multicore Processors
                                                                                                                                                              1. Pipeline and Superscalar Execution
                                                                                                                                                              2. Memory Hierarchy
                                                                                                                                                                1. Cache Levels
                                                                                                                                                                  1. RAM and Virtual Memory
                                                                                                                                                                    1. Data Locality and Access Patterns
                                                                                                                                                                      1. Memory Bandwidth and Latency
                                                                                                                                                                      2. Floating-Point Arithmetic
                                                                                                                                                                        1. IEEE 754 Standard
                                                                                                                                                                          1. Precision and Rounding
                                                                                                                                                                            1. Common Pitfalls
                                                                                                                                                                              1. Numerical Stability Issues
                                                                                                                                                                              2. Introduction to Parallel Architectures
                                                                                                                                                                                1. CPU vs GPU
                                                                                                                                                                                  1. SIMD and MIMD Architectures
                                                                                                                                                                                    1. Vector Processing Units