Instructor: Dr. Daniel S. Roche, Michelson 322, x36814, .
Course Website: http://www.usna.edu/cs/roche/335/
- Dasgupta, Papadimitriou, and Vazirani. Algorithms. McGraw Hill, 2008 (optional).
- Cormen, Leiserson, Rivest, and Stein. Introduction to Algorithms, 3rd ed. MIT Press, 2009 (optional).
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.
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.
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.
There will be one midterm exam and one final exam. The final exam will be cumulative. Students will be allowed one "crib sheet" for the midterm and two for the final.
- 15%: Quizzes
- 20%: Problem sets (4)
- 20%: Programming projects (3)
- 15%: Midterm exam (1)
- 30%: Final exam
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.
Each student is responsible to make up the work they miss due to planned absences such as movement orders for sports and extra-curricular activities as well as medical procedures. There will be no blanket exception to the late policy to account for absences. Generally, students should plan ahead and make arrangements with classmates or the instructor to ensure their work is submitted on time.
For the purposes of this class, we make a distinction between:
- Discussion means talking between classmates about how to tackle a particular (written or programming) problem. Anything that is written down in a discussion (including code) must be erased or destroyed, and cannot be submitted. Students must wait at least one hour after any discussion before they sit down to write up their own solutions.
- Collaboration means actually sitting down and working together on a problem. This is beyond discussion because the written materials are not destroyed. However, each student must still write up their own solution in their own words.
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 MGSP leader.
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.
- Demonstrate an understanding of a variety of classic standard algorithms. (supports outcome CS-j)
- Employ a variety of standard techniques to devise efficient algorithms. (supports outcome CS-j)
- Compare and analyze the performance of algorithms. (supports outcome CS-j)
- 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)
- Develop effective written arguments regarding algorithmic performance. (supports outcome f)
Supported Student Outcomes
- (e) An understanding of professional, ethical, legal, security, and social issues and responsibilities.
- (f) An ability to communicate effectively with a range of audiences.
- (g) An ability to analyze the local and global impact of computing on individuals, organizations and society.
- (CS-j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the trade-offs involved in design choices.
The section leader is responsible for:
- Calling the class to attention at the beginning and end of each class;
- Bringing their laptop to class to record attendance and make any necessary in-class calculations; and
- Contacting the department main office (x36800, MI 346) if the instructor is 10 minutes late, and making sure students do productive work in the instructor's absence.
No food or beverages (except in closable containers) are permitted in the classroom. Except for the section leader or by permission of the instructor, students may not use their laptops or mobile phones during class.