С++, группы x36, x37, x38, x39

Лекции

Лекция 1[1]

Лекция 2[1]

Лекция 3[1]

Лекция 4[3]

Лекция 5[7]

Лекция 6[7]

Лекция 7, 8

Лекция 9, 10 [string-demo]

Лекции 11, 12[23][40]

Лекции 13, 14

Лекция 15

Лекция 16, 17

Лекция 18

Лекция 19

Лекция 20

Лекция 21

Лекция 22

Лекция 23

Лекция 24

Лекции 25, 26

Домашние задания

  1. Задание 1
  2. Задание 2
  3. Задание 3
  4. Задание 4
  5. Задание 5
  6. Задание 6

Задания для пересдачи

  1. Bimap
  2. LRU Cache
  3. Persistent Set

Литература

Для базового ознакомления с языком Си я бы рекомендовал книгу The C Programming Language[7]. Аналогично совсем базовое ознакомление с C++ можно начать с книги Accelerated C++[11] и книги Бьярна Страуструпа Programming: Principles and Practice using C++[12].

Для более глубокого изучения подходят книги серии C++ In-Depth[13][14][15][16][17][18][19][20][21][22]. Отдельно хотелось бы выделить из этого списка книги Скотта Майерса[17][18], как наиболее популярные и простые для чтения. Лично мне также очень нравиться книга [13].

Я бы не рекомендовал начинать изучение языка с книги[16]. Во-первых, книга достаточно сложна для восприятия. Во-вторых требуется определенный опыт, чтобы увидеть потребность в приемах изложенных в книге. Тем не менее многие вещи изложенные в книге сейчас применяются на практике, правда часто в сильно измененной форме.

Книга [22] достаточно объемная и, возможно, слегка тяжелая для чтения. Но, на мой взгляд, она остается наиболее подробной и содержательной книгой по C++. Я бы рекомендовал периодически пытаться её открывать и читать, а если не получается возвращаться к более простым книгам. Ещё один совет, который я могу дать про эту книгу это то, что её не обязательно пытаться читать по порядку от начала до конца. Если какая-то глава, кажется тяжелой, можно её пропустить. Как правило главы относительно независимы и одни главы проще других.

Ссылки

  1. ^^^ С. В. Зубков — Assembler для DOS, Windows, UNIX
  2. ^ Henry S. Warren, Jr. — Hacker's Delight
  3. ^ John P. Shen, Mikko H. Lipasti — Modern Processor Design: Fundamentals of Superscalar Processors
  4. ^ Ulrich Drepper — What Every Programmer Should Know About Memory
  5. ^ Tony Albrecht — Pitfalls of Object Oriented Programming
  6. ^ Paul E. McKenney — Memory Barriers: A Hardware View for Software Hackers
  7. ^^^ Brian W. Kernighan, Dennis M. Ritchie — The C Programming Language
  8. ^ David Goldberg — What Every Computer Scientist Should Know About Floating-Point Arithmetic
  9. ^ Agner Fog — Calling conventions for different C++ compilers and operating systems
  10. ^ Torbjorn Granlund, Peter L. Montgomery — Division by Invariant Integers using Multiplication
  11. ^ Andrew Koenig, Barbara Moo — Accelerated C++
  12. ^ Bjarne Stroustrup — Programming: Principles and Practice using C++
  13. ^^ Herb Sutter, Andrei Alexandrescu — C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
  14. ^ Herb Sutter — Exceptional C++
  15. ^ Herb Sutter — More Exceptional C++
  16. ^^ Andrei Alexandrescu — Modern C++ Design
  17. ^^ Scott Mayers — Effective C++
  18. ^^ Scott Mayers — More Effective C++
  19. ^^ Scott Mayers — Effective STL
  20. ^ Stephen Dewhurst — C++ Common Knowledge: Essential Intermediate Programming
  21. ^ Stephen Dewhurst — C++ Gotchas
  22. ^^ Bjarne Stroustrup — The C++ Programming Language
  23. ^ Stanley B. Lippman — Inside the C++ Model
  24. ^ John R. Levine — Linkers and Loaders
  25. ^ Yann Collet — Counting bytes fast — little trick from FSE
  26. ^ POPCOUNT false dependency bug
  27. ^ A good branch misprediction example
  28. ^ Emery Berger, Kathryn McKinley, Robert Blumofe, Paul Wilson — Hoard: A Scalable Memory Allocator for Multithreaded Applications
  29. ^ David Roberts — A look at std::string implementations in C++
  30. ^^ Nicholas Ormrod — The strange details of std::string at Facebook (CppCon 2016) Slides Video
  31. Stephan T. Lavavej — STL (C9 Lectures)
  32. Stephan T. Lavavej — Advanced STL (C9 Lectures)
  33. Stephan T. Lavavej — Core C++
  34. Stephan T. Lavavej — STL11: Magic && Secrets Video Slides
  35. ^ Alexander Stepanov — Notes on Programming
  36. ^ Alexander Stepanov, Paul McJones — Elements of Programming
  37. Alexander Stepanov — Наибольшая общая мера последние 2500 лет, лекция в Яндексе
  38. ^ Alexander Stepanov — Short History of STL
  39. ^ Doug Gregor — The Dreaded Two-Phase Name Lookup
  40. ^ Jan Grey — C++: Under the Hood
  41. Name mangling demystified
  42. Bjarne Stroustrup — The Design and Evolution of C++
  43. Bjarne Stroustrup — Evolving a language in and for the real world: C++ 1991-2006
  44. Rationale for Programming Language C
  45. ^ Ian Lance Taylor — Linker posts
  46. ^ Bjarne Stroustrup — Exception Safety: Concepts and Techniques
  47. ^ Jon Kalb — Exception-Safe Code (CppCon 2014) Slides Videos: 1 2 3
  48. ^ Chris Lattner — What Every C Programmer Should Know About Undefined Behavior
  49. ^ Chandler Carruth — Garbage In, Garbage Out: Arguing about Undefined Behavior
  50. ^ Marshall Clow — Undefined Behavior in C++: What is it, and why do you care?
  51. Kurt Guntheroth — Optimized C++
  52. ^ Nicolás Brailovsky — C++ exceptions under the hood
  53. ^ Matt Pietrek — A Crash Course on the Depths of Win32™ Structured Exception Handling (перевод)
  54. ^ Eli Bendersky — Stack frame layout on x86-64
  55. ^ Adam Langley — CFI directives in assembly files

Valid XHTML 1.0 Strict