|
MA/CSSE 473 Design and Analysis of Algorithms
|
||||||||||||||||||||||||||||||||||
Instructor and Web Page info
Textbook(s)Required: The Design and Analysis of Algorithms, 2nd
Edition
by Levitin (Addison-Wesley, 2007)
Highly Recommended: Data Structures and Problem Solving Using Java, 4th or 3rd Edition by Weiss (CSSE 230 text) Because you should already be familiar with the style and context of the Weiss book, I will often place sections of this book on the reading assignments page, to provide an alternate explanation of things. Approximate reading schedule (Levitin)
Other Books
Course DescriptionCatalog DescriptionStudents study techniques for designing algorithms and for analyzing the time and space efficiency of algorithms. The algorithm design techniques include divide-and-conquer, greedy algorithms, dynamic programming, randomized algorithms and parallel algorithms. The algorithm analysis includes computational models, best/average/worst case analysis, and computational complexity (including lower bounds and NP-completeness).Instructor's DescriptionThis course is a study of algorithms, including their design, analysis, and proof of correctness. A large portion of our time (in and out of class) will be spent solving problems. There will also be some implementation problems, but they will play a lesser role than in CSSE 230. Students will also present solutions in class and/or lead class discussions of problems.PrerequisitesCSSE 230 Data Structures and Algorithms MA 375 Discrete and Combinatorial Algebra IIThis course will include quick reviews of the following topics. But if you did not understand them from the previous courses, you will need to do some extra review work on your own:
For some of you, it has been a long time since you took CSSE 230 and/or Math 275/375. Also, there are different versions of those courses, depending on who teaches them. You may have come out of those courses not feeling very confident about the proofs and algorithm analysis material. Of course we will do some review in 473, but that will be brief. Some of you would do well to review your areas of weakness before 473 begins. Or at least recognize in advance that 473 may take a lot of extra time for you because you need some remediation in prerequisite material. Better to face that reality now than to pretend that 473 will be a "fresh start" that will not really depend on those courses! I prepared the following document to help you get an idea of what you might need/want to review. It includes references to specific sections of the Grimaldi and Weiss textbooks that are often used for the prerequisite courses. http://www.rose-hulman.edu/class/csse/csse473/201110/Homework/BackgroundMaterial.html For some day's PowerPoint Slides there were Instructor Notes that the students did not see. For the summer course I am making those available in separate documents, linked form the schedule page. This document contains some written problems that I assigned once in CSSE 230. They are relevant to this course, and may be good practice for you. http://www.rose-hulman.edu/class/csse/csse473/201110/Homework/230-problems.pdf The main things that you should bring into this course
Instructor's Course Objectives
Course RequirementsThe nature of the assignmentsWhen I give a reading assignment, you should read it. The summer course is, after all, an independent study course! I will assign several written problems, most of them from the textbook. They will usually be short thought problems, mathematical analyses, formal proofs, or algorithm-design exercises. I expect you to think through them carefully and write your answers legibly and clearly (if you can't write it neatly, type it). On many problems, Your score will be determined not only by correctness but also by the quality of your explanation. Some of the problems will provide straightforward practice with algorithms from the course; others will require creative solutions. Don't put them off until the last minute! Written assignments will be submitted to drop boxes on ANGEL. In general, you may communicate with other students about the problems, and work out solutions together. But when you write it up to turn it in, you must do it on your own without reference to things that you wrote together. You should also acknowledge the collaboration in writing on the paper that you submit.The textbook has exercises at the ends of each section; Almost all are likely to be helpful; obviously I cannot assign all of them. For many of those problems, reading and thinking about them will be instructive, even if you don't have time to fully solve them. I recommend that you at least read them all, regardless of whether they are assigned. I will sometimes pick out additional problems to suggest:
Extra Credit: Solution pool. Many assignments will contain non-required problems. It would be great to have a set of solutions to those problems so that students can check their answers. Producing them may be a good community activity. I have set up an ANGEL discussion forum for this purpose, and I will give a small amount of extra credit for submitting or critiquing a solution. This will only work well if several students critique each solution to either say that it is great or to suggest corrections or improvements. Problem hints: Most problems in the Levitin textbook have hints at the end of the book. I suggest that you first try to do each problem without the hint, but if you get stuck, feel free to use the hint. Your solutions to programming problems should be well-designed and well-documented. Before submission, you should try compiling and running what you are going to submit, so that you can be sure that you did not leave out any necessary files.
Get started early on all assignments! Sometimes you will need some "incubation time" before a problem is due.
Policy on Late Work (Summer):I recognize that different students have different schedules during the summer. Some of you know already that certain weeks will be busy (or will be your vacation week), so I am allowing some leeway on assignment submission. I will list due dates on the schedule. If you get each assignment done by its due date, then the work will be spread out reasonably evenly during the summer. But for each assignment I will list a certain number of "grace days". Submit the assignment within that many calendar days after it is due, and you will not lose any credit for lateness. At the beginning of the summer, assignments will have 7 grace days. The number of grace days per assignment will gradually decrease as the summer progresses. I figure that as the summer goes on, you will have more advance opportunity to anticipate busy or absent weeks and work ahead. Also, practically speaking, I can't get stuck with grading 60 assignment submissions during the last week of the course! After the grace days for an assignment have expired, there will be a 25% penalty per additional day or portion of a day that it is late. Grade Components
MA/CSSE 473 CommunityI encourage you to communicate with other students.
We can't duplicate the classroom experience, but we get some
sense of who is in the class and how they are doing. I
encourage you to go into personal preferences on ANGEL and
make your picture visible to other students. I
encourage you to write quite a bit about yourself on the
"Introduce yourself" forum. I encourage you to use the
ANGEL discussion forums to ask questions about course
material or homework, so they can be answered by other
students and/or so everyone can see the questions and
answers.
Academic IntegritySee the
CSSE department statement on academic honesty. Dishonesty on assignments or exams may result in a lowered course grade, a course grade of F, and/or disciplinary action. Ask me about the minimum penalty for plagiarism!
I encourage you to discuss the problems and general approaches to solving them with other students. But when it comes to writing up a solution or writing actual code, it should be your own work (or the work of your group if it is a group or partner assignment). If you use someone else's ideas in your solution (or any other work that you do anywhere), you should give credit to that person in the comment section of your program, and be sure that you understand it as well as if it were your own. If you are ever in doubt about whether some specific situation violates the policy, the best approach is to discuss it with me beforehand. This is a very serious matter that I do not take lightly. Nor should you. Email, Discussion Forums, ClassmatesI will usually use Rose-Hulman email. But occasionally, the context of a message will make it best to send ANGEL mail. If you do not regularly
check ANGEL mail, you should set your ANGEL preferences so that your ANGEL mail is always forwarded to your regular email.
If you think that your question or comment might be of general interest to people in the class, please post it on one of the course discussion forums on ANGEL. First of all, you may get an answer more quickly than if you only send mail to me. Second, you may get multiple people's perspectives. Third, you will contribute to an active learning community. Other students in the course can often be your best source of help. And they will also learn more if they explain things to you. Don't try to be the Lone Ranger in this course, especially if you do not find the course easy. If you have worked on something for 30 minutes without making any progress, it's probably time to seek help. Suggestion BoxI want your feedback on how the course is going and how it could be improved. While "nonymous" suggestions are even more useful than anonymous ones, I'd like to know what you are thinking, even if you do not feel comfortable with letting me know who made the suggestion. Thus the 473 ANGEL course will contain an anonymous suggestion box. I will get your comments, but I cannot trace who sends them.
|