MCS-177: Introduction to Computer Science I (Fall 2000)

Overview

The central theme of this course is the activity of abstraction, which is ignoring irrelevant specifics. The quest for generality will motivate our study of programming: you will learn how to express general procedural ideas and how to use general categories of data in terms of their operational properties.

We will also use abstraction to make computational processes easier to think about. You will learn the relationship between the form of a procedure and that of the computational process it generates, including the resource consumption of that process. Also, you will learn how to prove that a procedure has the desired effect, and why such proofs are not always possible.

Along the way, we will encounter aspects of the history of computer science and its relationship with mathematics; problems of computer crime, privacy, and reliability; and the role computation has played as a metaphor for intelligence and social phenomena.

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

The text for the course will be Concrete Abstractions: An Introduction to Computer Science, by Max Hailperin, Barbara Kaiser, and Karl Knight.

Reaching your instructor

All office, phone and schedule information will be maintained in our web pages http://www.gustavus.edu/~wolfe and http://www.gustavus.edu/~hvidsten. We'll try to keep it updated with any temporary changes to our schedules as well. In short, if our office door are open you are welcome; if we're busy, we'll set up an appointment. Email and phone calls work, too.

All course handouts will be available through the course page, and some supplementary materials such as code to use as a starting point in assignments may be available there as well. The URL for this course is http://www.gustavus.edu/~mc27/.

Honor

Students are encouraged to discuss the course, including issues raised by the assignments. However, the solutions to homework assignments should be individual original work unless otherwise specified. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. To do otherwise is to cheat yourself out of understanding, as well as to be intolerably dishonorable.

Citing outside help: For the most part, homework should be your own work. If, however, you get help from a classmate or some other reference for a problem or two, be sure to cite the reference. The citation should appear at the top of your written problem solution.

You should never look at a classmate's working code or homework solutions (i.e., procedures). If a classmate asks for help, do not show a classmate your working solution. Instead, feel free to help or guide your towards discovering a good solution.

Any cheating may lead to failure in the course and notification of the Dean. This includes copying anyone else's work, deliberately facilitating copying and failing to give credit for solutions not discovered on your own. Failure to cite a source (written or oral) on any component of the course is considered cheating.

The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be properly cited.

One additional issue that arises from the team authorship of project reports is that all team members must stand behind all reports bearing their names. All team members have quality assurance responsibility for the entire project. If there is irreconcilable disagreement within the team it is necessary to indicate as much in the reports; this can be in the form of a ``minority opinion'' or ``dissenting opinion'' section where appropriate.

Grading

We will provide you with a letter or a numeric grade on each homework, project and test. 90% or more of the points, you will earn an A, 85% for an A-, 80% for a B+ and down by 5 percentage points each to the lowest passing grade of 45% for a D. There is no curve.

Most days there will be a daily assignment associated with the reading. You are expected to do the reading with care and complete this assignment. If you cannot complete the assignment because you found the reading confusing, write a specific explanation about what you found confusing, with a question you would want to ask in class to help clarify the issue(s). Promptly at start of class we will either (a) collect these assignments, (b) give a pop-quiz on the reading, or (c) simply take attendence (if the reading was especially hard). You'll receive 0, 1 or 2 points for each day's assignment, and the lowest three grades will be dropped.

However, we reserve the right to subjectively adjust your final grade. Please see your instructor if you have any question how you stand. Class participation is not graded; however, it allows you to find and repair the gaps in your understanding before doing the homework or exam, and thus can dramatically improve your grade. Exams will be closed-book and closed-notes. You may, however, use a single 8 1/2 by 11 sheet of paper with hand-written notes for reference.

Any grade disputes should be made before the final exam. We will fix obvious grading errors promptly (and will thank you for pointing them out).

Assignment policies

Submission and late policies

Homeworks and project reports are due at the start of class on the due date. Please staple (not fold nor paper clip) your homework together. One assignment will be accepted up to 72 hours late without penalty, and one assignment can be up to 24 hours late; any more late will be heavily penalized. When submitting an assignment late, be sure to write the date and time of submission on your assignment. For daily assignments, the lowest three grades will be dropped. This very liberal late policy is intended to accommodate illness or conflict. Please do not ask for additional exceptions unless your situation is unusual. In any case, all assignments must be submitted by the last day of classes.

Testing your procedures

Unless otherwise specified, any procedure you submit on a homework or project for grading should be typed into the computer and tested. If your procedure has bugs which you weren't able to fix, state these bugs immediately before your procedure. If we find a significant bug which you failed to report, you'll receive a zero on that problem.

Style guidelines

All homework and project reports should be readily readable, and should not presuppose that we already know what you are trying to say. In particular: For a more detailed set of guidelines, refer to the prepared document, Suggestions for clear lab reports in computer science courses reports. We recommend that you look at this document and, if you have questions about projects write-ups, ask!

Schedule

A schedule for the semester is maintained in the course homepage.