This course focuses on the design and analysis of algorithms and the use
of data structures.
Through the introduction of the most widely used data structures
employed in solving commonly encountered problems (e.g. lists, trees,
and graphs), students will learn different ways to organize data for
easy access and efficient manipulation. Algorithms to solve classic
problems (e.g. searching, sorting, hashing, graph algorithms, etc.)
will be presented, as well as classic algorithm design strategies (e.g.
divide-and-conquer and greedy algorithms).
Computational complexity theory will be introduced for studying the
efficiency of the algorithms covered in the course.
The Team
Instructor
Antonella Di Lillo (dilant [at] cs [dot] brandeis [dot] edu)
Office: 124 Volen Center for Complex Systems
Office hours: Monday and Thursday 4:00pm-5:30pm, or by appointment
TAs
Ben Oehlkers (boehlkers [at] brandeis [dot] edu)
David Lasher (dlasher [at] brandeis [dot] edu)
Nicholas Monath (nmonath [at] brandeis [dot] edu)
Sarah McWhirter (sjmcwhir [at] brandeis [dot] edu)
Bundle of Algorithms in Java, Third Edition, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms (3rd Edition) (Pts. 1-5).
Evaluation
Exams
There will be three in-class exams.
Homework
Three programming assignments and five problem sets will be assigned
during this semester (check the Homework
page for assignments and due dates).
Grading Policy
Homework:
35% (each counts equally)
Exam 1:
15%
Exam 2:
20%
Exam 3:
25%
Participation:
5%
Late Policy
For each day late (24-hour period following the time that an
assignement is due) 5% will be deducted from your grade.
Homework submitted after 6 days will not receive credit.
Academic Honesty
As stated in the Rights and Responsibilities handbook, "Every
member of the University community is expected to maintain the highest
standards of academic honesty. A student shall not receive credit for
work that is not the product of the student's own effort."
The goal of the homework is to give you practice in mastering the
course material. Courses on algorithms benefit from discussing your
ideas, general approaches, etc.
You are allowed to do so, however each student's work is
expected to be entirely his or her own.
Collaborative writing of homework solutions is prohibited.