Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Syllabus (Fall 2025)

ASTR 596: Modeling the Universe

San Diego State University

Fall 2025 - San Diego State University (SDSU)
Fridays 11:00 AM - 1:40 PM | PS 256

Instructor Information

Course Information

Class Meeting Structure

Pre-Class Preparation (Required):

Friday Class Sessions:

Course Description

This course provides a hands-on introduction to the practice and theory of scientific computing, with an emphasis on numerical methods and machine learning, applied to astrophysical problems. Beginning with Python programming fundamentals and object-oriented design, the course progresses through sophisticated numerical methods including N-body dynamics, Monte Carlo radiative transfer (MCRT), Bayesian inference and MCMC, Gaussian processes, and culminates with neural networks. Students will implement all algorithms from first principles (“glass box” approach) before transitioning to modern frameworks (JAX ecosystem). The course emphasizes professional software development practices, responsible AI integration, and preparation for computational research and industry careers.

Important Note: I’m not testing your astrophysics knowledge. All necessary equations and scientific background will be provided. Your task is to learn and understand the scientific concepts, implement them correctly in Python, and connect the computation to the astrophysics. The focus is on computational thinking and implementation skills that transfer to any research domain.

For an expanded description of the course philosophy and approach, see:

Course Learning Outcomes

Upon successful completion of this course, students will be able to:

  1. Implement numerical schemes for solving scientific problems using Python, employing advanced programming paradigms including object-oriented programming (OOP).

  2. Develop professional software practices including modular algorithm design, meaningful documentation, version control, testing, and effective code structuring.

  3. Master key numerical techniques including numerical integration, Monte Carlo methods, model fitting, and solving ordinary differential equations.

  4. Apply Monte Carlo methods to complex astrophysical problems including radiative transfer and Bayesian inference.

  5. Build neural networks from fundamentals implementing backpropagation and gradient descent without relying on libraries.

  6. Utilize modern computational frameworks translating implementations to the JAX ecosystem.

  7. Integrate AI tools strategically through a scaffolded three-phase approach while maintaining deep understanding.

  8. Simulate advanced astrophysical phenomena including N-body dynamics, stellar physics, and radiative processes.

  9. Communicate computational methods and scientific results effectively through written reports and code documentation.

  10. Think computationally about astrophysics developing intuition for numerical stability and convergence.

Where Outcomes Are Assessed

Materials

Textbooks (Free Online Resources)

Software Requirements

For detailed setup instructions, see: Software Installation Guide

Computational Resources

Access to SDSU’s Jupyter Hub provided to enrolled students, however students are strongly encouraged to setup their own Python environment and IDE workspace on their own machines. Detailed instructions are included in the Getting Started module.

All projects distributed and submitted here. Your last repository push by the deadline will count as your submitted assignment. For more information please see: https://sdsu-research-ci.github.io/github/students.

Grading Information

Assessment Components

ComponentWeightDescription
Short Projects 1-550%Due roughly every 2-3 weeks on Mondays at 11:59 PM PT via GitHub Classroom (includes Growth Memos).
Growth Memos10%Integrated with each project submission (.md or PDF in project repo)
Final Project25%JAX implementation with research component. Due Thu Dec 18, 11:59 PM PT.
Technical Growth Synthesis5%Comprehensive self-reflection growth portfolio integrated with Final Project submission (.md or PDF in project repo).
Participation & Engagement10%Active contribution in lectures, lab activities, and peer collaboration.

Short Projects & Growth Memos (60% of course grade combined)

Each short project submission includes both technical implementation and a growth memo reflection. Together these components total 60% of your course grade (50% projects + 10% memos).

Short Project Components

Growth Memo Components (1-2 pages, submit as .md or PDF in project repo)

An informal reflection on your learning journey and skill development progression - write authentically about:

Note: The relative weight between project implementation and growth memo may vary by project based on learning objectives and complexity. Early projects may emphasize reflection more heavily to develop metacognitive skills, while later projects may weigh technical implementation more strongly as mastery develops.

Research Memo Format

For detailed guidelines for the short projects, see: ASTR 596 Project Submission Guide

Final Project Components (25% of course grade)

ComponentWeightDescription
Code Package60%Professional package structure with __init__.py, tests, and documentation.
Written Report25%Formal scientific writeup with scientific background and motivation, methods, results, and conclusions.
Presentation15%12-minute total: research project, technical growth summary, and Q&A.

Code Package Requirements

Presentation Structure (12 minutes total)

Technical Growth Synthesis (5% of course grade)

Portfolio Components (3-5 pages excluding figures, submit with Final Project)

An informal reflective narrative documenting your computational journey through the entire course - write authentically about your evolution as a computational scientist:

Participation & Engagement (10% of course grade)

LevelObservable weekly behaviors
10/10Prepared (specific Qs on readings), active in pair work and discussions, helps answer peer questions, posts helpful tips, provides constructive feedback
8/10Prepared, steady collaboration, contributes to discussions, occasional Q&A
6/10Minimal prep, limited engagement in discussions, passive participation
4/10Unprepared, disengaged, minimal discussion/participation, slows partner progress
2/10Rarely attends or participates, unprepared when present, no discussion contribution
0/10Habitually absent, no engagement

