605.421 Foundations of Algorithms - Syllabus - Spring 2008

                                                                                                                                                                                                                  Updated January 2008

Top-of-Page   Instructor: E. B. Chlan                  Contact the instructor or email:chlan@apl.jhu.edu

Announcements/updates are on the schedule page.

Synopsis

Schedule
Text
References
Grading

Homework  
Attendance
Computer Accounts
Programming Assignments
Academic Integrity
HOMEWORK          
Problem List

Contact the instructor
Links

Synopsis:
This is a required course covering fundamental ideas in algorithms.  Emphasis is on the cost associated with different algorithms, studying the basic mathematical tools for analyzing algorithm cost, exploring design heuristics and how the cost can be affected by subtle choices.  Students are assumed to have a good foundation in basic data structures, e.g. 605.202  or equivalent.   A course in Discrete Mathematics is recommended also.  Basic programming competency in C++ or Java is also assumed. 

Required Text: Corman, Leiserson, Rivest and Stein; Introduction to Algorithms, Second Edition (DD)
                            Web site for book http://mitpress.mit.edu/algorithms/

You may wish to consider getting Dr. Dobb's Essential Books on Algorithms and Data Structures , a CD containing nine books.  No endorsement is implied.

References: 

                        Horowitz, Sahni and Rajasekaran, Computer Algorithms in C++, Computer Science Press, 1997 (**)

                        Horowitz, Sahni & Mehta, Fundamentals of Data Structures In C++,  Computer Science Press, 1995 (DD)

                        Sedgewick,  Algorithms in C++, Addison-Wesley, 1995 (**)   (3rd edition  Parts 1-4, 1998, and  Part 5 , 2002)

                        Carrano & Prichard, Data Abstraction and Problem Solving with C++: Walls and Mirrors, Prentice-Hall

                        Langsam, Tenenbaum & Augenstein, Data Structures Using C and C++, 2nd Ed., Prentice Hall

                        Standish, Data Structures in JAVA, Addison-Wesley

                        Weiss, Data Structures and Problem Solving Using Java, Addison-Wesley, 1998 (DD)

                        S. Epp, Discrete Mathematics and Applications

                        Johnsonbaugh, Discrete Mathematics, Prentice Hall (**)

                        Ross & Wright, Discrete Mathematics, Prentice Hall

                        (**) On reserve              (DD)  included on Dr.  Dobb's  CD

Grading:   Homework                  30%
                      MidTerm Exam           15%

                      Final                            20%
                     2 Labs                         30%   
                      Participation                5%   

Potential Extra Credit:  Any student interested in extra credit should consult with the instructor.   Students may select a chapter in the text from 27 through 33 and present a lecture on that chapter to the class during week 13 or week 14 of the course.  Students will be required to turn in their presentation, select an appropriate homework assignment subject to the approval of the instructor and provide an answer sheet.  See the schedule for the required dates for a preliminary commitment and then a firm commitment.  Extra Credit will be worth 15% of your grade to replace an equivalent component of other work.  Once committed, this will be a graded component.

Attendance Policies: If you miss class, it is your responsibility to determine what material you missed or what announce­ments were made.  Attendance will be taken.  You are always welcome to call me if you have a question or a problem arises.  There will be no make-ups on the tests except in unusual circumstances.  Assignments not turned in at class may be mailed to my home address or turned into the reception desk at the Dorsey Center or Mailed to the Dorsey address. Mailed assignments will be credited as having been turned in as of the Postmarked date.  Please use adequate postage.  Please do not use a method that requires a signature for delivery.  Do not submit programming assignments by email, except by special arrangement.

            JHU/WSE/EPP  Student Services Center

            6810 Deerpath Road, Suite 100

            Elkridge, MD 21075

The best times to contact me is during business hours at 410-540-2979.    During evening and weekend hours, please feel free to call  my home number, given out the first night of class.

Please bring a large (9"x12") SASE to the final if you would like your final exam back.  Two stamps are usually enough.

Student Computer Accounts

Logon to the system as newuser and answer the questions.  It is possible to reactivate an existing account.  Be ready to write down your userid and password.    All students are required to obtain an account, even if you plan to use another system.  All students are encouraged to go to the computer Lab to obtain handouts on using the student system.  Check the posted schedules to see when Lab Instructors are on duty.  Additional information is available on http://www.apl.jhu.edu. 

