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.
Exams will be closed-book and mostly closed-notes. You may, however, use a single 8 1/2 by 11 sheet of paper with hand-written notes for reference. (Both sides of the sheet are OK.)
Regarding class days, the policy is that you will be responsible for all material, whether or not you are in attendance when it is covered or distributed.
You are expected to be familiar with the college academic honesty honor code policy, and to comply with that policy. If you have any questions about it, please ask. One specific requirement of that policy is that you write the following in full and sign it on every examination and graded paper:
On my honor, I pledge that I have not given, received, nor tolerated others' use of unauthorized aid in completing this work.
For the purposes of this policy, I am defining "graded papers" to be project reports but not homework problems. (I still expect you to comply with the honor code on homework problems, just not to write the explicit pledge on them.) When project reports are co-authored, each co-author should write and sign the pledge.
Note that if you turn in each homework problem as soon as you can do it, rather than saving them for the assignment due dates, you will have more opportunity for revision and resubmission before the cutoff dates listed above. Particularly for the last homeworks before each cutoff date (and test), I can't guarantee you'll have time for a revision cycle otherwise.
I may also announce an earlier cutoff date for any individual problem I consider important for us to discuss in class.
The homework portion of your course grade will simply be determined by the fraction of the homework problems you eventually mastered.
You will have eight programming projects throughout the semester; for six of these, you will need to write a report that presents your work. 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 instructor (Mike Hvidsten) for help or guidance.
The lab instructor will also be the one who grades the reports. When he grades these reports, he will evaluate the code for accuracy, efficiency, clarity, and style. Additionally, he will consider how well your report achieves the goals he has established for that report as a piece of writing. For example, he will consider how well your report outlines the main problem of the project, describes how your code fits together to solve this problem, and explains why your solution is a good one. Be sure to follow the writing guidelines he provides.
If you are too sick to complete an assignment on time, you will not be penalized. Simply write ``late due to illness'' at the top of the assignment, sign your name and hand it in. Other circumstances will be evaluated on a case-by-case basis.
Each project assignment will include specific expectations for that project's report, including the audience for which it should be written. You should pay careful attention to this information.
If you have a learning, psychological, or physical disability for which a reasonable accommodation can be made, I would be happy to refer you to the college's disability services coordinator, and to cooperate in the accommodation process. It is generally best if this can be done as soon as possible.
| Date | Reading | Topic | Due |
|---|---|---|---|
| 2/7 | 1.1-1.2 | Introduction; simple expressions | |
| 2/8 | Project 0: Getting started (ungraded) | ||
| 2/9 | 1.2-1.3 | Compound procedures; conditionals | |
| 2/10 | Project 1: Quilting | ||
| 2/11 | 2.1 | Recursion | |
| 2/14 | 2.2 | Induction | Homework #1 |
| 2/15 | Project 1 (continued) | ||
| 2/16 | 2.3-2.4 | Further examples & custom-sized quilts | |
| 2/17 | Project 1 (continued) | ||
| 2/18 | 3.1 | Iteration | |
| 2/21 | 3.2 | Using invariants | Homework #2 |
| 2/22 | Project 1 (concludes) | ||
| 2/23 | 3.3 | Perfect numbers, internal definitions, & let | Project #1 |
| 2/24 | Project 2: Sum of divisors | ||
| 2/25 | No class (conference) | ||
| 2/28 | 3.5 | The Josephus problem | |
| 3/1 | Special project: Card sorting (ungraded) | ||
| 3/2 | Review/catch-up | ||
| 3/3 | Test 1, 7:00-8:30 PM, OHS 321 (no lab) | ||
| 3/4 | 4.1 | Orders of growth | |
| 3/7 | More on orders of growth | ||
| 3/8 | Project 2 (continued) | ||
| 3/9 | 4.2 | Tree recursion and digital signatures | Homework #3 |
| 3/10 | Project 2 (continued) | ||
| 3/11 | More on tree recursion and digital signatures | ||
| 3/14 | 5.1 | Procedural parameters | |
| 3/15 | Project 2 (last work day) | ||
| 3/16 | 5.2 | Uncomputability | Homework #4 |
| 3/17 | Project 2 peer review | Project #2 first draft | |
| 3/18 | 5.3 | Procedures that return procedures | |
| 3/21 | 5.4 | Application of higher-order programming | |
| 3/22 | Project 3: Fractal curves | Project #2 | |
| 3/23 | 6.1-6.2 | Data abstraction | |
| 3/24 | Project 3 (continued) | ||
| 4/4 | 6.3 | Representations and implementations | Homework #5 |
| 4/5 | Project 3 (concludes) | ||
| 4/6 | 6.5 | Strategy procedures; Overview of other CS courses | Project #3 |
| 4/7 | Project 4: Nim with strategies | ||
| 4/8 | 6.4 | Three-pile Nim | |
| 4/11 | Review/catch-up | ||
| 4/12 | Test 2, 7:00-8:30 PM, OHS 320 (no lab) | ||
| 4/13 | 7.1-7.2 | Lists | |
| 4/14 | Project 4 (continued) | ||
| 4/15 | 7.3 | Basic list processing | |
| 4/18 | 7.4 | Iterative list processing | |
| 4/19 | Project 4 (continued) | ||
| 4/20 | 7.5 | Tree recursion and lists | Homework #6 |
| 4/21 | Project 4 (concludes) | ||
| 4/22 | More on tree recursion and lists | ||
| 4/25 | 7.6 | Movie query system | Project #4 |
| 4/26 | Project 5: Movie queries | ||
| 4/27 | 8.1 | Binary search trees | |
| 4/28 | Project 5 (continued) | ||
| 4/29 | 8.2 | Efficiency issues with binary search trees | |
| 5/2 | 8.3 | Expression trees | |
| 5/3 | Project 5 (continued) | ||
| 5/4 | 9.1-9.2 | Generic operations: multiple representations | Homework #7 |
| 5/5 | Project 5 (concludes) | ||
| 5/6 | 9.2 & 9.4 | More on multiple representations; computer graphics | |
| 5/9 | More on computer graphics | Project #5 | |
| 5/10 | Project 6: Implementing graphics | ||
| 5/11 | 9.3 | Exploiting commonality | |
| 5/12 | Project 6 (continued) | ||
| 5/13 | More on exploiting commonality | Homework #8 | |
| 5/16 | Project 6 (continued) in lab but at class time | ||
| 5/17 | Project 6 (concludes) | ||
| 5/18 | Review/evaluation | Project #6 | |