CSCI 150 Syllabus

Contact Information

Instructor:              Adam Eck                  adam.eck [AT] oberlin [DOT] edu
Lab Instructor:     Roberto Hoyle         rhoyle [AT] oberlin [DOT] edu
Office Hours:         M 1:30-3:00 PM (King 223D), R 10:00-11:30 AM (King 135), F 3:30-4:30 (The Local Coffee & Tea)
Email Response Policy: emails received by 5PM on a weekday will receive a response the following day. Emails received during the weekend (by 5PM on Sunday) will receive a response on Monday.

Meeting Time and Location

Time: 9:00-9:50 MWF
Location: King 106

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 a programming langauge to highlight and demonstrate these fundamentals. No prior programming experience is expected or needed.

Course Objectives

  1. Gain familiarity with the fundamentals of computer science as a problem-solving discipline
  2. Learn to think about solutions from an algorithmic perspective
  3. Practice specifying problems and designing algorithms to solve problems
  4. Acquire experience implementing solutions to problems using the Python programming language through lab assignments
  5. Understand how computer science relates to and can interact with other disciplines
  6. Experience the fun of computer science!


Expressions, Types, and Variables; Loops; Image Manipulation; Functions; Conditionals; Strings; Arrays; Boolean Logic and Circuits; Recursion; File I/O; Classes and Inheritance; Searching, Sorting, Asymptotic Running Time and Data Structures

Textbook, Clickers, and Course Website

The course textbook is:

Zelle, John. Python Programming: An Introduction to Comptuer Science, 2nd Edition. Franklin, Beedle, & Associates, Inc., Sherwood, Oregon, 2010.

Note: Please note that we are using the second edition of this book. The first edition uses an older version of Python, and the newest (third edition) has some minor changes related to what functions to use in Python.

We will be using the i<Clicker+ system as part of class participation. Questions will be asked most class periods, and students are expected to participate by responding with their best guesses as to the correct answers. Students are responsible for their own pariticipation and may not respond for other students. Clickers should be registered through Blackboard.

Information will be primarily communicated through the course website: Please check the website regularly for announcements, class schedule, lab assignments, etc.

This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates and the instructor. Rather than emailing questions, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email You can find our class page at:

Lab Assignments

Throughout the semester, you will have the opportunity to practice the course material through hands on lab assignments. There will be 11-12 lab assignments in total. Please expect to spend around 8-10 hours per week between the scheduled lab period (Wednesday from 2:30-4:30 PM or Thursday 1:00-3:00 PM) and your own time.

Both a lab instructor and student lab helper will be available in each lab period to support you and provide assistance while you begin each lab assignment. Please attend lab each week during the period you signed up for to help you complete your lab assignments.

Several of the labs will also include prelab assignments, where you will start to think about how to solve the labs before they begin. Please expect to spend around an hour on each prelab.


Throughout the semester, there will be two midterm exams, as well a a final exam. The first midterm will be around the end of February, and the second in early April. Both will test you over the material covered thus far during the semester, with an emphasis on the more recent material covered. Questions will include both general problem solving questions, as well as questions about program code (asking you to analyze existing code, find and fix bugs from given code, or write your own code to solve a problem).

The final exam will cumulative and will be held at the time assigned by the Registrar's office: Thursday May 11 from 9:00-11:00 AM.

There will also be a short questionnaire 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. 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 stress out while answering!


Final grades will be determined based on your scores on the labs, exams, and class participation as follows:

Component %
Initial Questionnaire 2%
Attendance and Participation 10%
Final Exam 20%
Midterm Exams 20%
Lab Assignments 48%

Late Homework Policy

Unless otherwise specified, each lab will be due at 10 PM on Tuesday night of the week following the start of the lab assignment. Late handins are strongly discouraged. At your discretion, you can use up to two free "late passes", which grant you an additional two days to complete a lab assignment. Please make sure you let the lab instructor know in advance (i.e., before the lab deadline) when you plan on using your late passes.

Otherwise, late handins will be penalized 50% if handed in up to 24 hours late. Handins are considered late if they are turned in one minute or more after the assignment deadline. After 24 hours, will not be graded.

As you will learn in the first lab, you can turn in your assignment multiple times, even if you only have part of the assignment finished. Please make it a habit to turn in your assignment after each part is completed so that you are insured to receive partial credit, just in case you run into any problems turning the entire assignment in on time.


Oberlin College provides tutors for several classes, traditionally including this course. If you would like a tutor, please contact Donna Young from Student Academic Services in Peters 118.


The College makes reasonable accommodations for persons with disabilities. Students should notify the Office of Disability Services located in Peters G-27/G-28 and their instructor of any disability related needs. For more information, see Any student eligible for and needing academic adjustments or accommodations because of a disability (including non-visible disabilities such as chronic diseases, learning disabilities, head injury, attention deficit/hyperactive disorder, or psychiatric disabilities) is requested to speak with the professor.

Academic Dishonesty

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

On lab assignments, some parts will ask you to complete the part by yourself, while others will allow you to collaborate with a partner. Only those parts marked as a "partner" part of the assignment can you work on the same code with someone else. Otherwise, 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 1 and 4"), but you should never share code (unless explicitly permitted as a "partner" part, and then only with a single partner), nor describe the exact code needed to solve the assignment. Furthermore, you can never edit non-partner's code. If you do discuss with another student, please make note of with whom you discussed in your submission (i.e., in the README file). For "partner" parts of the lab, also make sure to note who you worked with in your README file.

If you have any questions about what is permitted and what is not, please feel free to ask your lab instructor, or myself.

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

I have adhered to the Honor Code in this assignment.