Hacker Courses The online courses programmers keep recommending, ranked from 20 years of public forum comments.
i
Efficient Programming with Components (Alexander Stepanov)
Image: youtube.com
#219 overall

Efficient Programming with Components (Alexander Stepanov)

YouTube

2 recommenders · 3 threads · recommended in 3 years, 2015–2020 · score 2.0

Go to course ↗

A YouTube lecture series by Alexander Stepanov, the original STL designer, that builds a single algorithm (merge sort) in C++ step by step, reasoning about the design of each line. It covers the philosophy behind generic programming and composable building blocks like iterators and algorithms.

Commenters call it a phenomenal, philosophical, and painstakingly detailed introduction to Stepanov's way of thinking about generic programming.

Programming Languagesadvancedfreevideo lectures#generic programming#c++#stl#algorithms#stepanov

Recommendations by year

20062026

What commenters said (3)

  1. Strongly recommendsnly2019in “Elements of Programming”

    If you want an intro to the content of this book you can checkout Stepanov's phenomenal lectures on A9:

    "Efficient Programming with Components" - https://www.youtube.com/playlist?list=PLHxtyCq_WDLXryyw91lah...

    "Programming Conversations" - https://www.youtube.com/playlist?list=PLGvfHSgImk4Y1thqJLpcS...

    I warn you though, this is a philosophical and painstakingly detailed intro in to this way of thinking that takes an entire series of videos to build up a single algorithm, in C++, bit by bit, episode by episode. It also happens to be one of my favorite lecture series.

  2. Recommendsjustin662020in “Elements of Programmnig”

    I did not get a good sense based on the brief mention whether the author of the review feels that Stepanov and Rose's follow up From Mathematics to Generic Programming is worthwhile as a text.

    I appreciate that he likes and recommends Stepanov's lecture series on youtube:

    https://www.youtube.com/playlist?list=PLHxtyCq_WDLXryyw91lah...

  3. Recommendsnly2015in “Functional Programming in C++ (2013)”

    Well the containers that have fast lookup (set, map and their unordered_ and multi_ counterparts), all have efficient .find() member functions. The general philosophy of the idealised STL is not to provide you with anything you can compose efficiently yourself.

    A 3-4 line template will will give you a terse boolean contains() method, but it won't give you any big-O guarantees, and having such a thing would encourage very inefficient patterns (like calling contains() and then doing a find() if it's true, which effectively does the lookup twice). Why introduce a weak abstraction? If you're forced to write it yourself you're more likely to understand the implications.

    Alex Stepanov, who wrote the original STL, is very much a believer in fundamental indivisible building blocks like iterators and algorithms and careful API design. To grok more about why things are the way they are, I recommend watching his "Efficient Programming with Components" lectures[0]. Over the course he builds up, in excruciating detail, an implementation of merge sort, reasoning about, and discussing with his students, the implications of almost every line of code.

    And yes, Stepanov complains about the lack of terseness and expressiveness in C++ as well.

    [0] https://www.youtube.com/playlist?list=PLHxtyCq_WDLXryyw91lah...

Related courses

Keyboard

In the course grid
←↑→↓
Move between courses
Home End
Start / end of row (with Ctrl: first / last)
PgUp PgDn
Jump several rows
Enter
Open course
S
Save / unsave course
1–5
Best, Trending, Hidden gems, Evergreen, Saved
[ ]
Previous / next topic
On a course page
← →
Previous / next course in your list
S
Save / unsave
O
Open the course website
Esc
Back to the grid
Everywhere
/
Search
T
Light / dark theme
?
This help