 # CMSE 201: Computational Modeling and Data Analysis I

## Course Description

A useful definition of computational science is “the use of computers to analyze and
solve scientific problems.” Over the course of this semester, we will explore various
aspects of computational science and will acquire a variety of practical, fundamental
computational skills. In addition, we will explore application-driven modeling of various
systems, with applications to the physical, life, and social sciences, and also to
engineering and mathematics. While we will learn some computer programming over
this semester, the goal is utilitarian – this is a course in applied computing, rather than a
course intended for beginning computer science majors!

By the end of this course, you will be able to:

1. Gain insight into physical, biological, and social systems through the use of
    computational algorithms and tools.
2. Write programs to solve common problems in a variety of disciplines.
3. Identify salient features of a system that can be codified into a model.
4. Manipulate, analyze, and visualize datasets and use this data to evaluate
    models.
5. Have an understanding of basic numerical methods (e.g., numerical integration,
    differential equations) and be able to use them to solve problems.
6. Be able to take results from a scientific computing problem and present it both
    verbally and in writing.
7. Develop the ability to recognize and articulate the context of data and apply 
    that knowledge to generating and presenting data visualizations.  

We will work toward the goals expressed above throughout this course using a range of
activities – primarily by writing software both individually and in small groups, but also
through discussion, presentations, and other types of exercises.

## Topics covered

The primary topics covered in this course include:

* Creation of models (making mathematical representations of systems).
* The basics of functional programming in Python (i.e., variables and types,
functions, simple data structures, strings, lists, tuples)
* Plotting and data visualization
* File and dataset manipulation
* Basic numerical techniques, possibly including statistics, linear regression,
difference equations, agent-based modeling, numerical integration

Please note that creating models to describe and understand systems (whether
they are in the physical, life, or social sciences, or in engineering) is the driving
principle of this course – everything else we teach you is in service to this goal!

## Required reading materials

This class has no required book or course pack. Course content will be distributed via
JupyterBook and can be accessed by the following link: https://cmse.msu.edu/cmse201. From
time to time we will direct you toward outside online resources, but the main materials
will be video lectures, instructor course notes, and software.

## Required materials for class

In-class programming assignments are a critical part of the learning process in this
course. To that end, you are expected to bring your laptop and its power cord to
every class. If you do not have a laptop, or if your laptop won’t run the software that we
need for class, please reach out to your instructor **ASAP**.

<!-- <If you are unable to attend a given lecture you will still be able to conduct group work>
remotely. Under these circumstances you would need:

* The ability to run the Zoom video conferencing software, which you can
download here: https://msu.zoom.us/support/download

* A computer with a reliable internet connection and a functional webcam,
microphone and speakers. -->

You are expected to join the Microsoft Teams for CMSE 201 (see the front page of the course
website for the appropriate link for this semester). Details for doing so are outlined in
later sections.

Details regarding the software needed for this course are provided in the [Software
Setup Guide](SoftwareSetupGuide.md).

## Course activities

**Class participation and format:**  This class is held in person in room 3201 of the STEM
building. If you are unable to attend class in person for a given class period due to COVID
or other concerns, you are expected to work with your professor to determine if remote or asynchronous participation
is possible. In either case, active class participation (led both by the instructor and by students)
is critical to the success of this course. As such, you are expected to attend class every week,
bring the required materials and to actively participate in the in-class discussion.

**Pre-class assignments:**  We will assign short assignments that are due prior to class.
The purpose of these assignments is to introduce new material and give you some practice
with it so that we can focus on experimentation and implementation in class. These assignments
will typically consist of one or more short videos or reading assignments and related questions
or problems. **These assignments will be submitted through the course’s Desire2Learn (D2L)
page and are due by 11:59 p.m. the night before class** (unless less otherwise conveyed to your by
your section instructor). 

**In-class programming assignments:**  Class sessions will be held twice a week, and will be broken up
into presentations, discussions, and programming activities that will allow you to immediately implement
(and get instant feedback on) what you have just learned. **You are expected to make an earnest effort
to complete the in-class assignments.**

**Homework:**  You will have periodic programming assignments (due roughly every 2-3 weeks) that
will provide a more in-depth exploration of the materials covered in class. These will be pursued
individually and will be turned in by the given deadline via D2L. In general, homework assignments
will cover roughly 2-3 week’s worth of material. Since these assignments are only due every
few weeks, you can expect that they will require a few week’s worth of out-of-class effort, so you
are encouraged to start your assignments as early as possible.

