Introduction to Algorithms and Data Structures

The only prerequisites are high school algebra, comfort with mathematical arguments, and working knowledge of at least one programming language. Participants will use Python for the coding assignments, so some familiarity with Python and Jupyter Notebook is helpful, but not required.

It's not too late to join 100,000+ students from 160+ countries who have already taken our programs.

Enrollment Deadline:

Program Starts:
September 15, 2022

Apply Now
Course Dates

STARTS ON

September 15, 2022

Course Duration

DURATION

10 weeks, online
5-10 hours/week

Course Fee

PROGRAM FEE

US$2,500 US$2,300 or get US$250 off with a referral

Course Information Flexible payment available
program fee

US$2,500 US$2,300

Pay by

Learn the Core Principles and Real-World Applications of Algorithm Design

There is a rapidly growing demand for technology professionals who understand the ways in which algorithms drive today’s world. The number of technical professionals who list “algorithms and data structures” among their skills is increasing by 25% year over year, according to LinkedIn Insights. Keep pace with this rapidly growing field by enrolling in Algorithms and Data Structures, an online program offered by Carnegie Mellon University's School of Computer Science Executive Education. Participants receive an in-depth understanding of the design principles behind real-world, problem-solving algorithms, as well as the data structures that support them.

"Carnegie Mellon is known for being at the forefront of technology. … The School of Computer Science is internationally recognized."

SOURCE: Forbes

Key Outcomes

Software engineers and developers, as well as early-career technology graduates and other IT professionals, will gain an in-depth understanding of algorithms and data structures. Over the course of 10 weeks, you will:

  • Explain the key concepts related to algorithms and data structures
  • Model computational problems and design algorithms
  • Apply standardized algorithmic building blocks
  • Analyze algorithms to verify correctness and efficiency
  • Explore real-world applications of algorithms and data structures
  • Practice implementing algorithms using Python

Program Modules

Each of the 10 modules focuses on a specific type of algorithm or data structure, encompassing an array of computational theories and applications.

Module 1:

Introduction to Algorithms

Learn fundamental concepts of algorithm design, including:

  • Illustrating the key components of an algorithm and the notations used for time complexity
  • Performing recurrence analysis and analyzing the time complexity of merge-sort and quick-select algorithms

Module 2:

Concrete Models and Tight Upper and Lower Bounds

Delve deeper into time complexity and learn to prove upper and lower bounds (worst and best possible runtime) of comparison-based algorithms, including:

  • Explaining the concept of concrete models as well as tight upper and lower bounds
  • Applying the information-theoretic and adversary techniques to prove upper and lower bounds of computational problems

Module 3:

Greedy Algorithms

Learn when to apply greedy algorithms, which are designed for rapid optimization, including:

  • Explaining what a greedy algorithm is and how to design such algorithms
  • Proving the optimality of greedy algorithms

Module 4:

Dynamic Programming

Learn dynamic programming algorithms and explore their real-world applications, including:

  • Developing and implementing dynamic programming
  • Comparing the bottom-up and the top-down approaches to dynamic programming.

Module 5:

Hashing and Streaming

Explore data structures, such as hash tables and data streams, and apply them to solve computational problems, including:

  • Examining the properties of hashing and applying it to the dynamic dictionary problems
  • Using hashing to solve problems on data streams

Module 6:

Network Flows

Learn the fundamental concepts of network flows and how to use max-flow algorithms to solve optimization problems, including:

  • Finding the maximum flow and minimum cut of a given network
  • Designing and implementing network flow algorithms to solve problems

Module 7:

Linear Programming

Formulate and solve linear programming (LP) problems, including:

  • Exploring LP solutions for the min-cut max-flow and the operations research problems
  • Applying LP algorithms, such as the Simplex algorithm

Module 8:

NP-Completeness

Understand the concepts of P (polynomial time problems) and NP, a wider class of problems that are potentially intractable, including:

  • Proving a problem is NP-complete
  • Developing approximation algorithms to solve NP-complete problems

Module 9:

Multiplicative Weights Algorithms

