Hello, Class!

Welcome to CSCI 150! This course is all about the fundamentals of computer programming. It's about solving problems, being creative, and building things... digital things. Sometimes our stuff will break. When it does, we'll learn how to fix it. That's computer science. Let's do this!

Lecture Time: 11:00-11:50am MWF
Location: King 227

Lab Time: 1:00-2:50pm Th
Location: King 201

Office Hours: 1:00-2:00pm M & 10:00-11:00am T
Location: King 229


Date Topic Reading Assignment
0 Feb 18 Hello, Class! Pre-Lab - Getting Ready
1 Feb 21 Variables, Expressions, & Assignments 2.4-2.6
Lab 1 - Hello, Class!


Week 1 Reflection
Feb 23 Data Types 2.2-2.3
Feb 25 For Loops 4.4-4.5
2 Feb 28 For Loops Lab 2 - In the Loop

Week 2 Reflection
Mar 2 Nested For Loops
Mar 4 Boolean Expressions & Conditionals 7.1-7.5
3 Mar 7 Modules & Graphics 5.1-5.4 Lab 3 - Get the Picture

Week 3 Reflection
Mar 9 Debugging & Exceptions 1.6-1.10
Mar 11 While Loops 8.3
4 Mar 14 Functions 6.1-6.2
Lab 4 - Image Filters

Week 4 Reflection
Mar 16 Functions 6.6-6.10
Mar 18 Functions
5 Mar 21 Strings 9.3-9.8
Lab 5 - Pirates, Proteins, & Penguins

Week 5 Reflection
Mar 23 Lists 10.1-10.8
Mar 25 Lists 10.10-10.14
6 Mar 28 Dictionaries 12.1-12.3 Lab 6 - Concordance

Week 6 Reflection
Mar 30 Dictionaries & Files 11.1-11.6
Apr 1 Tuples & Sets 10.27-10.29
7 Apr 4 No Class (Spring Break)
Apr 6 No Class (Spring Break)
Apr 8 No Class (Spring Break)
8 Apr 11 Recursion 16.1-16.3 Lab 7 - Fun with Recursion

Week 8 Reflection
Apr 13 Recursion 16.5-16.6
Apr 15 Recursion
9 Apr 18 Sorting 6.6-6.8 Lab 7 (continued)

Week 9 Reflection
Apr 20 Sorting 6.9-6.10
Apr 22 Sorting 6.11-6.12
10 Apr 25
Classes 17.1-17.4
Lab 8 - Let's Make Music

Week 10 Reflection
Apr 27 Classes 17.5
Apr 29 Classes 18.1-18.4
11 May 2 Classes Lab 9 - Critters

Week 11 Reflection
May 4 Inheritance 19.1-19.4
May 6 Inheritance 19.7
12 May 9 Inheritance Lab 9 (continued)

Final Project Proposal

Week 12 Reflection
May 11 Advanced Topics
May 13 Advanced Topics
13 May 16 CS Research Talk (Virtual) Critter Submission

May 18 CS Research Talk
May 20 CS Research Talk
14 May 23 Critter Tournament Final Project Update
May 25 Wrap Up
Final Project
Due: Wednesday, June 1 before 9:00pm


course overview

CSCI 150 provides an introduction to problem solving and algorithmic thinking through computer science, with programming used as a method for implementing solutions to problems. The course covers fundamentals of computer programming, including data types, variables, expressions, statements, control structures, arrays, and recursion. It also introduces object-oriented concepts, including classes, methods, inheritance, and polymorphism. Python is used as the programming language to highlight and demonstrate these fundamentals. No prior programming experience is expected or required.

course objectives

course website and textbook

Information will be primarily communicated through this website, Blackboard, and the lab website. Please check each regularly for announcements, class schedule, lab assignments, etc.

For this class, we will be using a free Runestone interactive textbook. To register for this book, do the following:

  1. Go to runestone.academy
  2. Click “Sign Up”
  3. Fill in the required information and enter "csci150-04-s22" (without quotes) as the course name

We will have assigned readings and interactive activities from this book due before most lectures. Specifically, reading activities must be completed by 11:00am MWF.

class participation

Active participation in this class will be an important process in your learning. Participation will take on several forms. First, questions will be asked during class periods using iClickers, and you are expected to participate by responding with your best guesses as to the correct answers. You will not be graded based on the correctness of your responses, so please just provide your best guess as to the correct answer. Second, we will have many small group discussions in class, where we work together to develop solutions to problems (in the forms of algorithms and code), as well as discuss important topics related to computer science and technology.

If you become ill and need to miss class, alternative arrangements can be made for your participation. Please reach out to me by email if you need to miss class. Slides from class will be posted to Blackboard for you to view asynchronously.

You are responsible for your own participation and may not respond for another student.

weekly reflections

To help you connect with the material that we will learn in class, you will be asked to complete short reflections each week. These reflections are designed to give you the opportunity and space to reflect on (1) what you found challenging during the week, (2) what you would like to know more about, and (3) how you’re doing. These reflections will be short (around three sentences) and should take about 5 minutes per week.

