**Prerequisites & Bulletin Description**

## Course Description

Introduces basic sequential programming constructs in scientific computing using the Python Language. Uses programming projects to review and reinforce material from Calculus and Linear Algebra. Introduces essential modeling and programming concepts.

## Student Learning Outcomes

SLO #1 | Develop and write efficient Python programs. Read and understand programs written by others. |

SLO #2 | Numerically compute the derivatives and integrals of functions using their own Python programs. |

SLO #3 | Numerically solve first order differential equations, find the roots of functions and find solutions of large linear systems. |

SLO #4 | Understand, develop and write graph search and list sorting algorithms. |

SLO #5 | Solve probability problems using computer simulations. Perform linear regression with cross-validation on a data set to develop an efficient linear model. |

## Evaluation of Students

Based on homework assignments, quizzes, midterm and final exam, and projects.

## Course Outline

Basic Programming Concepts

- Installing Python, Using a Text Editor
- Arithmetics, Rounding Errors, Variables and Objects
- Logical Operators, Arrays, Plotting, Handling Input Data Reading and Writing to Files
- Generating and interpreting good plots
- LaTeX

Basic Constructions

- If-Statements, Colons and Indentation Functions, For Loops, While Loops
- Lists and Tuples
- Functions as Input Arguments

Algorithms

- Searching: Sequential, Binary Search
- Graph Search : Depth-First, Breadth-First, Dijkstra’s Algorithm
- Sorting: Selection, Quick and Merge
- Linear Regression , Batch Gradient Descent, Cross validation of models

Mathematical Concepts

- Finite Difference Approximations to the Derivative and Applications
- Root Finding: Newton’s Method, Bisection Method
- Numerical Integration: Trapezoidal Rule, Simpson’s Rule
- Computational Probability, Monte Carlo Methods
- SolvingOrdinaryDifferentialEquations(Forward&Backward, Euler, 2nd-Order Runge- Kutta)

## Textbooks & Software

Programming for Computations -- Python (Sven Linge and Hans Peter Langtangen) [an open source textbook]

Submitted by: Eric Hsu

Date: Aug 24 2023