This repository contains course materials for NPRE 412: Nuclear Power Economics and Fuel Management, taught by Prof. Kathryn Huff at the University of Illinois at Urbana-Champaign. The course was previously taught in Spring 2025 and will be offered again in future semesters.
The repository serves as the primary source of lecture content, delivered through interactive Jupyter notebooks, along with supporting materials including LaTeX-generated syllabi, reading lists, and project specifications.
Course Description: NPRE 412 covers the economics and fuel cycle management of nuclear power systems, including reactor physics fundamentals, fuel cycle costs, levelized cost of electricity (LCOE), and comparative analysis of once-through and closed fuel cycle strategies.
License: Creative Commons Attribution 4.0 International (CC BY 4.0)
- Purpose: First-week materials including syllabus overview and nuclear fuel cycle introduction
- Key Files:
00-intro-syllabus.ipynb- Course policies, grading, and logistics01-power-overview.ipynb- Overview of nuclear power generation02-nfc-overview.ipynb- Nuclear fuel cycle overview- Supporting images:
once-through.png,recycle.png save-the-nukes.pdf- Reference material
- Purpose: Official course syllabus and policies in LaTeX format
- Key Files:
syllabus.tex- Main syllabus documentief.tex- Included content filebibliography.bib- BibTeX referencesMakefile- Build automation (see Build Commands section)syllabus.pdf- Compiled syllabus (generated)
- Course Details:
- Meeting time: TuTh 9:30am-10:50am
- Room: 3018 CIF
- Prerequisites: NPRE 402 or 247
- Instructor email: kdhuff@illinois.edu
- Office hours: By appointment at katyhuff.youcanbook.me
- Purpose: Reading lists organized by week (wk00 through wk14)
- Structure: Each week has its own subdirectory containing:
wkXX.tex- LaTeX document listing required and recommended readingswkXX.bib- BibTeX bibliography for that weekwkXX.pdf- Compiled reading list (generated)
- Special subdirectory:
/readings/report/- Guidelines for book report assignment
Each of these directories contains Jupyter notebooks with lecture content, supporting images, and data:
-
/lcoe/- Levelized Cost of Electricity- Core concepts, LCOE calculations, comparative costs
- Contains construction cost analysis and economic modeling
-
/nuclear-power-economics/- Nuclear Power Economics- Economic fundamentals, capital costs, financial analysis
-
/time-val-of-money/- Time Value of Money- Present/future value calculations, compound interest, financial fundamentals
-
/reactor-physics/- Reactor Physics- Includes
reactor-physics.ipynbanddepletion.ipynb - Fundamental physics concepts needed for fuel management
- Includes
-
/mining-milling/- Mining and Milling- Front-end fuel cycle: uranium extraction and processing
-
/conversion/- Conversion Processes- UF6 conversion processes in the fuel cycle
-
/enrichment/- Uranium Enrichment- Enrichment technologies, SWU calculations, global capacity
- Contains
world_enrichment_cap.png,neri_hyperfine_2002.png
-
/fuel-fabrication/- Fuel Fabrication- Manufacturing of nuclear fuel assemblies
-
/in-core/- In-Core Fuel Management- Reactor operation, fuel loading patterns, burnup management
-
/reprocessing/- Spent Fuel Reprocessing- Back-end fuel cycle, PUREX process, closed fuel cycles
-
/high-level-waste/- High-Level Waste Management- SNF disposal, geological repositories, waste regulations
-
/low-level-waste/- Low-Level Waste Management- LLW classification, disposal methods
-
/environmental-effects/- Environmental Effects- Environmental impacts of nuclear power, lifecycle analysis
-
/nonproliferation-and-safeguards/- Nonproliferation and Safeguards- Proliferation resistance, IAEA safeguards, security considerations
- Purpose: Final project specifications and rubrics
- Key Files:
project.tex- Project description and requirementsrubric.tex- Grading rubricproject.pdf- Compiled project specification (generated)
- Purpose: Homework assignments (currently contains
/hw06/) - Note: Homework assignments may be distributed separately or via Canvas
- Count: 21 notebooks across the repository
- Purpose: Interactive lecture content combining:
- Explanatory text in Markdown cells
- Mathematical equations (LaTeX formatting)
- Python code for calculations and demonstrations
- Visualizations using matplotlib
- Interactive exercises for students
Notebook Structure Pattern:
- Import statements (numpy, matplotlib, pandas, scipy)
- Learning objectives section
- Topic introduction with theory/background
- Code demonstrations with equations
- Visualizations and plots
- Discussion questions
- Key lessons summary
- Preview of next topic
Common Code Patterns:
%matplotlib notebook
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd- Syllabi: Professional course documentation with university formatting
- Reading Lists: Weekly assignments using the
examdocument class - Projects: Detailed specifications using
articleclass - Common packages:
geometryfor marginshyperreffor linksamsmath,amssymbfor equationsfancyhdrfor headers/footerssplitbibfor categorized bibliographies (Required/Recommended)
- Purpose: BibTeX references for readings and citations
- Format: Standard BibTeX entries for books, articles, reports
- Count: 146 files (PNG, JPG, JPEG, PDF)
- Purpose:
- Diagrams of fuel cycle processes
- Data visualizations and charts
- Historical figures and photos
- Technical schematics
- Reference material from external sources
.gitignore- Excludes LaTeX auxiliary files (.bbl,.aux,.out,.blg,.fls,*_latexmk,.log)requirements.txt- Python dependenciesLICENSE- CC BY 4.0 license textREADME.md- Student-facing getting started guide
# No installation required
# Visit: http://mybinder.org/repo/katyhuff/npre412Note: Binder servers may be overloaded at times. Check status at http://mybinder.org/status
Prerequisites:
- Python 3.x (via Anaconda recommended)
- Git (optional but recommended)
Setup:
# Clone the repository
git clone https://github.com/katyhuff/npre412.git
cd npre412
# Install Python dependencies
pip install -r requirements.txt
# Or using conda:
conda install numpy matplotlib pandas scipy
pip install mpld3
# Launch Jupyter
jupyter notebookYour browser will open to localhost:8888 where you can navigate to and run notebooks.
Updating Content:
# Pull latest changes (if using git)
git pull origin masterNote: If you've made local edits, you may need to commit or stash them first to avoid merge conflicts.
General Pattern (used in /syllabus/):
cd syllabus
make # Builds PDF via pdflatex
make clean # Removes auxiliary files
make realclean # Removes all generated files including PDFManual Build Process:
pdflatex -halt-on-error -file-line-error syllabus.tex
bibtex syllabus.aux
pdflatex -halt-on-error -file-line-error syllabus.tex
pdflatex -halt-on-error -file-line-error syllabus.texNote: Multiple pdflatex runs are needed for cross-references and bibliography.
Reading Lists: Each weekly reading directory requires the same build process:
cd readings/wk02
pdflatex wk02.tex
bibtex wk02.aux
pdflatex wk02.tex
pdflatex wk02.texFrom requirements.txt:
numpy- Numerical computing, array operationsmatplotlib- Plotting and visualizationpandas- Data structures and analysis (DataFrames for cost tables)mpld3- Interactive matplotlib plots in notebooksscipy- Scientific computing, optimization
Usage Patterns:
- numpy: Mathematical operations, equation implementations
- matplotlib: Cost curves, decay plots, comparison charts
- pandas: Organizing tabular data (capital costs, O&M expenses, fuel costs)
- mpld3: Interactive tooltips and enhanced notebook plots
- scipy: Advanced calculations and numerical methods
- First cell: Import statements and matplotlib magic commands
- Second cell (Markdown): Title and learning objectives
- Body cells: Alternating markdown (theory) and code (demonstration)
- Final cells: Summary and next topic preview
- Headers: Title (H1), Learning Objectives (H2), Sections (H2), Subsections (H3)
- Discussion prompts: Clearly labeled as "### Discussion: [Question]"
- Images: Embedded with markdown syntax, often with external URLs
- Equations: LaTeX math in
$$...$$(display) or$...$(inline)
- Functions: Clearly documented with docstrings
def late_grade(hours_late, grade=100, half_life=1): """This function describes how much credit you will get for late work""" lam = math.log(2)/half_life return grade*math.exp(-lam*hours_late)
- Variable naming: Descriptive names, often matching mathematical notation
- Comments: Explaining physical/economic significance of calculations
- Plotting: Consistent style with labeled axes, titles, and legends
- Exercise blocks: Marked with "Exercise" for in-class activities
- Interactive plots: Using mpld3 for tooltips and interactivity
- Real-world data: Historical construction costs, enrichment capacity, etc.
- Pedagogical calculations: Step-by-step derivations with intermediate results
- Document class:
article[11pt, a4paper] - Margins: 1 inch all around
- Headers: Course info in header via
fancyhdr - Structure: Title, course info table, sections with clear headings
- Commands: Custom commands for course details (e.g.,
\CourseTitle,\CourseInstructor)
- Document class:
exam[12pts] - Bibliography categories: Required vs. Recommended (via
splitbibpackage) - Custom commands:
\class,\term,\assignment,\duedate - Minimalist: Focus on bibliography entries, minimal additional text
- Hyperlinks: Blue links for URLs, red for internal references
- Color scheme: Defined custom colors (darkblue, darkred, darkgreen)
- Bibliography: Unsorted style (
\bibliographystyle{unsrt}orplainurl)
Undergraduate Grading:
- Quizzes: 10%
- Homework: 40%
- Project Proposal: 10%
- Long Read (Book Report): 20%
- Final Project: 20%
Graduate Grading:
- Quizzes: 0% (not required)
- Homework: 30%
- Project Proposal: 20%
- Long Read: 20%
- Final Project: 30%
Tuesday:
- Reading assignment posted (due following Tuesday at 9:30am)
- Homework assigned (due following Tuesday at 9:30am)
- Quiz on previous week's reading (due Tuesday at 9:30am)
Thursday:
- Continued lecture on topic
Philosophy: Active learning approach - students study background material independently, class time focuses on discussion, demonstration, and application.
Highly structured exponential decay policy:
- Half-life: 1 hour
- Formula: G(t) = G₀e^(-λt) where λ = ln(2)/1 hour
- Result: 1 hour late = 50% credit, 6 hours late = 1.56% credit, 24 hours late ≈ 0% credit
- No negotiation except with Dean of Students absence letter
Quantitative Research Project:
- Multi-stage: Proposal → Research → Presentation
- Final presentations during exam period (7:00-10:00pm on scheduled final exam date)
- Graduate students have higher expectations
Long Read Assignment:
- In-depth critical analysis of relevant book
- Individual presentation and written report
The course follows the nuclear fuel cycle chronologically:
- Introduction - Course overview, NFC basics
- Economics - LCOE, time value of money, capital costs
- Reactor Physics - Fundamentals, depletion, burnup
- Front End:
- Mining and milling
- Conversion
- Enrichment
- Fuel fabrication
- In-Core - Fuel management, loading patterns
- Back End:
- Reprocessing
- High-level waste disposal
- Low-level waste management
- Crosscutting:
- Environmental effects
- Nonproliferation and safeguards
-
Notebooks:
- Ensure all external image URLs are still valid
- Test all code cells execute without errors
- Update year references in introduction notebook
- Verify mybinder.org compatibility
-
Syllabus:
- Update
\CourseYearand\CourseSemesterinsyllabus.tex - Update final exam date in Important Dates section
- Update course room/building if changed
- Rebuild PDF:
cd syllabus && make
- Update
-
Reading Lists:
- Review and update bibliography entries for currency
- Add new relevant publications
- Update due dates in
\duedatecommand - Check that all cited works are available to students
-
Projects:
- Review project topics for relevance
- Update any date-specific references
- Consider rotating project options
- Canvas: Quizzes, grade management, announcements
- GitHub: Primary content repository, version control
- Binder: Browser-based notebook execution (backup option)
- Local Jupyter: Recommended for students who want to save work
Installation Help:
- Anaconda Python distribution: https://www.continuum.io/downloads
- Git installation: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
- Jupyter beginner guide: http://jupyter-notebook-beginner-guide.readthedocs.io/
Communication Channels:
- Office hours: katyhuff.youcanbook.me (24-hour advance booking required)
- Email: kdhuff@illinois.edu
- Collaboration with peers encouraged
# Check for outdated packages
pip list --outdated
# Update requirements.txt if needed
pip freeze > requirements.txt# Quick test - ensure all notebooks can be opened
jupyter nbconvert --execute --to notebook *.ipynb
# Or manually:
jupyter notebook
# Run Kernel → Restart & Run All for each notebookcd readings
for dir in wk*/; do
(cd "$dir" && pdflatex *.tex && bibtex *.aux && pdflatex *.tex && pdflatex *.tex)
done# Remove all LaTeX auxiliary files
find . -name "*.aux" -o -name "*.log" -o -name "*.bbl" -o -name "*.blg" | xargs rm
# Remove Jupyter checkpoints
find . -name ".ipynb_checkpoints" -type d -exec rm -rf {} +- Tsoulfanidis, N., & Lange, R. (2013). Nuclear Energy: Selected Entries from the Encyclopedia of Sustainability Science and Technology. Springer.
- Lovering et al. (2016) - Historical construction costs: http://thebreakthrough.org/
- OpenEI Transparent Cost Database: http://en.openei.org/apps/TCDB/
- NEI Nuclear Statistics: http://www.nei.org/Knowledge-Center/Nuclear-Statistics/
- U.S. NRC regulations and guidance
- DOE pathways and reports
- IAEA safeguards documentation
- Commit compiled PDFs only when significant updates are made
- Keep
.gitignorecurrent to avoid committing auxiliary files - Tag releases for each semester (e.g.,
spring-2025,spring-2026) - Use descriptive commit messages referencing specific lecture topics
- Keep related content together (notebook + images in same directory)
- Use descriptive filenames (topic-based, not date-based for lecture content)
- Maintain consistent naming: lowercase with hyphens (e.g.,
high-level-waste/)
- All content under CC BY 4.0 - students can freely use and share
- Public GitHub repository - transparent and accessible
- Multiple access methods (Binder, local) accommodate different student needs
Binder won't load:
- Check mybinder.org status page
- Verify repository is public
- Try local installation instead
LaTeX won't compile:
- Check for missing packages:
tlmgr install <package-name> - Verify all
.bibfiles are present - Look for special characters that need escaping
Notebook kernel errors:
- Restart kernel: Kernel → Restart
- Check Python version (needs 3.x)
- Reinstall dependencies:
pip install -r requirements.txt
Import errors in notebooks:
- Install missing package:
pip install <package-name> - Check package is in requirements.txt
- Verify correct conda/pip environment is active
Instructor: Prof. Kathryn Huff
- Email: kdhuff@illinois.edu
- Office: 111B Talbot Laboratory
- Appointments: https://katyhuff.youcanbook.me
Repository: https://github.com/katyhuff/npre412 Course Website: https://canvas.illinois.edu
Last Updated: Based on Spring 2025 course materials Document created for Claude Code assistant to understand repository structure and conventions