USACO fundamental: Introduction to C++ programming and Data Structure I
- 4 Sections
- 85 Lessons
- 13 Quizzes
Foundations of C++
- Course Logistics
- To parents
- How to Learn Math / CS Effectively (For Middle School Students)
- Why Learning C++ for the USA Computing Olympiad (USACO)
- Setup C/C++ Development Env: editor/compile/build env
- Advanced Topic: setup vscode/g++ in WSL ( linux on windows)
- Introduction to Programming with C++
- Practice a hello world c++ , compile in VScode and command line
- C++ Data Types, Variables, and Constants – USACO Perspective
- CP Tips: #include
- homework: find all different type of data's range
- Floating-Point vs double Precision
- Basic C++ Input/Output – USACO Perspective
- C++ Input cin, getline(), and Custom Parsing
- Advanced topic: how cin >> type_aware?
- Advanced Topic: cin vs getline in C++
- C++ Output – USACO Perspective
- Typical Sample USACO Input/Output
- C++ Operators – USACO Perspective
- C++ Control Flow – USACO Perspective
- Write a guess number game in c++
- Homework: basic read file/write file
- Pratice question: Weird Algorithm
- Advanced topic: text vs binary file
- C++ syntax overview ( Level -1 obstacles, you should figure out yourself)
- How to think like computer, step by step, debug ( cout )
- Overview of Loops and If-Else Statements
- How to Think with Loops & If-Else
- Understanding % (Modulo Operator)
- Getting Single Digits Using % and while Loop in C++
- Debug techniques ( cout, log and debugger c++, gdb)
- Thinking About Double Loops or multiple loops in C++
- Thinking About while Loops and break in C++
Advanced C++ ( Pointer, function , recursion and OOP )
- References and Pointers
- C++ Pointers and References — A USACO Perspective
- Advanced topic: Pointer to Pointer in C++ (**p)
- swap number using pointer and reference
- C++ Array
- 🐄 USACO Array Tutorial (C++)
- 🐄 USACO Vector Tutorial (C++)
- Advanced: Array vs Vector
- Homework: Array
- Functions
- Recursive Functions in C++
- Advanced: C++ Lambda Functions
- Advanced Tail Recursion vs Regular Recursion: Detailed Explanation
- Homework functions
- Advanced: Deep on lambda function
- C++ struct
- Object-Oriented Programming (OOP) Basics
- Advanced OOP Concepts
- Advanced topic: why need virtual at base class?
- Homework : OOP
Data Structure and Standard Template Library (STL) in C++
- introduction of std::string
- std::string_view
- Homework: string
- Arrays, Strings, and Pointers
- Templates and STL
- Advanced topic: C++ Templates
- Advanced Topic: Advanced c++ template II
- Introduction of std::vector in C++
- Introduction of std::array in C++
- Introduction of std::list in C++
- HOMEWORK: vector/list/string
- std::span in C++
- Introduction to Tree and Hash
- C++ STL Containers: map, set, unordered_map, unordered_set
- Advanced Topic: when to use insert({key, value}) and emplace(key, value)
- Advanced topic: benchmark and custom comparator for unordered or regular map/set
- Advanced Topic: multimap and multiset ( order/unordered)
- Advanced Topic: multiset / multimap real-world use cases
- Advanced Topic: real-world using multi-set/map II
- Advanced Topic: Understanding Collisions in Hash Tables
- Homework: unordered and regular map/set
- introduction to std::stack in C++
- Advanced Topic: Polish Notation, Reverse Polish Notation, and Conversions
- Advanced Topic: Function Call Using Stack
- introduction of std::queue in C++
- Introduction to std::deque in C++
- Introduction to std::priority_queue (or Heap) in C++
- Advanced Topic: compare set/heap, why use heap
- Homework: stack/queue/heap
- Introduction to Binary Tree in C++
- Introduction to STL Algorithm ( commonly used )
- Advanced Topic: difference between std::find vs find from stl container e.g: std::string.find vs std::unordered_map.find?
- Advanced topic: std::move
- C++ STL algorithm II
- Advanced Topic: difference between std::binary_search and std::find
- STL algorithm III ( std::lower_bound, std::upper_bound, and std::unique )
- List of STL algorithms: summary and examples
- STL next/prev iterator
- STL For USACO
- Homework: STL Algorithms
Miscellaneous C++ Topics
Course Overview:
Welcome to the world of C++ programming and Data Structure! This course is designed for beginners who are new to USACO ( USA Computing Olympiad ) coding and want to gain a solid foundation in one of the most powerful and widely-used programming languages and most used data structure. Through hands-on practice and interactive examples, you will develop the skills necessary to write efficient, reliable, and maintainable C++ code using right data structure.
What You Will Learn:
- Basics of C++ syntax and structure
- Data types, variables, and operators
- Control structures (if-else, loops)
- Functions and recursion
- Arrays and strings
- Object-Oriented Programming (OOP) concepts
- Introduction to pointers and references
- File handling in C++
- Data Structure and STL (vector, set, tree, hash table, queue etc)
- Multiple-thread
- Error handling and debugging techniques
- Building simple applications and solving problems
Course Features:
- Hands-on Exercises: Practical coding exercises to reinforce your learning.
- Real usaco Examples: Learn by solving real usaco problems.
- Live Support: Access to Q&A sessions, and instructor feedback.
- Flexible Learning: Online resources and recorded sessions available 24/7.
Ideal For:
- Beginners with some prior programming experience
- Students looking to build a strong foundation in C++.
- Students want to know basic data structure: vector, map, hash, tree, queue etc.
- Aspiring developers planning to enter software development
- Those who want to sharpen their skills in problem-solving and algorithm design
Duration:
- Split into two semesters.
- About 12-14 weeks/semester, with 1 sessions per week (1 hours per session)
- First semester will focus on C++ language ( this course )
- Second semester will focus on Data structure ( see here )
Prerequisites:
A basic understanding of math is and previous programming experience is required.
Materials Included:
- Access to comprehensive video lectures
- code examples and exercises
- Additional reading and reference materials
Outcome:
By the end of this course, you will be confident in your ability to write basic C++ programs, solve coding challenges using correct data structure/algorithm, and understand the principles that form the core of modern software development.
Join Us Today and Start Your C++ and Data Structure Journey!
Want to submit a review? Login