Lecture, seminars and hands-on exercises in the lab (Group work may be involved)
-
Review of Java including Classes, Interfaces, Inheritance, Exception handling and Text I/O
-
Introduction to Data Structures and Algorithm using Java
-
Algorithm Analysis
-
Recursion and efficiency
-
Search and Sorting Algorithms
-
Generics, Abstract Data Type and Java Collection Framework
-
List and Linked List
-
Stacks and Queues
-
Trees, Binary Tree, Binary Search Tree and AVL trees
-
Priority Queues and Heap
-
Hashing and Dictionary
-
Graph Algorithms
-
Algorithm Design Techniques
The student will be able to:
- Discuss the fundamentals of algorithmic complexities;
- Carry out an elementary analysis of algorithms;
- Determine the space and time complexity of an algorithm;
- Identify and select the appropriate abstract data types such as queues, stacks for a small but realistic problem;
- Demonstrate more in-depth applications of other data types such as trees and graphs;
- Design and implement different Java programs using appropriate data structures;
- Apply problem solving approaches such as “divide and conquer” in designing algorithms;
- Explain and compare some of the fundamental searching and sorting techniques and algorithms;
- Develop the skills of the modular approach to produce maintainable, documented, and tested software of a realistic size using Java.
|
|
Quizzes/Tests |
0% – 15% |
Project/Assignments (Group work may be involved) |
15% – 25% |
Midterm Exam |
30% – 35% |
Final Exam |
30% – 40% |
Total |
100% |
**In order to pass the course, students must, in addition to receiving an overall course grade of 50%, also achieve a grade of at least 50% on the combined weighted examination components (including quizzes, tests, and exams).
Prichard and Carrano, Data Abstraction and Problem Solving with Java: Walls and Mirrors, Latest edition,
Or any alternative textbook approved by the Department.
None
None
None