Instructor

Dan Ventura Email
3364 TMCB
(801) 422-9075
Hours: By appointment

Teaching Assistants (Email)

Maxwell Clemens
Michael Gardner
Patrick Wilson
McKean Krieger
Andrew Hale
1156 TMCB

TA Schedule

Meeting Time & Place

8:00–9:15 TTH (sec 1)
9:30-10:45 TTH (sec 2)
C215 ESC

The Schedule has dates and deadlines for
lectures, reading, assignments, and exams.

Course Description

We will study several general approaches to algorithm design, including Divide and Conquer, Graph-based, Greedy, Dynamic Programming, Linear Programming, Intelligent Search, as well as *briefly* treat some advanced topics. We will discuss canonical problems, abstraction and reduction as tools for problem solving, and we will also consider how to tell if an algorithm is correct and how to analyze it's complexity.

Text & Reading

The text for the class is Algorithms by Dasgupta, Papadimitriou, and Vazirani. We will cover much of the text following the provided schedule. You are responsible for reading the material for a given day prior to that day's lecture. Because class time is limited, we may not cover everything in the text. However, except where specifically noted otherwise, you are responsible for the entire text.

Attendance & Participation

Class attendance and participation are expected. This is not because I feel the need to have students in class; instead, it is because your attendance and participation guarantee you a better learning experience.

Make sure you have done the reading and tried to understand on your own before you ask questions. If you do not, it is usually readily apparent. When you don't understand something, ask; there are no dumb questions—unless you haven't done your reading.

Homework Assignments

A few problems will be assigned (typically from the text) each class period and will be due at the beginning of class the following period. It is very important to stay current in this class and this homework schedule is designed to help you do so.

Communicating clearly and concisely what you have to say is an important skill you will use throughout your career. All written assignments are to be neat and professional. If you cannot clearly communicate something, there is a good chance that you do not yet understand it well. Good writing, grammar, punctuation, etc. are important and can affect your grade.

Programming Projects

There will be 5 individual programming projects throughout the semester and one final group project. For each project, you will solve a concrete problem by implementing an algorithm in such a way as to meet a conservative performance requirement. A reasonable implementation will sail through the performance requirement. You will prepare a typed report electronically according to the guidelines for each project. You will answer questions posed in the project guidelines and usually report the results of an empirical analysis of your algorithm. All project reports should include a copy of your documented source code and a screenshot demonstrating the working algorithm. Each project except the last (group) project will include an initial "design experience" to encourage you to think before you code. These experiences are worth 10% of your project grade and will be evaluated using an online quiz and are typically due about a 10 days before the finished project. More information on projects and design experiences can be found here.

Late Policy

All homework assignments are due at the beginning of class on the date indicated. All programming assignments and design experiences are due electronically by 11:59:00PM on the date indicated. Late work is not accepted.

Note that although the deadlines are always 11:59:00PM on the due date, waiting until the last minute to submit through LearningSuite can be unreliable, so plan to submit early. It is in your best interest to submit whatever you can before that time. Probably the best way to make sure you are not unpleasantly surprised is to submit incrementally: submit what you have early, and then continue to improve your work and resubmit as you make improvements, up until the deadline.

Note that the schedule is carefully designed to give you plenty of time between when we discuss in class the concepts needed for a project and when it is due. Please start early and make use of that time to do a good job. If you do not get the entire project completed by the deadline, make sure you submit what you have.

In my experience, one key to success, in this class, in our profession and in life in general, is being organized and meeting deadlines. The no-late-work-policy is in large part to help you be successful and be able to continue progressing and focusing on new material. Please submit your work on time!

Of course, if you have extenuating circumstances that warrant an exception to the no late work policy, please talk to me as soon as possible.

Exams

There will be one mid-term (administered in the testing center) and one final (administered in class). These tests will be timed, you will be allowed one page of notes, and they will consist of written problems similar to those encountered on the homework. If you put in the time to understand the homework and programming assignments, the tests should not be too difficult. Explicitly, the final will only deal with material not covered on the midterms; however, it will be implicitly comprehensive in that it will assume you understand the material covered throughout the course. A brief study guide for the midterm exam can be found here, and one for the final exam can be found here.

Grading

Grading will be on a weighted curve. An approximate breakdown is as follows:

15% Homework
40% Programming Assignments
22.5% Midterm Exam
22.5% Final Exam

Because the first programming assignment is simpler than the others, it will be worth concomitantly fewer points. Although your final class grade will not be available until the end of the term, a cumulative point total will be available online and will be updated regularly. You should check this periodically to ensure that my records are in accordance with the work you have done. Please bring any discrepancies to my attention immediately, as these things are usually easily resolved early and are often much more difficult as time passes.

Appealing grades on assignments and on tests begins with you. Make an effort to understand why you received the score that you did and make sure that you have a good reason to appeal. If after making these efforts, you still feel like you have a concern, the next step is to calmly and intelligently discuss it with TA. If after taking both of these steps you still are not satisfied, come see me.

Working Together

You may work together with other members of the class; in fact, you are strongly encouraged to do so; however, do NOT turn in other people's work. This is a fine line that may require some judgment on your part. Examples of acceptable collaboration: discussing homework problems and solutions with others in the class; posting questions and/or answers to questions on the class newsgroup; comparing learning results and conclusions from programming assignments with other class members. Unacceptable collaboration would be simply copying homework, code or test answers from a friend or allowing someone else to copy homework, code or test answers. Academic dishonesty will be grounds for failure of the course; however, I do not anticipate that we will have any questions or problems in this area.

Preventing Sexual Harassment

Title IX of the Education Amendments of 1972 prohibits sex discrimination against any participant in an educational program or activity that receives federal funds. The act is intended to eliminate sex discrimination in education and pertains to admissions, academic and athletic programs, and university-sponsored activities. Title IX also prohibits sexual harassment of students by university employees, other students, and visitors to campus. If you encounter sexual harassment or gender-based discrimination, please talk to your professor or contact the Equal Employment Office at 801-422-5895 or 1-888-238-1062 (24-hours), or http://www.ethicspoint.com.

Students With Disabilities

BYU is committed to providing reasonable accommodation to qualified persons with disabilities. If you have any disability that may adversely affect your success in this course, please contact the University Accessibility Center at 422-2767. Services deemed appropriate will be coordinated with the student and instructor by that office.