Introduction to Computer Science I

Course information


Be sure to read all of this page!


Description

A computer can carry out operations that you request at amazing speeds. The trick is learning how to instruct the machine to do your bidding. However, that is the easy part of the trick: Learning a language (in this case, Java) by which you can instruct the machine is only a side-effect of this course. The more difficult part of the trick, and the one on which the course will focus, is determining which operations you want the machine to perform!

Given a particular problem that you want to solve, you first need to devise a solution. Then, you need to devise a sequence of operations that will carry out that solution -- that is, an algorithm. Only then can you express that algorithm as a computer program. In this course, we will tackle increasingly difficult problems for which we can create programmable solutions. Although this course will only introduce you to programming and algorithmic problem solving, by its end you will have seen and used all of the basic building blocks necessary to devise and express the solution to any computational problem.

The basic topics are given below, roughly in the order that will we cover them. If you have no idea what some (or many) of them are, don't be alarmed -- you will find out soon enough. This course assumes no previous knowledge of programming, computing, or computers, so few students will identify any of these terms. If you have had some programming experience, please talk to me as soon as possible. Here are the topics:


Lectures, labs, and materials

We will meet three times per week for a 50 minutes each. The class lectures are MW at 1 pm in SMudd 206, and the lab is F at 1 pm in SMudd 014. Note that sometimes we will vary the use of labs and lectures in a given week -- watch the course announcements for such changes.

You are responsible for the material presented in every lecture. There is no attendance policy, but I strongly recommend that you attend all lectures. If you miss one, it is your responsibility to obtain the material that you missed.

If you must miss a class meeting due to illness, please contact me as soon as is reasonable. We will then make arrangements to address the material and discussion that you may have missed.

If you must miss a class meeting due to another commitment (e.g., a musical performance, an athletic contest), then do not contact me. How you choose between scheduling conflicts is for you to decide. If you choose to miss a class meeting in order to do something else, then you are responsible for the material that you miss; moreover, you should not expect that I will help you to address that missed material. If any work is due at the time of the class meeting that you miss, then I expect you to submit it beforehand.

Vacations and travel: I expect you to be present for all lectures, all labs, and all exams, including the scheduled final exam (see below). If you elect to depart early for a vacation (e.g., spring break) or at the end of the semester, you are responsible for any lectures, labs, or exams that you miss. I will not reschedule or make other accommodations because you chose to leave campus early. Do not buy plane/train/bus tickets home that will take you from campus before the final exam or any other course meeting.

There is no required text book for this course. However, Prof. Lyle McGeoch's book-in-progress, designed for CS 11 and 12, is clear, matches the order in which this course will progress, and provides a good reference.


Projects and their submission

There will be a more-or-less continual stream of projects throughout this course. New projects will typically be assigned during one of our labs so that we can discuss and begin work on their solutions. These projects will, at times, build on previous projects. It is therefore important not only that you complete each assignment correctly and in a timely fashion, but also structure in a way that modifications and additions are easier; that is, you should write modular, well encapsulated, well documented code. Again, if you're not yet sure what those terms mean, then you will find out early in the course.

You will use the College UNIX servers, remus and romulus, for your programming work. While you may choose to program on another computer, your programming ultimately must compile and run on the UNIX servers, since those are the machines on which I will evaluate your work. Submissions will be performed electronically from remus and romulus, and graded work will be returned to you electronically as well (via email).

The policy for late submissions is simple: A project not submitted by its deadline will receive a failing grade. Get started early with each project. It is better to submit something than to receive a zero for failing to submit any work on time.

You may obtain an extension on a project, but only for certain reasons. Here are the critical rules regarding extensions for an assignment:

This class will move from one project to another too quickly for late submissions to be regularly handled. I will seek to grade and return your work to you quickly, and that will be possible only if all submissions are provided by the given deadlines. Those deadlines will always be explicitly and clearly stated.


Exams

The material in this course is cumulative. If you miss one topic, the next one is likely to be difficult to understand. Therefore, there will be three exams for this course, ensuring that I find out quickly if you (or many of you) are having problems with some previously covered concept. Here are the exams:

  1. Mid-term #1 will be a 50 minute exam during a regular lecture or lab time during the 5th week of the semester. This exam will cover material from weeks 1 through 5.
  2. Mid-term #2 will be a 50 minute exam during a regular lecture or lab time during the 10th week of the semester. This exam will cover material from weeks 6 through 10.
  3. The final examination will be 3 hours. This exam will cover material from the entire semester. This exam will be held on Tuesday, March 13th, at 9:00 am in Merrill 1.

Each exam may ask questions both from lectures and from projects. I am likely to ask you to apply ideas and methods in combinations that we have not yet explored; that is, I expect you to understand the material well enough to use it in ways that are novel to you.


Grading

Your grade for this course will be calculated based on the following forumla:

Note first that although the projects will likely take much more of your time and effort, the exams count substantially toward your final grade. Also note that there are no participation points. This absence is not at all a recommendation that you sit quietly. To the contrary, I highly recommend that you participate in class, not because it earns you points, but because it is the best way to ensure that you are on top of the material and understand it well.


Academic honesty

Academic honesty can be a difficult thing to define well. Naturally, you must do your own work. However, one of the strengths of a small, residential college such as this one is your peer group; discussion of the material with others is a natural and beneficial thing to do. Thus, I hope here to make more clear what constitutes academic dishonesty, as well as its penalties.

In general, discussing class material with another student is always acceptable. However, observing another person's work, in any form, with or without that person's permission, is unacceptable. Likewise, sharing your work, in any form, with another student is unacceptable.

To make this issue more concrete, let's consider a programming assignment. You are allowed to discuss the background material from the class that is relevant to the assignment. You may not view another person's code, nor may you show yours to another student. Furthermore, although you may discuss the background material with another student, you may neither discuss nor formulate even abstract elements of your solutions with another person. In short, understand together, but formulate your own ideas and write your own program.

Penalties: If I think that you have been academically dishonest but I do not believe that I can prove it, then we will have a discussion about the uncomfortable similarity between your work and another's; however, there will be no penalty. In such circumstances, I assume that you may have unknowingly or unwittingly crossed the collaborative line in discussing material with another student. However, if this problem persists, I may impose further penalties.

If I am certain that you have been academically dishonest -- submitting work that is exceedingly similar to another student's, or submitting work that clearly comes from an outside source -- then you will fail this course, and the case will be reported to the Dean of Students. You are far better off submitting half-baked, poor work than trying, in the panic of an approaching deadline, to copy another's work and submit it as your own. Also note that providing your work to another student makes you equally academically dishonest.


Your responsibilities and my availability

I hope that this page has made clear the structure and intent of the course, and well as the expected workload and your responsibilities. By presenting this information at the onset, I hope to avoid using our valuable time on misunderstandings and negotiations.

I will be available to meet with you about the material, projects, exams, lectures, or any other aspect of the course. Simply email me and we will set a time to meet as soon as possible. You can also try to find me in my office (SMudd 406) or the Faculty Research Lab (SMudd 015).


Scott F. H. Kaplan
Last modified: Tue Apr 1 13:25:35 EDT 2008