- Distance Course
- Instructor: Dr. Kenrick Mock.
- Email: kenrick@uaa.alaska.edu
- Office Hours: M 2-4, T 2-3, W 4-5, or by appointment, NSB 221
- Prereq: CSCE A211, MATH A231. You will be given assignments in both Java and C++.

- Required: Introduction to Algorithms by T. Cormen, C. Leiserson, R. Rivest, and C. Stein (3rd ed. recommended, but older editions ok)

**Course Description:** Representation and organization of digital information in the form of effective and efficient data structures, manipulation of data structures in a procedural fashion, and the analysis and evaluation of various algorithms. The following topics will be covered: ADT, arrays, tables, linked lists, stacks, queues, trees, sorting, searching, graphs, hashing, spanning trees, disjoint sets, and heaps.

**Outcomes:**

The instructor will:

1. Aid students to achieve an expert knowledge of how to represent and organize digital information by variety of data-structures applicable in most object-oriented languages.

2. Introduce students to the techniques of manipulating these structures by algorithms to perform common actions on the data structures such as finding, retrieving, adding, and deleting information.

3. Illustrate benefits and drawbacks of different algorithms by analytically and experimentally evaluating algorithmic efficiency.

4. Provide students with the background knowledge and skills needed to successfully design, implement, modify and evaluate digital information in subsequent upper-division computer science courses.

Students will be able to:

1. Design suitable information representations for a variety of problems.

2. Describe appropriate algorithms and data structures for a number of well-defined problems.

3. Design algorithms to solve given problems using techniques such as divide-and-conquer.

4. Implement algorithms and data structures in a computer programming language: C++ or Java.

5. Analyze the time and space efficiency of an algorithm, use the big-O notation. 6. Measure the time and space requirements of an algorithm.

**Homework Assignments:
**
There will be approximately six homework assignments that will consist of both analytical problems and programs to write. Late
homework will be penalized by 5% per day late, up to the day that answers are
provided. I will typically post answers the next week (but not always).
Unless otherwise indicated, programming assignments and written assignments must
represent your own work. It is permissible to discuss the assignments with other
students, but do not disclose the solution.

**Questions:** If you have any questions, feel free to come in to my office. In general, I have an open door policy -- if I am available in my office, you are welcome to come by. An even better way to reach me is through email. I check my email frequently and you should receive a response quickly. Email is preferred over telephone and you will probably receive a faster response since I don't check voicemail very frequently.

**Exams:**
There is one midterm and one final. The midterm will cover several chapters of the books
while the final exam may include any material that was covered in the
course, but will emphasize the new material. Unless prior arrangements are made
no make-up exams will be given. Since you will be tested upon your critical
thinking and problem solving skills and not your ability to memorize formula, exams will be open book.

**Grading: **
Exams will be graded and returned to you. Grades will be posted
according to randomly assigned numbers on the web site throughout the semester.

Grading breakdown:

Homeworks: 35% (all homeworks are worth an equal
amount)

Midterm: 30%

Final: 35%

The grade scale is shown in the table below. The grading curve may be lowered if necessary but it will not be raised. This means that if you received an 89% then you will at least get a B+, but may receive a higher grade based on the curve. (Final grades don't include a + or -).

Percentage |
Grade |
Percentage |
Grade |

98-100 | A+ | 80-78 | C+ |

93-98 | A | 78-73 | C |

90-93 | A- | 73-70 | C- |

87-89 | B+ | 70-68 | D+ |

83-87 | B | 68-60 | D |

83-80 | B- | 60-0 | F |

An incomplete grade will only be given for a valid excuse (e.g. medical, death in the family). An incomplete grade does not let you take the class over again, your final grade will be assigned based on work submitted in class and work that remains to be submitted.

**Cheating:** Students are expected
to uphold the UAA standard of conduct relating to academic dishonesty outlined
in the UAA catalog and student handbook. Cheating is not tolerated and
constitutes grounds for dismissal. For this class, it is permissible and
encouraged to assist classmates in general discussions of how to attack the
homework problems. It is not permissible to copy another's work (or
portions of it) and represent it as your own.