Syllabus

Course Description

An introduction to computing as a problem-solving discipline. A primary emphasis is on programming as a methodology for problem solving, including: the precise specification of a problem, the design of its solution, the encoding of that solution, and the testing, debugging, and maintenance of programs.

A secondary emphasis covers topics from the breadth of computing including historical, theoretical, ethical, and biblical perspectives on computing as a discipline.

CS-104 covers the first half of an introductory programming sequence: variables and expressions, data types, conditional logic, loops, functions, and an introduction to modules, dependencies, and virtual environments. This course includes weekly lab exercises worked in the course’s lab sessions.

Why Programming?

Creation:

Fall:

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?

Using the Python programming language, one of the most popular programming languages because it is both beginner-friendly and very powerful.

Material is presented in the context of a reformed Christian perspective.

Learning Outcomes

Students successfully completing this course will demonstrate the ability to:

Topics Schedule

Week Topic
1 Introduction
2 Operators
3 Data Types
4 Conditionals
5 Loops
6 Functions
7 Modules

Instructor

Fernando Santos — fernando.santos at calvin.edu

Course staff are responsive during the week, and less available on weekends (particularly Sunday) to observe Sabbath rest — the course schedule is designed to enable student rest as well.

Materials

Moodle is the home page for all class materials, with links to additional resources. See the Resources page on this site for development-environment setup (Coder, Python, VS Code) and practice material.

Textbook: Programming in Python 3 with ZyLabs (zyBooks)

Additional readings:

Development environment: Thonny (installed on lab computers) or Calvin’s Coder service, which requires no local installation. See Resources for details.

Grading

Weight Component Details
5% Preparation Reading Weekly reading and participation exercises that prepare you for each week
20% Lab Activities Practice programming in a structured environment with help available and in pairs
15% Homework (3) Practice solving open-ended problems with less structure
10% Forum Activities (3) In-class, every other week, reflection on broader perspectives on programming
50% Quizzes (3) In-class, every other week, for assessing your current learning

Unless otherwise stated, assignments are due by 11:59pm on their due date (see the Moodle calendar for exact dates/times).

Late Work

Study Sessions

Study sessions are a great way to stay on track:

You should regularly attend study sessions early in the semester to avoid falling behind.

dvocate 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. Attendance is drop-in.

Contact: Center for Student Success

Policies

Technology in Class

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 show that internet-enabled electronic devices in the classroom reduce student performance, even for those who don’t use devices themselves, because of distraction.

Rather than banning devices, this course practices using technology within limits:

Protocol: if you notice someone using an electronic device in a potentially distracting way, let them know. If it continues, tell the instructor. The instructor will only intervene once two or more students have reached out, so don’t hesitate to report it.

Collaboration

Lab exercises and in-class exercises: work in pairs when feasible.

Homework: feel free to discuss ideas with staff or classmates, but don’t copy code. Assignments rarely benefit from reusing code found online.

AI Use

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.

Guidelines for Thoughtful AI Use

  1. Use AI granularly: ask for one step, not a complete solution
  2. Use AI reflectively: ask for feedback on what you’ve done so far, not to make or clean up things for you
  3. Use AI studiously: ask for questions that test your understanding
  4. Use AI skeptically: even when not wrong, it may be misguided or overcomplicated — go to the textbook or official documentation first
  5. Use AI communally: when working together, keep the conversation shared and visible; discuss what the bot provides
  6. 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 documentation), it’s helpful practice.
  7. No AI on quizzes/tests (in-class or at-home).
  8. Highly discourage AI-generated code for preparation, lab, and homework assignments. Course staff won’t police these, but relying on it will show up in your quiz/test performance.
  9. Asking AI for feedback, coaching, or debugging help is acceptable — think for at least a minute yourself first.

Why you shouldn’t use AI to write text? Some arguments here: https://erichgrunewald.substack.com/p/why-you-should-almost-never-use-ai

Special Circumstances

Occasionally there are special circumstances that require course policies to be adjusted for a particular student. In such cases, it is the responsibility of the student to inform the instructor of the situation as soon as possible, so that 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.

Incomplete grades are given only in unusual circumstances confirmed by the Student Life office.

Wellness

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 reach out to the instructor, another faculty/staff member, a friend, or a trusted family member for help getting connected to support. You are not alone, and help is available!

Academic Integrity in Computing

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.

With attribution: you’re graded on code you wrote, not copied code.

Without attribution (plagiarism): a failing grade for the assignment and possibly the course; reported to the office of Judicial Affairs; may become part of the 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.

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 calvin.edu/directory/policies/academic-integrity-policy.

Acknowledgments

This course’s materials draw substantially from CS 108, co-taught by Ken Arnold and Fernando Santos — which in turn built on material developed by Dr. Victor Norman and prior versions of CS 108 co-taught with Prof. Kevin Vander Linden.