Important:  Send your userid on the student system to the instructor so you can be added to the class mailing list (just the account id on aplcenmp).   We will be using email for announce­ments, clarifications, etc.  YOU ARE RESPONSIBLE FOR ANNOUNCEMENTS MADE VIA EMAIL.  If you prefer to receive mail at a different account you should forward your mail from your aplcenmp account.  Receipt of your userid by the instructor before the second class is good for 5 bonus points on your homework.

General Programming Guidelines

Programming Style
What to Hand In
Grading for Programming Assignments
Practical Considerations for Programming Assignments

Project One Handout (PDF)    EXAMPLE

Project Two Handout (PDF)


All programming assignments will consist of JAVA or C++ programs coded and executed by the student. Assignments received after class on the specified due date are considered late and the grade will be reduced by 5 points. The grade will be reduced by an additional 5 points for each subsequent day that the assignment is late. Sundays and legal holidays are penalty free. Assignments more than 1 week late cannot be accepted, except by prior arrangement with the instructor. It is your responsibility to get your assignments in on time. If you choose to use another system than the one provided in the scheduled laboratory, please be aware that problems with such a system do not constitute a legitimate excuse for late assignments.  Assignments not turned in during class can be mailed to my home address (see syllabus) or the Dorsey Center. Assignments turned in this way will be penalized, if appropriate, according to the postmark. Programs which do not produce some form of legitimate output cannot be accepted for grading.

Style on Programming Assignments

Your code must incorporate a consistent, well documented style. Close attention will be given during grading to the comments. They should be clear, concise and adequate. The use of descriptive blocks for each module as well as an introductory descriptive block for the entire program IS REQUIRED. 

Comments should explain the purpose of a function, its inputs, and outputs. They should also explain the algorithm being applied, a particular approach to a problem, or restrictions in using the module. Comments like stating that something is being printed are not worthwhile.

Please note that the use of global variables is strongly discouraged and will be penalized if not well justified.  Some other points of style include:

If you are looking for a Java style guide, consider The Elements of Java Style, by Vermeulen, Ambler, et al., published by the Cambridge University Press as part of the SIGS Reference Library

A Complete Programming Assignment

A complete lab assignment consists of the following (in this order) placed in a labeled, pocket folder:  Please do not use a manila envelope.

Grading on Programming Assignments

The grade for each lab assignment is broken down as follows:

This grading policy is a reflection of the expectation that you can already write minimal, working code. If the unexpected comes up, please let me know. I will be happy to discuss your grade with you anytime. 

Practical Points

Academic Integrity

IMPORTANT: You are expected to do your own work.  Help from other sources must be acknowledged.  It is okay to discuss a problem with others for perspective or to make sure you understand it correctly but the answers and the code you write must be your own.  Downloading code form other sources for the programming assignments, while strongly discouraged, should absolutely be properly accredited. Wikipedia is not an appropriate reference citation.

Homework            Problem List

It is important to attempt all the homework problems, even if you are not able to complete them all, it will still be beneficial and will help you to participate in the class discussion.   Late homework will not be accepted except by prior arrangement with the instructor.   In writing up your homework, please keep in mind the following:

Do not try to sit down on Sunday night and do all the homework that is due that week.  You need to have time to think about them. 

Suggested Ideal Strategy for Approaching Homework and Class Preparation

Wednesday – Go to class – Take copious notes.

Thursday  – Review lecture material and read next section of book

Friday or Saturday – Make an initial pass over homework – get the easy ones out of the way.  Start

                 thinking about the harder ones, make a list of questions to ask study partner or in class.

Sunday – Attack the harder problems – update list of questions
Monday - Revisit hard problems.
Tuesday – Tie up loose ends for Wednesday.

Links of Interest

ACM's Digital Portal

Citeseer - a Computer Science based collection of document citations

Ingenta - a collection of academic and professional publications

A hypercube algorithm for the 0/1 knapsack problem

Sorting with O(nlogn) comparisons and O(n) transports, in-place, in the worst case, simultaneously. (a paper by V. Geffert)
An In-Place Sorting with O(n log n) Comparisons and O(n) Moves ( appearing in the Journal of the ACM, Vol. 52, Number 4, July 2005, pp. 515-537)

A free site for downloading Ghostscript and Ghostview (for postscript files)

Return to Top of Page


Your comments and feedback on this webpage are appreciated: email:chlan@apl.jhu.edu