Learn to formulate multiplicative weights algorithms (frequently used in prediction, learning, and optimization systems) and prove their correctness, including:

  • Using the multiplicative weights framework to solve problems
  • Proving the correctness of multiplicative weight algorithms

Module 10:

Gradient Descent

Learn the definition, core concepts, and applications of gradient descent (GD)—a method commonly used to solve optimization and machine learning problems, including:

  • Examining the fundamentals of the GD framework and convexity
  • Implementing GD algorithms to solve convex optimization problems

Module 1:

Introduction to Algorithms

Learn fundamental concepts of algorithm design, including:

  • Illustrating the key components of an algorithm and the notations used for time complexity
  • Performing recurrence analysis and analyzing the time complexity of merge-sort and quick-select algorithms

Module 6:

Network Flows

Learn the fundamental concepts of network flows and how to use max-flow algorithms to solve optimization problems, including:

  • Finding the maximum flow and minimum cut of a given network
  • Designing and implementing network flow algorithms to solve problems

Module 2:

Concrete Models and Tight Upper and Lower Bounds

Delve deeper into time complexity and learn to prove upper and lower bounds (worst and best possible runtime) of comparison-based algorithms, including:

  • Explaining the concept of concrete models as well as tight upper and lower bounds
  • Applying the information-theoretic and adversary techniques to prove upper and lower bounds of computational problems

Module 7:

Linear Programming

Formulate and solve linear programming (LP) problems, including:

  • Exploring LP solutions for the min-cut max-flow and the operations research problems
  • Applying LP algorithms, such as the Simplex algorithm

Module 3:

Greedy Algorithms

Learn when to apply greedy algorithms, which are designed for rapid optimization, including:

  • Explaining what a greedy algorithm is and how to design such algorithms
  • Proving the optimality of greedy algorithms

Module 8:

NP-Completeness

Understand the concepts of P (polynomial time problems) and NP, a wider class of problems that are potentially intractable, including:

  • Proving a problem is NP-complete
  • Developing approximation algorithms to solve NP-complete problems

Module 4:

Dynamic Programming

Learn dynamic programming algorithms and explore their real-world applications, including:

  • Developing and implementing dynamic programming
  • Comparing the bottom-up and the top-down approaches to dynamic programming.

Module 9:

Multiplicative Weights Algorithms

Learn to formulate multiplicative weights algorithms (frequently used in prediction, learning, and optimization systems) and prove their correctness, including:

  • Using the multiplicative weights framework to solve problems
  • Proving the correctness of multiplicative weight algorithms

Module 5:

Hashing and Streaming

Explore data structures, such as hash tables and data streams, and apply them to solve computational problems, including:

  • Examining the properties of hashing and applying it to the dynamic dictionary problems
  • Using hashing to solve problems on data streams

Module 10:

Gradient Descent

Learn the definition, core concepts, and applications of gradient descent (GD)—a method commonly used to solve optimization and machine learning problems, including:

  • Examining the fundamentals of the GD framework and convexity
  • Implementing GD algorithms to solve convex optimization problems
Apply Now

Program Experience

Decorative image relating to a set of cog machinery

Try-it Activities

Decorative image relating to a person speaking through a speech bubble

Live Office Hours

Decorative image relating to a light bulb representing thinking in an instant

Knowledge Checks

Decorative image relating to an Organogram representing people

Discussion Board Activities

Decorative image relating to an assignment on Paper

Programming Assignments

Who Should Attend

This program is designed for anyone with a STEM or computer science background who would like an in-depth understanding of general computational problems and their algorithms, as well as the data structures that support them. It focuses on the core principles used to design algorithms, prove their correctness, and analyze their complexity. By completing the program, you will add a valuable credential attesting to your understanding of real-world applications of algorithms and data structures. The program is particularly suitable for:

  • Early-career technology grads who would like to build their skills in a way that has a practical application in the jobs marketplace.
  • Software engineers and other technology professionals who want a hands-on understanding of advanced algorithms and data structures.

Certificate

Certificate

Upon successful completion of the program, participants will receive a verified digital certificate of completion from Carnegie Mellon University's School of Computer Science Executive Education. Participants must complete 60 percent of the required activities including a capstone project (if any) to obtain the certificate of completion. This is a training program and it is not eligible for academic credit.

