SI335 Computer Algorithms
Chris Brown ∘ Michelson 357 ∘
firstname.lastname@example.org ∘ 3x6817
Course Policy, Spring AY17
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.
- 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)
- (e) An understanding of professional,
ethical, legal, security, and social issues and
- (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
- (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.
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.
- Dasgupta, Papadimitriou, and
Vazirani. Algorithms. McGraw Hill, 2008
- Cormen, Leiserson, Rivest, and Stein. Introduction
to Algorithms, 3rd ed. MIT Press, 2009
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:
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.
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 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 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
example used in problem 2" would be good.
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.
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.
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
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.
- 15%: Quizzes
- 20%: Problem sets (4)
- 20%: Programming projects (3)
- 15%: Midterm exams (2)
- 30%: Final exam