Welcoming Message

Welcome to CS108! This is the first CS course for those CS students who do not have much background in Computing. Even though you may have learned some programming language before, this course will help you further develop your computational thinking skills. This course is also required/recommended for other non-CS majors. So you will find students from various disciplines and different stages of study.

This course is not about coding; it is about programming and problem solving (some people call it computational thinking---a more fancy term). It teaches you how to think and to come up a solution that can be solved by a machine. You will go through from the problem definition (if you are responsible for defining the problem) all the way to coding and testing. Therefore, stay away from those who are eager to do the job for you, e.g., ChatGPT.

Underpinning our endeavor of learning problem-solving skills is the reformed Christian’s perspective. Learning this subject (and other subjects) is not just a way of meeting our needs or securing our future. As instructed from the book of Genesis, we are called to work (learning is a form of work) and to reflect God’s glory in what we do. It is therefore important to keep this mindset as we strive to improve our problem-solving and programming skills in this course.

Instructors

Lectures, labs, and study sessions

We will meet in SB 372 for lectures and labs. There are two lab sections (A and B). Please attend only your own section unless you get my prior permission. You must bring your own laptops and a notebook to all classes and labs.

  1. Lectures: 11:00-12:05 (section A) and 13:30-14:35 (section B) MWF, SB 372

  2. Labs: 08:00-9:40 (section A) and 12:15-13:55 (section B) on Thu in SB 372

  3. Study sessions: 7:00-9:00pm on Mon and Thu in SB 337

Communications

Course objectives

This course introduces computing as 1) a way of solving problems using the Python programming language for implementation and 2) a way of living out our Christian faith in technology-dominated societies. Students who complete this course will demonstrate that they can:

  1. (L1) Use an Integrated Development Environment (IDE), such as Thonny, to write and debug programs;

  2. (L1) Explain how the basic Python constructs below work and use them in coding.

    1. Python built-in data types (numbers, strings, boolean, lists, tuples, dictionaries, and sets)

    2. Control structures (if, else),

    3. Iterations (for loop and whileloop),

    4. User-defined functions,

    5. Python classes and objects,

    6. String processing and text files,

    7. Modules (built-in and import) modules,

    8. Guizero for graphical user interfaces (GUIs), and

    9. Python’s exception handling;

  3. (L2) Document code using best practices and document functions and modules using Python’s docstings;

  4. (L2) Improve code readability through naming, structure, and others;

  5. (L2) Debug programs by inserting debugging code or using debuggers;

  6. (L2) Design test cases to validate the correctness of a program;

  7. (L2) Identify the data present in a problem to be solved;

  8. (L2) Identify the key tasks required to solve a problem;

  9. (L2) Implement the data in the problem using Python’s built-in data types and/or user-defined data types;

  10. (L2) Design and implement a Python function to perform a task;

  11. (L2) Design and implement one or more classes for a problem;

  12. (L2) Design and implement a correct algorithm to solve a problem;

  13. (L3) Compare different algorithms for solving a problem from the perspectives of time complexity and space complexity;

  14. (L3) Articulate the limitations of computing (non-computability, intractability, precision, etc);

  15. (L4) Propose, design and implement a feasible and useful class project using what is learned inside and outside classes; and

  16. (L4) Articulate how learning this subject is part of your faith journey.

We classify these student learning outcomes (SLOs) into four levels (L1 - L4) which are adapted from the Bloom’s Taxonomy. In our model:

  1. (Concepts and skills) L1 corresponds to the Bloom’s levels on “understand and remember.” You will spend most of your time on accumulating enough programming concepts and skills on this level using the Python programming language.

  2. (Problem solving) The next layer L2 corresponds to the “apply and analyze” levels in the Bloom’s taxonomy. An important focus of L2 is to identify the data in the problem to be solved and the tasks required to solve it. Another equally important one is to implement these data and tasks using what is learned in L1. Code documentation and code readability are also part of this layer.

  3. (Evaluation) L3 corresponds to the “evaluate” layer in the Bloom’s taxonomy. This includes comparing different algorithms of solving a problem and understanding the limitations of computing.

  4. (New creation) The highest level L4 is to create a new app to address a problem important to you and to understand how the learning of this subject is part of your spiritual formation.

