CMSE 201: Introduction to Computational Science
What’s this all about
Welcome! In this course we’ll learn how to harness computers to help us understand the world. By the end, you’ll be able to:
- Understand how small economic details have huge consequences for who gets rich (Econophysics)
- Explain just how bad the Flint water crisis is, and whether things are getting better or worse for Flint residents
- Train a computer to predict cancer, recognize handwriting, and filter junk email
- Create state-of-the art data visualizations
- Preside over the savage machinery of nature’s predator-prey dynamic, where you control WHO LIVES AND WHO DIES
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:
Gain insight into physical, biological, and social systems through the use of computational algorithms and tools.
Write programs to solve common problems in a variety of disciplines.
Identify salient features of a system that can be codified into a model.
Manipulate, analyze, and visualize datasets and use this data to evaluate models.
Have an understanding of basic numerical methods (e.g., numerical integration, differential equations, Monte Carlo) and be able to use them to solve problems.
Be able to take results from a scientific computing problem and present it both verbally and in writing.
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.
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, Monte Carlo, 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. From time to time we will direct you toward online resources, but the main materials will be lecture notes and software.
Other required materials
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, power cord, and VGA adapter (to plug into the LCD projector) to class every day. 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.
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 (most importantly, your computer and power cord) and to actively participate in the in-class discussion.
We may 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, and will be due at 11:59 p.m. the night before class via the course’s Desire2Learn page.
In-class Assignments and Activities
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. In-class programming activities will be turned in at the end of the class session via the course’s Desire2Learn page.
- Homework: You will have periodic programming assignments (roughly weekly) that will provide a more in-depth exploration of the materials covered in class. These will be pursued either individually or in pairs, and will be turned in by the given deadline via the course’s Desire2Learn page. In general, homework assignments will be due roughly 3 business days after the material has been discussed in class.
- Semester Projects: This class will have two projects that will involve synthesizing the computational modeling, data analysis, and data visualization techniques that you learned over the course of the term and presenting them in writing and in an oral presentation. In the first project, you will find a publicly-available dataset, come up with several questions that can be answered about that dataset, and use the analysis techniques you have learned to answer those questions and to report on the answer in written form. In the second project, you will find a model used in a subject that is of interest to you, explain what it is used for and how it works, and make connections to what has been done in class. Both parts of the project will be composed of written proposals, code, and a final written or oral presentation. More details will be available near the middle of the semester.
Course Meeting Time and Location
Section 001 (Prof. Xie) will meet on Mondays and Wednesdays from 12:40-2:30 p.m. in 1234 Engineering Building
Section 002 (Prof. Murillo) will meet on Tuesdays and Thursdays from 12:40-2:30 p.m. in 3400 Engineering Bldg
Section 003 (Dr. Danielak) will meet on Mondays and Wednesdays from 3:00-4:50 p.m. in 121 Farrall Agricultural Hall
Other Important Information
Course Website, Calendar, and discussion channel**
This course uses a Desire2Learn page for course organization, which can be found at http://d2l.msu.edu. Accompanying course information, including the official course calendar, can be found at this website. All assignments will be handed in via Desire2Learn. Consult the class website for instructions. We will also have course discussion pages on the course’s Desire2Learn page, which can be used to discuss issues relating to the course and to ask and answer questions.
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. An unexcused absence 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.
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).
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.
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 papers 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 essays, research paper, class debate, or written 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 in-class or homework problems; 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 in-class work or homework on your behalf. Any work that is done in collaboration with other students should state this explicitly, and have their names as well as yours listed clearly.
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.”
If you have a university-documented learning difficulty or require other accommodations, please provide me with your VISA as soon as possible and speak with me about how I 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
Dr. Brian Danielak 1508 Engineering Building firstname.lastname@example.org
There are a variety of course activities, with percentage of total grade listed. More detailed descriptions of each activity can be found elsewhere in the syllabus.
Activity Grade Percentage
Participation and attendance 20
Pre-class assignments: 20
In-class activities 15
Homework assignments 25
Semester projects 20
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.