SCMP 118.0x Introduction to Programming Spring 22

Department of Mathematics and Statistics

Spring 2022

Noah Aydin, Hayes 319, 740-427-5674

  • Section 0: Hayes 203, Tuesday, Thursday 2:40-4:00pm
  • Student/Office hours: Mon and Wed: 1:10-2pm; Tue, Thu, Fri: 9:10-10am, (in-person or virtual) and by appointment. Zoom Link See Prof Aydin’s weekly schedule to make an appt outside regular Student Hours.

James Skon, Hayes 310, 740-427-5369

  • Section 1: Hayes 311, Tuesday, Thursday 1:10-2:30
  • Section 2: Hayes 311 Tuesday, Thursday 2:40-4:00, 
  • Office hours: (Virtual only) 1-2 MWF, (In person or virtual) 10-12 TR, Meet link,
    and other hours by appointment (send email request)

Tutoring (MSSC)

Visit MSSC website. Schedule and zoom information link.Tutors:

  • Ulysses Yarber – yarber1@kenyon.edu
  • Sunho Kim – kim8@kenyon.edu
  • Ben Gruodis-Gimbel – gruodisgimbel1@kenyon.edu

  Sunday Tuesday Thursday
7:00 Ben Sunho Sunho
7:30 Ben Sunho Sunho
8:00 Ben Sunho Ulysses
8:30 Ben Sunho Ulysses
9:00 Ben Ulysses Ulysses
9:30 Ben Ulysses Ulysses

Alternate python programming environment: https://www.programiz.com/python-programming/online-compiler/
With Turtle Graphics: https://trinket.io/turtle

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 solvingDemos
  • An introduction to programming with PythonDemos
  • An introduction to C++
  • Two daily classes Tuesday and Thursday.
  • POGIL group activities during most classes
  • 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

  1. How To Think Like A Computer Scientist: Interactive edition (Scmp118S22Skon or Scmp118S22Aydin) (Python): link(Free online text). You need to register for a free account, and join the class.
  2. C++ for Python Programmers (Kenyon) (C++). link
  3. Think Python 3 (TP) – This is an optional book, free to download at link. You can use it as an additional reference.

Texts 1 & 2 must be access online through a registered account on https://runestone.academy/. Create an account using your name and kenyon email address, and then register for BOTH texts. This will require signing up with one, then adding the second.

You can add the C++ for Python Programmers (Scmp118F22SkonCPP or Scmp118S22AydinCPP) book to your account by logging in to https://runestone.academy/runestone/default/courses, and then clicking on the “Enroll in a course” button on the bottom. Put in “SCMP118S22SkonCPP or Scmp118S22AydinCPP” (depending on section) for the course name, and hit “Apply changes”. We will do this in the last few weeks of the semester.

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.
    • Programming problem solving. These small guided exercises, based on the repl.it online programming 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.
    • Homework Assignments. These activities, based on readings, give each student familiarity with important course concepts outside of class.
    • History essays – these small writing assignments, about one a week, give each learner the change to explore computer science in its larger historical context. These are shared in class on they day they are due.
  3. Instructional Presentation and discussion. Occasionally the instructor will give a presentation related to the course topics. These will normally include discussion, and sometime be interleaved with in-class hands on programming activities.
  4. Pair Programming: This course may at times use a methodology called pair programming to enhance learning. This collaborative process is structured to improve learning as well as outcomes.

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 will normally be required 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 (n-1)*1% where n is the number of unexcused 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 repl.it. 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. Contact the instructor if you are interested in installing C++ programming environment.

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 provides 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 three 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

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 participaite 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 (Scmp118S22Aydin or Scmp118S22Skon) 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 “Scmp118S22Aydin or Scmp118S22Skon” (depending on sections) as the course name. You will be assigned problems in this book. You should complete all the work in assigned sections.
  • C++ for Python Programmers (Scmp118S22AydinCPP or SCMP118S22SkonCPP) 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 Scmp118S22AydinCPP or SCMP118S22SkonCPP as the course name, depending on your section. You will be assigned problems in this book. You should complete all the work in assigned sections.
  • Replit – This is an environment for learning Python and C++ that is hosted by replit.com. Regular Python and C++ exercises will be assigned as graded homework from this environment. You will receive as email invitation to join the class. You must sign up for the course, using your Kenyon Email address. For your assignments here you need to merely complete the problems and submit them by the due date.
    Note on notificationsEvery time we assign a problem you will get a notification from repl.it. (And there will be well over 100) We can’t stop the notifications, but you can. Just log into repl.it. Then click on your username in the upper right, and select account. If you scroll down to the bottom, you can open up the “Email Settings” section, and un-select the checkbox for “Receive email notifications”.

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.” 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 assignments that are designated as “group work” 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.

