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
Why programming?
Creation:
Computing is part of God’s world
reveals wisdom and ingenuity on how God made things work (see Isaiah 28:23-29)
is enabling science today (study of God’s world)
The process of breaking down a problem into precise steps can be a form of developing intellectual virtue
Through automation, it can enable human flourishing
There is joy in the process (creative, rewarding, fun)
Useful for solving problems in other disciplines
Fall:
It is being centralized into few powerful actors, harming cultural diversity and freedom
It is alienating people from God’s good created order
It is being misused for Mammon
Constantly idolized
Redemption:
We’re called to follow Jesus in showing God’s glory through our cultural activity, which includes computing. So we must practice virtue in how we imagine, design, regulate and use computing.
How?
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:
Program a computer (using Python) to solve simple to intermediate problems.
Break down a problem into parts small enough to be programmed.
Analyze and debug a program to find the syntax and logic errors in it.
Build abstractions to model a problem.
Explore some ways that faith informs our work in computer technology.
Detailed Objectives
Terminology and Concepts: Students will be able to define terms and concepts including (organized by unit)
Calvin offers a tutoring service to help you study for this course. Why participate in Study Sessions?
4 hours of tutoring per week
A nice place to do homework and ask questions
An entire room of people working through similar challenges
A chance to make friends and connect with study partners
You should regularly attend the Study Sessions for this course early in the semester to avoid falling behind.
Where: Science Building Lab 337
When: Monday and Thursday, 7-9pm, starting September 8, 2025
How: Advocate for yourself: ask clear questions, ask follow-up questions if needed, and remember that the tutors aren’t there to give you the answers, but to help you learn how to find them!
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:
ZyBooks and other Texts
ZyBooks. We will be using an online text called Programming in Python 3 with ZyLabs.
The text will cost $89 and can be accessed by clicking any Reading link in Moodle. You will be prompted to pay for the text at that time.
If you are unable to pay right away, you can request a deferral by following these instructions. Email the instructor if you need further assistance.
You’ll also see that ZyBooks provides reading, lab and homework assignments matching those specified in the unit preparation pages on Moodle (find these under the “Assignments” tab on the far bottom right of our course textbook page). Unfortunately you are not able to access the ZyBooks interactive text after the course is over, but you can purchase a short-term extension, or you can print a PDF version of each chapter as a (non-interactive) reference.
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 computers in the CS labs (SB 354 and 337) 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. To install them on your own computer:
Save this requirements.txt file to your computer (right-click the link and select Save Link)
In Thonny, select “Manage Packages” from the Tools menu.
Find the “Install from requirements file” section of the text on the right.
Click the link marked “Click here to locate requirements.txt file and install the packages specified in it.”
Select the 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).
Before class on Monday, do the preparation assignments for the week. Details are given on Moodle, but will typically include:
Reading assigned sections of the text
Completing the associated participation exercises.
(on some weeks) a perspectival reading response statement, posted in a discussion forum
In class on Monday we will do a POGIL exercise. Please bring your laptop if you have one.
Homework is due on Tuesdays. Thees alternate between technical homework and a perspectives forum post.
Before lab on Thursday, attempt the “A” lab exercise, which is intended as preparation. We will typically work on this together during the Wednesday class.
During lab, complete the remaining lab exercises with a pair programming partner.
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.
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:
Socrative quizzes are intended to be formative assessments, helping you to learn the material. Frequent low-stakes quizzes are shown to improve academic performance. They will be graded on correctness, but we will review them together in class and you will have the opportunity to correct your answers.
Labs will be done in pairs. They will be graded on correctness and effective collaboration.
Final projects are presented at a showcase, which occurs at our final exam time (see the University final exam schedule, which for Fall 2025 is Tuesday Dec. 16 at 6:30 p.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.
Perspectives Project Rubric
Perspectives projects should:
Describe some issue relevant to computing as discussed in the course
Identify two or more specific Reformed Christian principles that could apply, and discuss how
Engage substantively with a peer who has a different perspective than yours on this issue
Propose a constructive “new creation” vision
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.:
You may use a smartphone or laptop to complete retrieval quizzes and polls during designated times.
You may use laptops to take notes or attempt programming tasks as directed.
Beyond those uses, technology use in class should be limited to critical messages only.
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.
If feasible, you will work in pairs during lab exercises and many in-class exercises.
When you work in a pair, one of the partners should submit one copy of your work with both of your names and email addresses on it. It’s wise for both partners to have copies of your shared solution.
Note that Outlook blocks .py attachments. Options for workarounds include:
use OneDrive
rename to .txt
make a .zip file (“compressed folder”)
The project should be completed individually.
You may obtain help from other people, but:
Every character entered (beyond any template we provided) should be typed by you, and
For integrity, humility, and gratitude, you should acknowledge any help you receive by name in your submission.
Feel free to discuss ideas with us or with your classmates, but don’t copy code. The assignments in this class are designed so that it is rarely a good idea to reuse code you find on the Internet. An exception is code that we provide.
Generative AI can be very helpful for learning, but it can also take away from the productive struggle that scientists have found is required for the biochemical changes in your brain that constitute learning. What goes into your mind smoothly often slips out just as smoothly. It can also shortcut the collaboration that we want to foster. Here are a few guidelines for how to use AI thoughtfully in this class:
Use AI granularly: ask for one step, not a complete solution.
Use AI reflectively: ask for feedback on what you’ve done so far, not to make things for you or “clean up” things for you.
Use AI studiously: ask for questions to test your understanding.
Use AI skeptically: even when it’s not wrong, it may be misguided or overcomplicated. Go to the textbook or official documentation first.
Use AI communally: when you work together, rather than everyone chatting with their own bot, have a shared conversation positioned where everyone can see. Discuss what the bot gives you.
We provide several tools to encourage thoughtful use of AI, such as Codehelp (on Moodle) and the Thoughtful editor and add-in.
Now the policies:
All code and prose you submit in this class must be typed by you. Even if you’re just doing visual copy-paste (like from some documentation), it’s helpful practice. (You’ll use autocomplete in later classes.)
No AI on quizzes/tests, whether in-class or at-home.
No AI-generated code in projects.
Asking for feedback, coaching, or debugging help is fine (but think for at least a minute on your own first).
In some limited cases it might be helpful to have an AI-generated “starting point” that you build on. But you must have explicit permission from the professor to do this.
We highly discourage AI-generated code for preparation, lab, and homework assignments. We won’t police AI-generated code on these assignments, but your performance on quizzes/tests will almost certainly show it.
For forum posts in this class:
you may use AI to improve your thinking by:
critique your arguments
push your thinking in a new direction
help you identify (but not fix) editing errors
you may not use AI to replace your thinking, such as:
providing your initial ideas
identifying real-world examples that are intended to be drawn from your personal experience
generating prose (unless your outline was highly detailed–in which case, just submit your outline)
fixing your editing errors for you
Note also that the course staff will be using AI to improve the quality and speed of your learning:
Feedback on lab and homework assignments will be generated by automated systems under the supervision of the Feedback Coordinator and the instructor. For example, the Feedback Coordinator will regularly review the feedback that is being given for accuracy and pedagogical appropriateness, and adjust the tooling accordingly. Although most of this tooling uses traditional code (like you might write in this class) to generate that feedback, we are exploring the use of privacy-respecting LLMs to expand the range of feedback we can offer. The privacy of your student data will be carefully protected, and no grading decisions will be made by LLMs.
Improvement of course materials. For example, I frequently ask LLMs to anticipate confusing aspects of assignment instructions. I also use LLMs for strategic planning and research, e.g., searching for examples to use in class.
If you would like to opt-out of LLM-powered feedback on your work, please let the instructor know as soon as possible.
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.