SI335 Computer Algorithms
Course Policy, Spring AY17

Coordinator: Chris Brown ∘ Michelson 357 ∘ wcbrown@usna.edu ∘ 3x6817
Course Description: Presents techniques for designing and analyzing computer algorithms including divide and conquer, dynamic programming and greedy methods. Introduces classic algorithms for problems such as searching and sorting, graph analysis, file compression and cryptology.
Learning Objectives:
  1. Demonstrate an understanding of a variety of classic standard algorithms. (supports outcome CS-j)
  2. Employ a variety of standard techniques to devise efficient algorithms. (supports outcome CS-j)
  3. Compare and analyze the performance of algorithms. (supports outcome CS-j)
  4. Understand the local and global impact of algorithm design and performance, especially as it relates to cryptography, and the implied ethical issues and responsibilities. (supports outcomes e, g)
  5. Develop effective written arguments regarding algorithmic performance. (supports outcome f)
Student Outcomes:
Textbook(s):
Extra Instruction: Extra instruction (EI) is strongly encouraged and should be scheduled by email with the instructor. EI is not a substitute lecture; students should come prepared with specific questions or problems.
Collaboration: The guidance in the Honor Concept of the Brigade of Midshipmen and the Computer Science Department Honor Policy must be followed at all times. See:

www.usna.edu/CS/resources/honor.php

For the purposes of this class, we make a distinction between two types of what would be called collaboration in the Department Honor Policy:

Discussion is allowed on any take-home quiz or programming project, as long as it is clearly documented. However, collaboration is only allowed on the take-home quizzes. The only help permitted on problem sets is within a student's group. At all times, help from any human not currently enrolled in SI 335 is never permitted. This includes other students not in the class, parents, friends, other faculty members, and even online humans (e.g., asking questions in an online forum or discussion board). The only exceptions are the current instructor and SI335 MGSP leader(s).

Any resources other than those on the course website must also be documented clearly and specifically. For example, if a website is used, the full address of the web page in question must be listed, along with what in the assignment that page was used for. Just saying "Wikipedia" is not enough, but something like "en.wikipedia.org/wiki/Big_O_notation example used in problem 2" would be good.

All collaboration and outside sources should always be cited. The same rules apply for giving and receiving assistance. If you are unsure whether a certain kind of assistance or collaboration is permitted, you should assume it is not, work individually, and seek clarification from your instructor.
Classroom Conduct: The section leader will record attendance and bring the class to attention at the beginning and end of each class. If the instructor is late more than 5 minutes, the section leader will keep the class in place and report to the Computer Science department office. If the instructor is absent, the section leader will direct the class. Drinks are permitted, but they must be in reclosable containers. Food, alcohol, smoking, smokeless tobacco products, and electronic cigarettes are all prohibited. Cell phones must be silent during class.
Late Policy: Solutions to all problem sets and programming projects will be published as soon as they are due, and therefore no work submitted after the deadline will receive credit. Exceptions to this rule will only be made in special circumstances or when requested well in advance.
Grading:
Quizzes Quiz questions will be given each week. Some will be emailed as take-home questions and some will be done in class. Any students not present for class must complete the in-class questions as take-home quiz questions. Take-home questions must be completed prior to the start of the next class. Students may collaborate on take-home questions as long as it is clearly documented.
Problem Sets More extensive non-programming problems, that require significant time, effort, and care, will be assigned in problem sets due every 4 weeks or so. Problem sets may be completed in groups up to a certain size. Solutions will be presented orally, in person with the instructor. Each group is also required to hand in a written outline of their solutions. Each group member is responsible to understand and explain any solution. More details on this process are available on the course webpage. No collaboration or discussion is allowed outside of the group. Any outside resources used must be clearly documented.
Programming Projects There will be 3 programming projects in this class, spaced out between the due dates of the problem sets. Details on electronic submission will be published along with the projects and must be followed. Programming projects in this class will require not only coding skills, but also algorithmic development skills, and therefore starting early is extremely important. For programming projects, informal discussion between students is allowed, but not collaboration (see definitions below). All discussion and outside resources must be clearly and specifically documented.
Exams There will be two midterm exams and one final exam. The final exam will be cumulative. Students will be allowed one "crib sheet" for the midterms and two for the final.
Final Grade