COMP 118.0x Introduction to Programming Spring 2025

Department of Mathematics and Statistics

Spring 2025

Noah Aydin

  • Section 1: Hayes 215, Tue & Thu 8:10-9:30 am
  • Section 2: Hayes 215 Tue & Thu 9:30-11 am
  • Office hours:
    • Mon, Wed, Fri: 10-11:45 am, (Hayes 319).
    • Other times by appointment. See my weekly schedule and send me an email.
    •  The Zoom link to form groups

Tutoring Schedule (MSSC)

  • Tue: 7-9 Rose, 9-10 Godwin
  • Thu: 7-9 Trang, 9-10 Godwin
  • Sun: 7-9 Rose, 8-10 Trang

Course Overview

This course presents 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 essays weekly

Course Objectives

  • Learn basic principles and structures of computer programming.
  • Provide an understanding of the role computation can play in solving problems in various disciplines.
  • Become proficient in the Python and C++ programming languages.
  • Help students feel confident of their ability to write small programs that allow them to accomplish useful goals.
  • Position students so that they can compete for research projects and excel in subjects with programming components.

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 (KenyonComp118Sp25) This is an interactive book. You must register, and complete the exercises in the assigned readings. Follow this link and register using your Kenyon email. Use “KenyonComp118Sp25” as the course name. You will read the text as assigned in the calendar below, and I encourage you to do the included problems in the text.  I will give you a grade 
  • C++ for Python Programmers (KenyonComp118Sp25CPP) This is an interactive book. You must register, and complete the exercises in the assigned readings. Follow this link and register using your Kenyon email. Use “KenyonComp118Sp25CPP” as the course name. As in the Python book, you will be assigned readings.
  • onlineGDB This is an the environment for programming Python and C++. You can complete your assignments here Link. You should go to the site and create an account using your Kenyon College email address.
  • CodeLab This is an online platform that gives you problems to solve.  You will be assigned problems on a regular basis.  You can keep trying until you get the problem right with no penalty. You must sign up with your Kenyon email, then click the “+ Add A Course” button.  You then add an access code.  The two access codes for this class are: “KENY-32182-XRGH-63” (Python) and “KENY-32183-PAKH-63” (C++).
  • Trinket.io This is an IDE for programming in Python with graphics.  You should sign up before Lab 3 with your Kenyon email.

Alternate Python IDEs

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:

  1. 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.
  2. 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). 
    • Programming problem solving. These small guided exercises, based on the CodeLab online learning platform, provide small problems for the learners to gain experience programming with, and are automatically checked by the environment to give immediate feedback to the learner. There will be multiple sets in most weeks, with relatively more assignments in the first haf of the semester.
    • 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 essays – 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.
  3. 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.

Group generator: https://www.randomlists.com/team-generator

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, 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. After one unexcused absence, 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 onlineGDB. This allows you to program anywhere with any device (including smartphones and tablets!), while maintaining access to all your current and previous work.

You can also install Anaconda Python and an IDE (Integrated Development Environment) call Spyder by following these instructions: PythonInstall.

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.

Each activity is a link to a Google Doc. You must be logged into your Kenyon account to access. One member of the team will open the link, and make a copy in the same directory with your team name (color). The team will then work together to document the process on that document.

Useful POGIL links

POGIL ROLES:

  • Spokesperson/Facilitator
  • Process Analyst
  • Quality Control

Teams will normally have 3 people. On teams of less than 3 students some will have 2 roles

POGIL Process Analyst Report – The Process Analyst is encouraged to fill this out to give feedback to the instructor.

POGIL Feedback – complete this after every activity

POGIL Process Skills

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 Assignments: Once a week you will turn in a brief essay on some computer history fact from the Computer History Museum ( Timeline) (or other computer history source). 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 the computer history timeline, and for each assignment explore the requested years until you find something interesting. Then write up a 200-300 word essay about what you found, what you found compelling, and why you think it is significant. Write the essay 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 CodeLab exercises, Readings required for daily quizzes, History essays, and Labs.  Tools for More Effective Studying.

Use of Generative AI as a Tool

We’re entering a whole new world, and it may well change how we learn all sorts of things, from writing to languages to mathematics. But for right now, I believe that there is value in learning to write code without the help of generative AI.

