IST280:
IT Fundamental Algorithms
Course Syllabus
Fall 2000, TR 9:30 10:45, PH 207
Instructor |
:
Brian M. Morgan |
Office |
:
Prichard Hall 212 |
Phone
Number |
:
(304) 696-6469 |
Fax
Number |
:
(304) 696-6533 |
Office
Hours |
:
M, W - 8-10, 1:30 - 3 |
E-Mail |
Textbooks:
The following
textbook is required for the course:
Data
Structures, Algorithms and Applications in Java,
by Sartaj Sahni, McGraw Hill, ISBN: 0-07 109217-X, 2000.
Computer
Requirements:
Supplemental materials can be found contained within the WebCT environment (http://webct.marshall.edu/).
I will be sending class announcements, updates, etc. using your WebCT
account (will discuss during the first lecture).
Access to a WWW browser is required (Netscape 4.0 or higher or Internet
Explorer 5.0 or higher) and Adobe Acrobat Reader (available for download through
the class WebCT site).
Course
Description:
The course covers fundamental
topics of algorithm design and performance issue, with emphasis on commonly used
algorithm-design methods, such as the greedy method and the divide and conquers
method. The course also covers algorithm applications used in solving
frequently occurring problems, such as pattern matching, data compression,
searching, and sorting. Optimization techniques are also covered.
Credit:
The course is
three (3) credit hours. It includes classroom lectures, exams, and programming
projects. Students will participate in programming projects that illustrate the
implementation of concepts in general applications.
Pre/co-requisites:
IST236 IT Fundamentals I: Data
Structures or permission
Desired
Objectives/Outcomes:
By the end of this course, you should be able to:
-
show understandings of the issues involved in the design and development
of efficient algorithms
-
develop efficient computer algorithms
-
show improved program development skills through the production of
efficient and optimized code
Instruction
method:
There will be 3 contact hours of classroom lecture per week. Programming
projects covering the major topics are part of the course.
Students may work on their assignments in any of the Universitys
public laboratories.
Evaluation
method:
Evaluation of student's performance will be based on the quality of your
performance on programming assignments, exams, and class and web-based
participation.
Grading
Policy:
Final grades are based on performance in assignments, exams, and attendance as
indicated below.
Midterm |
20% |
Final
Exam |
30% |
5
Programming Projects with the following breakdown |
40% |
Attendance
& Participation |
10% |
Assessment
of Projects:
The
grading of all projects will take into account the following:
1.
Although the most important attribute of a program is correctness,
grading will take into consideration such items as time and space efficiency, documentation,
etc.
2.
Programs must have proper inline documentation and must be properly
indented. 20% will be deducted for poorly documented and/or poorly indented
code.
3.
All submitted code must compile correctly. Code that does not compile
will receive 0 credit.
4.
When a problem does not specify a required complexity, the grading will
differentiate between efficient and nonefficient code. For example, if you
write a program that contains a number of checks that are redundant and/or has
one or more loops that iterate zero or one time, up to 10% of the grade will be
deducted.
5.
When a method name and/or parameters are specified in an assignments
description, you must use that name and/or parameters. Failure to do so could
result in loss of up to 50% of points as I may write my own driver program to
test required methods or functions.
6.
When you write a function, remember that the function should work for all
possible inputs. Not on just your test inputs.
7.
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 instructors reserve the right to change these values depending on the overall class performance and/or extenuating circumstances.
Policy
Statement:
Programming assignments:
The course includes a number of
programming assignments. All assignments are due at the beginning of the class
period on the due date. Late assignments will be penalized at the rate of 5%
per day (including weekends).
Exams:
There are two exams: Mid-term (during the 8th week) and a Final exam (as
scheduled). Exact dates and times of exams 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 mandatory and is a required part of the course.
Those needing to miss class for a legitimate reason must contact me via
telephone/voice mail or e-mail prior to the class meeting for it to be excused.
See grading policy.
Withdrawal
Policy:
The University
withdrawal policy is followed in this course. The last day to drop an individual
course for the Fall of 2000 is October 27, 2000.
University
Holidays:
The class is officially dismissed on the following dates:
Fall Break: November 21,
2000
November
23, 2000
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:
August
22 |
Course
Overview/Objectives (syllabus), Overview of how to access course
information through WebCT |
August
24 |
Chapter
1 - Java Review |
August
29 |
Chapter
1 Java Review |
August
31 |
Chapter
2 - Program
Performance and Analysis
What is Performance/Complexity
Space Complexity |
September
5 |
Chapter
2 Program Performance and Analysis
Time Complexity |
September
7 |
Chapter
3 - Big Oh
Notation
Order of Complexity (O)
Complexity Analysis |
September
12 |
Chapter
4 Measuring Performance
Concept of Measurement
Instance Size
Developing Test Data |
September
14 |
Chapter
5 Array-based linear lists and their performance Assignment
of Project #1 |
September
19 |
Class
time to work on projects |
September
21 |
Chapter
6 Linked-lists and their performance |
September
26 |
Chapter
9 Stacks
Performance measurement and an example |
September
28 |
Project
#1 Due Assignment
of Project #2 Chapter
10 Queues
Performance measurement and an example |
October
3 |
Chapter 11 Hashing and Hash Tables |
October
5 |
Simple Sort Algorithms (such as insertion, bubble, selection, count, shaker, shell, heap, merge, quick, radix, bin) |
October
10 |
Simple
Sort Algorithms (continued) |
October
12 |
MIDTERM
EXAM (Chapters 1-10, except 7 and 8) |
October
17 |
Project
#2 Due Chapter
11 Text Compression Assignment
of Project #3 |
October
19 |
Chapter
13 (section 6.3) - Huffman Codes |
October
24 |
Chapter
12 Binary Trees and their applications |
October
26 |
Chapter
15 Binary Search Trees |
October
31 |
Chapter
16 Binary Search Trees Project
#3 Due Assignment
of Project #4 |
November
2 |
Chapter
17 Graphs and their applications Assignment
of Project #5 |
November
7 |
Chapter
18 Greedy Algorithms |
November
9 |
Chapter
18 Greedy Algorithms |
November
14 |
Chapter
19 Divide and Conquer Methods |
November
16 |
Chapter
19 Divide and Conquer Methods Project
#4 Due |
November
28 |
Chapter
20 Dynamic Programming |
November
30 |
Other
methods backtracking & branch and bound |
December
5 |
Dead
Week Review for Final Exam Project
#5 Due |
December
7 |
Final
Exam, 8:00 am 10:00 am |
For
each topic discussed in the textbook, specific experience of other students and
the instructor will be discussed to enhance the characteristics involved.
Additional material may also be covered in the class.
Every
student is responsible for all materials presented in class, including lectures,
notes, and handouts. In case you
are not present for a class, it is your responsibility to contact the instructor
and receive information about the material presented in that class.
Class attendance is very important.
Effort
Required:
As a 200-level course, a considerable amount of research and programming effort
are 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. Upon background and preparedness, some students may have to
put in additional effort.
Communication:
The Bulletin Board facility of WebCT and private E-mail will be used to make any
general announcements, last minute changes, etc. It is mandatory that you monitor your WebCT course messages
at least once a day.