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., your friends and ChatGPT. More will said in the AI policy section.
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.
Course logistics
Instructors
-
Office: NH299A
Email:
rocky.chang@calvin.eduOffice hours: 3:00-4:00pm on Wed and 4:10-5:10pm on Thu, or by appointment.
Graders/Assistants:
Grader: Josh Eilu
Lab assistant: Priscilla Chen (10:20am), TBD (12:15pm)
Lectures, labs, and study sessions
Lectures: 11:00-12:05 (section A) and 13:30-14:35 (section B) MWF, NH 064
Labs: 10:20-12:00 (section A) and 12:15-13:55 (section B) Thu, SB 372
Study sessions: 7:00-9:00pm Mon and Thu, SB 337
Important
You must bring your own laptop and a notebook (paper or electronic) to all classes and labs.
Communications
Outside of classes, we’ll mainly use edstem for class communications. Please turn on notifications to ensure getting timely announcements. You could participate in this forum by
Posting questions and answers (but not providing your code) on assignments, concepts discussed in class, etc.
Posting notes on articles or events that are relevant and beneficial to this course.
Go to see Rocky during office hours or make appointment by sending him an email.
Textbook and other resources
Throughout the class, we’ll use the following platforms and tools:
edstem — for posting and answering questions on labs, homework and other relevant topics
This webpage for teaching plan and policies
Moodle (use 26/FA CS-108-A for both class A and B) — slides and assignments (lab, homework, and project)
Online textbooks
Thonny 5.0 (It comes with Python 3.14)
Course design
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:
(L1) Use an Integrated Development Environment (IDE), such as Thonny, to write and debug programs;
(L1) Explain how the basic Python constructs below work and use them in coding.
Python built-in data types (numbers, strings, boolean, lists, tuples, dictionaries, and sets)
Control structures (
if,else),Iterations (
forloop andwhileloop),User-defined functions,
Python classes and objects,
String processing and text files,
Modules (built-in and import) modules,
Guizero for graphical user interfaces (GUIs), and
Python’s exception handling;
(L2) Document code using best practices and document functions and modules using Python’s docstings;
(L2) Improve code readability through naming, structure, and others;
(L2) Debug programs by inserting debugging code or using debuggers;
(L2) Design test cases to validate the correctness of a program;
(L2) Identify the data present in a problem to be solved;
(L2) Identify the key tasks required to solve a problem;
(L2) Implement the data in the problem using Python’s built-in data types and/or user-defined data types;
(L2) Design and implement a Python function to perform a task;
(L2) Design and implement one or more classes for a problem;
(L2) Design and implement a correct algorithm to solve a problem;
(L3) Compare different algorithms for solving a problem from the perspectives of time complexity and space complexity;
(L3) Articulate the limitations of computing (non-computability, intractability, precision, etc);
(L4) Propose, design and implement a feasible and useful class project using what is learned inside and outside classes; and
(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:
(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.
(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.
(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.
(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 | ||
| Textbook 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 | |||
| Perspectival homework | X | |||
| Lectures | X | X | X | X |
| Final project | X | X | X | X |
POGIL (Process Oriented Guided Inquiry Learning) is a group-learning instructional strategy and philosophy which is proven to be effective over traditional teaching approaches. Together with the textbook reading, 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-practicing (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),
Mon: We will devote the first class of the week to weekly devotion and POGIL. Before that you should have finished the assigned textbook reading. You and your group member will self-learn the basics in the unit. A short quiz on the lab or homework assignment (or other activities) covered the week before will also be given as a timely feedback to you.
Wed: We will focus on consolidating and deepening what you have already learned through textbook reading and POGIL, and prepare you for the lab next day which provides more complex problems for mastering the units for that week and the previous weeks.
Thu: Lab - pair programming
You cannot change your assigned section without my approval.
You will work in pairs during the lab exercises.
When you work in a pair, each one of you will submit your work.
Put down both of your names in your submission.
Fri: We will conduct code review on the last programming homework and lab assignment you have submitted and reflect on what you have learned in that week. We will also cover other topics that are useful for your class project.
Tentative schedule
| Week | Topic | Mon | Wed | Thu | Fri |
|---|---|---|---|---|---|
| Aug 31 (01) | Introduction | Read Everyone chp 1-2 | Lab prep | Lab 01 | Code review |
| Sep 07 (02) | Variables and expressions | None (Labor Day) Read Everyone chp 3 |
Lecture + lab prep | Lab 02 | ditto |
| Sep 14 (03) | Data and data types | Read Everyone chp 7.1-7.8, 9.1-9.4, 10.1-10.2, 10.4, 11.1-11.4 |
Lab prep | Lab 03 | ditto |
| Sep 21 (04) | Decision structures | Read Everyone chp 4 | ditto | Lab 04 | ditto |
| Sep 28 (05) | Iterations | Read Everyone chp 6 | ditto | Lab 05 | ditto |
| Oct 05 (06) | Functions | Read Everyone chp 5 | ditto | Lab 06 | ditto |
| Oct 12 (07) | GUI and modules | Read guizero manual | ditto | Lab 07 | None (Fall break) |
| Oct 19 (08) | Midterm exam and review | None (Fall break) | None (advising) | Midterm exam | Code review |
| Oct 26 (09) | Class and object | Read Everyone chp 16-17 | Lab prep | Lab 08 | Database |
| Nov 02 (10) | List, dictionary, and set | Read Everyone remaining sections in chp 9-11 |
ditto | Lab 09 | pandas DataFrame |
| Nov 09 (11) | Text processing and files | Read Everyone remaining sections in chp 7 and chp 8 |
ditto | Lab 10 | JSON and XML |
| Nov 16 (12) | Exception handling | Read ThinkCS chp 13 | ditto | Lab 11 | AI and Python |
| Nov 23 (13) | Program testing | Read ThinkCS chp 20 | Thanksgiving | Thanksgiving | Thanksgiving |
| Nov 30 (14) | Problem solving | Problem definition and data abstraction |
Program design | Lab 12 | Algorithm design |
| Dec 07 (15) | Problem solving | Review of the problem- solving process |
Project pitching | What is computing? | None (study day) |
| Dec 14 (16) | Project showcase & exam | None | None | None | None |
Final project
Will be available in around week 6Assessments
Assessment components
CS 108 and CS 108L (They share the same grade.)
5% — Programming homework
10% — Quizzes (cannot be made up without legitimate reasons)
10% — Perspectival assignments
10% — Midterm test
25% — Lab Absence from lab without legitimate reasons will receive 0 points. Late arrival will receive proportional point deduction in an increment of 10 mins (e.g., 10% for 10 mins late).
25% — Final project
15% — 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
Programming homework: Due on Mon at 23:59 -- 6 in the first half
Perspectival assignments: Due on Wed at 23:59 -- 4 to 5 in the second half
Lab: Due on the next day (i.e., Fri) at 23:59 -- 12 in the first 14 weeks
Quizzes: Given on the first Mon of the week -- 11 in the first 13 weeks
Midterm test: Oct 22 (Thu) -- 90 minutes
Final project: in the week 9-16
Final exam: immediately follow the project showcase
Late work
You have at most 5 days for late submission of any assignment. 10% will be deducted from the attained score per each day late.
Caution
Late submission for 5 days or more will receive 0 marks.
To be more precise:
if late < 24 hours: -10% of the attained score else if < 48 hours: -20% of the attained score else if < 72 hours: -30% of the attained score else if < 96 hours: -40% of the attained score else if < 120 hours: -50% of the attained score else: -100% of the attained score
Grade computations
Programming homework: The full mark for each assignment is usually 40 marks.
Quizzes: The full mark for each quiz is usually 20 marks.
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.
Lab: The full mark for each lab is generally different, but each lab carries the same weight.
Midterm and final exam: TBD
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.
| 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.
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.
AI and large language model (LLM) usage policy
AI tools, like OpenAI's ChatGPT, Claude, DALL·E, Gemini, Adobe Firefly, and Microsoft Copilot, are not allowed in generating, improving, and documenting Python code in all assessments in this course. As an introductory course, you are expected to develop these skills yourself, using primary sources when necessary.
A recent MIT study using EEG found that participants who used an LLM for an essay-writing task showed weaker brain connectivity than participants who used a search engine or no external tool. This study suggests that relying heavily on an LLM may reduce cognitive engagement during certain tasks, although the findings were specific to essay writing and cannot be directly generalized to computer programming. In this course, you are therefore expected to develop your programming and problem-solving skills through your own effort rather than outsourcing these cognitive tasks to AI.
However, you are encouraged to seek help from non-AI sources, such as websites that teach Python, the Stack Overflow website, instructional videos, Python documentation, and other similar resources. For example, Google search for learning (not for obtaining answers to assignments) may display an AI-generated overview (from Gemini) alongside search results. You can follow the links to the original sources and read, evaluate, and understand those sources yourself.
More on labs and assignments
The use of AI tools is really not necessary for lab and programming homework assignments. Everything that you need for the labs is already given to you either in the lab sheet or in the lectures. You just need to understand the idea and implement it during the lab. For the programming assignments, some problems are simply extensions of the lab questions. For the new ones, each problem builds upon the solution to the previous problem. Therefore, it is entirely feasible for you to complete these assignments without help from AI tools.
More on perspectival assignments
You are not allowed to use AI to generate ideas or answers, or to proofread your writing. This is because I am looking for your own thinking and arguments, not someone else's.
More on project
The class project is more complex than the labs and homework. The objective of the project is for you to go through the complete problem-solving process, starting from defining the problem and ending with a Python program. The emphasis is on the process, not the final code. In other words, your code is not expected to be polished and professional, but you are expected to engage in every step of the process.
There are six phases in the six-week project: proposal, progress report, code submissions 1/2/3, and final submission (code + report).
- Proposal: The idea must come from you, and you must write your own proposal without AI's help (including Grammarly's). To come up with your topic, you should talk to people instead of a machine, such as your team partner, me, a tutor in the study session, senior students, friends, etc. You will be amazed by the ideas that emerge from talking (and sometimes just listening to) people.
- Progress report: There are design issues (i.e., data modeling and program design) that you should decide for yourself. You must be able to argue for and, when necessary, defend your design choices. This is where you can develop your critical thinking skills. AI tools should not take away this learning opportunity from you.
- Code submission 1/2/3 (once every week over three weeks): You must write your own code without AI's help for the reasons stated earlier. To help you progress steadily, I will review your code with you at least once in person. If you encounter technical obstacles during coding, you should find solutions from non-AI sources or ask other people for help. You must also document such help you have received in your final report.
-
Final submission:
- Code: Same as (3) above. You must write your own code without AI's help.
- Report: You must write your own report without AI's help for the reasons stated earlier.
Violation of the policy above may constitute academic dishonesty (refer to Calvin's academic integrity policy ).
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’s general statement on academic integrity.
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.