System Update This Sunday
You may experience a delay in the course registration process and accessing your student account on Sunday from 8 a.m. through Monday at 8 a.m. We're sorry for any inconvenience!
This course covers data structures such as dynamic array, dynamic string, long numbers, lists, heap, hash, trees and graphs. You will learn to create objects from scratch using object-oriented Java programming concepts, and then build bigger objects using the objects that have already been built and tested. You will write algorithms on these objects using techniques such as recursion, greedy, divide and conquer, back tracking and dynamic programming. The course discusses algorithms such as searching and sorting, union find problems, knapsack problems and NP complete problems. You will also learn to compute the worst case complexity of the algorithms in terms of time and space in order to choose the best techniques, and to ensure that the objects scale with arbitrarily sized inputs.
The course emphasizes common problems and implementation details in Java and does not cover advanced Java features. It provides ample examples and testing of codes. Many of the problems solved in the class are coding questions that are asked in interviews and on popular coding websites.
Learning Outcomes:At the conclusion of the course, you should be able to:
- Create effective and efficient programs using Java
- Express ideas using efficient data structures
- Apply operations to these structures
- Prove the complexity of the data structures method in terms of primitive operations
- Introduction to data structures and algorithms
- Review of Java used for this course
- Need for algorithms
- Tools for computing complexity in terms of problem size rather than hardware used
- Data structures for building extremely large objects like array, stack, heap, hash, trees and graphs
- Algorithm techniques for solving problems like greedy, divide and conquer, back tracking and dynamic programming
- Implementing objects and algorithms that scale for arbitrary large size problems
- Proving the worst case complexity of each algorithm in terms of time and space
Skills Needed: Working knowledge of Java or C/C++.
- Save your seat and help us confirm course scheduling. Enroll at least seven days before your course starts.
- ACCESSING CANVAS—Learn more about accessing your course on Canvas in our FAQ section.
Sections Open for Enrollment:
|Date:||Start Time:||End Time:||Meeting Type:||Location:|
|Thu, 04-14-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 04-21-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 04-28-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 05-05-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 05-12-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 05-19-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 05-26-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 06-02-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 06-09-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|
|Thu, 06-16-2022||6:30 p.m.||9:30 p.m.||Flexible||REMOTE|