Homework assignments that are submitted late will be accepted **for up to two days beyond the due date**
(i.e., 48 hours past the original deadline). **If the assignment is submitted within 24 hours of the
original deadline, there is a 10% penalty.** Similarly, **if it is submitted in the 24-48 hour window, a 20% deduction is applied.** Again, **after
the 48th hour, the assignment will no longer be accepted.** Students may request an extension for homework assignments. If approved by the section lead, the late penalty may be waived.

**Exams:** Rather than limiting the exams to one or two high-stakes assessments, this class will have
four quizzes over the course of the semester to provide multiple opportunities for you to demonstrate
your mastery of the course content. The quizzes will involve active coding and will be designed to test
the computational modeling and data science skills that you will learn in the course. These quizzes will
take place roughly every few weeks starting a few weeks into the semester. If you have to miss a quiz for
any reason, do you best to notify your instructor _before_ you miss the quiz to determine your options
for making up the quiz. Making up missed quizzes will require a clear justification or extenuating
circumstances. There will be no traditional final exam for this course, but semester project presentations and the final quiz
may occur during the scheduled final exam time.

**Semester Projects:** This class will have project(s) that will involve synthesizing the computational
modeling, data analysis, and data visualization techniques that you learned over the course of the term
and presenting it (them) in writing and in an oral presentation. Project proposals will be due at roughly
the halfway point of the course. Project presentations will take place during the last class period(s) of
the course and/or during the scheduled final exam time. More details on these projects will be available
near the middle of the semester.

## Course meeting times and location

**All sections will be held in the STEM Teaching and Learning Facility, Rm. 3201**

Instructor details and contact information, along with section meeting times, are available on the front
page of this website.

## Other important information

