MCS-177, Introduction to Computer Science I, Fall 2002
Barbara Kaiser, Karl Knight, Max Hailperin

This course is an introduction to computer science with an emphasis on abstraction. We will study computational processes; you will learn how to describe a process by using a procedure and how to use general categories of data in terms of their operational properties.

Course webpage: The course webage is We recommend that you add it to your bookmarks.

Prerequisites: Although there are no formal prerequisites, you should understand the material that is typically covered in high school algebra.

Text: Concrete Abstractions: An Introduction to Computer Science, by Max Hailperin, Barbara Kaiser, and Karl Knight.

Classes: Classes will be used for lectures, problem solving, discussions, and other fun activities. Labs will be used for working on projects. You should prepare for each of these by doing the reading, thinking about the problems in the text or project assignment, and formulating questions of your own. Attendance, both physical and mental, is required.

Homework: There are two types of homework, preparation problems and chapter homework. Preparation problems are designed to help you prepare for class. They are due at the beginning of each class and graded on a 0-1-2 basis. A grade of 1 means that you made some progress towards a correct solution and a 2 means you answered the question more or less correctly. Prep problems are due at the beginning of each class; late solutions are not accepted. You may drop the three lowest prep problem scores.

Chapter homework will help check your understanding of the reading and the classes. They are due soon after the end of each chapter.  Solutions to these problems should be neatly written on notebook-sized paper and will be graded for the accuracy of your solution and the quality of your explanations.

I encourage you to work with other students on the homework provided that you do so in such a way that every one in your group learns the material.  The most effective way to do this is to first discuss each problem as a group and then have each person work on the problem individually. When you're done (or stuck) compare your work and discuss it.  Remember that doing the homework is how you learn the material  and that you are not allowed to work cooperatively on tests.

If you do work with other students on the homework, I would like you to follow these guidelines:

  1. Each person should write up the answers independently.
  2. Each person should be able to work each one of the problems independently.
  3. Each person gives credit to the others who helped.

Projects: You will have  eight programming projects throughout the semester; for six of these, you will need to write a report that presents your solution to the project's main problem.  Much, but not all, of the work for these projects can be done during the lab time. During this time, you will be able to ask the lab instructors (Karl Knight and Max Hailperin) for help or guidance.  The lab instructors will also be the ones who grade the reports.

Late Assignments, Absences from class, etc: Should you need to miss a class because of an illness or a personal emergency, you are still responsible for the material covered in that class. This means that you will need to make sure that you understand the reading for that day, that you should ask a friend for the notes from that day, and make sure that you understand what was covered. If there is an assignment due that day, you should be sure to have a friend hand it in or put it in my departmental mailbox (in Olin 324). If we had an assignment that we did in class that day, you will get a 0 for that assignment. You do not need to tell me why you missed a class unless there is a compelling reason for me to know. Note that assignments done in class are graded the same as prep problems and included in that category. Thus, a missed class assignment can be one of the three dropped prep problem grades.

Chapter homework and project reports need to be handed in on the day they're due.  Generally, you should hand them in at the beginning of class.  Otherwise,  you need to make sure I get them before I leave for the day.  Under no circumstances should you send them to me through the POs (I'll throw them away with my lunch dishes), nor should you put them in the grey box outside my office door (I use that for leftover handouts).  In case you are sick or have some sort of emergency, you may hand in two of the 15 assignments (9 homeworks + 6 projects) late without penalty, as long as they are no more than one week late and as long as I have not handed out solutions or returned the graded homeworks.  Any more late assignments will be heavily penalized.

Tests: We will have two tests, on Tuesday evenings at 7:00 pm.  The test dates are

September 26
November 7

If you cannot take a test at the regularly scheduled time because you have some other academic obligation, please let me know as soon as possible.  The final is on Monday, December 16, at 3:30 pm.

You are expected to work together in an honorable way in this course This means that while you can discuss problems and their solutions, each of you should make a real effort to solve each problem by yourself, and you should give credit to any people or texts that helped you find solutions. Needless to say, you are expected to work completely by yourself on tests.

Cheating is not allowed in this course. Please refer to the College's policy on academic honesty (see pages 68-69 in the Gustie Guide). If I find someone has cheated, then I will take action ranging from flunking the assignment in question to flunking the entire course.  I also notify the Dean of Faculty.

Course grade:
Projects 25%
Chapter homework 20%
Prep problems  5%
Tests 50%

Please contact me as soon as possible if you have specific physical, psychiatric, or learning disabilities and require accommodations. I will do my best to facilitate the  necessary arrangements.  All discussions will remain confidential.