COMP 151: Intro to Programming, Spring 2022

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class. Individual exceptions to the policies and schedule are granted only in cases of true emergency. Please make arrangements with me if an emergency arises.




Introduction to Programming teaches basic programming skills that are applicable to a variety of disciplines and also acts as a bridge to continued studies in computer science. Students will work with the Python programming language in order to solve basic problems. By the end of the course students will be able to read and develop computer programs utilizing the following programming concepts: basic data types and encoding, variables and scope, array and list data structures, if statements and conditional execution, loops and iteration, functions, and object types.


  1. Learn what computer science is
  2. Get excited about programming
  3. Develop problem-solving skills
  4. Widen your view about the disciplines computer science is important to
  5. Learn the basics of the Python programming language
  6. Express solutions to problems in the form of a program


Our textbook is Foundations of Python Programming. It is completely online and free, although I highly suggest making a small donation if you can afford it – providing the interactive exercises requires money to host the servers that run the code!


There are several apps/accounts we will be using for this course.

  1. An account at Runestone Academy. Your account will be automatically created and you will be emailed your account information at the start of the semester.

  2. During class I will often ask interactive questions using the Socrative app. Students will need to create a free student account at While you can participate in Socrative sessions via a web browser, I recommend using the free iOS or Android apps available here.

  3. Though most assignments will use the interactive textbook, I might give some assignments/projects via Replit, an online development service. Students will receive, complete, and submit assignments all via the website. If/when Replit is used, you will receive instructions on how to create an account and join our course.


Assignments and Workload

The weekly workload for this course will vary by student and by week but should be about 12.5 hours per week on average. The following table provides a rough estimate of the distribution of time over different course components for a 16 week semester, as well as detailing the type, amount, and relative value of all assignments.

Category Amount Final Grade Weight Time/Week (Hours)
Lectures ~41 10% (Participation) 2.5
Labs 8–10 10% 3
Homework 6–8 10% 1
Exam Study - - 1
Exams 4–5 30% -
Projects 2 30% 3
Reading Assignments/Practice - 10% 2
Total     12.5

Reading Assignments: Before most classes there will be an assigned reading in the interactive textbook. Your progress on these is automatically recorded and visible to me.

Practice: In addition to the reading assignments, each week you have review practice questions to complete. These can be found by clicking 👤 > Practice on Runestone. Each week you must complete the questions on at least 3 days.

Exams: All exams are weighted equally and will take approximately the same amount of time. Exams will generally focus on material covered since the previous exam but will be in some sense cumulative due to the nature of programming. Unless stated otherwise, assume that exams will be pencil and paper and that computers will not be available during the exam period.

Projects: Two larger scale programming projects will be undertaken during the semester. These projects will be individual efforts and will require much more effort than the programs written in lab or as part of homework. Students can expect to have two weeks from the time of the project assignment to complete the project. One or more lab periods will be dedicated to work on the project. It is highly recommend that all students make ample use of the time given on these projects.

Labs: Most weeks will include an in-class lab assignment. Students will often be placed into pairs for “paired programming”, a programming practice where each member of the group takes turns typing while the other group member helps look for typos, bugs, and otherwise assists in the design of the code. Each group will submit their work at the end of the lab period regardless of the overall completeness of the assignment. The goal is to make good constructive progress on the assignment. Full credit can and will be given on unfinished work so long as it can be executed to complete some portion of the given task, shows evidence of purposeful progress, and the group made full use of the lab period.

Homework: Students will be assigned a set of homework problems, usually from the current chapter of the book. These problems are meant to guide reading, prepare the student for in-class problems, and survey the material covered by the exam. Each student will turn in their own set of solutions.


Your final grade is based on a weighted average of particular assignment categories. You can estimate your current grade based on your scores and these weights. You may always visit the instructor outside of class to discuss your current standing. Assignments and final grades use a standard grading scale shown below and will not be curved except in rare cases when deemed necessary by the instructor.

This courses uses a standard grading scale. Assignments and final grades will not be curved except in rare cases when its deemed necessary by the instructor. Percentage grades translate to letter grades as follows:

Score Grade
94–100 A
90–93 A-
88–89 B+
82–87 B
80–81 B-
78–79 C+
72–77 C
70–71 C-
68–69 D+
62–67 D
60–61 D-
0–59 F

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge*.

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge.

Lab and homework assignments are graded on a simple 3 point scale, marked with (in decreasing order) a check-plus, check, or check minus. Your final grade for these two assignment categories is then based on the respective averages.

Your participation grade is based on a variety of activities, but especially daily use of Socrative for in-class question and answer sessions. Questions will cover portions of the text that were assigned as reading and will range from simple checks to see if the reading was done to more challenging questions that follow from a close examination of the reading. For the most part, the only requirement is to provide an answer to every question and participate in the resultant discussions. On occasion, questions will be evaluated for their correctness and performance on 3 these questions will also factor into the course participation grade. Students who do the reading and start the homework as soon as possible will have very little to worry about.

While there is no strict attendance policy, the course participation grade is based in large part on engagement with socrative. Absent students cannot participate in socrative sessions. Students should avoid unexcused absences, as defined in the college-wide absence policy. Whenever possible, let the instructor know of the absence before it occurs. When unexcused absences do occur, it is the student’s responsibility to make up for the lost class time and to seek the permission of the instructor to hand-in or complete assignments that are late due to an unexcused absence.