Academic Honesty and use of Replit: By default all programs you create on replit are public. That means anyone who can guess your username can then look at your code. This is cheating, and is not allowed for any non-collaborative assignments. You should ALWAYS set your programs to “Private” so that no one else can see them. If you leave your code public, and someone finds it and uses it, it will be flagged as a possible infraction, and you may find yourself in the difficult situation of having to explain what happened to the AIB. So please keep your work private!

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 oraly describe what they found in 2 minutes at the beginning of class. I will ask for volunteers, but will cycle through everyone before I repeat anyone. 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)., but they will be accepted without penalty until noon on the class when they will be discussed. Late submissions will not be accepted on these assignments.

Grading

Category % Collaboration allowed? Notes
History Essays 5% No Due by midnight the day before, accepted without penalty until noon. Not accepted later than noon.
POGIL Activities 10% Yes  
Individual Labs 35% No Due by midnight on the day due. 5% penalty for up to 12 hours late. One assignment may be up to 24 hours late with no penalty with instructor notification.
Homework Assignments 5% No Due by class on the day due. One assignment may be up to 24 hours late with no penalty with instructor notification. This includes questions in the interactive text ( How to think like a Computer Scientist: Interactive edition) and the assigned exercises in repl.it. Also includes questions from the other texts.
repl.it Problems 15% No These are problems within the repl.it course. These are autograded by the system, and you have as many tries as you need. Due by midnight on the day due.
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. Each quiz will include questions from the previous class as well as on the content of the reading assignment for that day.
Final Exam 10% No Taken in class during the final exam period. 2 hours in length.
TOTAL 100%    

Schedule 

Create groups: Section 1, Section 2

Date Topics Reading Notes/Activities Slides &
Video
Assignments Due
Jan 18 Introduction to Computer Science and course, Introduction to POGIL
Text Book.
  Student Information Form
POGIL Role Wheel
POGIL Roles
POGILQualityIndicators
POGIL Process Analyst Report
POGIL Activity 1
POGIL Feedback Form

Introduction 
SkonSlides 
AydinSlides
Recording Sp21

Create Accounts:
How to think like a Computer Scientist
Jan  20 Programs, languages, simple programming
Introduction to algorithms
History Assignments First Python Program
Python Chapter 1 Quiz 1
POGIL Introduction Python
repl.it – link
Section 0 slides
Section 2 slides
Create Accounts:Repl.it
Recording Sp21

 

Student Information Form
Jan 25 Input and Variables
Variables, data types, names, keywords, statements and expressions, operators and operands
Python Chapter 2.1-2.7 Quiz 2
POGIL Input and Variables

POGIL – Arithmetic Operations and Assignment Statements
Section0 Slides 1930s (Comp History)
1930s(MoodleLink)
Jan 27 Python Work
Algorithms
Formatting Data
Python Chapter 2.8-2.11 Quiz 3
POGIL – Formatting Output
Lab 0 -Fun with candy bars
Section0 Slides
Section1&2 Slides.
Formatting Tutorial
F2020Video
 
