The course will cover the following topics (not necessarily in this order). See lectures for additional information.
- Elements of software engineering; object-oriented design, testing
- Design patterns
- Asymptotic complexity, big-oh notation, code and pseudocode analysis
- Stacks, queues, lists
- Sorting algorithms
- Priority queues and heaps
- Tree traversals, iterators
- Search trees, balanced trees
- Hash tables
- Graphs, depth-first and breadth-first search
- Weighted graphs, shortest paths (Dijkstra's algorithm), minimum spanning trees (Kruskal's algorithm)
- Tries, text compression
Late Submission Policy
The following will apply to all homeworks, both program submissions and pen-on-paper submissions. It will NOT apply to the project. We will have a separate policy for the project that will be announced in due time. In particular, you do not need to “save” late days from homework to use them on the project. In the following, 1 day means exactly 24hrs.
- 2 “free” late days total, without penalty, for all homeworks (except project) in aggregate; note that you use up a free late day even if you submit only a portion of the homework late;
- once you have used up your “free” 2 days we subtract from the homework score
- 25 pts if you submit anything 1 day late
- 50 pts if you submit anything 2 days late; after that, no submissions are accepted.
Notice that it is worthwhile for you to submit some of the problems or parts late only if the points you may gain this way are more than the 25 or 50 points that you will lose. In particular, the extra credit will be usually worth less than 25 pts, so by submitting it 1 day late you have nothing to gain and may even lose points for that homework.
- Each assignment and each midterm exam will have a regrade request deadline that will be posted, typically one week after the assignment or exam has been returned with your score. Beyond that deadline, regrades can only be ordered by the course instructor after you discuss with him.
For the pen-on-paper assignments and for the midterms we will always have posted solutions and posted grading rubrics. Please consult these carefully before requesting a regrade, especially if you think you did not get enough partial credit points. Partial credit is an inexact discipline and we will stick to what the grading rubric says because it was what everybody else got.
You will need to fill out this form and bring to the course admin, Cheryl Hickey, in Levine 502, together with the assignment or the exam, by the regrade deadline. On the form you will need to indicate which questions should be regraded and what you think the grading errors were.
- For the programming assignments (homework or project) we allow you to indicate small errors (see below) that you have made, which, when fixed, will allow your programs to pass autograder tests. You will need to send an email, by the regrade deadline, to firstname.lastname@example.org identifying exactly the error in your code and including a precise description of the fix that needs to be made. The fix shouldn't require changing more than 1-2 lines of code. A TA will make the change and rerun the autograder tests. If this results in additional points for you, only 80% of these points will be added to your score. If this results in fewer points than you had originally no change will be made to your score.
The CIS121 No-Collaboration-Whatsoever Policy
You ARE allowed to
- Discuss low-level issues, e.g., the meaning of Java constructs, how to use the computing environment.
- Discuss high-level questions such as what the instructor/lab TA said, the content of the textbook or other general resources.
You ARE NOT allowed to
- Discuss issues directly pertaining to the homework questions or their solutions.
- See another students homework solutions, or
- Show your solutions to another student
- This includes asking a classmate to debug your code and agreeing to debug a classmate’s code. If you do this during office hours, know that the TAs are REQUIRED to report your names to the instructor.
- Share any code except the code that is being made available by us on the course website to be used specifically with your solutions
- Occasionally, a SMALL snippet of code FROM THE TEXTBOOK may help your work. You can use such a snippet WITH ATTRIBUTION, i.e., provided you add a comment in which you make clear you copied it from the textbook.
- You can NOT use snippets of code from the Internet (e.g., StackOverflow.com and similar).
- Look at other people’s information
- If you find a terminal on which somebody else has logged in and forgot to log out, you MUST log them out
- When somebody else is typing a password in front of you MUST look out the window, or at your shoes, or at the picture of Brad Pitt or Angelina Jolie that you carry on your keychain.
- Use any code downloaded from the Internet or sent to you by email, Facebook, text, Twitter, or even scribbled notes passed from hand to hand :)
- Share the material that we post for this course with anybody who is not a registered student in this course or a staff member.
- If you find any such material already posted somewhere else you MUST inform the course instructor immediately. Same if you are contacted by people who offer to solve your homework for money, or who knows what else. Use your common sense and ask any member of the staff if you are not sure about a resource you are considering.
Any violation of this policy will be dealt with severely.
OK, all this sounds horrible and I apologize for this, but better safe than sorry... Otherwise, try to enjoy CIS 121 as much as possible :)