I am aware of the fact that there may well not be a single task  assigned in this course that a generative AI could not do better than a beginning programmer. It’s also true that Google Translate can probably handle every phrase you’d learn to speak in the first semester of learning Arabic. But if your goal is to learn to speak Arabic, you may think you’re learning something from feeding everything you want to say into Google Translate and then repeating it, but you’re not learning to speak Arabic.

I will make the assumption that you are taking this course because you believe that learning some amount of programming will be useful to you at some point, or that you’ve got a major or advisor who believe that. If you are going to learn to program, you need to learn to do it first without the training wheels. Later, when you know what you’re doing, you can let generative AI produce a first draft for you that you can evaluate and revise. But not as a beginner. That is just counterproductive. Therefore:

ANY USE OF GENERATIVE AI IS STRICTLY PROHIBITED in  any of the assignments in THIS COURSE.

You should abide by this rule for two reasons: 1) you’re undercutting your own learning if you use AI to “help” you with coding, and 2) it’s the decent and respectful thing to do, and I’d like to believe that you’re decent and respectful people. If you consider the grade in this class to be more important than decency and respect, you’ve got bigger problems than whether or not you can code, and I’m sorry for you. Also, keep in mind that the final exam will be an in-class, paper and pencil exam.

Grading

Category % Collaboration allowed? Notes
History Essays 5% No Due by midnight the day before.
POGIL Activities 10% Yes You must be in class to get credit for these, except in cases of excused absence.
Individual Labs 35% No Due by midnight on the day due. 
Textbook reading 5% No Due by class on the day due.  You must read the text and click on “Mark as Completed” on each page to get credit.  You are encouraged to complete the problems in the text to learn, but not required to do them all. 
CodeLab 10% No These are problems in the online learning tool CodeLab. Due by noon on the day due. You will get 100% for completing 80% of the problems assigned.
Quizzes 20% No A quiz 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. You must finish the quiz in the first 5-10 minutes of the class. You cannot make up quizzes, but the lowest 7 quiz scores will be dropped. Each quiz will include questions from the previous class as well as on the content of the reading assignment for that day. 
Final Exam 15% No In-class, 3 hours long
TOTAL 100%    

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 

Create groups: Section 1, Section 2 

BREAKSPRING BREAKSPRING BREAKSPRING BREAKSPRING BREAKSPRING BREAK 
Date Topics Reading Notes/Activities Slides &
Video
Assignments Due
Jan 14 Introduction to Computer Science and course, Introduction to POGIL
Text Book.

Survey and Syllabus Quiz

POGIL Role Wheel
POGIL Roles
POGILQualityIndicators
POGIL Process Analyst Report
POGIL Activity 1

ClassNorms

FirstDay Slides1

FirstDay Slides2

Create Accounts:
OnlineTextbook

onlineGDB

Jan 16 Programs, languages, simple programming
Introduction to algorithms
History Assignments First Python Program
Python Chapter 1 Hello World
POGIL Introduction Python
Slides  
Jan 21 Input and Variables
Variables, data types, names, keywords, statements and expressions, operators and operands
Python 2.1-2.7
POGIL Input and Variables

POGIL – Arithmetic Operations and Assignment Statements

Slides

1930s (Comp History)
1930s(MoodleLink)

Jan 23 Python Work
Algorithms
Formatting Data 
Python  2.8-2.11 POGIL – Formatting Output

Slides

Formatting Tutorial
Example

Lab 0 Candy Bars  due Jan 26

First set of CodeLab exercises due tonight

Jan 28 Decision Making in Python   Python 3.1-3.6, 7.1-7.3 POGIL – Boolean Expressions
Examples
Operator Precedence
Slides 1940s(Comp History)
Jan 30 Selection in Python  Python 7.4-7.5

POGIL – If then else

Survey

Slides

Selection

CodeLab Set2
Feb 4 Looping in Python. (Ignore xrange(). It does not exist in Python 3) Loops


POGIL – While Loops 

Triangle
NumberGuess
Circle

Slides

While Loops

1950s(Comp Hist)
Feb 6 For Loops
Nested Selection, Strings
Python 7.6-7.7, 9.1-9.9  POGIL – FOR Loops
POGIL Nested If-else statements

More fun: Computing Loan Payoff

Slides

For Loops
Nested If

CodeLab Set3

