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.)
Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.
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 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.
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.
For a more detailed set of guidelines, refer to Suggestions for Clear Lab Reports in Computer Science Courses. I recommend that you look at this document and, if you have questions about project write-ups, ask!
| Date | Reading | Topic | Due |
|---|---|---|---|
| 2/5 | 1.1-1.2 | Introduction; simple expressions | |
| 2/6 | Project 0: Getting started (ungraded) | ||
| 2/7 | 1.2-1.3 | Compound procedures; conditionals | |
| 2/8 | Project 1: Quilting | ||
| 2/9 | 2.1 | Recursion | |
| 2/12 | 2.2 | Induction | Homework #1 |
| 2/13 | Project 1 (continued) | ||
| 2/14 | 2.3-2.4 | Further examples & custom-sized quilts | |
| 2/15 | Project 1 (continued) | ||
| 2/16 | 3.1 | Iteration | |
| 2/19 | 3.2 | Using invariants | Homework #2 |
| 2/20 | Project 1 (continued) | ||
| 2/21 | 3.3 | Perfect numbers, internal definitions, & let | |
| 2/22 | Project 1 (concludes) | ||
| 2/23 | 3.4 | Iterative improvement | Project #1 |
| 2/26 | 3.5 | The Josephus Problem | |
| 2/27 | Project 1.5: Card sorting (ungraded) | ||
| 2/28 | Review/catch-up | ||
| 3/1 | Test 1, 7:00-8:30 PM, OHS 103 (no lab) | ||
| 3/2 | 4.1 | Orders of growth | |
| 3/5 | More on orders of growth | ||
| 3/6 | Project 2: Sum of divisors | ||
| 3/7 | 4.2 | Tree recursion and digital signatures | Homework #3 |
| 3/8 | Project 2 (continued) | ||
| 3/9 | More on tree recursion and digital signatures | ||
| 3/12 | 5.1 | Procedural parameters | |
| 3/13 | Project 2 (continued) | ||
| 3/14 | 5.2 | Uncomputability | Homework #4 |
| 3/15 | Project 2 (concludes) | ||
| 3/16 | 5.3 | Procedures that return procedures | |
| 3/19 | 5.4 | Application of higher-order programming | Project #2 |
| 3/20 | Project 3: Fractal curves | ||
| 3/21 | 6.1-6.2 | Data abstraction | |
| 3/22 | Project 3 (continued) | ||
| 3/23 | 6.3 | Representations and implementations | Homework #5 |
| 4/2 | 6.5 | Strategy procedures; Overview of other CS courses | |
| 4/3 | Project 3 (concludes) | ||
| 4/4 | 6.4 | Three-pile Nim | Project #3 |
| 4/5 | Project 4: Nim with strategies | ||
| 4/6 | Review/catch-up | ||
| 4/9 | 7.1-7.2 | Lists | |
| 4/10 | Test 2, 7:00-8:30 PM, OHS 103 (no lab) | ||
| 4/11 | 7.3 | Basic list processing | |
| 4/12 | Project 4 (continued) | ||
| 4/17 | Project 4 (continued) | ||
| 4/18 | 7.4 | Iterative list processing | Homework #6 |
| 4/19 | Project 4 (continued) | ||
| 4/20 | 7.5 | Tree recursion and lists | |
| 4/23 | 7.6 | Movie query system | |
| 4/24 | Project 4 (concludes) | ||
| 4/25 | 8.1 | Binary search trees | Project #4 |
| 4/26 | Project 5: Movie queries | ||
| 4/27 | 8.2 | Efficiency issues with binary search trees | |
| 4/30 | 8.3 | Expression trees | |
| 5/1 | Project 5 (continued) | ||
| 5/2 | 9.1-9.2 | Generic operations: multiple representations | Homework #7 |
| 5/3 | Project 5 (concludes) | ||
| 5/4 | 9.2 & 9.4 | More on multiple representations; computer graphics | |
| 5/7 | More on computer graphics | Project #5 | |
| 5/8 | Project 6: Implementing graphics | ||
| 5/9 | 9.3 | Exploiting commonality | |
| 5/10 | Project 6 (continued) | ||
| 5/11 | More on exploiting commonality | ||
| 5/14 | Special topic (or catch-up) | Homework #8 | |
| 5/15 | Project 6 (concludes) | ||
| 5/16 | Review/evaluation | Project #6 | |
| 5/21 | Final exam, 10:30-12:30, NHS 121 | ||