Skip to content

πŸ“š A place for all supplementary materials like slides, homework assignments etc.

License

Notifications You must be signed in to change notification settings

fjp/supplementary-materials

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Lectures and homeworks

Build status Visitors

This is a list of lectures from the C++ for yourself course.

How to follow this course

The course is designed to be consumed from top to bottom, so start at the beginning and you will always have enough knowledge for the next video.

That being said, I aim to leave links in the videos so that one could watch them out of order without much hassle.

Enjoy! 😎

C++ for yourself

  • Hello world program dissection
    Video Slides
    Video Slides
    • First keywords
    • What brackets mean
    • What do different signs mean
    • Intro to "scopes"
    • Intro to functions
    • Intro to includes
  • Homework: hello world program

    Homework

    • Write a simple program that prints Hello World!
    • Learn to compile and run simple programs
  • Variables of fundamental types
    Video Slides
    Video Slides
    • How to create variables of fundamental types
    • Naming variables
    • Using const, constexpr with variables
    • References to variables
  • Namespaces for variables
    Video Slides
    Video Slides
    • Namespaces with variables
    • The word using with variables
  • Input/output streams
    Video Slides
    Video Slides
    • std::cout, std::cerr, std::cin
  • Sequence and utility containers
    Video Slides
    Video Slides
    • Sequence containers: std::array, std::vector, their usage and some caveats
    • Pair container: std::pair
    • Strings from STL: std::string
    • Conversion to/from strings: to_string, stoi, stod, stof, etc.
    • Aggregate initialization
  • Associative containers:
    Video Slides
    Video Slides
    • std::map and std::unordered_map
    • Touch up on std::set and std::unordered_set
  • Homework: fortune teller program

    Homework

    • Write a program that tells your C++ fortune
    • It reads and writes data from and to terminal
    • Stores and accesses these data in containers
  • Control structures
    Video Slides
    Video Slides
    • if, switch and ternary operator
    • for, while and do ... while
  • Random number generation
    Video Slides
    Video Slides
    • What are random numbers
    • How to generate them in modern C++
    • Why not to use rand()
  • Homework: the guessing game
    Video Homework
    Video Homework
    • A program that generates a number
    • The user guesses this number
    • The program tells the user if they are above or below with their guess (or if they've won)
  • Compilation flags and debugging
    Video Slides
    Video Slides
    • Useful compilation flags
    • Debugging a program with:
      • Print statements
      • lldb debugger
  • Functions
    Video Slides
    Video Slides
    • What is a function
    • Declaration and definition
    • Passing by reference
    • Overloading
    • Using default arguments
  • Enumerations
    Video Slides
    Video Slides
    • What are enums
    • How to use them?
    • Why not to use old style enums
  • Libraries and header files
    Video Slides
    Video Slides
    • Different types of libraries
      • Header-only
      • Static
      • Dynamic
    • What is linking
    • When to use the keyword inline
    • Some common best practices
  • Build systems introduction
    Video Slides
    Video Slides
    • Intro to build systems
    • Build commands as a script
    • Build commands in a Makefile
  • CMake introduction
    Video Slides
    Video Slides
    • Build process with CMake
    • CMake Variables
    • Targets and their properties
    • Example CMake project
  • Using GoogleTest framework for testing code
    Video Slides
    Video Slides
    • Explain what testing is for
    • Explain what testing is
    • Show how to download and setup googletest
    • Show how to write a simple test
  • Homework: string processing library
    Video Homework
    Video Homework
    • You will write library that allows to split and trim strings
    • You will learn how to:
      • Write a CMake project from scratch
      • Write your own libraries
      • Test them with googletest
      • Link them to binaries

PS

Most of the code snippets are validated automatically

If you do find an error in some of those, please open an issue in this repo!

Icons used in this file

About

πŸ“š A place for all supplementary materials like slides, homework assignments etc.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 66.8%
  • CSS 19.5%
  • CMake 7.0%
  • C++ 4.9%
  • Makefile 1.8%