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
   T, R – 8 – 9:30, 11 – 12, 2:30 – 3:30
   Other times by appointment

E-Mail

:  brian.morgan@marshall.edu

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 University’s 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
#1, #2, #3 – 8% each, #4 – 6%, #5 – 10%

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 assignment’s 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 people’s 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.