MCS 320 Introduction to Symbolic Computation

Course Description

Introduction to computer algebra systems (Sage), symbolic computation, and the mathematical algorithms employed in such computation, with examples and applications to topics in undergraduate mathematics.

Course Prerequisites

Grade of C or better in MATH 210; and Grade of C or better in: MCS 260 or CS 107 or CS 109 or CS 111 or equivalent.

Course Content

Part One: First Steps

L-1: welcome to MCS 320, a Jupyter notebook, prerecording on youtube
L-2: the Jupyter notebook a Jupyter notebook, prerecording on youtube
L-3: getting started and getting help, a Jupyter notebook, prerecording on youtube
L-4: exact and floating-point numbers, a Jupyter notebook, prerecording on youtube
L-5: complex and algebraic numbers, a Jupyter notebook, prerecording on youtube
L-6: symbols, names, and references, a Jupyter notebook, prerecording on youtube
L-7: numbers and functions, a Jupyter notebook, prerecording on youtube
L-8: evaluation and execution, a Jupyter notebook, prerecording on youtube
L-9: persistent data and serialization, a Jupyter notebook, prerecording on youtube
L-10: vectorization and Cython, a Jupyter notebook, prerecording on youtube

Part Two: Polynomials and Expression

L-11: univariate and multivariate polynomials, a Jupyter notebook, prerecording on youtube
L-12: rational polynomials, a Jupyter notebook, prerecording on youtube
L-13: representation of expressions, a Jupyter notebook, prerecording on youtube
L-14: substitution, expansion, and factorization, a Jupyter notebook, prerecording on youtube
L-15: normalizing expressions, a Jupyter notebook, prerecording on youtube
L-16: review for the first midterm exam, a Jupyter notebook with questions, a Jupyter notebook with answers, prerecording on youtube
Exam 1, 1st version: questions in pdf, with answers in a notebook
Exam 1, 2nd version: questions in pdf with answers in a notebook

Part Three: Calculus

L-19: defining mathematical functions, a Jupyter notebook, prerecording on youtube
L-20: recursive functions and memoization, a Jupyter notebook, prerecording on youtube
L-21: computing with functions, a Jupyter notebook, prerecording on youtube
L-22: symbolic and numeric differentiation, a Jupyter notebook, prerecording on youtube
L-23: integration and summation, a Jupyter notebook, prerecording on youtube
L-24: series and approximations, a Jupyter notebook, prerecording on youtube
L-25: symbolic-numeric computing, a Jupyter notebook, prerecording on youtube

Part Four: Plotting and Solving Equations

L-26: two dimensional plots, a Jupyter notebook, prerecording on youtube
L-27: three dimensional plots, a Jupyter notebook, prerecording on youtube
L-28: animating plots, a Jupyter notebook, prerecording on youtube
L-29: solving equations, a Jupyter notebook, prerecording on youtube
L-30: linear algebra, a Jupyter notebook, prerecording on youtube
L-31: differential equations, a Jupyter notebook, prerecording on youtube
L-32: optimization, a Jupyter notebook, prerecording on youtube
L-33: review for the second midterm exam, a Jupyter notebook with questions,a Jupyter notebook with answers, prerecording on youtube

Part Five: Advanced Topics

L-34: interactive web pages, a Jupyter notebook, prerecording on youtube
Exam 2, 1st version: questions in pdf, with answers in a notebook
Exam 2, 2nd version: questions in pdf with answers in a notebook
L-37: symbolic computing with SymPy, a Jupyter notebook, prerecording on youtube
L-38: numeric computing with NumPy and SciPy, a Jupyter notebook, prerecording on youtube
L-39: symbolic computing with Julia, a Jupyter notebook, prerecording on youtube
L-40: parallel computing in Julia, a Jupyter notebook, prerecording on youtube
L-41: review three for the final exam, a Jupyter notebook, prerecording on youtube
L-42: review four for the final exam, a Jupyter notebook, prerecording on youtube