IST238: Algorithms.
Course Syllabus for Fall 2004
TTh 11:00am 12:15am Prichard Hall 200
| Instructor: | Daniel Dementiev |
| Office: | Prichard Hall 208 |
| Phone Number: | (304) 696-7241 |
| E-mail: | dementiev@marshall.edu |
| Office Hours: | see my schedule |
Textbooks:
Since this course covers the beginning of a very difficult subject Algorithms Theory and different books
present different views on the subject, it is very difficult for me to recommend only one book for the
course. Instead I will provide a list of recommended books. This doesn't mean, of course, that you need
to buy all of them. This only means that you need to select a book that you like the best and get it.
You can take a look at the books in my office or view their table of content on the internet.
- Analysis of Algorithms. An Active Learning Approach. by Jeffrey McConnel. ISBN: 0-7637-1634-0.
- Algorithm Design: Foundation, Analysis, and Internet Examples by Michael Goodrich and Roberto Tamassia. ISBN: 0-471-38365-1.
- Foundation of Algorithms using C++ Pseudocode by Richard Neapolitan and Kumarss Naimipour. ISBN: 0-7637-2387-9.
- Introduction to the Design and Analysis of Algorithms by Anany Levitin. ISBN: 0-201-74395-7.
- Algorithms in C++, Third Edition (parts 1-5), by Robert Sedgewick. ISBN: 0-201-72684-X.
Note: I really do not recommend to select a book based on price. You will need to read them and some of the books
may be easier for you to read then others.
Computer Requirements:
All class announcements, updates, lecture notes, and assignments will be placed in the class home directory.etc. Access to a
WWW browser is required (Netscape 4.7 or higher or Internet Explorer 5.0 or higher). You will also be required to obtain a
copy of Microsoft Visual C++ .NET for programming assignments. This software can be obtained for free through the COS' ITC
department on the first floor of the Science building. (For more details contact Pete Glass at
glass1@marshall.edu.)
Course Description:
This course covers algorithms design, analysis, and manipulation in the areas of sorting, searching, and graphing.
Desired Objectives/Outcomes:
By the end of this course, you should be able to:
- Develop and implement algorithms needed in disciplined problem solving
- Provide a clear understanding of the concept of algorithm
- Identify what algorithms are and show how they are used
- Demonstrate the concepts of proper object oriented programming
- Demonstrate the use of specific algorithms
Credit:
The course is three (3) credit hours. It includes classroom lectures, exams, and laboratory programming projects. Projects
will develop students' ability to understand and implement concepts discussed in lectures.
Pre/co-requisites:
IST163: Programming Practicum with C++
Instruction method:
There will be approximately 3 contact hours of classroom lecture per week. The laboratory programming projects cover the
major topics of the course. Students may work on their assignments in Prichard Hall 200 and 207.
Topics and Methodology:
The following outline delineates the tentative class schedule with topics to be addressed during the course. Please note
this is a tentative schedule and it may change upon class progress:
| Topic | Weeks |
| Algorithm abalysis. Recursion. | 1 |
| Introduction and Sorting Methods | 2 4 |
| Searching Methods | 4-7 |
| Midterm | 8 |
| Graph ALgorithms | 8 11 |
| Compression Algorithms | 9 12 |
| Other Algortihms | 12 14 |
Final Exam date is:
- Thursday, December 9 from 10:15am till 12-15pm
Evaluation method:
Evaluation of student's performance will be based on the quality of your performance on programming assignments, exams, and
class participation.
Grading Policy:
Final grades are based on performance in assignments, exams, and attendance as indicated below.
| Midterm Exam | 20% |
| Projects | 40% |
| Final Exam | 35% |
| Attendance & Participation | 5% |
Assessment of Projects:
The grading of all programming projects will take into account the following:
- Although the most important attribute of a program is correctness, grading will take into consideration (if
appropriate) such items as time and space efficiency, documentation, etc.
- Programs and scripts must have proper inline documentation and must be properly indented. Up to 20% can be deducted
for poorly documented and/or poorly indented code.
- Although interactions with other students are encouraged, you must compose your own answers, unless otherwise noted.
Individuals who utilize other peoples code, thoughts, or ideas must provide appropriate references to said resources.
Failure to provide such documentation will result in a failing grade for the assignment, and may result in a failing grade
for the course.
In determining the overall grade for a project, you can expect the following grades based on performance:
- A Excellent work that meets and/or exceeds all of the requirements for a given project, code compiles and
works for multiple test samples, all code and associated files are well documented, and the code is written
efficiently.
- B Good work that meets all of the requirements of the assignment, but may have errors in documentation or
coding, or contains code that may not work with all possible data samples.
- C Average work that meets all of the requirements of the assignment, but is missing one or more of the items
in its entirety that is mentioned in terms of an A grade.
- D Below average work which fails to meet one or more of the requirements of the assignment.
- F Unacceptable work, which fails to meet two or more requirements for an assignment, or has code that will not
compile and execute.
Final letter grades are determined based on the following grading scale:
| 90-100% | A |
| 80-89% | B |
| 70-79% | C |
| 60-69% | D |
| Below 60 | F |
The instructor reserves the right to change these values depending on the overall class performance and/or extenuating
circumstances.
Policy Statement:
Programming assignments: The course includes 5 projects and a number of homework assignments. All assignments
are due by midnight on the due date. Late assignments will be penalized at the rate of 5% per day (including weekends).
Exams: There is only one midterm exam. Exact dates and times of the exam will be announced in class.
Make-up Exams and Late Penalty: Make-up exams will not be given except under unusual circumstances and satisfactory
written justification. Any student who misses an exam due to an unexcused absence will receive a grade of zero for that
exam with no opportunity for make-up or substitution. University excused absences or those occurring with a good reason
will be excused. Make up exams must be taken within one week of the original scheduled date. The decision whether to give
a make up exam rests with the instructor.
Passing grade: Programming assignments and exams are required parts of the course and must be satisfactorily
completed to pass this course. A student must have a passing performance on each part. A failing grade on a component
may result in a failing grade in the course.
Attendance Statement:
Class attendance is not mandatory and is not a required part of the course, although highly encouraged. Those who miss a
class should remember that it is their responsibility to cover all the material by themselves.
Withdrawal Policy:
The University withdrawal policy is followed in this course. The last day to drop an individual course for the Fall of 2003
is October 29, 2004.
University Holidays:
The class is officially dismissed on the following dates:
| Labor Day: | September 6, 2004 |
| Thanksgiving Break: | November 26, 2003 |
| November 24, 2004 |
| November 27, 2004 |
Effort Required:
As a 200-level course, this course is provided as an introductory course, but due to the amount of new concepts presented
in the course there will still be a considerable amount of development and research effort required of the student. For
every one hour in class, the student is expected to put in an effort of at least 3 hours outside the class for studying
and programming. Because of background and preparedness, some students may have to put in additional effort.