James Skon, Ellis Cain
- Location and Time:
– Section 2: CHL 200, Wednesday and Friday 2:10pm – 3:30pm (Cain, Skon) - Office hours:
- Doctor Cain (Chalmers 356): Monday 3:30-5pm, Wednesday 1-2pm, Friday 1-2pm (starting 9/14)
- Professor Skon (Section 2): Times: Mon, Tues, Thurs: 2:00-3:00, Thursday 9:00-10:00 (Chalmers 357)
- Other times by appointment.
Tutoring Schedule (MSSC)
- Peter Krosniak: Sundays 9-10 pm, Tuesdays 8-10 pm, Thursdays 7-10 pm
Course Overview
This course is an introduction to computer programming intended both for those who plan to take further courses in which a strong background in computation is desirable and for those who are interested in learning basic programming principles. The course will expose the student to a variety of applications where an algorithmic approach is natural and will include both numerical and non-numerical computation. The principles of program structure and style will be emphasized. The course teaches both Python and C++ programming. Offered every semester.
- An introduction to computer science and computing systems
- An introduction to algorithm development and problem solving
- An introduction to programming with Python
- An introduction to C++ programming language
- POGIL group activities during (almost) every class meeting
- Regular individual lab assignments
- Computer history reflections weekly
Course Objectives
- Analyze problems and develop step-by-step algorithmic solutions.
- Write, run, and modify programs in Python and C++.
- Use variables, expressions, data types, and operators appropriately.
- Apply conditional statements to implement decision-making logic.
- Use loops to solve repetitive and iterative problems.
- Design and use functions with parameters and return values.
- Explain variable scope and manage data flow between functions.
- Process and manipulate strings effectively.
- Organize and process data using Python lists and dictionaries.
- Use C++ arrays, vectors, pairs, and maps.
- Read data from files and write program results to files.
- Create and use simple classes and objects.
- Translate basic programming solutions between Python and C++.
- Decompose larger problems into smaller, manageable components.
- Trace program execution and predict program behavior.
- Test, debug, and improve programs systematically.
- Write clear, readable, and appropriately documented code.
- Collaborate effectively in structured problem-solving teams.
- Explain significant developments in the history of computing.
- Evaluate the appropriate and ethical use of generative AI and other programming resources.
Texts/Online resources
This course uses several online tools for learning and assessing student progress. All of these resources are free of cost but some require the creation of a login account. It is essential that everyone participate in the associated activities as all are part of the learning process, and some are graded activities.
- How To Think Like A Computer Scientist: Interactive edition (kenyoncollege_thinkcspy_Fall26) This is an interactive book. You must first sign up for this course. Follow this link and register using your Kenyon email. Use “kenyoncollege_thinkcspy_Fall26” as the course name. You will read the sections from text as assigned in the calendar below. I strongly recommend that you to do the included problems in the text as well. The quizzes will largely be based on the readings from this text.
- C++ for Python Programmers (kenyoncollege_cpp4py-v2_fall26) This is for the C++ part of the course. Follow this link and register using your Kenyon email. Use “kenyoncollege_cpp4py-v2_fall26″) as the course name. Like the Python book, you will be assigned readings from this text.
- Kenyon coLearn-AI (https://csits.kenyon.edu) – This is a Kenyon created collaboritive learning system we will use in this course. This is used for in-class activities including POGIL activities, quizzes and exams. You must sign up with your kenyon email address and actual Kenyon name. Once logged in, you sign up for your section. In the “Join a Course by Code” field enter “tba”.
- coLearn-AI (colearn.ai.com) – This is the same platform as above, but running in the cloud. This allows access from off campus. This is used for assignments completed outside of class. Sign up with the same email and name as for csits.kenyon.edu.
Methodology
This course uses a variety of learning strategies in order to both enrich and enhance learning for every student of every background, as well as to keep the course interesting. Methods include:
- Group (collaborative) activities:
- POGIL (Process Oriented Guided Inquiry Learning). Discussed below, this is a team oriented, discovery based approach to learning with small groups of students. Teams report back to the whole classroom and share their discoveries.
- In class small group programming. This is to allow learners to explore and solve a problem as a small group, such that each student engages with the material and each other, experimenting, teaching, and learning together.
- Individual activities:
- Laboratory assignments. These programming assignments give each learner the opportunity to develop skill, experience, and confidence as programmers as individuals. There will be a lab assignment approximately every other week in the first half of the semester (3), and about once a week after the spring break (6).
- Reading Assignments and Daily Quizzes. For every class, the students are expected to read certain sections from the textbook (online, interactive) BEFORE the class. For encouragement and accountability, there will be a short quiz in this class every day (except for the first day, but there is a survey and syllabus quiz that should be done before the first day that will count as quiz 1). A number of low quiz scores will be dropped.
- History reflections – these small writing assignments, about one a week, give each learner the change to explore computer science in its larger historical context. We will have a brief discussion of these in class.
- Instructional Presentation and discussion. Occasionally the instructor will give a presentation related to the course topics. These will normally include discussion, and sometimes interleaved with in-class, hands on programming activities.
Course Attendance
Given the methods of instruction, especially the group work and the hands on work, attendance in class meetings with full engagement is essential. Students are expected to attend all classes unless they have a legitimate excuse such as illness, and participation in official collegiate athletic activities. In the case of any absence students are expected to contact the instructor prior to the absence. In the case of such excused absences the student are expected to complete course activities they missed in class. According to the Math Department’s attendance policy any student who missed six class meetings will be expelled from the course. Missing class will result in no credit that for day’s in-class activities. Each unexcused absence will lower your overall course grade by 1% . Being tardy and walking out of the classroom during the class period must be avoided. Each occurrence of tardy and walking out of classroom counts as half of an absence.
Python 3 and C++
In this course we will be learning the Python 3 and C++ programming languages. We will be using an online programming environment colearn-AI, linked above in the text/online resources section.
POGIL
Process Oriented Guided Inquiry Learning (POGIL) is a pedagogy that is based on research on how people learn and has been shown to lead to better student outcomes in many contexts and in a variety of academic disciplines. Beyond facilitating students’ mastery of a discipline, it promotes vital educational outcomes such as communication skills and critical thinking. Its active international community of practitioners provide accessible educational development and support for anyone developing related courses.
We will be learning about POGIL early in the course, and then use this method on a daily basis. You must be logged into your Kenyon account to access the activities.
Useful POGIL links
POGIL ROLES:
- Spokesperson/Facilitator
- Process Analyst
- Quality Control
Teams will normally have 3 people. On teams of 2 students, the roles will be Spokesperson/Facilitator and Process Analyst/Quality Control.
Assignments
Due Date: All assignments are due as specified in the grading table below.
Missing Lab Assignments: Labs are an important part of this class; the effort spent on them is a crucial part of the learning process. Failure to submit labs is unacceptable: students earning 0s on two labs cannot receive a grade higher than a B- for the course; students earning three 0s on labs will receive an automatic F for the course.
Collaboration and Academic Honesty: In order to facilitate learning, students are encouraged to discuss assignments amongst themselves. Copying a solution is not, however, the same as “discussing.” You must follow the Math Department’s Guidelines on collaboration. A good rule of thumb is the “cup of coffee” rule. After discussing a problem, you should not take away any written record or notes of the discussion. Go have a cup of coffee or cocoa, and read the front page of the newspaper. If you can still re-create the problem solution afterward from memory, then you have learned something, and are not simply copying. (The in class assignments are exempt from this, as they are intended to be done together.)
Academic Honesty and using code you did not write: Turning in code you did not write is cheating.
- You should never receive code from other students, use code from the internet, or use instructor solutions from past semesters. Any code you submit must be written entirely by you. (See the “cup of coffee” rule under collaboration.)
- Likewise, “facilitating academic dishonesty” is a violation of academic honesty. Thus sharing your code with other students is also forbidden.
- The instructor has tools for checking the similarity of code, and will use them periodically to see if students’ code is too similar to be explained by coincidence.
- If you suspect someone has used your code, you should report it.
Computer History Reflection: Once a week you will turn in a brief reflection on some computer history fact from either the Timeline of Women in Computing or the Computer History Museum Timeline. One or two people people will be chosen each week to orally describe what they found in 1-2 minutes at the beginning of class. I will ask for volunteers, and everyone will speak at least a couple of times during the semester. The idea is give to us all an opportunity to explore the history of computer science, and to find something that interests each of us. Start by going to one of the timelines, and for each assignment explore the requested years until you find something interesting. Then write up a 200-300 word Reflection about what you found, what you found compelling, and why you think it is significant. Write the reflection in Moodle, and include a link to the item you found so it can be displayed while you share in class. These are due midnight before the day they will be presented (and appear in the calendar below). Late submissions will not be accepted on these assignments.
Expected Workload:
There will be more due dates in this course than in any you’ve likely taken. There will be work due several days per week in most weeks. Most of these assignments will take well under an hour, but working consistently and staying on top of what we’re doing is absolutely imperative. These assignments include readings required for daily quizzes, history reflections, and labs. Tools for More Effective Studying.
Use of Generative AI as a Tool
We’re entering a transformative era with generative AI — a technology that is already reshaping how we work, learn, and solve problems. But despite its power, AI has clear limits. It cannot design or build complete systems without the guidance of skilled humans — humans who understand how computers work, how to program, and how to create real-world solutions. That’s where this course comes in.
The purpose of this class is to help you build that essential foundation. If your goal is to use computing effectively in your career or personal projects — in any domain — you need to know how to think computationally and write code yourself. This course is designed to scaffold your learning, so you can reach the point where tools like AI actually become helpful rather than misleading.
It’s true that generative AI can likely complete many (if not all) of the assignments in this course — and do so with more polish than a beginner programmer. But that’s missing the point. It’s a bit like learning Arabic: Google Translate can handle most beginner-level sentences, but copying and pasting phrases into a translator isn’t the same as learning to speak the language.
I’m assuming you’re in this course because you — or your advisor or major — believe programming will be useful to you. If that’s the case, you need to learn the fundamentals yourself, without relying on AI to do the thinking for you. Later, once you’ve built confidence and experience, AI can become a powerful assistant — helping you prototype, review, or debug your code. But as a beginner, leaning on it too early is not just unhelpful — it’s counterproductive.
Policy on Generative AI Use
Unless explicitly permitted in a specific assignment or by the instructor, any use of generative AI (such as ChatGPT, Gemini, Claude, GitHub Copilot, or similar tools) is strictly prohibited on any assignment in this course. The understanding is that you will be the one writing the code.
You should follow this rule for two important reasons:
- You’re undermining your own learning if you rely on AI to “help” you write code before you’ve learned how to think through problems and build solutions yourself. Programming is a skill — you don’t acquire it by watching a machine do the work for you.
- It’s a matter of academic integrity and respect. I’d like to believe that you’re decent and respectful people. If you prioritize your grade over honesty and growth, then you may have bigger concerns than learning to program — and that would be unfortunate.
Also, keep in mind: the final exam will be completed in class without access to AI or any digital tools. If you haven’t built real skills during the semester, that will become obvious.
Grading
| Category | % | Collaboration allowed? | AI? | Notes |
| History Reflections | 10% | No | Not allowed | Due by midnight the day before. |
| POGIL Activities | 20% | Yes | As specified | You must be in class to get credit for these, except in cases of excused absence. |
| Individual Labs | 30% | No | As specified | Due by midnight on the day due. |
| Quizzes | 10% | No | Not allowed | A short quiz (5-10 minutes) at the beginning of each class. The quiz opens 10 minutes before class, and you are encouraged to finish the quiz prior to class starting. If you are late, you will miss the quiz. You cannot make up quizzes, but the lowest 8 quiz scores will be dropped. Each quiz will include questions on the content of the reading assignment for that day, and possibly from the previous class. |
| Final Exam | 30% | No | Not allowed | In-class, 3 hours long |
| TOTAL | 100% |
Programming Pretest and Post-test
Students will complete a programming pretest near the beginning of the semester and a corresponding post-test near the end. These assessments focus on programming understanding rather than AI use and will help us refine the course materials. The pretest is diagnostic and does not assume prior programming experience.
Late Policy
There is no make-up for quizzes, period. As a general rule, no assignment will be accepted late, with a single exception. Each student may request a free, one-time 24-hour extension during the semester on a lab assignment. The request must be made via email before the initial deadline.
Schedule
| Date | Topics | Reading | Notes/Activities | Slides/Documents | Assignments Due |
|---|---|---|---|---|---|
| Fri, Aug 28 | Introduction to Computer Science and course, Introduction to POGIL Text Book. | POGIL Role Wheel POGIL Roles POGILQualityIndicators POGIL Introduction Will AI take our computing jobs? | 1. COMP 118 – Intro CS 2026 Signup for Services | Create Accounts: colearn in-class colearn labs | |
| Wed, Sept 2 | Programs, languages, simple programming Introduction to algorithms History Assignments First Python Program | Python Chapter 1 | Quiz 1 – The Way of the Program A few demos – COMP POGIL Introduction Python | 2. Intro to Python | 00 – Student Survey |
| Fri, Sept 4 | Input and Variables Variables, data types, names, keywords, statements and expressions, operators and operands | Python 2.1-2.7 | Quiz 2 POGIL Input and Operations | 3. Inputs and Variables | 1930s (Comp History) – Due Thursday Midnight |
| Wed, Sept 9 | Python Work Algorithms Formatting Data | Python 2.8-2.11 | Quiz 3 POGIL – Algorithms and Formatting | 4. Algorithms and Formatting | |
| Fri, Sept 11 | Decision Making in Python | Python 3.1-3.6, 7.1-7.3 | Quiz 4 POGIL – Boolean Expressions Code Examples Examples Operator Precedence | 5. Booleans | Lab 0 due 9/14 1940s(Comp History) |
| Wed, Sept 16 | Selection in Python | Python 7.4-7.5 f-Strings Review | Quiz 5 POGIL – If then else | 6. Selection in Python Selection | |
| Fri, Sept 18 | Looping in Python. (Ignore xrange(). It does not exist in Python 3) | Loops Loop Animation | Quiz 6 POGIL – While Loops | 7. Computer Loops | 1950s(Comp Hist) |
| Wed, Sept 23 | For Loops Nested Selection, Strings | Python 7.6-7.7, 9.1-9.9 Loop Demo 1 Nested Loop Demo | Quiz 7 POGIL – FOR and Nesting Review Code More fun: Computing Loan Payoff (coLearn-AI) | 8. Nested Selection For Loops Nested If | Lab 1 Digital Rivers |
| Fri, Sept 25 | Lab review | 9. Review Review notebook (You will need to make a copy of this notebook.) | 1960s | ||
| Wed, Sept 30 | Python Turtle Graphics | Python 4.1-4.6 | Quiz 9 POGIL – Leonardo Da-turtle Turtle Example | Slides Turtle Guide Turtles | |
| Fri, Oct 2 | Built in and Void Functions | Python 5.1-5.4, Chapter 6.1-6.5 | Quiz 10 POGIL – Functions Galore | Slides Functions Strings | 1970s |
| Wed, Oct 7 | Functions, local variables, parameters | Python 6.6-6.10, 7.8 | Quiz 11 POGIL Functions with parameters | Slides Variable Scope | Lab 2 – Bouncing Balls due 10/9 |
| Wed, Oct 14 | Lists | Python 10.1-10.8, 10.17-10.19 | Quiz 12 POGIL Lists | Slides Lists List Functions | |
| Fri, Oct 16 | Nested Loops, Strings | Python 8.1-8.3 9.10-9.19 | Quiz 13 POGIL Nested Loops | Slides Nested Loops | 1980s |
| Wed, Oct 21 | Reading and Writing Files | Python 11.1-11.7 | Quiz 14 POGIL – Working with Files Emily Dickinson Experiment | Slides Reading Files | |
| Fri, Oct 23 | Dictionary | Python 10.24, 12.1-12.3 | Quiz 15 POGIL Dictionary More Emily Dickinson Dictionary Tutorial and Examples | Slides Dictionaries | 1990-1994 |
| Wed, Oct 28 | Recursion | Python 16.1-16.3, 16.5-16.6 | Quiz 16 POGIL – Recursion | Slides Classes Tutorial Employee Activity | Lab 3 – Word Games due 10/28 Set up github account |
| Fri, Oct 30 | Python Classes, IDE and Introduction to Github | Python 17.1-17.9 Set up github account Download Thonny | POGIL – Github | — | 1994-1999 |
| Wed, Nov 4 | IDE and Github | Sign up for the C++ textbook at runestone: kenyoncollege_cpp4py-v2_fall26 | POGIL – DIY Classes | — | |
| Fri, Nov 6 | Introduction to C++, First program | CPP Chapter 1 | Quiz 17 C++ Intro | Slides | 2000s Lab 4 – Tomo-py-chi Sharing Code due 11/9 |
| Wed, Nov 11 | C++ Data types, control structures | CPP Chapter 2 | Quiz 18 C++ POGIL Intro C++ Cast | Slides | |
| Fri, Nov 13 | C++ Strings, Arrays, Vectors | CPP Chapter 3 | Quiz 19 C++ POGIL Vectors and Arrays | Slides C++ Arrays vs Vectors C++ Vectors | 2010s |
| Wed, Nov 18 | C++ Functions | CPP Chapter 4 | Quiz 20 C++ POGIL Functions Type Conversion | Slides C++ Functions | |
| Fri, Nov 20 | C++ Files | CPP 6.1-6.6 | Quiz 21 Choose your advanture… POGIL C++ Files Emily Dickinson Count Emily Dickinson Search Baby Names | Slides C++ Reading and Writing Files | Women in Computing – Computer History Reflection Lab 5 – Digital Rivers in C++ due 11/20 |
| Wed, Dec 2 | C++ Classes | C++ Classes Reading C++ Classes Tutorial | Quiz 22 POGIL C++ Classes Account Class | Slides C++ Class Intro | |
| Fri, Dec 4 | C++ Vectors and Pairs | C++ STL C++ Vectors C++ Pairs C++ Sort Function C++ Vector Erasing Elements | Quiz 23 POGIL C++ Vectors and Pairs Example:Naughty or Nice? Random Numbers in C++ | Slides Example using Vectors | Lab 6 – Word Games in C++ due 12/4 |
| Wed, Dec 9 | C++ STL Map | STL Map Tutorial STL Map Demo | Quiz 27 POGIL C++ STL MAP | Slides Several Map Examples Word Count C++ Map Example | |
| Fri, Dec 11 | Websites, final exam review | — | Creating your own website, coding portfolio | — | — |
| Final Exam | Final Exam – Study Guide | Official date and time to be announced | Location: The regular classroom | — | — |
Non-Discrimination, Civil Rights and Title IX Compliance
Kenyon College does not discriminate in its educational programs and activities on the basis of race, color, national origin, ancestry, sex, gender, gender identity, gender expression, sexual orientation, disability, age, religion, medical condition, veteran status, marital status, genetic information, or any other characteristic protected by institutional policy or state, local, or federal law. The requirement of non-discrimination in educational programs and activities extends to employment and admission. As a faculty member, I am deeply invested in the well-being of each student I teach. I am here to assist you with your work in this course. If you come to me with non-course-related concerns, I will do my best to help. However, it is important for you to know that all faculty, are considered Mandated Reporters of any incidents of harassment, discrimination, and intimate partner violence and stalking. Meaning, I must report any such discussion to the Civil Rights/Title IX coordinator. I cannot keep information involving sexual harassment, sexual misconduct, interpersonal violence, or any other form of harassment or discrimination based on a protected characteristic, confidential. The Health and Counseling Center, the College chaplains, and the staff at New Directions Domestic Abuse Shelter &
Rape Crisis Center are confidential resources.
For further information, please refer to the following Kenyon College policies:
Sexual Misconduct & Harassment: Title IX, VAWA, Title VII:
https://www.kenyon.edu/directories/offices-services/ocr/title-ix-vawa/kenyon-policies/title-ix-policy/
Discrimination & Discriminatory Harassment Policy (non sex or gender):
https://www.kenyon.edu/directories/offices-services/ocr/discrimination/
ADA & Section 504:
https://www.kenyon.edu/directories/offices-services/ocr/discrimination/504-ada-grievance/student-grievance-procedure-resolving-complaints-under-ada-section-504/
Accessibility and Accommodations:
Students who anticipate they may need accommodations in this course because of the impact of a learning, physical, or psychological disability are encouraged to meet with me privately early in the semester to discuss their concerns. In addition, students must contact Student Accessibility and Support Services (SASS) (740-427-5041 or sass@kenyon.edu), as soon as possible, to verify their eligibility for reasonable academic accommodations. Though I am happy to help you in any way I can, I cannot make any special accommodations without proper authorization from the SASS staff. Except in extraordinary circumstances (and at the very start of the course), accommodations must be certified and discussed with me at least one week before they are to take effect.
