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.
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/.
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.
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).