Feb 1 Decision Making in Python   Python Chapter 3.1-3.6, 7.1-7.3 Quiz 4
POGIL – Boolean Expressions

 

Section0 Slides
Section1&2 Slides

Python Ch 2.13
Lab 0 – Fun with Candy Bars
1940s (Moodle Link)
1940s(Comp History)
HW1 – Repl.it:1.1-1.7
Feb 3 Selection in Python  Python Chapter 7.4-7.5 Quiz 5
POGIL – If then else
Section 1 Slides
Section 2 Slides
Selection
Video
HW2 – Repl.it:2.1-2.7
Feb 8 Looping in Python. (Ignore xrange(). It does not exist in Python 3) Loops Quiz 6
POGIL – While Loops

While Loops
S2021Video
F2020Video
Section 1&2 Slides.
Section 0 Slides

1950s Moodle Link
1950s(Comp Hist)

 

Feb 10 For Loops
Nested Selection, Strings
Python Chapter 7.6-7.7, 9.1-9.9  Quiz 7
POGIL – FOR Loops
POGIL Nested If-else statements

More fun: Computing Loan Payoff
For Loops
Nested If
Section 1&2 Slides.
Section 0 Slides
F2020Video
HW 3 – Repl.it:2.8-2.C
           
Feb 15 Python Turtle Graphics, Strings Python Chapter 4.1-4.6, 9.10-9.19

Quiz 8
POGIL – Turtles
Hands On with Turtles

Turtle Guide
Turtles
Choose Random Color 

Section1&2 Slides.
Section 0 Slides

Lab 1 – Payroll
HW4 – Repl.it 3.2-3.9
1960s
Feb 17 Built in and Void Functions  Python Chapter 5.1-4, Chapter 6.1-6.5  Quiz 9
POGIL Built-In Functions
POGIL Void Functions
Functions
Section 1&2 Slides.
Section 0 Slides
HW5 – Repl.it 5.1-5.7, 3.A-3.O
Feb 22 Functions, local variables, parameters Python Chapter 6.6-6.10, 7.8 Quiz 10
POGIL Functions Returning Values
Variable Scope
Section 1&2 Slides.
Section 0 Slides
Video
HW6 – Repl.it 5.8-5.C
Python 4.11 Ex 1,2,5,6,9
1970s
Feb 24 Nested Loops, Strings Python Chapter 8.1-3

 

Quiz 11
POGIL Nested Loops

Start Lab 3 

Nested Loops
Strings
Section 1&2 Slides.
Section 0 Slides

Lab 2 – Turtle Drawing
Python Ch 7.10 Ex 1,2,3,6,7,8,9
HW7 – Repl.it 4.1-4.A
Mar 1 Reading Files Python  Chapter 11.1-11.5 Quiz 12
POGIL Reading Files
Emily Dickinson Experiment

Reading Files

Section1&2 Slides
Section 0 Slides

Python Ch 6.13 Ex 1,2,3,4,5,6,7,9,10
1980s
Mar 3 Writing Files Python Chapter 11.6.11.7 Quiz 13
POGIL Writing Files
Baby Names
Writing Files
Section 0 Slides
Section 1&2 Slides.
Lab 3 – Bouncing Balls
Python Ch 5.7: 16, 17, 18.
HW8 – Repl.it 6.1-6.A
Mar 22 Lists, Passing lists Python Chapter 10.1-10.5 Quiz 14
POGIL – Lists

More Emily Dickinson
Lists
List Functions
Section 0 Slides
Section 1&2 Slides.
Video
1990-94
Python Ch 9 Ex 1-12
Mar 24 Lists and Strings, List Comprehension Python Chapter 10.6-10.20 Quiz 15
POGIL – More Lists and Strings
Mid-semester reflection and evaluation
List Comprehension
Section 0 Slides
Section 1&2 Slides
Python Ch 11.9 Ex 1-5
HW9 – Repl.it 6.B-6.G
Mar 29 Dictionary Python Chapter 12.1-12.5 Quiz 16
POGIL Dictionary
Exercises

