### Overview

Instructor
Jeffrey Wong ( main site)
Email
jtwong at math dot duke dot edu
Office
Physics 029B
Office Hours
TBA or by appt.
Lectures
MTWThF 12:30-1:45 PM; through Zoom
Syllabus
Textbook(s)
(None required)

##### Course Website
During the semester, we will use Piazza for the course website. Resources will periodically be updated here.

##### Course Description
This is an introductory programming course in python that will provide a foundational background for programming in a mathematical setting. Students will learn the basics of object oriented programming: memory storage and variable scoping, recursion, objects and classes, and basic data structures. A variety of numerical methods will be introduced, with a focus on their practical implementation, through a series of modules covering a variety of subjects such as physical modeling, genetics, and optimization. The course is separated into two parts: In the first, we cover programming fundamentals in python. The second part is comprised of a series of modules on applications in computational mathematics, which provide a practical setting in which to develop these programming skills. In addition, towards the end of the course, there will be a final project in which the student chooses a topic to explore in depth.

##### Prerequisites
Students should have taken at least linearr algebra (Math 216, 218 or 221), while no programming background is required. Not open to students who have taken CS 201.

##### Technology
Access to the following (free) resources is required: Zoom (for lectures), github (to share and turn in work), Python 3.x and an editor (e.g. a text editor or an IDE like PyCharm), LaTeX, (for some homework and project writing). Information for getting started will be provided.

##### Homework and Exams
• Homework will be assigned approximately twice each week; typically due on the date of the next assignment.
• Homework should be turned in by the deadline to ensure full credit. If late, the homework should still be turned in for feedback (and partial credit).
• Working and studying in groups is strongly encouraged, as well as discussing code (writing code to be read by others is an excellent way to improve computational skills!). However, the final product - solutions and code - should be your own. Further guidelines for code and computational results will be provided throughout the course.
• Solutions should be complete arguments and code should be functional out of the box' (i.e. it runs and produces the required outputs). W When explanations are asked for, they may reference code but should be complete and easy to follow (it should not be necessary to dig through' the code to get to solutions).
• Typing solutions in LaTeX is suggested; if handwritten, make sure solutions are readable when scanned (a high quality phone camera with good lighting should be sufficient).

##### Exams
There is one midterm exam that covers programming fundamentals and no final exam. The midterm will be `take-home' and open notes (with some restrictions), to be taken during a subset of a continuous three hour period of the student's choice.