Lab 1 Digital Rivers

           
Feb 11 Python Turtle Graphics, Strings Python  4.1-4.6, 9.10-9.19

TurtleIDE
POGIL – Turtles
Turtle Example

Slides

Turtle Guide
Turtles

CodeLabSet4
1960s
Feb 13 Built in and Void Functions  Python  5.1-4, Chapter 6.1-6.5  POGIL Built-In Functions
POGIL Void Functions

Slides

Functions

CodeLabSet5
Feb 18 Functions, local variables, parameters Python  6.6-6.10, 7.8, 8.1-3 POGIL Functions Returning Values

Variable Scope

Strings

Slides

1970s
Feb 20 Nested Loops, Strings

Python 8.1-8.3

POGIL Nested Loops

Get started with Lab3

Nested Loops

Slides

Lab 2 Student Grades 

(due 2/23)

Feb 25 Reading Files Python  11.1-11.5 POGIL Reading Files
Emily Dickinson Experiment

Reading Files

Slides

1980s
Feb 27 Writing Files Python 11.6-11.7

POGIL Writing Files
POGIL Baby Names                                Midsemester Reflection

File Write Example

Slides

CodeLabSet6
Mar 18 Lists, Passing lists Python 10.1-10.5
POGIL – Lists

More Emily Dickinson

Slides

Lists
List Functions
Video

Lab 3 
1990-94

Mar 20 Lists and Strings, List Comprehension Python 10.6-10.20
POGIL – More Lists and Strings
start on Lab 4

Slides

List Comprehension

CodeLabSet7 (due Mar 23)

Mar 25 Dictionary Python  12.1-12.5 POGIL Dictionary
Dictionary Examples
Exercises
Slides
Dictionaries
 
Mar 27 Dictionary Python 12.1-12.5

Dictionary Activity

Slides
Dictionaries

CodeLabSet8 (due Mar 30)

Lab 4

Apr 1 Python Classes  Python 17.1-17.6 Special POGIL activity Slides

2000s

Apr 3 Python Classes Python 17.7-17.9 Object Activity
POGIL Classes
Model 1 Code
Model 2 Code
Model 3 Code

Slides

Classes Tutorial 
Employee Activity
2D Array Example

Lab 5
Apr 8 Introduction to C++, First program Sign up for the C++ textbook at runestone C++ Intro Slides
2010s (the last one!)

Apr 10

C++ Data types, control structures CPP Chapter 1 C++ POGIL Intro
C++ Cast
Slides Lab 6 (due Apr 13)
Apr 15 C++ Strings, Arrays, Vectors CPP Chapters 2, 3

C++ POGIL Vectors and Arrays

Slides
C++ Arrays vs Vectors
C++ Vectors
 
Apr 17 C++ Functions CPP  Chp 4 C++ POGIL Functions
Type Conversion
Slides
C++ Functions
Lab 7 (due Apr 20)
Apr 22 C++ Files  CPP 6.1-6.6 

POGIL C++ Files
Emily Dickinson Count
Emily Dickinson Search
Baby Names
Example 1
Example 2
Example 3
Example 4

Slides
C++ Reading and Writing Files
 
Apr 24 C++ Classes C++ Classes Reading
C++ Classes Tutorial

POGIL C++ Classes
Account Class
Account Class Example

Slides
C++ Class Intro
 
Apr 29 C++ STL Vectors and Pairs

C++ Vectors
C++ Pairs
C++ Sort Function
C++ Vector Erasing Elements

POGIL C++ Vectors and Pairs Example:Naughty or Nice?
Random Numbers in C++

Slides
Example using Vectors

Lab 8

May 1

C++ STL Map C++ STL POGIL C++ STL MAP  Slides
Several Map Examples
Word Count C++ Map Example
 
 

Final Exam

  Section 1: Thu, May 8 at 8:30 am   Section 2: Fri, May 9 at 8:30 am (Hayes 109)

View Page

Non Discrimination Statement

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.

All employees, including faculty, are considered Responsible Employees and must notify the College’s Civil Rights & Title IX Coordinator with any relevant information.

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.

Statement on Title IX

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.

All employees, including faculty, are considered Responsible Employees and must notify the College’s Civil Rights & Title IX Coordinator with any relevant information.

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/

Tutoring (MSSC)

[Details to come with hours and location]

View Page

Scroll to Top