**COVID-19 policy:** MSU does not currently have a mask mandate in place, but any student or instructor
should feel welcome to wear a mask. You should expect to follow MSU policies outlined on the
[Together-We-Will website](https://msu.edu/together-we-will/). 

If you have to miss class due to illness or self-isolation (as per the CDC recommended
guidelines), your instructor will work to provide the necessary accommodations to
ensure that your performance in class is not significantly impacted. However, should
you find that your overall success in your courses is significantly impacted by any
illness, please refer to the University policy on medical leave and withdrawal.

**If you are testing positive for COVID or have symptoms of COVID**, please isolate and do not attend
class in person. **Absences due to COVID will not count towards the two absences allowed** class, but
you are still repsonsible for the content covered. Please **contact your section instructor** to discuss
how to make up missed work and/or adjust deadlines.

**Course Website and Calendar:** Content will be distributed via a JupyterBook found at
this location: https://cmse.msu.edu/cmse201. Accompanying
course information, including the official course calendar, can be found on this website as well.
This course also uses a Desire2Learn (D2L) page for course organization, which can be
found at [http://d2l.msu.edu.](http://d2l.msu.edu.) All assignments will be submitted via D2L. Consult the
class website for instructions.

**Email:** At times, we will send out important course information via email. This email is
sent to your MSU email address (the one that ends in “@msu.edu”). You are
responsible for all information sent out to your University email account, and for
checking this account on a regular (daily) basis.

**Class discussion:** We will be using Microsoft Teams (http://teams.microsoft.com) as our means of
communicating about course content as the semester progresses. We believe that this
will provide an excellent avenue to have discussions not only with course instructors,
TAs, and LAs, but also between you and your fellow classmates. Details for joining the
["CMSE Courses" Teams space](https://teams.microsoft.com/l/team/19%3aKOGIdfqfrsiaGbIp0BbkcdRPLHLqBM15f2926dG_fbs1%40thread.tacv2/conversations?groupId=d0d12e1d-88f3-4b05-8b46-460666ebfbd8&tenantId=22177130-642f-41d9-9211-74237ad5687d) 
can be found on the front page of this website.

Once you've joined the CMSE Courses Teams, make sure to **add yourself to the appropriate "help"
and section-specific channels**. Again, details for these channel names can be found on the front
page of this website. To add yourself to these channels, click on the "Channels" header and search
for the appropriate channel.

The "help" channel will be the place to go for any questions about assignments in the
course or issues you're having with your computer or Python. We encourage you to help
out other classmates when you can! The section-specific channel will be used by your
instructor for important messages relevant only to your section of the course.

In order to ensure that Teams is an appropriately used tool that does not become overly
time-consuming for the course instructors, TAs, or LAs, we have a list of rules for how
we expect you to use Teams. They are:

1. Before you ask a question, be sure to check the main help channel and other section
    channels to see if the question has already been answered.
2. The Teams group is primarily for you, the students, so help each other.
3. The TAs and LAs will monitor the channels, but will defer to the students to work
    through things. They will only enter a conversation if students are going down the
    wrong path and/or there are too few other students involved. However, you
    should not expect that the TAs or LAs will always be available. The TAs and LAs
    will spend a limited amount of time “logged in” to Teams and we ask that you be
    respectful of their time.
4. Teams is meant to be used to help you when you are stuck with a minor issue. If
    you are having major issues or trouble understanding the concept, go to office
    hours or help room hours as they are meant for more in-depth discussions of course content.
5. Course instructors will rarely check Teams, only to examine progress. While they
    may offer help, do not rely on it. Instructors will not respond to the same student
    twice within a 30 minute time interval.
6. Only in rare cases should you contact an instructor through a private channel.
    But, if you are struggling, feel free to use this option.
7. Do not post your solutions to out-of-class assignments directly into Teams unless
    prompted by an instructor.
8. Be courteous to everyone on Teams. Students who are being rude or who are
    excessively posting might be banned from posting on the course Teams channel.

**Class attendance:** This class is heavily based on material presented and worked on in
class, and it is critical that you attend and participate fully every week! Therefore, class
attendance is absolutely required. However, since life can be unpredictable and you may have
competing priorities that vary day-to-day, each student will be allowed two unexcused absences
without a negative impact to their grade. **Any further unexcused absences will result in zero
points for the day, which includes the in-class programming assignment points.** *Arriving more than 10 minutes late
or leaving early without prior arrangement with the instructor of your session counts as an
unexcused absence.* Note that if you have a legitimate reason to miss class (such as job, graduate
school, or medical school interviews) you must arrange this ahead of time to be excused from class.
Three unexcused absences will result in the reduction of your grade by one step (e.g., from
4.0 to 3.5), with additional absences reducing your grade further at the discretion of the
course instructor.

**Inclusive classroom behavior:** Respectful and responsible behavior is expected at all
times, which includes not interrupting other students, turning your cell phone off,
refraining from non-course-related use of electronic devices, and not using offensive or
demeaning language in our discussions. Flagrant or repeated violations of this
expectation may result in ejection from the classroom, grade-related penalties, and/or
involvement of the university Ombudsperson. In particular, behaviors that could be
considered discriminatory or harassing, or unwanted sexual attention, will not be
tolerated and will be immediately reported to the appropriate MSU office (which may
include the MSU Police Department).

In addition, MSU welcomes a full spectrum of experiences, viewpoints, and intellectual
approaches because they enrich the conversation, even as they challenge us to think
differently and grow. However, we believe that expressions and actions that demean
individuals or groups comprise the environment for intellectual growth and undermine
the social fabric on which the community is based. These demeaning behaviors are not
welcome in this classroom.

**Academic Honesty:** Intellectual integrity is the foundation of the scientific enterprise.
In all instances, you must do your own work and give proper credit to all sources that
you use in your submitted work and oral presentations – any instance of submitting another
person’s work, ideas, or wording as your own counts as plagiarism. This includes failing
to cite any direct quotations in your written work, during class discuss, or oral
presentation. The MSU College of Natural Science adheres to the policies of academic
honesty as specified in the General Student Regulations 1.0, Protection of Scholarship
and Grades, and in the all-University statement on Integrity of Scholarship and Grades,
which are included in Spartan Life: Student Handbook and Resource Guide. Students
who plagiarize will receive a 0.0 in the course. In addition, University policy requires that
any cheating offense, regardless of the magnitude of the infraction or punishment decided
upon by the professor, be reported immediately to the dean of the student's
college.

It is important to note that plagiarism in the context of this course includes, but is
**not limited to, directly copying another student’s solutions to assignments that
are expected to be completed individually (pre-class assignments, homework
problems, and exams); copying materials from online sources, textbooks, or
other reference materials without citing those references in your source code or
documentation, or having somebody else do your individual assignments (pre-
class assignments, homework problems, and exams) on your behalf.** Any work
that is done in collaboration with other students should state this explicitly, and their
names as well as yours should be listed clearly. When collaborating with other students,
you should still be coding/writing your own solutions to the assignments and should limit
your collaboration to conceptual discussions about how one might go about solving the
problems, not sharing exact solutions.

Furthermore, while we do not prohibit the use of generative AI tools (chatGPT, DALL-E, Co-pilot, etc.) in this course, 
**you are expected to use generative AI as a resource, not to produce answers in their entirety.** You are asked not to use any generative AI tools until Day 7 so that we can provide you with appropriate guidance for how to use generative AI tools to support, rather than circumvent, your learning. If you use generative AI tools for any classwork, you a **required** to cite your usage, including any prompts/outputs. 
If you use used code produced by generative AI tools, you are responsible for understanding exactly how and why it works to solve the problem. 
Failure to demonstrate this understanding may result in a grade reduction.

As the use of generative AI tools in coursework is a rapidly evolving area, we reserve the right to adjust this policy throughout the semester. 
Any changes will be announced to students.

More broadly, we ask that students adhere to the Spartan Code of Honor academic
pledge, as written by the Associated Students of Michigan State University (ASMSU):

“As a Spartan, I will strive to uphold values of the highest ethical standard. I will practice
honesty in my work, foster honesty in my peers, and take pride in knowing that honor is
worth more than grades. I will carry these values beyond my time as a student at
Michigan State University, continuing the endeavor to build personal integrity in all that I
do.”

**Accommodations:** If you have a university-documented learning difficulty or require
other accommodations, please provide your instructor with your VISA as soon as possible and
speak with them about how they can assist you in your learning. If you do not have a VISA
but have been documented with a learning difficulty or other problems for which you
may still require accommodation, please contact MSU’s Resource Center for People
with Disabilities (355-9642) in order to acquire current documentation.

**Emergency Situations:** In the event of an emergency, when in doubt, please dial 911. If there is an active shooter situation, be prepared to [follow these recommendations](https://comartsci.msu.edu/sites/default/files/documents/resources/safety-guidelines-for-active-shooter1.pdf) provided by MSU Police for how to react given the scenario at hand. In STEM 3201, anyone can also press the Green emergency button which will lock down the classroom and contact emergency services. You should also follow any alerts or notifications you receive from the MSU alert system. 


## Instructor contact information

Instructor contact information can be found [here](../intro.html#instructor-information).

## Instructor office hours and locations

Office hours will start after the first week of classes. The times and locations for office
hours can be found [here](https://cmse.msu.edu/cmse201-office-hours/)

All sections are synchronized and teach the same topics at roughly the same time - as a
result, you can go to any office hours that fit into your schedule. Any course personnel
can help you with questions pertaining to the course material, including in-class and
homework assignments. Technical questions, including issues with Python and/or
Jupyter, should be first directed to your professor, but specific issues with JupyterHub
(jupyterhub.egr.msu.edu) can be sent to support@egr.msu.edu. If you have issues
relating to class administration, including missed classes, illness, VISA issues, or
school-sponsored activities please contact the instructor for your section.

## Grading information

There are a variety of course activities, with percentage of the total grade listed. More
detailed descriptions of each activity can be found elsewhere in the syllabus.

| Component    | Percentage of total grade |
| ------------ | ------------------------- |
| Participation, attendance, in-class assignments | 15 |
| Pre-class assignments | 15 |
| Quizzes | 20 |
| Homework assignments | 25 |
| Semester projects | 25 |
| **Total** | 100 |


### Grading scale

At the end of the semester, your grade will be calculated using the following scale:

- 4.0 ≥ 90%
- 3.5 ≥ 85%
- 3.0 ≥ 80%
- 2.5 ≥ 75%
- 2.0 ≥ 70%
- 1.5 ≥ 65%
- 1.0 ≥ 60%
- 0.0 < 60%

Note: grades will not be curved - your grade is based on your own effort and progress,
not on competition with your classmates.

**Honors option:** You can complete an honors option for this course. The honors option
requires that you complete an additional project on a topic that is substantively different
than the project you are already required to complete. You must receive an honors option project
grade of 80% or higher and must achieve an overall grade of 3.0 or higher in the course.
If you are interested in pursuing the honors option you should meet with your course instructor
within the first two weeks of the course to indicate your interest and develop a project plan.
**Project proposals and the Honors Option Agreement Form must be submitted and approved before
the middle of the semester.** 