Pre/Co-requisites for this course

CS 108 does not assume that you have any programming experience, but it does assume a background in basic mathematics (e.g., algebra and geometry). Contact Rocky if you have any questions about your preparedness for this course. On the other hand, if you think you have already learned most of the materials in this course and would like to test out of CS 108, please also contact Rocky. The co-requisite of CS 108 is CS 108L. You don't need to be in the same section for CS 108 and CS 108L.

Teaching approaches

To achieve the SLOs in the Course Objectives section, we will employ various in-class and outside-class activities, which include:

L1 L2 L3 L4
POGIL X X
zyBook reading X X
Code reviews X X
In-class exercises X X X
Weekly lab X X X
Programming homework X X X
Midterm test X X X
Weekly devotion X
Perspective homework X
Lectures X X X X
Final project X X X X

POGIL (Process-Oriented Guided-Inquiry Learningis a student-centered) is a group-learning instructional strategy and philosophy which is proven to be effective over traditional teaching approaches. Together with the zyBooks reading assignments, you will be able to attain some basic knowledge and skills required in the SLOs under L1 and L2 through self- and group-learning. Based on this foundation, other activities, such as quizzes and lectures, are needed to achieve the SLOs in L1 and L2.

The SLOs in L3, on the other hand, can be achieved by learn-by-practising (e.g., in lab and homework) and expositions through interactive lectures and in-class exercises. The midterm exam is for giving you feedbacks on how well you have learned in the first 8 weeks. The final project provides you the opportunity to go through the entire problem-solving process yourself through designing and implementing an app (i.e., the L4 SLO). As for the spiritual formation SLO, it will be achieved through weekly devotions, lectures, and perspectival homework.

The weekly rhythm and tasks

Each week is devoted to one (and occasionally two) topic in the syllabus. In a full week (i.e., with no missing class),

Tentative schedule

Table 1: A tentative teaching schedule. Not included are the deadlines for other assessments.
Week Topic Mon Wed Thu Fri
Sep 01 (01) Introduction None Lecture Lab 01 Lecture
Sep 08 (02) Variables and expressions POGIL,quiz ditto Lab 02 Code review
Sep 15 (03) Data and data types ditto ditto Lab 03 ditto
Sep 22 (04) Decision structures ditto ditto Lab 04 ditto
Sep 29 (05) Iterations ditto ditto Lab 05 ditto
Oct 06 (06) Functions ditto ditto Lab 06 ditto
Oct 13 (07) GUI and modules ditto ditto Lab 07 None (Fall break)
Oct 20 (08) Midterm exam and review None (Fall break) None (advising) Midterm exam Midterm review
Oct 27 (09) Class and object POGIL,quiz Lecture Lab 08 Code review
Nov 03 (10) List, dictionary, and set ditto ditto Lab 09 ditto
Nov 10 (11) Text processing and storage ditto ditto Lab 10 ditto
Nov 17 (12) Exception handling ditto ditto Lab 11 ditto
Nov 24 (13) Program testing ditto Thanksgiving Thanksgiving Thanksgiving
Dec 01 (14) Problem solving I Problem solving Problem solving Lab (project) Problem solving
Dec 08 (15) Problem solving II Problem solving Problem solving No lab None (study day)
Dec 15 (16) Project showcase & exam None None None None

Final project

See here to find out the details.

Assessments

Assessment components

CS 108 and CS 108L (They share the same grade.)

  1. 5% — Preparation assignments (zyBook reading)

  2. 5% — Programming homework

  3. 10% — Quizzes (cannot be made up without legitimate reasons)

  4. 10% — Perspectival assignments

  5. 10% — Midterm test

  6. 25% — Lab (Lab attendance is required. Absence from lab without legitimate reasons will receive 0 marks.)

  7. 25% — Final project

  8. 10% — Final exam