Apply Now

Your digital certificate will be issued in your legal name and emailed to you at no additional cost, upon completion of the program, per the stipulated requirements. All certificate images are for illustrative purposes only and may be subject to change at the discretion of Carnegie Mellon University's School of Computer Science Executive Education.

Program Faculty

Faculty Member David P. Woodruff

David P. Woodruff

Associate Professor, Department of Computer Science, Carnegie Mellon University

David Woodruff is an associate professor in CMU's Computer Science Department. A recipient of the 2021 Herbert Simon Award for Teaching Excellence in Computer Science, he has taught algorithm programs since joining CMU in 2017... More info

Faculty Member Anupam Gupta

Anupam Gupta

Professor, Department of Computer Science, Carnegie Mellon University

Anupam Gupta is a professor in CMU's Computer Science Department. He taught Graduate Algorithms at CMU in the Spring 2021 semester. He is recipient of the 2019 Herbert Simon Award for Teaching Excellence in Computer Science... More info

The Carnegie Mellon School of Computer Science Executive Education learning experience

At Carnegie Mellon’s Executive Education Program in the School of Computer Science, we provide organizations and people access to the skills and tools necessary to solve real world technical problems by equipping the next generation of technology leaders with the experience, insights and novel solutions developed by our community of computer science experts. From custom training programs to online individualized learning, our cutting-edge programming — backed by faculty who pioneered the field — takes your skillset to the next level, giving you the tools to tackle your company’s next great technological challenge.

