> Open my eyes, that I may behold wondrous things out of your law. *Psalm 119.18*
**Welcome to CS-104-A, Applied Computing!**
[TOC]
:::info
## Why programming?
- Creation:
- Computing is part of God’s world
- it reveals wisdom and ingenuity on how God made things work (see Isaiah 28:23-29)
- it is enabling science today (study of God’s world)
- it is enabling new technology today (building culture for God's glory)
- The process of breaking down a problem into precise steps can be a form of developing intellectual virtue
- Through discovery and automation, it can enable human flourishing
- There is joy in the process (creative, rewarding, fun)
- 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 and its virtuous practice on:
- imagining
- designing
- regulating
- using
## 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.
:::
# Learning Outcomes
This course introduces computing as a problem solving discipline with a particular emphasis on programming. Students who complete this course will demonstrate that they can:
- Design algorithms and data types/structures to solve computational problems, using:
- primitive data types, expressions and arrays/lists;
- basic control structures: sequences, selection and repetition
- subprograms (methods/functions;
- classes;
- Find and fix syntactic and logical problems in programs;
- Use an Integrated Development Environment (IDE) to develop a program;
- Understand the wider implications of encoding intelligence in the form of algorithms.
# Staff
- Professor Fernando Pasquini Santos - fs33\\\*\\\*at\\\*\\\*calvin.edu
- office hours: at NH291, Mondays 4-5 pm, Wednesdays 11-12 am
- Grader: Edom Maru - eam43\\\*\\\*at\\\*\\\*calvin.edu
**Communication**: outside of class, we'll use:
- Office hours;
- Moodle;
- Email -- Please restrict email use for requests for accommodations (e.g.: missing class; disabilities; mental health issues; etc.).
You'll generally find us responsive on Monday through Friday, but less so on the weekend, particularly Sunday. You're free to schedule your work as best works for you, but we'll be trying to observe a Sabbath in our own schedules.
# Schedule
:::spoiler
Schedule is subject to change. Updates will be made here and on Moodle.
| Unit | Classes | Day of Week | Content |
| ---------------- | ------- | ----------- | ---------------------------- |
| 1 - Introduction | 28-Oct | Monday | Turtle drawing |
| 1 - Introduction | 29-Oct | Tuesday | LAB 1 - Turtle drawing |
| 1 - Introduction | 30-Oct | Wednesday | Theory: Input/Output |
| 2 - Math | 1-Nov | Friday | POGIL: Math operators |
| 2 - Math | 4-Nov | Monday | Theory and exercises |
| 2 - Math | 5-Nov | Tuesday | LAB 2 - Math operators |
| 2 - Math | 6-Nov | Wednesday | Code review and Quiz 1 |
| 3 - Data Types | 8-Nov | Friday | POGIL: Sequences |
| 3 - Data Types | 11-Nov | Monday | Theory and exercises |
| 3 - Data Types | 12-Nov | Tuesday | LAB 3 - Data structures |
| 3 - Data Types | 13-Nov | Wednesday | Code review and Quiz 2 |
| 4 - If-Else | 15-Nov | Friday | POGIL: If-else |
| 4 - If-Else | 18-Nov | Monday | Theory and exercises |
| 4 - If-Else | 19-Nov | Tuesday | LAB 4 - Conditionals |
| 4 - If-Else | 20-Nov | Wednesday | Code review and Quiz 3 |
| 5 - Loops | 22-Nov | Friday | POGIL: loops |
| 5 - Loops | 25-Nov | Monday | Theory and exercises |
| 5 - Loops | 26-Nov | Tuesday | LAB 5 - Loops |
| | 27-Nov | Wednesday | \*Thanksgiving\* |
| | 29-Nov | Friday | \*Thanksgiving\* |
| 6 - Functions | 2-Dec | Monday | POGIL: functions |
| 6 - Functions | 3-Dec | Tuesday | LAB 6 - Functions |
| 6 - Functions | 4-Dec | Wednesday | Theory, exercises and Quiz 4 |
| 7 - Classes | 6-Dec | Friday | POGIL: classes |
| 7 - Classes | 9-Dec | Monday | Theory and exercises |
| 7 - Classes | 10-Dec | Tuesday | LAB 7 - Classes |
| 7 - Classes | 11-Dec | Wednesday | Code review and Quiz 5 |
:::
# Materials
## Textbook
[**ZyBooks**](http://learn.zybooks.com/)
We will be using an online text called *Programming in Python 3 with ZyLabs*. The text will cost \$89 and can be accessed as follows:
1. Sign up at [learn.zybooks.com](http://learn.zybooks.com/) (see Zyante's [privacy policy](https://www.zybooks.com/privacy-policy/)). Note that you must use your Calvin e-mail address (e.g., `xyz27@calvin.edu`).
2. Enter zyBook code: `**CALVINCS104Fall2024**`
3. Click *Subscribe*.
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). Though the ZyBooks text is interactive, you do have the [option to print a PDF version](https://zybooks.zendesk.com/hc/en-us/articles/360007537533-How-long-do-subscriptions-last-Can-I-extend-Can-I-save-or-print-) of each chapter, which can be useful as a reference after the course is over and the ZyBooks electronic submission has ended.
## Work Environment
We will use [Thonny](https://thonny.org/) as the integrated development environment of our programming exercises in Python.
The labs in SB 354 & 372 are 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: a) using your own machine or b) 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.
1. Install Thonny in your own machine 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; or
2. Access the lab machines remotely There are a limited number of remote and virtual machines available for CS courses. You can find:
- the list of machines here: <https://remote.cs.calvin.edu>
- the instructions for using those machines here: <https://cs.calvin.edu/sysadmin/remoteaccess-guacamole.php>
# Weekly Activities
1. **Preparation reading (zyBooks textbook)**: you'll do these readings as a preparation for introducing new unit on Fridays. As you work through the text, complete the "participation" activities in the specified sections as you go. You can skip the "challenge" activities.
2. **Class activities**: during some of our classes, we will proceed according to a POGIL approach (Process Oriented Guided Inquiry Learning). We will form teams of three students in order to solve a set of questions and exercises. The teams will need to have:
- a programmer (runs the exercises in Thonny)
- a recorder (writes the team's answers to the exercises)
- a manager/presenter (keeps the team on track; interacts with class)
These POGIL activities will be then handed out to me and will be counted as participation grade (5%).
3. **Lab**: we'll go through a series of programming assignments during our lab classes **every Tuesday**. These are posted as assignments in [zyBooks](https://learn.zybooks.com/zybook/CALVINCS104PasquiniSantosFall2024), where you and you partner will also submit your solutions.
- If feasible, *you will work in pairs during the lab exercises and you may work in pairs for your homeworks as well*. When you work in a pair, one of the partners should submit one copy of your work with both of your names and usernames on it. It's wise for both partners to have copies of your shared solution. Your partner must be someone else from this course this semester.
- The lab is configured to support the course work, but if you're prepared to do some administrative work, you can configure your own machine to do the lab work. Alternatively, you can login remotely to the labs using a web browser. See "Getting Started" for more information.
4. **Quiz**: usually **on Wednesdays**, we will have a 15 to 20 minute **open-notes** quiz on Moodle reviewing and applying the concepts we got from the unit. The quiz will be done in classroom, so you will want to bring your laptop or any other device.
- Exceptionally at week 1, we won't have a Quiz (too early for that).
5. **Homework**: these will also be posted as assignments on our [zyBooks](https://learn.zybooks.com/zybook/CALVINCS104Fall2023) course page. These will total 6 homework assignments during the course.
# Grading
We will compute your final grade as follows:
- 5% --- Preparation readings (7 in total)
- 5% --- Participation (POGIL) (6 in total)
- 50% --- Homeworks (6 in total)
- 40% --- Quizzes (5 in total)
We'll throw out your lowest quiz score.
**CS 108L (1 credit)**
- 100% --- Lab exercises (7 in total)
Your grades will be available in the Moodle gradebook.
# Class Dynamics and Technology Use
- No laptops will be allowed in class, **except during POGIL activities and quizzes**.
- Some exercises will be solved **in paper** with colleagues - paper still enables a better way of engaging together ("joint attention") instead of computer screens.
- Before we dive in into content, I intend to promote at least 3 minutes of silence (and maybe even prayer) so that we "dump" the clutter in our heads and can then focus better.
:::info
## Why?
I believe that technology is not neutral: we use them, but they also affect us. Consequently, **technology in the classroom changes things**. Studies suggest that [internet-enabled electronic devices in the classroom reduces student performance](https://www.insidehighered.com/news/2018/07/27/class-cellphone-and-laptop-use-lowers-exam-scores-new-study-shows). We *will* use technology in class, but with limits.
By setting up a specific way to use them in class, we can try to avoid their usual effect of promoting distraction and disconnect with each other. Therefore, [we need to set a **common rule**](https://www.amazon.com/Common-Rule-Habits-Purpose-Distraction/dp/0830845607) in order to help each other and make our class a genuine community of mutual learning.
Besides that, in general, and as we start to learn programming, it's not a good idea to copy code from Web sources or to use large language models (e.g., ChatGPT). Think of that as the same as cooking ready-made dinner in your microwave oven versus really learning how to cook. The results may sometimes be acceptable, but won't be healthy and won't put you in contact with ingredients and processes.
As Christians, I believe we need to write the most humane and hospitable code we can, as a way of serving others and reflecting God's glory. And for that, we need the disposition to fully engage with computational logic as a way of honoring God's wisdom reflected in programming. Automating the process too much may alienate us - and our fellow people - from that, and cause a lot of problems.
This doesn't mean I'm all against the use of generative AI. But we need to do that responsibly. There's always a risk that these tools may fail and we may even not perceive it, **especially if we still don't have the skill to actually *understand* what is happening**. For more info on responsible use of generative AI, see [this page](https://calvin.edu/offices-services/provost/rac/writing-with-integrity/ai-text-generators/index.html).
:::
# Study Sessions
For this course, Calvin makes available a tutoring service for helping with study. Here are the advantages of participating at Study Sessions:
- 4-8 hours of tutoring per week
- A nice place to do homework and ask questions
- An entire room of people working through the same challenges
- A chance to make friends and study partners
The service is completely free and flexible. For more information, visit <https://calvin.edu/go/tutor>
# Academic Integrity
Code re-use can be a valuable practice in computing, but 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.
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>.
# Special Circumstances
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.
# Diversity and Inclusion
I intend for this class to be an environment where we equally respect people of every ethnicity, gender, socioeconomic background, political learning, religious background, etc. And I invite your help.
We will not always do this well. If you or someone else in this class is hurt by something I say or do in class, I would like to work to remedy it. I'll welcome this feedback in whatever way is comfortable for you: in public, in private, or anonymously, via my department chair (Professor VanderLinden), or via a report to [Safer Spaces](https://calvin.edu/offices-services/safer-spaces/) or the [provost's office](http://www.calvin.edu/go/comments-on-faculty/).
# Etiquette and Wellness
I like to understand education as forming **a community of friends who love knowledge** (and the God from whom all knowledge comes). So as friends and community, we expect to treat each other with respect and 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.
We are not just developing technical skill; we are also developing virtue and character *through the* acquisition of a technical skill. Please, take advantage of this opportunity.
Furthermore, 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](https://calvin.edu/offices-services/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 me, 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!