Section 0 Slides
Section 1&2 Slides.
Dictionaries

Lab 4 Word Game
1995-99
Mar 31 Dictionary Python Chapter 12.1-12.5

Quiz 17
Dictionary Activity

Dictionaries
Section 0 Slides
Section 1 & 2 Slides.
F2021Video
F2020Video
Python Ch 10 EX 1,2,3
HW10 – Repl.it 7.1-7.D
Apr 5 Python Classes  Python Chapter 17.1-17.6 Quiz 18  Section 0 Slides
Section 1&2 Slides.
F2021Video
F2020Video
2000s
Apr 7 Python Classes Python Chapter 17.7-17.9 Quiz 19
POGIL Classes
Model 1 Code
Model 2 Code
Model 3 Code
Section 0 Slides
Section 1&2 Slides.
Lab 5 Word Analysis
Python Ch 10 Ex 4,5,6,7,8,11,12
Apr 12 Python Classes, OOP, and Inheritance Sign up for the C++ textbook at runestone

Quiz 20

POGIL on Inheritance

Classes Example Section 0 Slides
Section 1&2 Slides.
ClassVideoPart1
ClassVideoPart2
2Dimensional
Array Code
Class Exercise Code

 

Python Ch 12 Ex 1,2,3,4,5
2010s
Apr 14 Introduction to C++, First program CPP Chapter 1 Quiz 21 C++ Intro
S2021Video
F2020Video
Section 0 Slides
Section 1&2 Slides.
HW12- Repl.it A.1-A.8
HW11- Repl.it 8.1-8.7
CPP Ch 1.6, 1.8
Apr 19 C++ Data types, control structures CPP Chapter 2, 3

Quiz 22
C++ POGIL Intro

Section0 Slides
Section 1&2 Slides.
CPP Ch 2.7, 2.8
HW13 – Repl.it CPP 1-7
Apr 21 C++ Strings, Arrays, Vectors CPP  5.1-5.4 Quiz 23
C++ POGIL Vectors and Arrays

Section 0 Slides
Section 1&2 Slides.

Lab 6 – Word Classes
CPP Ch 3.4,3.7,4.7 Matching
HW14 – Repl.it CPP 8-17
Apr 26 C++ Functions CPP Chapter 4 Quiz 24
C++ POGIL Functions
Section 0 Slides Section 1&2 Slides Lab 7 – Payroll
HW15 – Repl.it CPP 18-21
Apr 28 C++ Files CPP 6.1-6.6

Quiz 25
POGIL C++ Files
Emily Dickinson Count
Emily Dickinson Search
Baby Names

Section 0 Slides
Section 1&2 Slides.
 
May 3 C++ Classes

C++ Classes Reading
C++ Classes Tutorial

Quiz 26
POGIL C++ Classes
.
Section 0 Slides
Section 1&2 Slides.
F2020Video
HW16 – Repl.it CPP 22-26
May 5  C++ STL   Quiz 27
POGIL C++ STL
Random Numbers in C++
Section 0 Slides
Section 1&2 Slides.
HW17 – Repl.it CPP 27-35
LAB 8 – Word Game
 

Final Exam
Section 0: Thu May 12, 6:30 pm 
Section 1: Mon May 9, 6:30 pm 
Section 2: Thu May 12, 6:30 pm

  Final Exam    

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/

Disabilities

If you have any disability and therefore may have need for some type of accommodation in order to participate fully in this class, please feel free to discuss your concerns in private with Erin Salva, director of Student Accessibility and Support Services (SASS). (phone: (740) 427-5453).

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)

Visit MSSC website. Zoom Link for MSSC. Meeting ID: 812 2179 7199 Passcode: mssckenyon

 

Scroll to Top