CSCI 255 Fall 2013
Introduction to Algorithms and Discrete Structures
Archived Class
Charles Cusack
Computer Science
Hope College





Grade Distribution

  • Exams
    • There will be one or two exams during the semester and one final exam.
    • The exams are equally weighted
    • You are expected to take them when they are scheduled.
  • Homework
    • There will be a veritable plethora of homework assignments.
    • The homework will consist of problems and/or programs. Some will be larger than others, but they will all be equally weighted.
    • Please review the relevant sections of the Policies page for additional details about my expectations for homework assignments.
    • Although you will learn a lot more by struggling through problems on your own, you may use External Sources for up to 50% credit on a problem. See the Policies page for more details.
    • See below for more details about how programming assignments might be graded.
  • Activities
    • This category covers things like worksheets and pop quizzes we do during class.
    • Each activity that is counted will be equally wieghted.
    • The method/depth of grading will vary widely on these activities. That is, some will be graded like an exam or homework assignment, and some may involve me checking off your name if you did it.
    Here is a list of the activities (assuming I keep it up to date):
    1. Overall participation during class the first few weeks
    2. Filling out Table 3.8 (Thursday, 9/12)
    3. Recurrence Relation Reading Worksheet
    4. DS Reading 1
    5. DS Reading 2
    6. Heaps Reading
    7. Sorting Reading
    8. BFS Reading (or DFS Reading? I think I skipped one of them for the gradebook.)
    9. MST Reading
    10. Shortest Path Reading
    11. Dynamic programming worksheet
  • Miscellaneous
    There are five main criteria, not necessarily equally weighted:
    1. Preparation. I expect you to prepare for every class, usually by reading one or more sections from the textbook. If I get the impression that you are not doing so, points will be deducted.
    2. Classroom discussion and activities. This includes attendance, how engaged you are during class, whether you are contributing to a positive learning environment or causing distractions, etc.
    3. Getting help when needed (Office Hours, etc.). Contrary to what some students may believe, it is a good thing to ask your professors questions when you get stuck. Thus, I want to encourage you to do so. If you are struggling with the material, whether or not you come to get help will be reflected in this part of your grade.
    4. Colloquium attendance. You must attend at least 75% of the colloquiums to not get marked down.
    5. SALT. If you do not complete the SALT by the Friday before exam week you will lose points.

Programming assignment grading criteria
Program grades are usually based on the following criteria, as specified on each assignment. For each criteria, I give a list of the sorts of questions I am thinking about as I grade. The lists are by no means exhaustive, but should give you an idea of what I am looking for. Some assignment may give additional criteria.
  • Correctness: Does it compile? Does it run properly? Does it do everything according to the specification? If specified, are the classes/methods/functions named properly? Are the parameter types, etc. correct? Is the input/output correct? Did you follow all of the instructions?
  • Design: Is each of your classes cohesive—that is, does each class represent one specific and well defined thing, and does each method do one well defined thing? Does your code involve a low level of coupling? Is your GUI separate from the main program logic? If applicable, is your code extendable? Did you utilize inheritance where applicable? Are you utilizing the appropriate data structures?
  • Documentation: If a specific guide was given for documentation (e.g. use Javadoc comments), did you follow it? Does each file contain the filename, author, class, date, and an overview of what is in the file? Are pre/post conditions given for each method/function? Is each class and segment of code documented? Is each variable/parameter/field described?
  • Style: If you were given a specific style guideline to follow, did you follow it? Are functions/classes used when appropriate, including proper and intelligent use of variables, return values, and arguments? Do the class functions make sense? Are the names for variables/functions/classes descriptive? Are loops indented properly? Is the code neat and organized? Has any extraneous code been removed? Is your code understandable and as simple as possible? Are errors dealt with in a sensible way? Do you use complicated and/or long code when short and simple would suffice?
  • Write-up or Analysis: Is it in the specified form (README file, Word document, Text document, HTML)? Does it have the required information (charts/diagrams/examples)? Is a complete analysis performed as specified? Did you fully answer all questions? Is it well written (organization/grammar)?
  • Performance/Efficiency: Is each function implemented as efficiently as possible, both in terms of running time and code length? Is the overall runtime as it should be? Did you utilize the proper data structures and algorithms for each given task?
  • GUI/Interface: How easy is it to use? Does it look good? Is the input/output clear? Is the GUI user-friendly? Is it clear how to use it? Are all inputs handled properly? Are errors dealt with in a way that allows the user to fix their mistakes, including error messages where appropriate?
  • Learning Gains: Does your code/program demonstrate that you learned something new? Did you do the bare minimum or did you go above and beyond to learn new things? Does your code/program "wow" me?