FAQs

  • How do I know if this program is right for me?

    After reviewing the information on the program landing page, we recommend you submit the short form above to gain access to the program brochure, which includes more in-depth information. If you still have questions on whether this program is a good fit for you, please email learner.success@emeritus.org, and a dedicated program advisor will follow-up with you very shortly.


    Are there any prerequisites for this program?

    Some programs do have prerequisites, particularly the more technical ones. This information will be noted on the program landing page, as well as in the program brochure. If you are uncertain about program prerequisites and your capabilities, please email us at learner.success@emeritus.org for assistance.


    Note that, unless otherwise stated on the program web page, all programs are taught in English and proficiency in English is required.


    What is the typical class profile?

    More than 50 percent of our participants are from outside the United States. Class profiles vary from one cohort to the next, but, generally, our online certificates draw a highly diverse audience in terms of professional experience, industry, and geography — leading to a very rich peer learning and networking experience.


    What other dates will this program be offered in the future?

    Check back to this program web page or email us at learner.success@emeritus.org to inquire if future program dates or the timeline for future offerings have been confirmed yet.

  • How much time is required each week?

    Each program includes an estimated learner effort per week. This is referenced at the top of the program landing page under the Duration section, as well as in the program brochure, which you can obtain by submitting the short form at the top of this web page.



    How will my time be spent?

    We have designed this program to fit into your current working life as efficiently as possible. Time will be spent among a variety of activities including:



    • Engaging with recorded video lectures from faculty
    • Attending webinars and office hours, as per the specific program schedule
    • Reading or engaging with examples of core topics
    • Completing knowledge checks/quizzes and required activities
    • Engaging in moderated discussion groups with your peers
    • Completing your final project, if required

    The program is designed to be highly interactive while also allowing time for self-reflection and to demonstrate an understanding of the core topics through various active learning exercises. Please contact us at learner.success@emeritus.org if you need further clarification on program activities.



    What is it like to learn online with the learning collaborator, Emeritus?

    More than 250,000 professionals globally, across 80 countries, have chosen to advance their skills with Emeritus and its educational learning partners. In fact, 90 percent of the respondents of a recent survey across all our programs said that their learning outcomes were met or exceeded.

    A dedicated program support team is available 24/5 (Monday to Friday) to answer questions about the learning platform, technical issues, or anything else that may affect your learning experience.


    How do I interact with other program participants?

    Peer learning adds substantially to the overall learning experience and is an important part of the program. You can connect and communicate with other participants through our learning platform.

  • What are the requirements to earn the certificate?

    Each program includes an estimated learner effort per week, so you can gauge what will be required before you enroll. This is referenced at the top of the program landing page under the Duration section, as well as in the program brochure, which you can obtain by submitting the short form at the top of this web page. All programs are designed to fit into your working life.

    This program is scored as a pass or no-pass ; participants must complete the required activities to pass and obtain the certificate of completion. Some programs include a final project submission or other assignments to obtain passing status. This information will be noted in the program brochure. Please contact us at learner.success@emeritus.org if you need further clarification on any specific program requirements.


    What type of certificate will I receive?

    Upon successful completion of the program, you will receive a smart digital certificate. The smart digital certificate can be shared with friends, family, schools, or potential employers. You can use it on your cover letter, resume, and/or display it on your LinkedIn profile. The digital certificate will be sent approximately two weeks after the program, once grading is complete.


    Can I get the hard copy of the certificate?

    No, only verified digital certificates will be issued upon successful completion. This allows you to share your credentials on social platforms such as LinkedIn, Facebook, and Twitter.


    Do I receive alumni status after completing this program?

    No, there is no alumni status granted for this program. In some cases, there are credits that count toward a higher level of certification. This information will be clearly noted in the program brochure.


    How long will I have access to the learning materials?

    You will have access to the online learning platform and all the videos and program materials for 12 months following the program start date. Access to the learning platform is restricted to registered participants per the terms of agreement.

  • What equipment or technical requirements are there for this program?

    Participants will need the latest version of their preferred browser to access the learning platform. In addition, Microsoft Office and a PDF viewer are required to access documents, spreadsheets, presentations, PDF files, and transcripts.


    Do I need to be online to access the program content?

    Yes, the learning platform is accessed via the internet, and video content is not available for download. However, you can download files of video transcripts, assignment templates, readings, etc. For maximum flexibility, you can access program content from a desktop, laptop, tablet, or mobile device.

    Video lectures must be streamed via the internet, and any livestream webinars and office hours will require an internet connection. However, these sessions are always recorded, so you may view them later.

  • Can I still register if the registration deadline has passed?

    Yes, you can register up until seven days past the published start date of the program without missing any of the core program material or learnings.


    What is the program fee, and what forms of payment do you accept?

    The program fee is noted at the top of this program web page and usually referenced in the program brochure as well.

    • Flexible payment options are available (see details below as well as at the top of this program web page next to FEE).
    • Tuition assistance is available for participants who qualify. Please email learner.success@emeritus.org.

    What if I don’t have a credit card? Is there another method of payment accepted?

    Yes, you can do the bank remittance in the program currency via wire transfer or debit card. Please contact your program advisor, or email us at learner.success@emeritus.org for details.


    I was not able to use the discount code provided. Can you help?

    Yes! Please email us at learner.success@emeritus.org with the details of the program you are interested in, and we will assist you.


    How can I obtain an invoice for payment?

    Please email learner.success@emeritus.org with your invoicing requirements and the specific program you’re interested in enroling in.


    Is there an option to make flexible payments for this program?

    Yes, the flexible payment option allows a participant to pay the program fee in installments. This option is made available on the payment page and should be selected before submitting the payment.


    How can I obtain a W9 form?

    Please email us at learner.success@emeritus.org for assistance.

  • What is the policy on refunds and withdrawals?

    You may request a full refund within seven days of your payment or 14 days after the published start date of the program, whichever comes later. If your enrollment had previously been deferred, you will not be entitled to a refund. Partial (or pro-rated) refunds are not offered. All withdrawal and refund requests should be sent to admissions@emeritus.org.



    What is the policy on deferrals?

    After the published start date of the program, you have until the midpoint of the program to request to defer to a future cohort of the same program. A deferral request must be submitted along with a specified reason and explanation. Cohort changes may be made only once per enrollment and are subject to availability of other cohorts scheduled at our discretion. This will not be applicable for deferrals within the refund period, and the limit of one deferral per enrollment remains. All deferral requests should be sent to admissions@emeritus.org.

Apply Now

Early registrations are encouraged. Seats fill up quickly!

Flexible payment options available. Learn more.