The final exam will follow a project showcase during the time allotted by the registrar for the final exam. The date and time corresponding to your section will be different from the normal weekly meeting times.

Deadlines

  1. ZyBook reading assignments: Due at 8:00 on the first class day of the week (usually Mon) -- less strict on the deadlines

  2. Programming homework: Due on Wed at 23:59 -- 4 to 5 in the first half

  3. Perspectival assignments: Due on Wed at 23:59 -- 4 to 5 in the second half

  4. Lab: Due on the next day (i.e., Fri) at 23:59 -- 12 in the first 13 weeks

  5. Quizzes: Given on the first Mon of the week -- 11 in the first 13 weeks

  6. Midterm test: Mar 17 (Mon) -- 60 minutes

  7. Final project: in the week 9-16

  8. Final exam: immediately follow project showcase

Late work

Grade computations

  1. zyBook reading: Each reading assignment carries the same weight, regardless of the actual marks given by zyBook’s auto-grading.

  2. Programming homework: The full mark for each assignment is usually 40 marks.

  3. Quizzes: The full mark for each quiz is usually 20 marks.

  4. Perspectival assignments: The marking for each question is based on a 4-point scale (0 to 4). 4 points correspond to A, 2 points to C and 0 points to F. Other conversions are based on a linear interpolation.

  5. Lab: The full mark for each lab is generally different, but each lab carries the same weight.

  6. Midterm test: TBD

  7. Final project: The marking for each criterion is based on a 4-point scale. The point-to-mark conversion is the same as for the perspectival assignments.

The mark-to-grade mapping for determining the final grade is given in Table 2 which is the same as the one in the Moodle system.

Table 2: The mark-to-grade conversion table for the final grade.
Highest mark Lowest mark Grades
100 93 A
92.99 90 A-
89.99 87 B+
86.99 83 B
82.99 80 B-
79.99 77 C+
76.99 73 C
72.99 70 C-
69.99 67 D+
66.99 63 D
62.99 60 D-
59.99 0 F

Incompletes

We will give an incomplete grade (I) only in unusual circumstances, and only if those circumstances have been confirmed by the Student Life Office.

Textbook and other resources

Throughout the class, we’ll use the following platforms and tools:

  1. edstem — for posting and answering questions on labs, homework and other relevant topics

  2. Moodle (use 25/FA CS-108-A for both class A and B) — Teaching plan, slides, perspectival assignments and projects

  3. zyBooks — Reading, lab, and homework assignments.

    • The text will cost $89 and can be accessed as follows:

      1. Sign up at learn.zybooks.com. Note that you must use your Calvin e-mail address (e.g., xyz27@calvin.edu).

      2. Enter zyBooks code: CALVINCS108ChangFall2025.

      3. Click Subscribe.

    • Though the ZyBooks text is interactive, you do have the option to print a PDF version of each chapter, which can be useful as a reference after the zyBooks electronic submission has ended.

  4. Thonny 4.1.7 (Python 3.10.11)

Values and policies

Accommodation policy

Calvin University is committed to providing access to all students. If you are a student with a documented disability, please notify a disability coordinator in the Center for Student Success (located in Spoelhof College Center 360) to discuss necessary accommodations. If you have an accommodation memo, please come talk to Rocky in the first two weeks of class.

Academic integrity in computing

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 this link.

Responsible use of technology

We expect you to abide by the guidelines expressed in the policies given in your institution’s technology policy (for students on campus, see Calvin’s Technology Policy Documents).

Diversity and inclusion

It is our intent that students from all backgrounds and perspectives are well served in this course. God delights in diversity; so will we in this course. If you or someone else is hurt by anything said or done in class, let us know so we can work toward a remedy.

Etiquette

We expect you to treat students and instructors for this course with respect by adopting courteous communication practices throughout the semester in all venues, including online forums. No personal attacks, trolling, or other kinds of bad language will be tolerated.