Prepare for Your Next Coding Interview by Mastering Algorithmic Programming Techniques

Advance your software engineering or data science career by learning algorithms through
programming and puzzle solving
I find that I don’t understand things unless I try to program them.
Donald E. Knuth
Professor Emeritus at Stanford University
This interactive textbook prepares you for your next coding interview by covering algorithmic programming challenges and puzzles described in our popular Massive Open Online Courses (MOOC) "Algorithmic Toolbox" from University of California at San Diego, one of the ten most popular computer science courses on Coursera. Based on feedback from our online students, we have decided to develop a new "Ace Your Next Coding Interview by Learning Algorithms through Programming and Puzzle Solving" course that extends "Algorithmic Toolbox" by describing many coding challenges that you are likely to encounter on your next interview. We invite you to implement these challenges (in a programming language of your choice!) and instantly check your solutions using our automated homework testing system. The book also discusses good programming practices that will help you to become a better programmer. To prepare you for your next interview, we have a Teaching Assistant who is ready to answer your questions and help you to earn the certificate of completion. Along with our Teaching Assistant, we hold regular office hours on Zoom to answer your questions about the course. You can even earn a personalized Letter of Recommendation from instructors for your next interview by passing the final exam in "Ace Your Next Coding Interview by Learning Algorithms through Programming and Puzzle Solving".
Praise from other professors
We are excited that students from various parts of the world are now studying our online materials in the Algorithms 101 classes at their universities. Here is a quote from the website of Professor Sauleh Eetemadi from Iran University of Science and Technology:

"After examining syllabus and course material from top universities including Stanford, Princeton and MIT we have chosen to follow the Data Structures and Algorithms Specialization from UCSD due to excellent course material and its practical approach."
There are many excellent books on Algorithms—why in the world would we write another one?
Because we feel that while these books excel in introducing algorithmic ideas, they have not yet succeeded in teaching you how to implement algorithms, the crucial computer science skill. Learning algorithms without implementing them is like learning surgery based solely on reading an anatomy book.

We encourage you to sign up for "Ace Your Next Coding Interview by Learning Algorithms through Programming and Puzzle Solving" to learn algorithms and to interact with other talented students from around the world. As you explore this interactive textbook, you will find a number of active learning components that help you study the material at your own pace.
What is special about "Ace Your Next Coding Interview by Learning Algorithms through Programming and Puzzle Solving"?
Our MOOC is a mix of theory and practice: you will learn a multitude of algorithmic techniques, implement many algorithmic coding problems in a programming language of your choice, and will have a lot of fun solving our algorithmic puzzles. No other online Algorithms 101 course comes even close to offering you a wealth of programming challenges and puzzles that you may face at your next interview.

Learning Goals
Learn essential algorithmic techniques
You will learn greedy algorithms, divide-and-conquer, dynamic programming, and many other algorithmic approaches.
Practice writing efficient and reliable code
You will implement many algorithmic programming challenges in a programming language of your choice: C++, Java, Python, C, C#, Haskell, Javascript, Kotlin, Ruby, Rust, and Scala. We invested thousands of hours into designing our programming challenges and puzzles because our mantra is "Learning Algorithms Through Programming and Puzzle Solving" rather than the "Learning Algorithms by Answering Multiple Choice Questions" approach often used in MOOCs.
Prepare for a coding interview
No other online course in Algorithms focuses on programming challenges that you may face at your next coding interview.
Interact with many learners and our Teaching Assistant
Since the launch of our online courses in 2016, hundreds-of-thousands students tried to solve our programming challenges and algorithmic puzzles.

