Building Closed Memorial Day Weekend

The Silicon Valley Campus is closed Saturday, May 27 through Monday, May 29, 2023, in honor of Memorial Day. We will reopen for classes on Tuesday.

Data Structures and Algorithms Using Java | CMPR.X407

Data Structures and Algorithms Using Java | CMPR.X407

There are two sides of a program: data structures, which are used to represent data, and algorithms. While entry-level programmers focus on learning programming languages, today’s employers seek professionals who know how to program with high reliability, and with efficiency, in terms of resource and performance. The way you represent a program’s data is as central to program design as the algorithm. This course focuses on the use of efficient algorithms with powerful data structures in the Java language—and offers the skills you need to stand out.

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

Topics Include

  • 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++.

Have a question about this course?
Speak to a student services representative.
Call (408) 861-3860
FAQ
ENROLL EARLY!

Prerequisite(s):

Sections Open for Enrollment:

Open Sections and Schedule
Start / End Date Quarter Units Cost Instructor
07-11-2023 to 09-12-2023 3.0 $980

Sara Saatchi

Enroll

Final Date To Enroll: 07-11-2023

Schedule

Date: Start Time: End Time: Meeting Type: Location:
Tue, 07-11-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 07-18-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 07-25-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 08-01-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 08-08-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 08-15-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 08-22-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 08-29-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 09-05-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Tue, 09-12-2023 6:00 p.m. 9:00 p.m. Live-Online REMOTE

What students are saying

"This is a great course for people who are interested in knowing algorithms and the types of algorithms supported by data structures. That basically changes the way one could approach a problem and solve it effectively."
— SasiKumar Arumugan Lead Software Engineer
SasiKumar Arumugan