CSCI 333: Data Structures and Algorithms
   
Learning
Objectives
(1) Analyze an algorithm to determine its asymptotic complexity (expected run-time behavior as the problem size grows).
(2) Design solutions to problems by using classical problem solving techniques such as divide-and-conquer, dynamic programming, and greedy algorithms.
(3) Be able to apply appropriate techniques to find a solution to a problem when no efficient algorithm can be found (intractable problems). To solve intractable problems we will look at the techniques of backtracking and branch-and-bound.
(4) Gain an intuitive understand of the concepts of computational complexity, intractability, and the theory of NP.
(5) Fully understand recursion.
(6) Understand standard abstract data types and their operations, and demonstrate their representations using pointers in C++.
   
Text Foundations of Algorithms , by Richard Neopolitan and Kumarss Naimipour, Jones and Bartlett.2004.
   
Instructor
Rebecca Bruce
Office: RBH 024
Telephone: 232-2275
e-mail: bruce@cs.unca.edu
Office Hours: 11-noon on MTWR


Tentative Course Schedule
Week Starting Lectures & Reading Assignments & Exams
Aug 15 Introduction: C++, Recursion, Math, Programming Strategies, ADTs Group Assignments
Aug 22 Ch 1: Algorithms
Ch 1: Recursion
Programming Assignment 1: Simple Recursive Program in C++
Aug 29 Ch 1: Math Review
Ch 1: Classification of Growth
Review for quiz
Quiz over Ch 1
Sept 5 Labor Day: No Monday Classes
Wednesday and Friday classes canceled due to University closing
Programming Assignment 2: Divide and Conquer
Sept 12 Section 2.2 - Mergesort; problems 8 & 9
Section 2.2 - Analyze Mergesort; problems 14 & 16
Friday classes canceled due to University closing
Sept 19 Divide and Conquer & Quicksort; problems 19, 20, & 38 Wednesday: Quiz over Ch 2; Solution
Friday: Programming Assignment 3: Dynamic Programming
Programming Assignment 3 Solution
Sept 26 Ch 3: Binomial Coefficient; compare algorithms 1.6 & 1.7
Ch 3: Floyd's Algorithm; problems 5, 7, & 10
Oct 3 Ch 3: Binary Search Trees; problems 20 & 23
Fall Break: No WRF classes
Oct 10 Ch 4: Prim's Algorithms; problems 2, 3, & 5
Ch 4: Kruskal's Algorithm: problems 6 & 9
Wednesday: Quiz over Ch 3
Friday: Programming Assignment 4: Greedy Algorithms
Oct 17 Ch 4: Huffman Code; problems 24 & 28
Ch 4: Knapsack Problem
Quiz over Ch 4
Oct 24 Ch 5: Backtracking
Ch 5: N-Queens; problems 1( for n=4), 2 & 7
Monte Carlo Efficiency Estimation; problem 10
Programming Assignment 5: Hamiltonian Circuits
Oct 31 Ch5: Knapsask problem; problem 30 Quiz over Ch 5
Nov 7 Ch 6: Tree Traversals & The Knapsask; problems worked in class
Ch 6: TSP; problems 7 and 8
Game playing; read this paper
Programming Assignment 6: Heuristic Search in Game Playing
Nov 14 Ch 7: Complexity Analysis of Simple Sorting Algorithms; problems 5 & 6 Quiz over Ch 6
Nov 21 Ch 7: Mergesort
Thanksgiving Break: No WRF classes
Nov 28 Ch 7: Mergesort
Ch 7: Heapsort & Computational Complexity
Traveling Salesman Problem
Materials for the final: old quizzes, Ch 7 questions
Dec 5 Final Exam Week Final Exam: Friday:1:20-3:50pm


On-Line Resources
GNU GCC compiler
MSDNAA program for CSCI students with Visual Studio .NET
Java to C++ Transition Tutorial
C++ tutorial
C++ Templates Tutorial


Grading
Quiz Grades 5 x 30 (lowest quiz dropped) 150
Assignment Grades 6 x 25 150
Class Work Grades 38 x 3 (3 pts/class meeting
with 3 excused absences)
114
Final Exam grade --- 100
Total Points --- 514

Letter Grades: Letter grades are assigned based on the percentage of available points obtained by a student. 100% to 90% guarantees an A, 89% to 80% guarantees a B, and so on. The instructor reserves the option of relaxing the cut-offs for a letter grade in special circumstances.


Attendance Policy:

Lectures: A roll is not taken, but students are expected to attend all class lectures. Failure to do so will impact the class work portion of your grade.

Exams: If you must miss an quiz due to illness you must email or telephone the instructor before the scheduled time and perhaps something can be arranged to avoid a zero for that quiz. Failure to notify the instructor prior to the scheduled time will produce an automatic zero for that quiz. Remember, your lowest quiz score is dropped when computing your class grade.


Policy on Assignments:

The programs that you write are your way of telling the instructor about your mastery of this course. Because this is a course about writing programs you are expected to take these assignments very seriously. Your programs must be clearly different than those turned in by others in the class (who are not in your group) and represent a unique and special effort on your part.


CSCI logo Return to the UNCA Computer Science home page