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, we will have spare machines to use during class.

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.

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 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. This applies even if the assignment is 1 minute late. 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.

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 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 either via Zoom or 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.

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. 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 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 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. Additionally, the use of Chegg or other direct solution-providing services for any CMSE 201 work is strictly prohibited.

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.

Instructor contact information#

Instructor contact information can be found here.

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

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.