Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due
CS 108 - Introduction to Computing
Fall 2024
A 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.
Underpinning our endeavor of learning problem-solving skills is the reformed Christian’s perspective. Learning this subject (and other subjects) is not 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
-
-
Office: NH299A
-
Email: [email protected]
-
Office hours (Tue and Wed 16:00-17:00), or by appointment.
-
-
Graders/Assistants:
-
Grader: Ivan Widjanarko
-
Lab assistants: Benjamin Kosters (8:00) Samuel Ntadom (10:20)
-
-
Help sessions
-
Monday and Thursday, 7–9pm, SB354 (aka. the “gold” lab)
-
These lab help/tutoring sessions are run by the Center for Student Success.
-
Lectures and labs
We will meet in a classroom for the lectures and in the gold lab for the labs. There are two sessions (A and B) for this course. Please attend only your own sessions unless you get my prior permission.
-
Lectures:
-
Section A: 11:00-12:05 MWF, SB302
-
Section B: 12:15-13:20 MWF, SB301
-
-
Labs:
-
Section A: 8:00-9:40 Thu, SB354
-
Section B: 10:20-12:00 Thu, SB354
-
Communications
-
Outside of classes, we’ll mainly use edstem for class communications. The CS community has long established various platforms, such as https://cs.stackexchange.com/, to help each other out, and it could be a hospitable place for interacting with one another.
-
Post questions and answers (but not providing your code) on assignments, concepts discussed in class, etc.
-
Post 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.
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.
-
Python built-in data types (numbers, strings, boolean, lists, tuples, dictionaries, and sets)
-
Control structures (if, else),
-
Iterations (for loop and while loop),
-
User-defined functions,
-
Python classes and objects,
-
String processing and text files,
-
Built-in modules (e.g., the math module) and imported 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 an important problem and to understand how the learning of this subject is part of your spiritual formation.
Pre-requisites for this course
CS 108 does not assume that you have any programming experience, but it does assume a background in basic mathematics. 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 skip it, please also contact Rocky.
Teaching approaches
To achieve the SLOs in the Course Objectives section, we will employ various in-class and outside-class activities, which include:
-
POGIL (Process Oriented Guided Inquiry Learning) — L1 + L2
-
zyBooks reading — L1 + L2
-
In-class quizzes — L1 + L2
-
Code reviews — L1 + L2
-
In-class exercises and problem sets — L1 + L2 + L3
-
Weekly lab — L1 + L2 + L3
-
Programming homework — L1 + L2 + L3
-
Midterm project — L1 + L2 + L3
-
Weekly devotion — L4
-
Perspectival homework — L4
-
Lectures — L1 + L2 + L3 + L4
-
Final project — L1 + L2 + L3 + L4
POGIL (the workbook in DOCX, the workbook in PDF)is a student-centered, 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 project is designed to have you apply what you have learned in the first 8 weeks to solve a “small” problem. The final project goes a step further into the L4 SLO on creating a new app. 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 zyBook reading. You and your group member will self-learn the basics in the unit. A short quiz on the zyBook reading (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 zyBook 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
-
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. Other activities, such as in-class exercises, will be supplemented.
Weekly tasks and projects
-
ZyBook reading assignments: Due at 9:00 on the first class day of the week (usually Mon)
-
Homework: Due on Tue at 23:59 (have ∼10 days to finish it)
-
Perspectival assignments: Due on Wed at 23:59
-
Lab: Due on the next day (i.e., Fri) at 23:59
-
Quizzes: Given on the first day of the week
-
Midterm project: Due on Nov 5 (Tue) at 23:59
-
Final project:
-
Proposal: Due on Nov 12 (Tue) at 23:59
-
Progress report: Due on Nov 26 (Tue) at 23:59
-
Code review: Due on Dec 3 (Tue) at 23:59
-
In-class project pitching: Dec 4 (Wed)
-
Report and code submission: Dec 13 (Fri) at 23:59
-
Showcase in the lab: The assigned exam period
-
Table 1 show a tentative teaching schedule.
Week | Topic | Mon | Wed | Thu | Fri | Remarks |
---|---|---|---|---|---|---|
1 | Introduction | - | Lecture | Lab 1 | Lecture, POGIL | |
2 | Variables and expressions | POGIL, quiz | Lecture | Lab 2 | Code rev and refl | |
3 | Data types | POGIL, quiz | Lecture | Lab 3 | Code rev and refl | Rocky will be in a conf. on Fri |
4 | Decision structures | POGIL, quiz | Lecture | Lab 4 | Code rev and refl | |
5 | Iterations | POGIL, quiz | Lecture | Lab 5 | Code rev and refl | |
6 | Functions | POGIL, quiz | Lecture | Lab 6 | Code rev and refl | |
7 | Classes and objects | POGIL, quiz | Lecture | Lab 7 | Fall break | |
8 | - | Fall break | Advising | Lab 8 | Code rev and refl | |
9 | List, dictionary and set | POGIL, quiz | Lecture | Lab 9 | Code rev and refl | |
10 | Strings and files | POGIL, quiz | Lecture | Lab 10 | Code rev and refl | Midterm proj due |
11 | GUI and modules | POGIL, quiz | Lecture | Lab 11 | Code rev and refl | |
12 | Exception handling | POGIL, quiz | Lecture | Lab 12 | Code rev and refl | |
13 | - | POGIL, quiz | Thanksgiving | Thanksgiving | Thanksgiving | |
14 | TBD | TBD, quiz | Lecture | Proj consul | TBD | |
15 | TBD | TBD | Lecture | Proj consul | Study day | Final proj’s code and report due |
16 | Project showcase |
Assessments
Assessment components
▸ CS 108 (3 credits)
-
5% — Preparation assignments (zyBook reading)
-
20% — Programming homework assignments
-
15% — Quizzes (cannot be made up without legitimate reasons)
-
15% — Perspectival assignments
-
20% — Midterm Project
-
25% — Final Project
▸ CS 108L (1 credit)
-
100% — Lab (pair programming)
-
Lab attendance is required. Failure of attending a lab without legitimate reasons will receive 0 marks.
Note that there is no final exam. Instead, we will have 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.
Grade computation
-
zyBook reading: Each reading assignment carries the same weight, regardless of the actual marks given by zyBook’s auto-grading.
-
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).
-
Lab: The full mark for each lab is generally different. The final mark is the sum of them.
-
Midterm project: The marking for each criterion is based on a 4-point scale.
-
Final project: The marking for each criterion is based on a 4-point scale.
-
The marks obtained from a 4-point scale will be converted to the marks in the 100-point scale using linear interpolation.
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 |
Other important notes
-
Lab — pair programming
-
You cannot change your assigned section without my approval.
-
If feasible, 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 and usernames in your submission.
-
-
For other assessments, you must work on your own.
-
Feel free to discuss ideas with us or with your classmates, but don’t copy code.
-
You may reuse someone else’s code (including the ChatGPT’s) provided that you make it clear what code you are reusing and what code you write yourself.
-
We’ll grade you on the code you write.
-
Note that ChatGPT, Claude and other similar systems are NOT allowed in this introductory course.
-
-
Your grades will be available in the Moodle gradebook, generally before the next assignment of a similar type is due.
-
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.
-
-
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. Late submission for 5 days or more will receive 0 marks.
-
To be 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
-
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
-
Moodle (use 24/FA CS-108-A for both class A and B) — Teaching plan, slides, perspectival assignments and projects
-
zyBooks — Reading, lab and homework assignments.
-
The text will cost $89 and can be accessed as follows:
-
Sign up at learn.zybooks.com. Note that you must use your Calvin e-mail address (e.g., [email protected]).
-
Enter zyBooks code: CALVINCS108ChangFall2024.
-
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.
-
-
Activities for CS1 in Python, T. Shepherd, C. Mayfield and H. Hu, Creative Commons
-
Thonny 4.1.4 (Python 3.10.11)
The lab
The SB 354 lab is pre-configured to support this course, so if you are on campus, you are free to do all your course work there. If you are off campus, you have two options: configuring your own machine and accessing the lab machines remotely. We suggest that you install the software on your own machine and then use the option you find most convenient.
Configuring your own machine
If you would like to configure your own machine, you can configure the following tools.
-
Moodle — The Moodle learning management system is generally pretty easy to use. For reference, Calvin provides an Moodle training materials.
-
Thonny - Install the latest version of Thonny development environment for your system type. Thonny has a current version of Python built-in and should work without further configuration.
-
MS Teams — Teams is the online session tool used by Calvin. Note that if you want to share your screen using MS Teams on a Mac, you’ll need to allow screen recording (for Teams and/or your Web browser); see this support page under the heading “Share content on a Mac”.
Accessing the lab machines remotely
There are a limited number of remote and virtual machines available for CS courses. You can find:
The course software for CS 108 is installed on both the Linux and the Windows remotes.
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
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 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.
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.