Alexander S. Kulikov
University of California, San Diego and Steklov Mathematical Institute, St. Petersburg, Russia
Professor Alexander Kulikov directs the B.Sc. program "Modern Software Engineering" at St. Petersburg State University and the Computer Science Center in St. Petersburg that provides free computer science courses complementing the standard university curricula. Alexander holds a Ph.D. from Steklov Mathematical Institute. His research interests include algorithms and complexity theory. He co-authored online courses "Data Structures and Algorithms" and "Introduction to Discrete Mathematics for Computer Science" that are available at Coursera and edX.
Pavel Pevzner
University of California at San Diego, USA
Pavel Pevzner is Ronald R. Taylor Chair and Distinguished Professor of Computer Science at the University of California, San Diego. He holds a Ph.D. from Moscow Institute of Physics and Technology, Russia and an Honorary Degree from Simon Fraser University. He is a Howard Hughes Medical Institute Professor (2006), an Association for Computing Machinery Fellow (2010), an International Society for Computational Biology Fellow (2012), and a Member of the Academia Europaea (2016). He authored the textbooks Computational Molecular Biology: An Algorithmic Approach (2000), An Introduction to Bioinformatics Algorithms (2004) (jointly with Neil Jones), and Bioinformatics Algorithms: An Active Learning Approach (2014) (jointly with Phillip Compeau). He co-authored online courses "Data Structures and Algorithms", "Bioinformatics", "Analyze Your Genome!", and "Hacking Covid-19" that are available at Coursera and edX.
by online learners
A new way to prepare for a coding interview
Solving coding problems… without learning how to solve them
Contrary to popular belief, passing the standard 'Algorithms 101' course offered by most universities will not prepare you for a coding interview. Indeed, since many 'Algorithms 101' courses do not require real coding, even top graduates of computer science programs need to independently prepare for coding

This process is facilitated by companies that offer you to solve many coding problems. This time-consuming path often amounts to a memorization of solutions of hundreds of problems rather than the ability to solve a new problem that you might find at your next coding interview.
Active learning versus memorization
This book offers a different approach by teaching ideas that help you solve any interview problem from scratch. As professors who have taught thousands of students at our universities (and hundreds of thousands at Coursera and edX), we understand the algorithmic ideas that will best prepare you to solve a spectrum of problems you may encounter on your next interview.

We thus carefully selected just 30 basic problems that illustrate these ideas. We don't show you the solutions of these problems right away — instead, we developed interactive puzzles (that you can solve on your smartphone!) and series of hints helping you to come up with these ideas on your own. This active learning approach is far superior because the best way to solve a spectrum of problems (based on the same algorithmic idea) is to "re-discover" this idea rather than "memorizing" the solutions of all the problems from this spectrum.
A fast "30+30" approach for preparing for a coding interview
Even though there are thousands of different interview problems, nearly all of them can be solved using relatively few algorithmic ideas that are illustrated by our thirty basic problems. By learning each of these ideas, you will be able to solve the entire spectrum of problems based on a specific idea.

After solving our thirty basic problems, we offer you thirty common interview questions so that you can check whether you can apply the ideas that you've learned for solving them on your own. Once you've solved all of them yourself, you're ready for your next interview! And you can continue practicing other problems but this time really SOLVING them rather than MEMORIZING their solutions. That is why we believe that our "30+30" approach is superior and more time-efficient than a popular "solving problem without learning how to solve them" approach.
Compare with other interview preparation resources
"Ace Your Next Coding Interview by Learning Algorithms Through Programming and Puzzle Solving" extends our learning materials at the popular "Algorithmic Toolbox" MOOC on Coursera (co-developed with our colleagues Daniel Kane, Mikhail Levin, and Neil Rhodes at UCSD) by describing many coding challenges that you are likely to encounter at your next interview. This new resource also includes solutions to all coding challenges (including Python code), incorporates a section on best programming challenges, and even provides you with a personalized recommendation letter from instructors after you pass a final exam in this course!

The table below compares "Ace Your Next Coding Interview by Learning Algorithms Through Programming and Puzzle Solving" with other popular resources for coding interview preparation.
Cracking the Coding Interview
Ace Your Next Coding Interview
Interactive Textbook
Interactive Puzzles
Automatically graded coding challenges
Multiple Programming Languages
High-quality Solutions and Hints
Forum with FAQs
Best Programming Practices Section
Teaching Assistant
All-in-one Platform
Certificate of Completion
Personalized Recommendation Letter
Office hours
$35 per month