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 your lab instructor for help or guidance.
The lab instructors will also be the one who grade the reports. When they grade these reports, they will evaluate the code for accuracy, efficiency, clarity, and style. Additionally, they will consider how well your report achieves the goals they have established for that report as a piece of writing. For example, they 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 they provide.
If you are too sick to complete a project or homework 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.
|9/7||1.1-1.2||Introduction; simple expressions|
|9/8||Project 0: Getting started (ungraded)|
|9/9||1.2-1.3||Compound procedures; conditionals|
|9/13||Project 1: Quilting|
|9/15||Project 1 (continued)|
|9/16||2.3-2.4||Further examples & custom-sized quilts|
|9/20||Project 1 (continued)|
|9/21||3.2||Using invariants||Homework #2|
|9/22||Project 1 (concludes)|
|9/23||3.3||Perfect numbers, internal definitions, & let|
|9/26||3.5||The Josephus problem||Project #1|
|9/27||Nobel conference (no lab)|
|9/28||Nobel conference (no class)|
|9/29||Project 2: Sum of divisors|
|10/3||Test 1, 7:00-8:30 PM, OHS 103 (no class)|
|10/4||Special project: Card sorting (ungraded)|
|10/5||4.1||Orders of growth|
|10/6||Project 2 (continued)|
|10/7||More on orders of growth|
|10/10||4.2||Tree recursion and digital signatures|
|10/11||Project 2 (continued)|
|10/12||More on tree recursion and digital signatures||Homework #3|
|10/13||Project 2 (last work day)|
|10/17||Project 2 peer review||Project #2 first draft|
|10/18||Project 3: Fractal curves|
|10/20||Project 3 (continued)|
|10/21||5.3||Procedures that return procedures||Project #2|
|10/26||5.4||Application of higher-order programming|
|10/27||Project 3 (concludes)|
|10/31||6.3||Representations and implementations||Project #3|
|11/1||Project 4: Nim with strategies|
|11/2||6.5||Strategy procedures; Overview of other CS courses||Homework #5|
|11/3||Project 4 (continued)|
|11/8||Project 4 (continued)|
|11/9||Test 2, 7:00-8:30 PM, OHS 103 (no class)|
|11/10||Project 4 (concludes)|
|11/14||7.3||Basic list processing||Project #4|
|11/15||Project 5: Movie queries|
|11/16||7.6||Movie query system|
|11/17||Project 5 (continued)|
|11/18||7.4||Iterative list processing|
|11/21||7.5||Tree recursion and lists||Homework #6|
|11/22||Project 5 (continued)|
|11/28||9.1-9.2||Generic operations: multiple representations||Homework #7|
|11/29||Project 5 (concludes)|
|12/1||Project 6: Implementing graphics||Project #5|
|12/2||More on graphics and multiple representations|
|12/6||Project 6 (continued)|
|12/7||8.1||Binary search trees|
|12/8||Project 6 (continued)|
|12/9||8.2||Efficiency issues with binary search trees||Homework #8|
|12/13||Project 6 (concludes)|