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: 10:00-10:50am MWF
Location: King 306

Lab Time: 2:30-4:20pm W
Location: King 201

Office Hours: 11:00am-12:00pm M & 10:00-11:00am Th
Location: King 229


Date Topic Reading Assignment
1 Oct 4 Hello, Class! Pre-Lab - Getting Ready

Lab 1 - Hello, Class!


Week 1 Reflection
Oct 6 Variables, Expressions, & Assignments 2.4-2.6
Oct 8 Data Types 2.2-2.3
2 Oct 11 For Loops 4.4-4.5 Lab 2 - In the Loop

Week 2 Reflection
Oct 13
Nested For Loops 4.7
Oct 15 Boolean Expressions & Conditionals 7.1-7.5
3 Oct 18 Modules & Graphics 5.1-5.4 Lab 3 - Get the Picture

Week 3 Reflection
Oct 20 Debugging & Exceptions 1.6-1.10
Oct 22 While Loops 8.3
4 Oct 25 Functions 6.1-6.2
Lab 4 - Image Filters

Week 4 Reflection
Oct 27 Functions 6.6-6.10
Oct 29 Functions & Strings 9.3-9.14
5 Nov 1 Strings & Lists 10.1-10.8 Lab 5 - Manipulation

Week 5 Reflection
Nov 3 List Manipulation 10.10-10.14
Nov 5 Lists & Tuples 10.26-10.29
6 Nov 8 Dictionaries & Sets 12.1-12.3 Lab 6 - Concordance

Week 6 Reflection
Nov 10 Files 11.1-11.6
Nov 12 Data Structures
7 Nov 15 Recursion 16.1-16.3 Lab 7 - Fun with Recursion

Week 7 Reflection
Nov 17 Recursion 16.5-16.6
Nov 19 Recursion
8 Nov 22 No Class (Thanksgiving Break)
Nov 24 No Class (Thanksgiving Break)
Nov 26 No Class (Thanksgiving Break)
9 Nov 29 Classes 17.1-17.4
Lab 8 - Let's Make Music

Week 9 Reflection
Dec 1 Classes 17.5
Dec 3 Classes 18.1-18.4
10 Dec 6
Classes Lab 9 - Critters

Week 10 Reflection
Dec 8 Inheritance 19.1-19.4
Dec 10 Inheritance 19.7
11 Dec 13 Sorting 6.6-6.8 Lab 9 - Critters (continued)

Week 11 Reflection
Dec 15 Sorting 6.9-6.10
Dec 17 Sorting 6.11-6.12
12 Dec 20 Order Notation 3.2-3.3 Critter Tournament Upload
Dec 22 Tournament
Dec 24 No Class (Winter Break)
13 Dec 27 No Class (Winter Break)
Dec 29 No Class (Winter Break)
Dec 31 No Class (Winter Break)
14 Jan 3 Advanced Topics Final Project Proposal

Week 14 Reflection
Jan 5 Advanced Topics
Jan 7 CS Research Talk
15 Jan 10 CS Research Talk Final Project Update

Week 15 Reflection
Jan 12 CS Research Talk
Jan 14 Wrap Up
Final Project
Due: Saturday, Jan 22 before 4: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-03-f21" (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 10: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 around 10 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 (Wednesday 2:30-4:20pm) 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. A proposal describing your final project will be due on Wednesday, January 5 at 2:30pm.

The final project will be due Saturday, January 22 before 4: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 late 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.

Otherwise, late submissions will be penalized 25% in the first 24 hours after the deadline, and an additional 25% for each additional day late after that. If for any reason you will need to turn in a significant number of late labs, please meet with me to discuss it.


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 Donna Allen from Center for Student Success in Peters 118.

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 2021-12-09