Course Web Site:

This course provides an overview of the field of computer science from the concrete -- what computers are made of and how they work -- to the abstract -- the theoretical limits of what computers can and cannot do. This course also focuses on the general algorithmic (disciplined, step-by-step) approach to problem solving, and the basic concepts of computer programming. Other topics include the history of computers, an introduction to several areas of computer applications including artificial intelligence, and the ethical and societal issues raised by the widespread use of computers.


A variety of required reading assignments will be made available online or on reserve in the library. Sources include:

Topics to be covered:

What is Computer Science?
Introduction to Programming in JavaScript
History of Computer Science
How Computers Represent Information
Computer Hardware and Logic
What Can Computers Do? What Can't They Do?
Artificial Intelligence
Computer Ethics and Computer Security


Grades will be based on:

Attendance and Participation:

Regular attendance and fully engaged participation is expected of all students in this course and will affect your grade. Active participation means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Furthermore, attendance is absolutely required for the weekly labs and in-class mini-labs.


Reading and homework assignments, class notes, and other material will be made available on the course web site:
Students are responsible for checking this resource frequently.

Many of the labs and all in-class projects will involve working in small groups, as will the programming projects. Homework assignments, however, should be your own work. (See the section on Collaboration and the Honor System for more information.)

Assignments are due at the beginning of class. Programming projects, in particular, are time-consuming and difficult to predict, so you should start them as soon as they are assigned. We will assign homework and projects far enough in advance that you will have some flexibility in when you schedule your work, but you are responsible for budgeting your time wisely so that you will be able to complete your assignments on time. Assignments that are turned in late will receive only partial credit unless you clear it with me in advance.

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor system. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Programming projects: You may team up with one of your classmates to work on the programming projects. You should include the names of both team members in the program documentation and turn in only one copy of the program for the team (not one for each team member). You may discuss the requirements and strategies of a programming assignment with others in the class, but you should not look at code belonging to anyone outside of your team or make your code available to anyone outside your team. If you have code-specific questions, you should address them to a course TA or computer science faculty member only. You should acknowledge in your program documentation any help you receive.

Lab assignments: Some lab assignments may also be done in teams of two. We will try to be clear about which labs may be done in teams and which should be individual efforts, but you are responsible for consulting with your instructor if you are in any doubt. When teams are permitted, you should write the names of both team members on the lab write-up and turn in only one copy for the team (not one for each team member).

Homework assignments: You may discuss the requirements, concepts, and overall strategies related to homework assignments with your classmates, but you should write the solutions individually, using your own words. Organizing and writing the solutions on your own ensures that you really understand the material. Submitting someone else's work does not help you learn and constitutes academic dishonesty.

Group presentation: The group presentation should be done in pairs and should represent your synthesis of ideas drawn from your research. You should use citations in your presentation to credit all ideas drawn from other sources; you should also list all of your sources in a bibliography at the end of your presentation.

A few words on citations: If you directly quote one of your sources, be sure to put the phrase/sentence in quotes and include a citation. If you use an idea or fact from one of your sources, but do not directly quote it, you should still include a citation. Basically, citations should be included for any information in your paper that is not originally your own.

Detailed presentation expectations and possible topics will be made available on the course schedule. You may ask a reference librarian or the course instructor for help identifying possible sources as you do your research.

Penalties for violating the Honor System in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences, including suspension from the College. Any subsequent violation will result in the immediate failure of this course.

Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with their instructor as soon as possible.