Mastering Data Structures and Algorithms: A Practical Approach

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.

Topics Include:

  • Computational and space complexity estimation: Big O notation.

  • Data structures:

  • * Bit manipulation

    * Arrays and Strings

    * Linked lists

    * Stacks and queues

    * Priority queues

    * Hashing

    * Trees and graphs

  • Algorithms

  • * Sorting

    * Searching

  • Algorithm design techniques

  • * Recursion

    * Greedy algorithms

    * Divide and conquer

    * Dynamic programming

    * Backtracking

Prerequisite(s): C, Java, Python or C++ as taught in the following courses: Python for Programmers, C++ Programming Comprehensive, C Programming Advanced , or Java Programming Comprehensive.

Prerequisites (complete one of the below):

Offering code Offering title
CMPR.X416 Python for Programmers
CMPR.X413 Java Programming, Comprehensive
CMPR.X404 C++ Programming, Comprehensive
CMPR.X401 C Programming, Advanced

Sections :

Section Start Date Time Location Cost Instructor Name Full Schedule Enroll
CMPR.X419.(2) 1/22/2019 06:30 PM SANTA CLARA $1200 Juan C Gomez Enroll