ITEC 501: Software Development and Algorithms
Prerequisite: ITEC 400 or ITEC 500 or ITEC 220 or permission of ITEC department
Credit Hours: (3)
This course covers object oriented algorithm design from the software engineering perspective, data structures, and algorithms used in the solutions of nonnumeric problems.
Detailed Description of Content of Course
The purpose of this course is to introduce the principles of software engineering, concepts and properties of data structures and algorithms and to study the role of algorithms in the problem solving process.
Topics covered:
1. Requirements definition and specification
a. Software requirements document
b. Requirements validation
c. Requirements analysis
2. System Models and Prototyping
3. Software Design
a. Top down structural decomposition
b. Object oriented design
c. Real-time systems
4. Mathematical preliminaries for analyzing algorithms
5. Data structures and their algorithms
a. Elementary data structures
1. Arrays
2. Stacks, queues, and lists
3. Trees
4. Sets
b. Binary search trees
c. Balanced trees
6. Advanced algorithm design methods
a. Greedy method
b. Divide-and-conquer
c. Dynamic programming
d. Branch-and-bound
7. Sorting
a. Simple sorts - Bubble sort, selection sort, insertion sort
b. Quick sort
c. Merge sort
d. Heap sort
e. Lower bounds on sorting
f. Radix sort
8. Searching
a. Sequential search
b. Binary search
c. Binary search trees
d. Hashing
9. Complexity of algorithms: time and space, big O notation
10. Graph Algorithms
- Graph theory: trees, binary trees, search algorithms, shortest path algorithms, spanning trees, connectedness, matching, cycles, applications
11. NP-Completeness and approximation algorithms
12. Educational Issues of teaching Software Development and Algorithm
Detailed Description of Conduct of Course
Programming projects are assigned to give students experience in implementing existing algorithms using an object oriented approach. Students are also given several problems for which they are required to design and implement efficient algorithms.
Goals and Objectives of the Course
To provide information technology students with the skills to specify, design and implement large object oriented software systems and to improve the students' skills in designing, selecting and evaluating data structures and their algorithms for given problems.
Assessment Measures
Assessment measures may include several programming assignments and several exams.
Other Course Information
None