Note: Participation includes: class discussions, asking questions, answering instructor/peer questions, and pair programming engagement.

Important: This rubric serves as a guideline. Students may be strong in some areas (e.g., excellent pair programming) while needing improvement in others (e.g., class discussion). Your grade reflects overall engagement. Disruptive behaviors (habitual tardiness, excessive phone use, off-topic conversations) negatively impact participation grades regardless of other contributions.

Major Assignment Due Dates

AssignmentDue Date
Project 1: Python Fundamentals, OOP & Classes, numpy/matplotlib,
& Stellar Physics (with Growth Memo 1)
Wednesday, Sept 10, 11:59 PM PT
Project 2: ODE Integration & N-Body Dynamics,
Monte Carlo Sampling (with Growth Memo 2)
Wednesday, Sept 24, 11:59 PM PT
Project 3: Monte Carlo Radiative Transfer (with Growth Memo 3)Wednesday, Oct 15, 11:59 PM PT
Project 4: Bayesian/MCMC (with Growth Memo 4)Wednesday, Nov 5, 11:59 PM PT
Project 5: Gaussian Processes (with Growth Memo 5)Wednesday, Nov 26, 11:59 PM PT
Final Project & Technical Growth SynthesisThursday, Dec 18, 11:59 PM PT

*Counts toward Participation grade

Grading Scale

Final letter grades will be calculated using the grading scale listed below. These percentages represent guaranteed thresholds - earning the stated percentage guarantees at least that grade. The instructor reserves the right to adjust borderline grades upward based on effort, improvement, and engagement.

Course Policies

Late Work Policy

Regrade Requests

Peer Collaboration & Pair Programming

AI Usage Policy

This course uses a novel three-phase scaffolded approach to AI integration. Note: AI raises the bar for expertise. LLMs confidently generate plausible-looking code that can be subtly wrong, numerically unstable, or inefficient. They also hallucinate facts, misexplain concepts, and make mathematical errors. Our three-phase approach builds your AI literacy systematically – teaching you to understand deeply enough to catch these errors and know why they’re wrong.

For complete AI usage guidelines and examples, see: AI Usage Policy & Learning Guide

Academic Integrity

The California State University system requires instructors to report all instances of academic misconduct to the Center for Student Rights and Responsibilities. Academic dishonesty will result in disciplinary review by the University and may lead to probation, suspension, or expulsion. Instructors may also, at their discretion, penalize student grades on any assignment discovered to have been produced in an academically dishonest manner such as cheating and plagiarism as described here: SDSU Academic Integrity Policy.

In this course, submitted work must demonstrate your understanding. You are expected to:

Collaboration is encouraged through pair programming and peer review, but each student must submit their own implementation and growth reflections. Using another student’s code, submitting AI-generated code you cannot explain, or misrepresenting AI assistance as your own work constitutes academic dishonesty.

Fostering a Growth Mindset

A growth mindset is the belief that intelligence, abilities, and talents are malleable and can be developed through effort and persistence, not fixed traits you’re born with. This mindset is key for succeeding in this course. In ASTR 596, you’ll encounter challenging concepts that may initially seem overwhelming. This is normal and expected: it means you’re learning. A growth mindset allows you to:

Your capability will grow exponentially throughout this course. What feels overwhelming in Week 1 will feel manageable by Week 5, and by Week 15 those early challenges will seem trivial.

Our classroom cultivates a growth mindset by creating a supportive environment where:

Trust the process, embrace the challenge, and discover that you’re capable of doing hard things.

Diversity and Inclusivity Statement

I consider this classroom to be a place where you will be treated with respect, and I welcome individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affliations, sexual orientations, ability, and other visible and non-visible differences. All members of this class are expected to contribute to a respectful, welcoming and inclusive environment for every other member of the class. If something is said in class by myself or others that made you uncomfortable, please contact me or submit anonymous feedback. Anonymous feedback can be placed in my department mailbox (located in the mail/copier room, PA-122A) or given to Hilary Scalisi, Astronomy Department Coordinator in office # P-132, for delivery to me.

Essential Student Information

For essential information about student academic success, please see the SDSU Student Academic Success Handbook and the SDSU Student Success Hub. For graduate student resources please refer to SDSU’s Graduate Student Resources.

Class rosters are provided to the instructor with the student’s legal name. Please let the instructor know if you prefer an alternate name and/or gender pronoun.

SDSU provides disability-related accommodations via Student Disability Services (email: sds@sdsu.edu). Please allow 10-14 business days for processing.

Land Acknowledgement

SDSU sits on Kumeyaay land. The Kumeyaay people have lived in this region for over 10,000 years and continue to live here today.

Your Responsibility

This syllabus constitutes our course contract. You are responsible for reading and understanding all policies stated here.

References
  1. Mehta, P., Bukov, M., Wang, C.-H., Day, A. G. R., Richardson, C., Fisher, C. K., & Schwab, D. J. (2019). A high-bias, low-variance introduction to Machine Learning for physicists. Physics Reports, 810, 1–124. 10.1016/j.physrep.2019.03.001