University of Information Technology

Data Structure and Algorithms with Java

Course Description

This course introduces students to the design and analysis of algorithms. The topic covered will include Basics of Java Programming, Introduction to Data Structures and Algorithms, Analysis of Algorithm Efficiency, Brute Force Sorting and Searching, Brute Force String Matching and Exhaustive Search, Decrease-and-Conquer, Divide-and-Conquer, Transform-and-Conquer, Balanced Search Trees, Space and Time Trade-Offs, Dynamic Programming and Greedy Technique.

Intended Learning Outcomes (ILO)

Upon the successful completion of this course, students should be able to:

  • To discuss about the basics of Java programming such as arrays, strings, classes and objects, constructors, access modifiers, etc.
  • To compare between different data structures and to pick an appropriate data structure for a design situation
  • To compute complexity measures of algorithms, including recursive algorithms using recurrence relations, using asymptotic analysis
  • To explain how to solve problems using algorithm design techniques such as brute force, decrease-and-conquer, divide-and-conquer, transform-and-conquer, space and time trade-offs and dynamic programming and greedy technique

Text and References Books

Textbook

  1. Introduction to The Design and Analysis of Algorithms, 3rd Edition by Anany Levitin, 2012

References

  1. Learning Java, Fourth Edition by Patrick Niemeyer and Daniel Leuck, June 2013
  2. Data Structures & Algorithms in Java, Second Edition by Robert Lafore, 2003
  3. Data Structures and Algorithms in Java, Sixth Edition by Michael T. Goodrich, Roberto Tamassia and Michael H. Goldwasser, 2014

Assessment System

Evaluation Marks Percentage
Class Participation 10 Marks 10%
Tutorial 10 Marks 10%
Assignments/Presentation/Discussion 20 Marks 20%
Final Examination 60 Marks 60%