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 reports. I recommend that you look at this document and, if you have questions about lab write-ups, ask!
| Date | Reading | Topic | Due |
|---|---|---|---|
| 9/8 | 1.1-1.2 | Introduction; simple expressions | |
| 9/9 | Lab 0: An ungraded introduction | ||
| 9/10 | 1.2-1.3 | Compound procedures; conditionals | |
| 9/13 | 2.1 | Recursion | |
| 9/14 | Lab 1: Quilting | ||
| 9/15 | 2.2 | Induction | Homework #1 |
| 9/16 | Lab 1 (continued) | ||
| 9/17 | 2.3-2.4 | Further examples & custom-sized quilts | |
| 9/20 | 3.1 | Iteration | |
| 9/21 | Lab 1 (continued) | ||
| 9/22 | 3.2 | Using invariants | Homework #2 |
| 9/23 | Lab 1 (concluded) | ||
| 9/24 | 3.3 | Perfect numbers, internal definitions, & let | |
| 9/27 | 3.4 | Iterative improvement | Lab #1 |
| 9/28 | Lab 1.5: Empirical Time Tests (ungraded) | ||
| 9/29 | Review/catch-up | ||
| 9/30 | Test #1, 7:00-8:30 PM (no lab) | ||
| 10/1 | 3.5 | The Josephus Problem | |
| 10/4 | 4.1 | Orders of growth | |
| 10/5 | Nobel Conference (no class) | ||
| 10/6 | Nobel Conference (no class) | ||
| 10/7 | Lab 2: Orders of Growth | ||
| 10/8 | 4.2 | Tree recursion and digital signatures | Homework #3 |
| 10/11 | More on tree recursion and digital signatures | ||
| 10/12 | Lab 2 (continued) | ||
| 10/13 | 5.1 | Procedural parameters | Homework #4 |
| 10/14 | Lab 2 (concludes) | ||
| 10/15 | 5.2 | Uncomputability | |
| 10/18 | 5.3 | Procedures that return procedures | Lab #2 |
| 10/19 | Lab 3: Fractal Curves | ||
| 10/20 | 5.4 | Application of higher-order programming | |
| 10/21 | Lab 3 (continued) | ||
| 10/22 | Reading break (no class) | ||
| 10/25 | Reading break (no class) | ||
| 10/26 | Lab 3 (continued) | ||
| 10/27 | 6.1-6.2 | Data abstraction | Homework #5 |
| 10/28 | Lab 3 (concludes) | ||
| 10/29 | 6.3 | Representations and implementations | |
| 11/1 | 6.4 | Three-pile Nim | Lab #3 |
| 11/2 | Lab 4: Nim with Strategies | ||
| 11/3 | 7.1-7.2 | Lists | |
| 11/4 | Lab 4 (continued) | ||
| 11/5 | 7.3 | Basic list processing | Homework #6 |
| 11/8 | Review/catch-up | ||
| 11/9 | Test 2, 7:00-8:30 PM (no lab) | ||
| 11/10 | 7.4 | Iterative list processing | |
| 11/11 | Lab 4 (concludes) | ||
| 11/12 | 7.5 | Tree recursion and lists | |
| 11/15 | 7.6 | Movie query system | Lab #4 |
| 11/16 | Lab 5: Movie Query System | ||
| 11/17 | 8.1 | Binary search trees | |
| 11/18 | Lab 5 (continued) | ||
| 11/19 | 8.2 | Efficiency issues with binary search trees | |
| 11/22 | 8.3 | Expression trees | |
| 11/23 | Lab 5 (continued) | ||
| 11/24 | Catch-up | Homework #7 | |
| 11/25 | Thanksgiving Break (no class) | ||
| 11/26 | Thanksgiving Break (no class) | ||
| 11/29 | 9.1-9.2 | Generic operations: multiple representations | |
| 11/30 | Lab 5 (concludes) | ||
| 12/1 | 9.2 & 9.4 | More on multiple representations; computer graphics | Lab #5 |
| 12/2 | Lab 6: Implementing Computer Graphics | ||
| 12/3 | More on computer graphics | ||
| 12/6 | 9.3 | Exploiting commonality | |
| 12/7 | Lab 6 (continued) | ||
| 12/8 | Special topic (or catch-up) | Homework #8 | |
| 12/9 | Lab 6 (concludes) | ||
| 12/10 | Review/evaluation | Lab #6 | |
| 12/14 | Final exam, 1:00-3:00 PM (tentative) | ||