##### Coronavirus (COVID-19) Update

Enjoy a fully remote summer of professional education at the Silicon Valley Campus and the re-emergence of in-person courses in September. Visit our COVID update page.

# Course

## Mastering Data Structures and Algorithms: A Practical Approach | CMPR.X419

Prepare yourself to answer the data structure and algorithm questions that often come up in Silicon Valley job interviews. In this course, students will get the extensive practice they need to master data structures and algorithmsâ€” the foundation of good software engineering. Students will use high-level languages like Python, C, C++, or Java to learn a practical approach to solving data structure and algorithm.

The course starts with a review of time and space complexity. Analysis of algorithms and basic math is involved. We review basic data structures such as arrays, strings, linked lists, stacks, queues, and priority queues, and progress to more complex tasks involving hashes, trees and graphs. Students learn through working on a relevant problem for each section that helps them understand such data structures. They review basic algorithms and problem-solving techniques: including recursion, dynamic programming, divide and conquer, sorting and searching, and some graph algorithms. Testing is emphasized as a critical part of solution building.

Students who successfully complete this course will be well-prepared to answer questions and solve problems related to data structures and algorithms in their next job interviews.

Students must program their solutions in Python, C, C++, or Java.

Learning Outcomes:
At the conclusion of the course, you should be able to:

• Demonstrate the ability to measure computational and space complexity: Big O notation
• Identify and utilize the most appropriate Data Structures to solve a given problem
• Design algorithms for problems involving Sorting and Searching
• Demonstrate ability to solve Recursive problems
• Identify when it is best to use Greedy algorithms, Divide and Conquer, Dynamic Programming, and Backtracking to solve a given problem
Skills Needed: C, Java, Python or C++ as taught in the following courses: Python for Programmers, C++ Programming Comprehensive, C Programming Advanced , or Java Programming Comprehensive. Knowledge of basic data structures and algorithms are required (as taught in an undergraduate Computer Science program).
Have a question about this course?
Speak to a student services representative.
Call (408) 861-3860
This course is related to the following programs:

## Sections Open for Enrollment:

Open Sections and Schedule
Start / End Date Units Cost Instructor
06-24-2021 to 08-26-2021 3.0 \$1200

Juan C Gomez

### Schedule

Date: Start Time: End Time: Meeting Type: Location:
Thu, 06-24-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 07-01-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 07-08-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 07-15-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 07-22-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 07-29-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 08-05-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 08-12-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 08-19-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Thu, 08-26-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Open Sections and Schedule
Start / End Date Units Cost Instructor
09-15-2021 to 11-17-2021 3.0 \$1200

Juan C Gomez

### Schedule

Date: Start Time: End Time: Meeting Type: Location:
Wed, 09-15-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 09-22-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 09-29-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 10-06-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 10-13-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 10-20-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 10-27-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 11-03-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 11-10-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE
Wed, 11-17-2021 6:00 p.m. 9:00 p.m. Live-Online REMOTE