Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit


MATH 1376: PROGRAMMING FOR DATA SCIENCE

SPRING 2022



Instructor: Taylor Roper (he/him); email: [email protected]

Course Creator: Troy Butler

Course Website: We use Canvas which can be accessed at https://ucdenver.instructure.com.

Zoom Oce Hours and Discussion Boards: Check Canvas for the zoom link/page that contains info related to office hour availability. There will also be Discussion Boards in Canvas for you to     post questions and/or respond to other student’s questions to encourage collaboration with other   students.

Course materials: Course lectures and assignments are provided in the form of interactive Jupyter Notebooks that can be accessed via Canvas. You will also have access to a JupyterHub.                 Information about accessing/using the Hub is provided on Canvas, and you will receive an email   containing your username, password, and access info.

Course description: The course provides an introduction to scientific computing using Python.       Topics will include programming skills such as variable assignment, control statements, loops,         user-defined functions/modules, visualizing of data with plotting tools, interactive widgets for more sophisticated control of functions and plotting tools, etc. Applications will focus on mathematical  and data science topics such as optimization, web-scraping, data simulation, model-fitting, and       classification with artificial neurons.

Overall Learning Objectives and Learning Outcomes:


Students will be able to create/debug/implement Python code incorporating user-defined functions/modules/classes involving conditionals, loops, and imported libraries to solve    scientific computing and data science problems.

Students will be able to explain/interpret/analyze Python code and results using a mixture of Markdown text, annotated figures, interactive widgets, and embedded code

comments/docstrings as appropriate.

Students will be able to create web-scraping and I/O tools for the reading/writing and saving of datasets from websites.

Students will be able to implement/optimize/analyze/interpret basic machine learning routines used for data classification.

The following learning outcomes are consistently stressed throughout the course:

creative/critical thinking, inquiry/analysis, problem solving, and written communication.


Course Overview, Major Topics, and Rationale: This class focuses on the development of        critical thinking and problem solving with Python. We use an interactive Jupyter environment to  help formulate, solve, analyze, and interpret common problems encountered in scientific computing and data science. The goal is for students to become critical and independent thinkers that know   how to ask the right questions in order to solve a given problem. We believe this way of thinking is a skill that can be developed and sharpened through a mixture of embedded activities in lecture     materials and assignments that extend and build upon lecture content. A large focus of the course is on analyzing/explaining/interpreting code and results. In a sense, we are just as interested in      asking and answering questions involving “why” as we are in “how.”

1.  The first module provides a brief tour of the Jupyter environment where you learn about the different types of cells that make up the contents of a notebook and how to create/interact   with these cells.

2.  The second module involves the basics of Python computing, which includes variable assignment, importing libraries, and plotting data.

3.  The third module focuses on control statements (i.e., conditionals), loops, and user-defined functions/modules.

4.  The fourth module pulls all of this together with applications commonly encountered in           scientific computing. We also consider the basics of object-oriented programming in the fourth module and encode commonly encountered concepts/algorithms in scientific computing as       classes.

5.  The fifth module introduces web-scraping to import website data for analysis along with basic reading/writing of datasets to files.

6.  The sixth module provides a brief but broad look at some machine learning tools commonly used for data classification culminating in the final assignment where you create a class of   artificial neurons.

Assessments, grades, and policies:

Assignments: There are a total of 6 assignments given in the form of Jupyter notebooks that are designed to be relevant to the lectures. These assignments are meant to build upon lecture content and expand your expertise. They are intended to help you learn how to solve new       problems you have not seen before by guiding you through exercises that build upon what you have previously seen. As the semester progresses, some assignment problems and even entire   assignments become more open-ended where you are put in control of what it is that you want to experiment, analyze, and interpret. A minimal set of conditions that must be met are          described in the instructions of such open-ended assignments. These assignments will count for 60% of your grade. This means that each assignment is worth 10% of your entire course grade.

Lecture Activities (embedded and external): Within each lecture notebook are              embedded activities that are to be completed. The purpose of these is to provide thoughtful   pauses as you work through material where you should test your understanding of material by actually creating or explaining something for yourself. While videos will be provided showing  the computational solution to activities, you will still need to complete these activities and      provide any required explanations/interpretations. Moreover, any summary activities must be completed on your own. These embedded activities count as 20% of your grade.

There are a total of 14 lecture notebooks. There are also external activities that are due the day following a lecture notebook’s embedded activities are due. These are intended to give you more independent work mastering the content/skills presented in the lecture notebook      and embedded activities. There will be no solution videos to refer to for these activities.          These activities are only for the first four modules in the course. These external activities count as 20% of your grade. There are a total of 11 external activities notebooks.

Grading: Grades are determined by the percent of problems completed correctly. For full     credit on coding parts of problems, this means that code is completed, contains relevant and  useful code comments, and executes correctly (i.e., gives expected outputs). For full credit on communication parts of problems, your explanations, analysis, and interpretations are clear   and conceptually correct.

Deadlines and Late Work: Deadlines for Assignments and Lecture Activities will be       communicated in Canvas under the Assignments tab. These deadlines are not strict; if you  need more time to complete something for any reason, let me know via email                         ([email protected]), and I will extend the relevant deadlines for you. Keep in mind that deadlines cannot be extended past the end of the semester.

Independent Work: There are lots of solutions to programming problems online. You are    encouraged to search for and use resources; however, you must (1) provide links to materials   you used to help you solve a problem, and (2) put the material in your own words (through    the use of Markdown cells, code comments, creating your own examples, etc.). Academic         misconduct will result in a 0% for the assignment, and you may be reported to the department chair for further administrative action.

Grade Dissemination: The course grades at the end of the semester are determined by the interval of percentages shown below.

Course Grade

A

[92, 100]

A-

[90, 92)

B+

[88, 90)

B

[82, 88)

B-

[80, 82)

C+

[78, 80)

C

[72, 78)

C-

[70, 72)

D+

[69, 70)

D

[60, 69)

D -

[59.99, 60)

F

< 59.99