Open my eyes, that I may behold wondrous things out of your law. Psalm 119.18
Welcome to CS 106, Introduction to Scientific Computing and Modeling. This course introduces students to computer programming, emphasizing how computing can be used as a tool for scientific inquiry. Testimonials from prior students
We will be using the Python programming language, which is one of the most popular programming languages because it is both beginner-friendly and very powerful.
The material is considered in the context of the reformed Christian perspective.
An introduction to computing as a tool for science, emphasizing programming as a methodology for problem solving, quantitative data analysis, and simulation in science and mathematics. This includes in silico modeling of natural phenomena, precise specification of a problem, design of its algorithmic solution, testing, debugging, and maintaining software, using scripting to increase scientific productivity, and the use of existing scientific software libraries. A secondary emphasis is the discussion of breadth topics, including historical, theoretical, ethical and biblical perspectives on computing as a discipline. This course provides an alternative to CS 108, providing an introduction to computing focusing on scientific examples and applications.
Students should enroll simultaneously in CS-106L, the lab for this course.
Students successfully completing this course will demonstrate that they can:
for, while, break, continueself (called this in some languages)int) and rational (e.g., float)if, else, elif)for, while)matplotlib)pandas)numpy)| Week | Starts | Topic | Activities Due | Notes |
|---|---|---|---|---|
| 1 | Sep 2 | Intro | Labor Day (No Monday) | |
| 2 | Sep 9 | Variables | Perspectives Forum 1, Homework 1 | |
| 3 | Sep 16 | Types | Homework 2 | |
| 4 | Sep 23 | Branching | Perspectives Forum 2 | |
| 5 | Sep 30 | Loops | Homework 3 | |
| 6 | Oct 7 | Functions | Perspectives 3 | |
| 7 | Oct 14 | Practice | Lab 7 Thursday, but Fall Break starts Friday | |
| 8 | Oct 21 | Practice | Fall Break Mon, Advising Tue/Wed; lab 7B Thurs, class Fri | |
| 9 | Oct 28 | Object-Oriented Programming (Classes) | ||
| 10 | Nov 4 | Plotting | ||
| 11 | Nov 11 | Tabular | ||
| 12 | Nov 18 | Nested | ||
| 13 | Nov 25 | Bonus | Thanksgiving break starts Wed | |
| 14 | Dec 2 | Bonus | ||
| 15 | Dec 9 | Inheritance | Project Meetings | Study day on Friday (no class) |
Calvin offers a tutoring service to help you study for this course. Why participate in Study Sessions?
You should regularly attend the Study Sessions for this course early in the semester to avoid falling behind.
Study Sessions are drop-in, so you can come for 10 minutes or 2 hours, depending on what you need on any given day. If you find you need additional support after having attended at least 2 Study Sessions, you can request an extra hour of 1:1 Tutoring for this class. You can sign up to meet with a tutor, and you will then be provided one hour each week for the remainder of the semester in addition to the Study Sessions. Any questions or information about these (free) Support Services may be directed to Emily Bosscher (emily.bosscher@calvin.edu), or check out the Center for Student Success website.
Moodle is the home page for all class materials. It will include links as necessary to other materials including:
We will be using the Thonny development environment, which includes Python. You should install it on your own computer by going to their website, clicking your operating system (Windows, Mac, or Linux), and following the instructions there.
Windows users, make sure you install a 64-bit version of Thonny (typically it’s the first download on the list).
Mac users may be prompted to allow Thonny to access certain folders, like Downloads, Desktop, and Documents. Be sure to allow this access.
The CS labs (SB 354 and 372) already have Thonny installed. You may also use the Coder service provided by the Computer Science department.
The second half of the course will use some additional Python software packages. These should be already installed in the lab, but to install them on your own computer:
requirements.txt file to your computer (right-click the link and select Save Link)requirements.txt file that you downloaded. (It may be in your Downloads folder.)Windows users: if you get an error, make sure you have a Thonny with 64-bit Python. (You can see this in Help->About). If not, see above.
Mac users: if you’re asked to install additional components for Xcode. You may safely choose Cancel, but you may also accept this process especially if you might want to do any more development work on your computer. This process may take some time and disk space.
To succeed, you’ll need to complete the following assignments each week (details on Moodle).
Unless otherwise stated, assignments must be submitted by 11:59PM on the due date. The Moodle calendar will list these due dates/times.
You will generally find the course staff responsive during the week but less so on the weekend, particularly Sunday, as we try to observe a Sabbath rest in our own schedules. The course schedule is designed to enable you to rest also.
| Weight | Component | Details |
|---|---|---|
| 5% | Preparation | Weekly reading and other assignments will help you prepare for each week of class. |
| 5% | Participation | Retrieval quizzes and reflection assignments will help you remember what you’ve learned. |
| 10% | Lab exercises (weekly) | These give you practice with programming in a highly structured environment where a lot of help is available. |
| 10% | Homework (every other week) | These give you practice in solving open-ended problems with less structure and help. |
| 15% | Perspectives (Forums or Project) | Reflect on various broader perspectives on technology, especially a Reformed Christian perspective |
| 30% | Quizzes (weekly) | |
| 25% | Final coding project | In lieu of a written final exam, this project is a fun way to demonstrate what you’ve learned! Grade includes milestones and showcase presentation. |
Some details:
Final projects are presented at a showcase, which occurs at our final exam time (see the University final exam schedule, which for Fall 2024 is Thursday Dec. 19 at 9:00 a.m. Attendance at the final project showcase is mandatory.
Students may choose either to participate in weekly Perspectives forums or to do a perspectival project (such as a poster, artistic expression, essay, etc.). Students interested in the project option should discuss expectations with the instructor by the sixth week of class.
Projects should show development through the course of the semester, e.g., by incorporating or reacting to the topics that the class is discussing.
One of the concepts introduced at the beginning of this course is that technology is not neutral. Consequently, technology in the classroom changes things. Studies suggest that internet-enabled electronic devices in the classroom reduces student performance, even for those who don’t use devices themselves, because of distraction.
In light of those findings, many instructors opt to ban the use of electronic devices in the classroom. Instead, we will practice using it within limits.:
If you notice someone else using an electronic device in a way that could distract you or other students, please let them know. If it continues, please let me know. I will only intervene if two or more students reach out to me, so please don’t hesitate to do so.
.py attachments. Options for workarounds include:
.txt.zip file (“compressed folder”)Occasionally there are special circumstances that require that course policies be adjusted for a particular student. In such cases, it is the responsibility of the student to inform us of the situation as soon as possible, so that the appropriate arrangements can be made. This includes, but is not limited to, students with documented disabilities.
Calvin University is committed to providing access to all students. If you need additional accommodations to succeed in this class, please contact Disability Services in the Center for Student Success (disabilityservices@calvin.edu) as soon as possible to explore what arrangements can be made. The three of us (student, instructor, and Disability Services) will work together to come up with an appropriate solution.
We will give a grade of Incomplete (I) only in unusual circumstances that have been confirmed by the Student Life office.
A wide range of things can interfere with your learning: trouble concentrating, stress/anxiety, relationship troubles, family situations, food or housing insecurity, substance use, and many more. You are encouraged to care well for yourself by keeping a consistent sleep schedule, eating well, avoiding drugs and alcohol, exercising, and taking time to relax and connect with friends and family.
Also, learning how to ask for help is an important part of the college experience. Many people on campus are eager to support you. The Center for Counseling and Wellness sees one out of five students each year and can connect you with a variety of mental health resources on and off campus. You can also reach out to the instructor, another faculty/staff, a friend, or a family member you trust for help getting connected to support. You are not alone, and help is available!
Code re-use can be a valuable practice in computing, but mindlessly copying code is not an effective way to learn programming and reusing code or algorithms without attribution (even from AI systems like ChatGPT) is plagiarism. If you’ve copied code with attribution, we’ll grade you on the code you wrote, not on the code you copied. If we detect copying without attribution, i.e., plagiarism, we’ll be forced to give you a failing grade for the assignment and perhaps for the course. Additionally, we will report you to the office of Judicial Affairs, which may result in the incident being part of your student record.
A key academic virtue is honesty, and this also applies to the lectures, textbook, slides, handouts, audio/visual materials, or any other content produced by a faculty instructor. While students may reproduce course content to enhance their own learning, they may not share that content with audiences outside the course without the express permission of their faculty instructor. In particular, students may not share quiz, test, or exam content with other class sections. However, students are encouraged to share their final projects.
Calvin’s General Statement on Academic Integrity: The student-faculty relationship is based on trust and mutual respect, which can be seriously undermined by the suspicion or reality of academic dishonesty. Academic Dishonesty includes, but is not limited to, plagiarism (students plagiarize when they do not credit the sources of their writing - the words, information, ideas, or opinions of others), improper group work, reuse of a paper from another course and/or cheating on a test. Students are encouraged to speak to their faculty member with specific questions related to academic dishonesty. For further clarification or information, please visit https://calvin.edu/directory/policies/academic-integrity-policy
I intend for this course to serve students of all backgrounds, whether they are new to programming or experienced. Please join me in creating a class that respects everyone in it.
This course was previously offered by Dr. Victor Norman, and many of the materials were originally developed by him.
This course also includes material from prior versions of CS 108, co-taught by Prof Arnold and Prof Vander Linden.