Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 85 additions & 68 deletions lessons/foundational-symbolic-math.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
# lessons/your-lesson-name.yml
# lessons/your-module-name.yml
#
# STARTER TEMPLATE FOR ACT-CMS LESSON PORTAL SUBMISSION
# Replace all placeholder text with your actual lesson information
# Remove any sections that don't apply to your lesson
# STARTER TEMPLATE FOR ACT-CMS PORTAL SUBMISSION
# Replace all placeholder text with your actual module information
# Remove any sections that don't apply to your module

# BASIC METADATA (REQUIRED)
# Use a clear, descriptive title that includes the main topic
title: "Foundations of Symbolic Mathematics in Python"
title: "Foundational Symbolic Mathematics"

# Brief description for search results (1-2 sentences)
description: "Students will be introduced to the fundamentals of symbolic mathematical manipulations in Python."
description: "Students will learn foundational skills for performing symbolic mathematical manipulations in Python."

# Longer description for the lesson page (use | for multi-line text)
expanded_description: |
The lessons in this module are meant to help students develop foundational
skills in symbolic mathematics, including algebra, calculus, linear algebra,
differential equations, and beyond --- but decoupled from any particular chemistry
course or chemical application beyond the general chemistry level.

Physical chemistry describes chemical phenomena in the language of mathematics
at a level of conceptual and theoretical rigor beyond that which many
undergraduate chemistry students are typically unaccustomed. This means that
for students of physical chemistry, they must develop a wide variety of
mathematical skills "on the job," while leaving enough intellectual bandwidth
to learn the physical chemistry concepts themselves. For many students this is
an enormously challenging proposition, which contributes to physical
chemistry's reputation as one of (if not the) most difficult courses taught on
any college campus. While mathematical rigor is the cost of doing business in
physical chemistry, being able to perform every requisite mathematical
transformation by hand does not have to be a learning objective for the course.
To make the study of physical chemistry more mathematically accessible for
undergraduate chemistry students, the goal of this Module is to help students
develop the cyberinfrastructure (CI) skills necessary to use Python as a
symbolic and numerical mathematics engine for solving physical chemistry
problems.

# COURSE INFORMATION (REQUIRED)
# Choose ONE: "None", "Beginner", "Intermediate", "Advanced"
programming_skill: "Beginner"
Expand All @@ -34,128 +46,133 @@ primary_course: "Foundational Module"
also_for:
- "General Chemistry"
- "Physical Chemistry"
- "Biophysical Chemistry"
- "Materials Science"
- "Analytical Chemistry"

# List all authors
# For titles, use European convention:
# Prof = you yourself teach students, Dr = PhD who doesn't teach students
authors:
- "Prof. Dom Sirianni"

# Estimated total time for all materials
estimated_time: "3 hours" # Currently only for the symbolic-algebra lesson, will grow w/ more
# Estimated total time for ALL materials for ENTIRE collection
estimated_time: "4-6 hours"

# Write a description of your module.
# Single notebook, multi-part module, etc?
format: "Multi-Part Module" # Must be EXACTLY "Single Notebook" or "Multi-Part Module" (same spelling/case) for the format filter
# Format of the module. Must be EXACTLY one of these two values (case- and
# spelling-sensitive) so the home-page format filter groups lessons correctly:
# "Single Notebook" or "Multi-Part Module"
format: "Multi-Part Module"

# INSTRUCTOR INFORMATION (OPTIONAL)
# Contact email for instructor access requests (optional - will use default if not specified)
instructor_email: "sirianni.dom@gmail.com" # will update after I get a Westminster email
instructor_email: "sirianda@westminster.edu"
# Note: Instructor materials will be located at: instructor-repo/{lesson-filename}/
# where {lesson-filename} matches this YAML file's name

# INSTRUCTOR DETAILS (OPTIONAL)
# What level of students was this piloted with?
student_level: "Undergraduate (all years)" # e.g., "Graduate", "Undergraduate - First Year", "Mixed Graduate/Undergraduate"
student_level: "Undergraduate Upper Division" # e.g., "Graduate", "Undergraduate - First Year", "Mixed Graduate/Undergraduate"
# How many students has this been tested with?
students_piloted: 15 # Number of students
students_piloted: 50 # Number of students
# Free-form notes for instructors
instructor_notes: |
Additional context for instructors using this lesson:
- Prerequisite of basic Python programming (equivalent to outcome of related module)
- Symbolic algebra lesson is prerequisite for other lessons

- This lesson works well when paired with a traditional lecture on molecular dynamics
- Students often struggle with the concept of periodic boundary conditions in Part 2
- The visualization exercises are very engaging - allow extra time for exploration
- Consider assigning the dataset analysis as homework rather than in-class work

Timing notes:
- Symbolic algebra lesson can be completed in single 3-hour lab period
- Part 1 typically takes students 45-60 minutes
- Part 2 can be rushed in 90 minutes but is better with 2 hours

Common student questions:
- "I can solve these problems by hand, why do I need to use Python?"
- Remind students that some chemical problems in sophomore-level courses & beyond are either impossible or backbreakingly difficult to solve by hand, so developing these skills will greatly help their progress through the curriculum
- "Why do we need so many time steps?" - good opportunity to discuss numerical integration
- "What happens if we change the temperature?" - this connects well to thermodynamics concepts

# Related lessons that complement this one
related_modules:
- "lesson-01-introduction-to-programming-and-python"
- "lesson-02-linear-variation-method"
- "lesson-04-diatomic-molecule-ir-spectrum-analisys"

