Algorithms and OOD (CSC 207 2013F) : Handouts
Summary: The course front door provides a quick summary of the weights of various components of the course. The narrative on teaching and learning provides some general perspectives on how I teach, how I hope you learn, and how I grade. This document provides a bit more detail on how I will be grading this particular class.
English writers follow conventions of the English language. (Okay, not all of them, but most of them.) These conventions dictate not only word meaning and order, but also punctuation. Similarly, programmers also have conventions to follow. Some come from the language (e.g., the meanings of braces), but many come from the local programming community. Conventions dictate indentation, the way loops are formatted, the way and place variables are declared, and so on and so forth.
I think it's difficult to read badly formatted code. I know it's difficult to read code that's formatted using multiple styles. I've observed that almost every FOSS community has coding conventions for their projects - how loops are formatted, how variables are declared, and so on and so forth. And I hear from our alums that most of the companies they work for require that their programmers follow local coding conventions when working on a project. Hence, I require that students in this course follow coding conventions.
I'm tempted to design my own set of code conventions, based on the GNU C Source Code Formatting Standards, which I use in all of my C coding projects (not least because I work on GIMP source code, which follows those conventions). However, there are a widely accepted set of Java coding conventions, Code Conventions for the Java Programming Language, published by the now-defunct Sun Microsystems, the original designers of the Java programming language. I find these conventions misguided, at best. Nonetheless, they are a widely used standard, and hence I require you to use these conventions. You can find a link to them at the top of very page.
How serious am I that I expect you to use these conventions. Serious enough that I will return ungraded any work I receive that has five or more violations of the Code Conventions. Students may then correct those violations and return the work to me, although I will then impose a penalty (approximately 10% of the grade on the assignment) after regrading. I will not apply this policy to code written during class time (e.g., during an in-class examination).
I encourage, but do not require, you to comment your end braces. In my too many years of programming and helping students debug programs, I've found that knowing what a brace is supposed to end is incredibly helpful (particularly since we often forget or add extra end braces).
My experience shows that students who turn in work late learn significantly less than students who turn material in on time. (I'm not sure about cause and effect.) Hence, I strongly discourage late assignments. Unless prior arrangements have been made, assignments are due at the time stated on the homework assignment (typically 10:30 p.m. on Monday evenings). Late assignments are penalized approximately 10% per day late.
Because I am concerned about your health and well being, I will waive the late penalty if (1) you start the assignment at least three days in advance of the due date; (2) you get to sleep by midnight the night before the assignment is due; (3) you expend a reasonable amount of effort to complete the assignment by midnight; (4) you turn in a note attesting to facts (1), (2), and (3) when the assignment is due; and (5) you talk to me ASAP about any problems you've had on the assignment.
If you are ill, I will make appropriate accommodations. Please let me know as soon as possible if illness will make it difficult for you to turn in an assignment on time. (And yes, I realize that it's not always possible to do so in advance.)
As I suggest in my statement on teaching and learning, I don't think you learn the material as well if you don't participate actively in the class. I also know that if you're not here, you can't participate. Hence, a portion of your grade is based on participation and attendance. Students who miss no more than two classes and who regularly answer questions or make comments in class receive 90 for participation. Missing 3-5 classes results in a 10 point penalty. Missing 6-8 classes results in a 25 point penalty. Missing 9 or more classes results in a 50 point penalty. Particularly good answers, comments, and questions result in bonus points for participation.
Because I do not want you to come to class when you are ill (and likely to infect others), I am likely to moderate this grading scheme for illness.
You don't learn most of the concepts in this class just by listening - you have to write programs to understand programming, algorithms, ADTs, data structures, and object-oriented design. Hence, you will have weekly programming assignments in this course.
Because students can often learn and accomplish more in teams, I encourage collaboration on homework assignments. You may choose to do most weekly homework assignments alone or with one or two partners. If you do work with partners, I would recommend (and may require) that you choose different partners in different weeks. I hear repeatedly from our graduating seniors that too often they felt trapped in a group, and realized that they would have learned better and learned differently if they had rotated groups.
I have tried a variety of approaches to grading homework. I admit to some fondness for plus/check/minus grading, which looks at the big picture and not niggling details. But I also like using a detailed rubric that covers the various aspects of the assignment. I may be experimenting with multiple approaches this semester.
Since different people have different opinions, I thought I should let you know about my plus/check/minus/zero system, that I do plan to employ from time to time. Homework that is primarily correct will earn you a check. Errors will earn you a check-minus or a minus. Significant errors may earn you a zero. Failure to turn the assignment in will earn you a zero. Particularly nice work will earn you a check-plus or a plus. At the end of the semester, I will convert the symbols to a letter or numeric grade. If your grades are mostly checks, you will earn a B on the homework component of your grade. Plus grades on approximately 1/4 of the graded assignments and plus checks on remaining assignments will earn you an A. Minus grades on the majority of the assignments will earn you a C. Zero grades will earn you an even lower grade.
To help you monitor your learning, you will be required to complete a “wrapper” for most assignments. After reading each assignment, but before sitting down to undertake the assignment, you will complete a short survey that asks you to estimate the amount of time you will need to complete the assignment, and possibly answer some other questions. After you have completed the assignment, you will report how long the assignment actually took and reflect on any differences from your prediction. My colleague Janet Davis tells me that evidence suggests that doing such activities enhance learning.
The best way to learn is by doing. During most classes, you will work through programming problems with an assigned partner. However, in my experience, students do the work and then don't reflect back on it. I recommend that you take notes on what you've done in lab to prepare for quizzes and exams. Such notes are particularly useful on exams, which are typically “open notes”.
To encourage you to think carefully about the material, for a few labs I will ask you to write up one or two exercises and submit them for review. I will do my best to let you know which exercises to write up, and will also post them on the course web site.
You and your lab partner(s) may complete the writeup together or individually; you should decide which by the end of class. If you do the lab writeup on your own, you must acknowledge your partner (any anyone else who gave you help) in your writeup.
Your writeup should include your solution to each assigned exercise. If the exercise directs you to write Java code, include your Java code. If the exercise directs you to find out what the output of some code is, copy and paste the output from Eclipse. If the exercise asks a question or asks you to explain something, write an answer in English. You do not need to copy instructions or problem statements from the lab exercises into your writeup, but do number your solutions.
Send your lab writeup to
That email address goes to me and to your grader (who I prefer remain
anonymous). The subject of the email should take the form
“CSC 207 Lab: Title of Lab”.
Lab writeups are graded with an acceptable/unacceptable binary. Your write is acceptable if it includes a solution or evidence of serious effort for each assigned exercise. Your writeup is unacceptable if it was not turned in or if there was no evidence of reasonable effort. If you were not able to complete an exercise because of its difficulty, your work is still acceptable if you explain where you got stuck and come talk to me to get help. So, in case it's not clear, every diligent student will earn full credit for lab writeups.
All of the labs for this semester are new or significantly revised. Hence, we'd like to hear from you what went well and what went poorly. If all goes well, I will have a Google survey prepared for each of my labs. You are required to fill out fifteen of those surveys (for about a third of the labs). I would like you to fill out more than that, but only require you to fill out fifteen.
So that I know you filled out the labs, I will ask you to include your name when you fill out a survey. I will have an assistant to record and remove the names before I look at the survey data.
I believe that you show mastery through individual work on difficult problems. I also believe that you need time and resources to work on such problems. Hence, all of my exaninations (except the final) are take-home examinations. Most are likely to have four problems. Correct or mostly correct solutions on all four problems will earn you an A. Correct or mostly correct solutions on three problems will earn you a B. Correct or mostly correct solutions on two problems will earn you a C. Correct or mostly correct solutions on one problem will earn you a D. I will probably include a wellness policy on exams (e.g., if you stop at eight hours, I guarantee you a C or better on the exam).
Copyright (c) 2013 Samuel A. Rebelsky.
This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.