Project Submission Guide

COMP 536: Computational Modeling for Scientists

Author

Anna Rosen

Course Philosophy on Collaboration

This course thrives on collaboration! You are strongly encouraged to:

  • Discuss ideas and concepts with classmates
  • Help each other debug and troubleshoot
  • Share insights and “aha!” moments
  • Work through challenging concepts together
  • Learn from each other’s approaches

Important: While collaboration is encouraged, all submitted code, memos, and documentation must be your own work. Think of it like studying together for an exam—you can discuss and learn together, but when it’s time to write, you do so independently.

This is not a competition! We’re all here to learn, grow, and support each other in mastering scientific computing.

Project Schedule & Deadlines

Projects are assigned on Tuesdays (posted to GitHub Classroom) with varying completion periods based on complexity. This schedule allows you to review requirements before Thursday’s class, where we’ll discuss implementation strategies together.

Project Assigned Due Date Duration Topic Key Concepts
Project 1 Tue Jan 27 Tue Feb 10 2 weeks Python/OOP/Stellar Physics OOP & Classes, HR diagrams
Project 2 Tue Feb 10 Tue Mar 3 3 weeks ODE Integration & N-Body Euler, RK4, Leapfrog, Energy conservation
Project 3 Tue Mar 3 Tue Mar 24 3 weeks Monte Carlo Methods Random sampling, Importance sampling
Project 4 Tue Mar 24 Tue Apr 14 3 weeks Bayesian Inference/MCMC Priors, Likelihood, Metropolis-Hastings
Final Project Tue Apr 14 Tue May 12 4 weeks Neural Networks (JAX) Backprop, autodiff, JAX Ecosystem

General Project Timeline

2-week projects: Foundation (days 1-5) \(\to\) Implementation & Testing (days 6-10) \(\to\) Polish & Submit (days 11-14)

3-week projects: Theory & Planning (week 1) \(\to\) Core Implementation (week 2) \(\to\) Extensions & Polish (week 3)

Pro tip: Start early, commit often, and use office hours for debugging with peers!

Project Extensions: Your Creative Playground

Extension Requirements

Graduate Students: Must complete at least one substantial extension beyond base requirements.

Undergraduate Students: Extensions are optional but highly recommended—they’re where the real fun and deeper learning happen!

The Spirit of Extensions

Extensions are YOUR opportunity to explore what interests you most. The goal is to promote curiosity and experimentation. This is about what YOU want to explore, not what you think I want to see!

Extension Ideas

Scientific Investigation: - Compare with analytical solutions - Error analysis and convergence studies - Connection to real astronomical observations

Computational Exploration: - Implement alternative algorithms and compare - Performance optimization and profiling - Adaptive methods (timestep, resolution)

Creative Visualization: - Animations showing time evolution - Interactive plots for parameter exploration - Novel ways to display multi-dimensional data

Physics Extensions: - Add additional physical processes - Extend to more realistic scenarios - Explore extreme parameter regimes

Not sure about your extension idea? Talk to me or classmates! The best extensions come from genuine curiosity.

Submission Requirements

GitHub Classroom

Accept the assignment link \(\to\) Clone your repo \(\to\) Work locally \(\to\) Push regularly \(\to\) Submit by deadline

For detailed GitHub Classroom instructions, see the Getting Started Guide.

Required Project Structure

project_N/
├── src/                  # Your source code (modular design)
├── tests/                # Basic tests for key functions
├── outputs/
   ├── figures/          # All generated plots
   └── data/             # Output data files
├── notes/                # Optional: ongoing project notes
├── README.md             # Installation, usage, results summary
├── requirements.txt      # Dependencies with versions
├── research_memo.pdf     # Analysis (2-3 pages of text)
├── growth_memo.pdf       # Reflection (1-2 pages)
└── .gitignore            # Use provided template

1. Code Requirements

Standards: - Modular design with clear separation of concerns - No magic numbers (use named constants) - Meaningful variable names - Error handling for edge cases - Proper function documentation (see docstring example below)

Required Docstring Format (NumPy style recommended):

def integrate_orbit(initial_conditions, time_span, method='RK4', dt=0.01):
    """
    Integrate orbital dynamics using specified numerical method.
    
    Parameters
    ----------
    initial_conditions : np.ndarray
        Shape (6,) array of [x, y, z, vx, vy, vz]
    time_span : tuple
        (t_start, t_end) for integration
    method : str, optional
        Integration method: 'Euler', 'RK4', or 'Leapfrog'
    dt : float, optional
        Time step size
    
    Returns
    -------
    trajectory : np.ndarray
        Shape (n_steps, 6) array of positions and velocities
    times : np.ndarray
        Shape (n_steps,) array of time points
    
    Raises
    ------
    ValueError
        If method is not recognized or dt <= 0
    
    Examples
    --------
    >>> ic = np.array([1, 0, 0, 0, 1, 0])
    >>> traj, t = integrate_orbit(ic, (0, 10))
    """
    # Implementation here

2. Research Memo (PDF, 2-3 pages of text)

Required sections (2-3 pages of text, not counting figures/references):

  • Executive Summary - What you did and key findings (similar to an abstract).
  • Methodology - Approach, algorithms, numerical methods
  • Results - Key findings with figures, quantitative analysis (figures required but don’t count toward page limit)
  • Validation - How you verified correctness
  • Extensions - What you explored beyond requirements
  • Conclusions - What you learned about physics and methods
  • References - If applicable (doesn’t count toward page limit)

Submit as research_memo.pdf in your project repository.

You may write your memo in LaTeX or Markdown, but you must commit the final PDF to your repo.

3. Growth Memo (PDF, 1-2 pages)

Informal reflection about your learning journey. See the Growth Memo Guide for detailed instructions and use the provided Growth Memo Template.

Key elements to address:

  • Technical skills developed
  • Challenges and solutions
  • Conceptual insights
  • What excited or surprised you
  • AI usage reflection (per phase guidelines)
  • What you’d tell your past self

Pro tip: Keep notes throughout (notes/notes.md) for authentic reflection!

Notebooks

Unless a project explicitly says otherwise, .ipynb notebooks are not accepted for submission. Use scripts/modules so CI and graders can run your work non-interactively.

4. README Requirements

Must include:

  • Project description
  • Installation instructions
  • Usage examples
  • Key results summary
  • Acknowledgment of collaborators

5. Git Practices

  • Minimum 5-10 meaningful commits
  • Descriptive commit messages
  • Regular pushes to GitHub

Grading Components

Component Focus
Core Implementation Correctness, completeness
Extensions Required for grads, valued for undergrads
Code Quality Structure, documentation, Git practices
Research Memo Analysis quality, scientific writing
Growth Memo Reflection depth, learning insights

Note: Weight varies by project to align with learning objectives.

Submission Checklist

Before submitting:

Late Policy

  • One free extension: Request $$24h before deadline \(\to\) 2-day grace
  • Late penalty: 10% per day, max 3 days
  • After 3 days: Not accepted without documented emergency and advance notice

Getting Help

When to seek help: - After 30 minutes genuine effort on a bug - Confused about physics/math after reading - Unsure about requirements - Want to discuss extension ideas

How to ask effectively: 1. What you’re trying to do 2. What you’ve tried (code/errors) 3. Expected vs. actual behavior 4. Minimal reproducible example

Resources: - Classmates - Collaborate and learn together! - Office Hours - Fridays 11:00 am–12:00 pm (and by appointment) - Course Slack - Quick questions and peer support

Remember: Struggling is learning, but struggling alone too long is inefficient. This is a collaborative environment—use it!