This course is designed around the assumption that students engage in new ideas before they’re covered in class meetings. This means doing assigned reading, taking a stab at homework problems, and as a result coming to class and lab with some understand about a new idea or, just as likely, with a host of questions about something encountered in the reading and homework. Not attending class, skipping lab, and putting off work to the point that an extension is needed are signs that a student isn’t holding up their end of the bargain and is not prepared to participate in class.



The following tentative calendar should give you a feel for how work is distributed throughout the semester. Assignments and events are listed in the week they are due or when they occur. This calendar is subject to change based on the circumstances of the course.

Note: All readings should be done before the class period in which they are listed below.

Date Class Activity Reading Assignment
Wed 01/12 (Week 1) Intro and Logistics  
Fri 01/14 Misc. Exercises FOPP 1: General Intro
Mon 01/17 (Week 2) Operating, Unfolding Exercises FOPP 2.1-2.9: Types, Variables
Tue 01/18 LAB 1 A Preview of the End Goal Homework 1
Wed 01/19 String and Type Exercises FOPP 2.10-2.16: Statements, Expressions, Tracing
Fri 01/21 Debugging Exercises FOPP 3.1-3.8: Debugging
Mon 01/24 (Week 3) Modules; Intro to Turtle FOPP 4.1-4.4: Python Modules
Tue 01/25 LAB 2 Input-Compute-Output Homework 2
Wed 01/26 Turtle, OO, and for loops FOPP 5: Python Turtle
Fri 01/28 More Turtle Exercises  
Mon 01/31 (Week 4) Sequences FOPP 6.1-6.5: Sequences
Tue 02/01 LAB 3 Generating a Password (NO homework – study for exam)
Wed 02/02 (Snow day)  
Fri 02/04 Exam 1 Review  
Mon 02/07 (Week 5) Exam 1 (chapters 1–5)  
Tue 02/08 LAB 4 Random Turtle Circles Homework 3
Wed 02/09 Exam 1 Solutions  
Fri 02/11 Sequence Methods FOPP 6.6-6.9
Mon 02/14 (Week 6) More About For Loops FOPP 7.1-7.7: Iteration
Tue 02/25 LAB 5 Computing Statistics with Kiva Data Project 1: Graphing Kiva Data with Turtle
Wed 02/16 Lab 5 Solutions/Review  
Fri 02/18 Functions I FOPP 8.1 (Conditionals) AND 12.1-12.5 (Functions)
Mon 02/21 (Week 7) Conditionals I FOPP 8.2-8.7: Conditionals
Tue 02/22 LAB (Reserved for Project 1)  
Wed 02/23 Conditionals II 8.8-8.11: More Conditionals
Fri 02/25 Student Activity Demo  
Mon 02/28 (Week 8) Review for Exam 2  
Tue 03/01 LAB (Reserved for Project 1)  
Wed 03/02 Exam 2  
(Fri 03/04) (Exam Day for 1st half-semester courses)  
(03/07 – 03/11) (Spring Break)  
Mon 03/14 (Week 9) Exam 2 Solutions; Review  
Tue 03/15 LAB Project 1  
Wed 03/16 Functions II 12.6-12.15: More Functions (R13)
Fri 03/18 Transforming Sequences FOPP 9.1-9.7: Transforming Sequences (R14)
Mon 03/21 (Week 10) Transforming Sequences II FOPP 9.8-9.14: Sequence Accumulator Patterns (R15)
Tue 03/22 LAB 6 Substitution Ciphers Homework 4
Wed 03/23 Transforming Sequences  
Fri 03/25 Nested Iteration FOPP 7.8-7.12: Nested Iteration (R16)
Mon 03/28 (Week 11) Homework Presentations; More Iteration FOPP 14: More About Iteration (R17)
Tue 03/29 LAB 7 Image Processing Homework 5
Wed 03/30 Advanced Image Processing  
Fri 04/01 (Exam 3 – take-home) Homework 5 Due
Mon 04/04 (Week 12) File Processing FOPP 10: Files (R18)
Tue 04/05 LAB 8 Exploring Common Words and SETI Homework 6
Wed 04/06 Exam 3 Solutions; Finish Lab 8  
Fri 04/08 (Guest Speaker: Emily Sheetz ‘18)  
Mon 04/11 (Week 13) Dictionaries I FOPP 11.1-11.4 (R19)
Tue 04/12 LAB 9 Converting Roman Numerals Homework 6 Due, Homework 7 Out
Wed 04/13 Dictionaries II FOPP 11.5-11.10 (R20)
(Fri 04/15) (Easter Break)  
(Mon 04/18) (Week 14) (Easter Break)  
Tue 04/19 LAB Project 2: SO Developer Survey  
Wed 04/20 Monte Carlo Simulations  
Fri 04/22 Exam 4 Practice  
Mon 04/25 (Week 15) Exam 4  
Tue 04/26 LAB (Scholar’s Day – No lab)  
Wed 04/27 Exam 4 Review  
Fri 04/29   FOPP 18: Test Cases, Homework 8 Out
Mon 05/02 (Week 16)   FOPP 21: Building Programs
Tue 05/03 LAB Project 2 Project 2 Due at Midnight
Wed 05/04   FOPP 17: Nested Data and Nested Iteration
Tue 05/10 11:30 AM Exam 5 (Final)  

Monmouth College Services