There will also be a short questionnaire during the first week of the course that gives you an opportunity to reflect on your initial thoughts about computer science and this course, as well as to help me get to know each one of you better. The questionnaire will be graded based on participation -- if you turn it in on time with every question answered, you will automatically receive full credit. There are no right or wrong answers to many of these questions, so please do not worry about correctness!

Weekly Reflections are due every Friday at 5:00pm.

lab assignments

Throughout the semester, you will have the opportunity to practice the course material through hands-on lab assignments. There will be 9 lab assignments in total. Each lab assignment consists of (1) a pair-programming warmup, to be completed in the weekly lab session, and (2) an individual programming component, to be completed by yourself outside of class. Please expect to spend around 7-9 hours per week including both the scheduled lab period (Thursday 1:00-2:50pm) and your own time. These lab assignments are the “homework” assignments for the course.

Both a student lab helper and I will be available in each lab period to support you and provide assistance while you work on the warmup. Additional lab helper hours are also provided on Monday, Wednesday, and Thursday evenings, as well as Saturday and Sunday afternoons.


There will be no exams in this course.

final project

In place of a final exam, we will instead have a final project. This project will be a custom Python program that you will design and implement yourself. Your program can perform any task you choose, but it must utilize several key concepts from the course. Details about the program requirements will be announced in class and will be posted on the lab website.

The final project will be due Wednesday, June 1 before 9:00pm.


Final grades will be determined based on your scores on the labs, final project, reading exercises, weekly reflections, class participation, and questionnaire as follows:

Component Percentage
Questionnaire 2%
Weekly Reflections 5%
Reading Exercises 10%
Class Participation 10%
Final Project 15%
Lab Assignments 58%

late homework policy

Unless otherwise specified, each lab will be due at 11:59pm on Tuesday night of the week following the start of the lab assignment. Late submissions are strongly discouraged. To account for unforeseen circumstances, you are allotted four bonus days, total for the semester, to complete a lab assignment (more than one may be used per assignment). These will be automatically deducted by the lab graders until they have been used up. Late work beyond this point will not be accepted unless prior arrangements are made with the instructor.


I am committed to making this class accessible to all students. If you have a disability that may impact your work in this class and require accommodations, please see me. Please also visit Student Accessibility Services at the Center for Student Success so that we may arrange appropriate accommodations.


The CS department hosts drop-in peer tutoring hours in both CS labs in the evenings and on weekends (these are called “lab helper hours” for 150). If you would also like a one-on-one tutor, Oberlin College provides free tutors for this course. If you would like a tutor, please contact Center for Student Success.

code of conduct

Both Oberlin College and I personally value the diversity of perspectives that each of you bring to this classroom and our joint study of computer science. In this class, we must all commit to fostering a safe, inclusive, and welcoming environment which will allow all of us to learn. Please respect the competence and hard work of your colleagues in this classroom. If you are made to feel uncomfortable in class or while working on class material, please notify me so we can take steps to address the situation. Students who are disruptive to class and our learning community will face consequences, including potentially being removed from the course.


In this class, you will be expected to work actively to construct your own understanding of the topics at hand, with the readily available help of me and your classmates. Many of the concepts you learn and problems you work will be new to you and ask you to stretch your thinking. It is completely natural and common to experience frustration and failure before you experience understanding. This is part of the normal learning process. You are supported on all sides by me and your classmates. But no student is exempt from the process and the hard work that it entails.

academic honesty

You are expected to adhere to the Oberlin College Honor Code. Any violations will be reported to the Honor Code Committee.

On lab assignments, you may work with a partner for the Warmup section only. All other sections of the lab assignment must be completed on your own. In general, feel free to discuss the assignments with your peers, including general approaches to solving the problem (e.g., “think about using a loop to iterate over every element of a list”, “a modulus operation lets you keep counting between 0 and 4”), but you should never share code, nor describe the exact code needed to solve the assignment. If you do discuss a lab with another student, please indicate those students in the README file within your submission.

You are always allowed to use the textbook, and any resources provided by me. You are not allowed to use any other sources except when specified in the assignment. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, and will be reported. We will be running MOSS, an automated plagiarism detection tool, on submissions.

Typically, honor code violations occur due to some combination of stress, confusion, or anxiety. In these circumstances, you are strongly encouraged to reach out to me; there are always better solutions that we can work out together. Furthermore, if you have any questions about what is permitted and what is not, please feel free to ask.

For every assignment, you must indicate whether you followed the Honor Code in completing the assignment. If so, you should end each assignment by writing:

I have adhered to the Honor Code in this assignment.

advice for success

College is challenging for everyone in different ways. Oberlin has numerous resources to help you navigate this experience! If you need help, please reach out to me. I am happy to help connect you to the many different resources available (e.g., SHARE, PALS, Dean’s Office). Finally, a reminder that faculty at Oberlin are mandatory reporters for issues which fall under Title IX provisions.


The content in this course is gratefully adapted from previous iterations of CSCI 150 at Oberlin, most recently from courses led by Cynthia Taylor and Adam Eck.

Last updated 2022-02-19