CSCI 255 Fall 2024
Introduction to Algorithms and Discrete Structures
Charles Cusack
Computer Science
Hope College
Main
Schedule
Grading
Gradebook
Homework

Policies
College
    Policies
Advice

Notes
Programs
Tutorials
Handin

CSCI 125
CSCI 255
MATH 341
Others

Admin

Course Policies and Expectations

(Updated July 2021)
  • Diversity Statement
    Hope College affirms the dignity of every person as a creature made in the image of God and thus worthy of our earnest respect, our insistent protection, and our self-sacrificing love. We believe every student in the course has something of value to contribute. Please take care to respect the different experiences, beliefs and values expressed by students and staff involved in this course. We support Hope's commitment to diversity and welcome individuals of all ages, backgrounds, citizenships, disabilities, education, ethnicities, family statuses, genders, geographical locations, languages, military experience, political views, races, religions, sexual orientations, socioeconomic statuses, and work experiences.
  • Your Responsibilities
    • Refrain from the use of any technology (e.g. cell phones, iPods, tablets, laptops, etc.) while in the classroom unless it is specifically permitted.
    • Check your e-mail at least once a day and preferably several times a day. "I didn't read my e-mail" is never a valid excuse for not knowing something that I mentioned in an e-mail.
    • Look at the Schedule before every class to ensure you are doing everything you are supposed to do.
      • Complete assignments listed in the Events column.
      • Read the section from the textbook listed in the Resources column before class.
      • Other handouts listed in the Resources column do not have to be read before class unless specifically mentioned.
      • Write and submit an SRQ if required (see below).
    • Take all tests and quizzes when assigned.
    • Submit all assignments by the specified deadlines.
    • Arrive to class on time.
    • Pay attention during class.
  • Getting Help
    • Me (in order of preference)
      • Come to my office hours. There is no appointment necessary—just show up.
      • Schedule an appointment using Google Calendar (24 hours in advance if possible)
      • Stop by my office and hope I am in and not busy.
      • Send me an e-mail
      • Call me on the phone
    • Course web page
    • Textbook(s)
    • Links listed on the course web page
    • The Computer Science Help Center (for lower-level courses)
    • Reference books (A Java or C++ book, for instance)
    • A tutor through the ASC
  • Grading
    • See the Grading page for a chart that gives the percentage breakdown for the course.
    • All assignments in a given category are equally weighted regardless of how many points they are out of. Thus, a homework assignment worth 10 points is weighted the same as one with 100 points. I use the percentage score on each assignment, not the total number of points.
    • Final grades will be based on the scale in the table below—round your final percentage down at .49 and up at .50 (e.g. 82.49 rounds to 82 and is a B-).
      Percent 93-100 90-92 87-89 83-86 80-82 77-79 73-76 70-72 67-69 63-66 60-62 0-59
      Grade A A- B+ B B- C+ C C- D+ D D- F
  • Attendance
    • You must attend every class.
    • If you miss a class, you are responsible to talk to a classmate to find out any details you missed.
    • You should inform me ahead of time (when possible) if you are going to miss class.
    • In class activities (e.g. worksheets, quizzes, exams, etc.) cannot be made up regardless of the reason for your absence. There are two exceptions:
      • If a worksheet is available ahead of time, you may complete and submit it before the missed class.
      • Major exams can be made up if you miss class due to a serious illness and you inform me as soon as you are able.
    • Assignments handed in before the missed class will be accepted, but assignments will not be accepted if you attempt to hand them in after the missed class (e.g. if you sleep in and miss class).
  • Late Assignment policy
    • Unless otherwise specified, all of my courses have the Free Late policy in effect.
    • According to this policy, I will accept one (and only one) assignment up to 1 class period late.
    • Since you only get one, only use it if you absolutely must! However, your goal should be to never use the Free Late policy.
    • In order to use the Free Late, you must
      1. attend class on the due date, and
      2. hand in a piece of paper with
        • your name,
        • the phrase "I want to use my Free Late", and
        • a one to two sentence reason/excuse. Any reason/excuse is valid, but I would like to know what it is.
    • This only applies to homework assignments, programming assignments, and lab reports. It does not apply to term papers, quizzes, tests, etc.
    • Other than the one Free Late assignment, I will not accept late homework.
    • Note that assignments cannot be turned in after the last day of class, so you cannot use the Free Late for assignments due on the last day of class.
  • Homework
    • Unless otherwise specified, assignments are due at the beginning of class on the due date.
    • Homework assignments should be clear, concise, and organized.
    • You must show all of your work for each problem on a homework assignment, even if a problem does not specifically say so. In other words, do not just write down your final answer. Include all of the steps you performed to get the answer.
    • Problems should be in the order they appeared on the assignment, and your assignment must be stapled together, preferably with your name appearing on each page of the assignment.
    • You should use full English sentences where appropriate.
    • Charts/diagrams/drawings should be neatly drawn and clearly labeled.
    • Algorithms should be clearly written, documented and labeled.
    • Mathematical proofs should be properly and neatly written.
    • Algebra ≠ Proof. Algebra+context=Proof.
    • I will deduct points from any papers which are disorganized, illegible, or contain extraneous material.
    • You should always review your homework assignments after they are handed back.
      • Read all of the comments to determine what you did right and what you did wrong.
      • Clear up any misunderstandings/mistakes by looking at the textbook, resources on the course web page, or asking me.
      • Make sure you are able to do all of the problems correctly.
      • If you have questions about how anything is graded, please ask. Grading questions must be resolved no more than 2 weeks after the assignment is first handed back.
  • Homework Assistance
    • You must indicate any assistance/collaboration you had on an assignment by writing "(with X)" either after the relevant problem(s) or at the top if it applies to the majority of an assignment. There are two different types of assistance, and you must specify either type whenever you utilize it.
      1. People. This includes
        • The Computer Science Help Center
        • Me
        • Teaching assistant or grader
        • Other students in the class (when allowed—make sure you check that this is O.K. first!)
        • Any other person (as above, make sure this is permitted)
      2. External Sources such as websites or books other than your textbooks.
        • It is O.K. to use other sources to learn the material from courses.
        • Unless otherwise specified, it is not O.K. to look for solutions from external sources. In other words, it is not O.K. to do a search based on the details of a homework problem unless the Grading page for your course specifically mentions this.
    • Significant outside assistance: If a course allows you to do more specific sharing with each other and/or getting specific details from the Internet, books, or other external sources, the following rules apply:
      1. You must
        1. Put the solution in your own words.
        2. Provide enough explanation to demonstrate that you fully understand the solution.
        3. Provide the URL (for websites), title/author (for books/papers, etc.), and/or name(s) of those you collaborated with.
      2. You will only receive up to 50% credit for the problem.
      Be warned! For courses in which I allow this, I can usually tell when you get help from external sources. Therefore, make sure you indicate that you got assistance. Failing to do so may be considered a violation of the Academic Integrity Policy (see below). This is not a license to violate the Academic Integrity Policy (see below). Instead it is a way for both you and me to have a better understanding of your learning process by documenting the appropriate use of assistance.
  • SRQ (Summary/Response/Questions)
    • An SRQ is a response to a reading assignment. The main purpose of an SRQ is to help you reflect on what you read and summarize what you learned. In other words, writing an SRQ helps you digest the material. They can also provide a starting point for class discussions.
    • Some courses will require that you write a 1-2 page SRQ on every day there is a reading assignment. Check the Grading page for your course to see if they are required. If multiple sections are assigned, you should write a single SRQ for those sections. For reading assignments that are not from the textbook, you only need to write an SRQ if the link to the reading in the schedule contains "(SRQ)" after it.
    • Your SRQ must be typed/typeset (using Microsoft Word, Open Office, etc.) and submitted as a PDF named BookAuthorLastName-X.Y.pdf, where BookAuthorLastName is the last name of the first author of the book in question and X.Y is the section of the book (or just X if it is for a whole chapter or there are not sections).
      For example, if the author is Brookshear and the assignment is for section 2.3, the file would be Brookshear-2.3.pdf. For sections 2.4-2.7, you would name it Brookshear-2.4-2.7.pdf.
      There are various ways of creating PDFs. CutePDF, which is installed on all of the lab machines and is freely available, installs like a printer so you can print to a PDF document from whatever program you use.
    • In each document, include your name and the chapter/section(s) of the book that the summary is about. Then include the following three sections (with headings):
      • Summary: Start with a 1-2 sentence overview of the main topic(s) of the section. Then fill in more details. Highlight the definitions, theorems, etc. that seem to be the most important. The exact format of the summary might change from book to book or section to section depending on the type of material.
      • Response: In 1-4 sentences, discuss what you think about the chapter/section—is it interesting or boring? Does it connect to something else in the book or from another class? Can you see how the material might come in handy in another context?
      • Questions: When you read something there will always be questions. There are several types of questions you might have.
        • Things you didn't understand. Give specific terms, concepts, examples, or exercises that you had trouble with, being as detailed as possible.
        • How this section connects with previous material.
        • How the material might be extended or applied to other things.
        • Why certain symbols or terms where chosen.
        There are plenty of other questions that might come to your mind as you read—include them.
    • Grades will be on a scale from 0-4 based on completeness, correctness, insight, and mechanics (grammar, spelling, etc.). Sometimes I will grade solely based on having turned it in (so 0 or 4). Roughly, the grades mean the following:
      0Didn't turn it in
      1Very poor attempt
      2The required sections are present, but too brief or very poorly written.
      3A very good attempt, but there are some problems with one or more of the sections and/or the mechanics need work.
      4An excellent SRQ.
    • The late policy does not apply to SRQs—they must be handed in on time or they don't count.
    • See the Grading page of your course for how to submit your SRQs.
  • Academic Integrity
    You are responsible to follow the Code for Academic Integrity in the Catalog, so please read it.
    • You must do your own work. Putting your name on an assignment (or in a program) implies that it is your work.
    • You are always free to discuss the concepts, examples, etc. from the textbook or class sessions. Often clearing up general confusions goes a long way in helping solve specific problems on your own.
    • You may discuss homework assignments only in very broad terms and only to provide each other nudges.
      • Examples of what is permitted
        • Get clarification about what is being asked.
        • Discuss the general concepts related to an assignment (e.g. On a program that requires a HashMap, you may discuss what it is, what the various methods do, the syntax for using it, etc.).
        • Give vague hints (e.g. "Look at section 3.4 of the textbook", "I used 3 classes", or "Use an induction proof").
        • Compare the overall structure/design of a program (e.g. what classes/methods you each used and why) after you both (all) already have ideas and as long as that is not the main point of the assignment.
        • Look at someone else's code to help them find a bug, but only after you have already completed your code. The idea is to be a second pair of eyes to help them see the obvious error(s) that they keep looking past, not to help them figure out how to do something they don't know how to do.
      • Examples of what is not permitted (Not a complete list!)
        • Look at someone else's solution, proof, code, etc. so you can copy it.
        • Work through a problem step by step with someone else.
        • Talk through the solution of a problem as each of you write down what you are saying.
        • Talk through the details of how to implement a class/method while you each type it in.
        • Ask questions like "What classes/methods/fields/variables are you using?", "Can I see how you implemented the thingamajig?", "How do I start this proof?", "What did you do after that?"
    • In my classes you may compare answers/results with each other, but not solutions/methods, and only after you have both (or all) completed them.
      • This does not include proofs, essay questions, code, or any other type of problem/assignment in which there isn't a clear distinction between the answer and the solution (i.e. the method to get the answer).
      • This mainly includes numerical answers and the output from programs.
      • The idea is to give you an opportunity to be more confident in your work, not to copy someone else's work.
      • Make sure both you and the other person (people) have completed a given problem before discussing it.
      • If you compare answers and they are different, you should each check your own work. You should not compare the details of your work.
      • Make sure you clearly understand the boundaries!
      • Be aware that this may not be permitted in your other classes.
    • Under no circumstance should you copy any material from any source (e.g. classmates, friends, a teaching assistant or tutor, the textbook, the Internet, etc.) without attributing it to that source, and then only when appropriate (e.g group project or term paper).
    • You must fully understand everything that you turn in. If you don't, then you probably got too much help from somebody and are violating the policy.
    • You are responsible to make sure nobody has access to your work.
      • If somebody copies your homework or program, you will both be held responsible and punished.
      • Make sure nobody has access to your files (from your thumb drive, your computer or on any department PCs or servers).
      • Don't leave scratch paper or printouts of your work where others can obtain them.
      • Tear up any paper before you throw it in the trash/recycle bin.
    • If you are found guilty of violating the policy the result will be a 0 on the assignment in question (even if the violation only involves one problem) and you may receive an 'F' for the entire course depending on the severity of the incident. In both cases a letter will also be sent to the Provost in accordance with the college's policy. I don't care if it will ruin your GPA, you will lose your scholarship, or your parents will disown you. Assuming you read this during the first week of class as you were asked to, you knew the risks when you decided to violate the policy.
  • Rubrics
    Here are some rubrics I use from time to time:

    Algorithm Rubric
    Points Category Description
    2CorrectThe algorithm does what it is supposed to do.
    2CompleteYou include all pertinent details.
    2Clear/ConciseYour description of the algorithm makes perfect sense and isn't bogged down in too many unnecessary details.
    2EfficiencyYour algorithm is as efficient as possible and/or meets the required efficiency. Points may or may not be awarded if your algorithm is not correct.
    2AnalysisYou give the worst-case performance of your algorithm with justification (not necessarily a formal proof). When possible and practical, you include the average-case (or expected) performance. Point may or may not be awarded if your algorithm is not correct.

    Proof Rubric
    Points Category Description
    2CorrectYou prove the right thing, and you prove the thing right.
    2CompleteYou include all pertinent details.
    2Clear/ConciseYour proof is easy to follow/understand and does not contain extraneous details.
    2ConventionsYou follow the proper conventions for the given type of proof.
    2Misc.A catch-all criteria that is based on the exact problem.

    Computational Problem Rubric
    Points Category Description
    2CorrectYou used a correct technique to get the correct answer.
    2CompleteYou include all pertinent details.
    2Clear/ConciseYour work is easy to follow/understand and does not contain extraneous details.
    2PlausibleEven if your answer is not correct, it is at least within the realm of possibilities in the given context.
    2Misc.A catch-all criteria that is based on the exact problem.