For information about Web accessibility, please contact the Webmaster at

Haverford College

Computer Science

header image

CMSC 105: Introduction to Computer Science

Fall 2015

Labs make up a major and important portion of the work for this course. For due dates, please see the schedule tab. While all labs are given below in advance, modifications may be made throughout the semester (including changing, cutting, or adding other labs), so any work done in advance is at your own risk. Labs will be officially distributed one or two weeks before their due date.

Labwork should be done on the computers in the computer science teaching lab (KINSC H110) either in person or by logging in remotely. We will help you learn how to login and access the lab during your first lab session. You may also find the following documents useful:

There are also some resources on Python conventions that you might find useful once you've learned the basics in class:

Since some labs (listed below) will be done over multiple weeks' lab sessions, you may also be interested in the instructions for what you should expect to get done per week: lab instructions by week

Labs for CMSC 105:

  • Lab 0: Let’s start thinking like a computer scientist!
  • Lab 1: Problems, Algorithms, and Python Functions
  • Lab 2: Design By Cases; Preconditions and Postconditions
  • Lab 3: Basic Recursive Design
  • Lab 4: Formal Methods; "Enumerate and Test" Algorithm Design (Part I)
    (for two weeks, along with "Code Review" sessions)
  • Midterm Break: Relax and don't worry about CMSC 105
  • Lab 5: Advanced Recursive Design; "Enumerate and Test" Algorithm Design
  • Lab 6: Complexity Analysis
  • Lab 7: Imperative Programming
  • Lab 8: Genome Assembly (using matrices and dictionaries)