# OPTIONAL: Lessons students should complete BEFORE this one.
# Values are lesson IDs (YAML filenames without .yml) — unlike the free-text
# scientific_prerequisites/programming_prerequisites fields below, these are
# strictly build-validated: unknown IDs, self-references, or circular
# prerequisite chains FAIL the build. Machine-readable metadata (searchable
# on the portal); ordered sequences are displayed via paths.yml instead.
prerequisite_modules:
- "foundational-intro-python"

# NOTE: To add this lesson to an ordered learning path (or create a new one),
# edit paths.yml at the repo root — step order is defined there, not here.

# REPOSITORY URLS (REQUIRED)
# Link to the repository containing your public material
public_repo_url: "https://github.com/act-cms/foundational-symbolic-math"

# MATERIALS SECTION (REQUIRED)
# List each notebook/material in logical order
materials:
- title: "Foundations of Symbolic Algebra in Python"
description: "Basics of using `sympy` and `algebra_with_sympy` libraries to symbolically solve general chemistry problems"
- title: "Lesson 1: Introduction to Symbolic Algebra in Python"
description: "Introduces students to the foundational skills of using SymPy for symbolic algebra manipulations to solve chemical problems."
type: "notebook" # Usually "notebook", could be "slides", "dataset", etc.
duration: "3 hours"
duration: "2-3 hours"

# REQUIRED: Include at least one URL (preferably both)
# Direct link to notebook file on GitHub
github_url: "https://github.com/act-cms/foundational-symbolic-math/blob/main/symbolic-algebra/symbolic-algebra-async.ipynb"
# Google Colab launch link (recommended for accessibility)
#colab_url: "https://colab.research.google.com/github/act-cms/your-lesson-repo/blob/main/colab-notebooks/01-intro.ipynb"
github_url: "https://github.com/act-cms/foundational-symbolic-math/blob/main/symbolic-algebra/instructor-key.ipynb"

# Learning objectives specific to this material
objectives:
- "Define algebraic variables and expressions using the `algebra_with_sympy` library"
- "Define mathematical variables and expressions using SymPy"
- "Manipulate algebraic expressions to solve for a single variable"
- "Substitute numerical values and units to evaluate algebraic expressions"
- "Automatically solve algebraic expressions for a single variable"
- "Apply `algebra_with_sympy` to symbolically solve chemical problems at the first-year general chemical level"

#- title: "Introduction to Symbolic Calculus in Python"
# description: "Brief description of what this notebook covers"
# type: "notebook" # Usually "notebook", could be "slides", "dataset", etc.
# duration: "1.5 hours"
#
# # REQUIRED: Include at least one URL (preferably both)
# # Direct link to notebook file on GitHub
# github_url: "https://github.com/act-cms/your-lesson-repo/blob/main/01-intro.ipynb"
# # Google Colab launch link (recommended for accessibility)
# colab_url: "https://colab.research.google.com/github/act-cms/your-lesson-repo/blob/main/colab-notebooks/01-intro.ipynb"
#
# # Learning objectives specific to this material
# objectives:
# - "Define algebraic variables and expressions using the `algebra_with_sympy` library"
# - "Manipulate algebraic expressions to solve for a single variable"
# - "Substitute numerical values and units to evaluate algebraic expressions"
# - "Use `algebra_with_sympy` to solve chemical problems at the first-year general chemical level"
- "Substitute numerical values and units into algebraic expressions"
- "Apply symbolic algebra techniques in Python to solve general chemistry problems"

# LEARNING OBJECTIVES (REQUIRED)
# What molecular science concepts will students learn?
scientific_objectives:
- "Apply symbolic mathematical operations in Python to solve general chemical problems"
- "Define mathematical variables and expressions using SymPy"
- "Manipulate algebraic expressions to solve for a single variable"
- "Substitute numerical values and units into algebraic expressions"
- "Apply symbolic algebra techniques in Python to solve general chemistry problems"

# What computational/programming skills will students develop?
cyberinfrastructure_objectives:
- "Define algebraic variables and expressions using the `algebra_with_sympy` library"
- "Manipulate algebraic expressions to solve for a single variable"
- "Substitute numerical values and units to evaluate algebraic expressions"
- "Automatically solve algebraic expressions for a single variable"
- "Apply `algebra_with_sympy` to symbolically solve chemical problems at the first-year general chemical level"
- "Using SymPy to symbolically perform mathematical transformations in a chemical context"
- "Use NumPy/SciPy to perform numerical mathematics operations"

# PREREQUISITES (REQUIRED)
# What science background do students need?
scientific_prerequisites:
- "General chemistry: gas laws, chemical kinetics, thermochemistry, Bohr model of the atom & wave nature of light, chemical equilibrium"
- "General chemistry"
- "College-level algebra"
- "Precalculus"

# What programming experience is assumed?
programming_prerequisites:
- "Basic Python syntax (variables, loops, functions, lists)"
- "Basic Python syntax (variables, loops, functions)"

# PLATFORM SUPPORT (REQUIRED)
# List platforms where your materials can be used.
# List platforms where your materials can be used. Each value must be one of
# the supported platforms (spelling and capitalization matter):
# "Google Colab", "Local Installation", "ChemCompute", "CoCalc"
# Any other value fails the build (no rendering template exists for it).
platforms:
#- "Google Colab"
- "Local Installation"
#- "ChemCompute"
- "ChemCompute"

# Which platform do you recommend for most users?
recommended_platform: "Local Installation"
# Pick exactly ONE platform name, and it must match an entry in the `platforms`
# list above EXACTLY (same spelling and capitalization). Do NOT combine several,
# e.g. "Google Colab, ChemCompute" is invalid and fails the build.
recommended_platform: "ChemCompute"

# METADATA (REQUIRED)
# Tags help with searching - use relevant keywords
tags:
- "python"
- "symbolic-math"
- "symbolic-algebra"
- "symbolic-calculus"
- "visualization"
Loading