# UdacityCPP **Repository Path**: averroess/UdacityCPP ## Basic Information - **Project Name**: UdacityCPP - **Description**: udacity cpp - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-31 - **Last Updated**: 2023-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UdacityCPP Course metrials of Udacity C++ Nanodegree Program: **Knowledge** and **Projects**. ## A* Search Algorithm * Contained in the folder `A_star` * Implemented an A* grid-based search algorithm. * The searching behavior a *BFS like algorithm* to visit priority of neighbor nodes w/ higher ```int f``` value, which is a dynamic value relate to its current node during the search process, that equals to the sum of ```int h (Heuristic)``` and ```int g``` value, i.e., ```f(n) = g(n) + h(n)```. * A set of tests is provided by Udacity and have been passed using such implementation. ## Path Planning Project * Contained in the folder `Path_Planning_OpenStreetMap` * In this project, an A* algorithm is utilized to implement a path planning algorithm * it is within the *OpenStreetMap* frame * it searches a path from givin *start* and *end* position ## Introduction to Object-Oriented-Pogramming (OOP) * Contained in the folder `Intro_to_OOP` * The materials/topics include a series of introduction, examples and exercise scripts about how C++ handles memory management, such as allocation and deleting without memory leak. Such topics include: * **Basic Data Type**: `Stack`, `Heap`, `Pointer`, `Reference`, etc. * **Memory Process**: `new`, `delete`, `malloc`, `memset`, etc. * **Smart Pointer**: `unique_ptr`, `shared_ptr`, etc. * others / etc. ## System Monitor Project * Contained in the folder `System_Monitor` * In this project, a Linux System Monitor is built using C++ OOP topics, including *abstraction*, *inheritance*, *polymorphism*, and etc. * it implements similar functionalities as `htop` * the basic idea is to read and parse system file contents in `/proc` * (TODO) refine the UI by utilizing Ncurses package ## Introduction to Memory Management * Contained in the folder `Intro_to_Memory_Mgmt` * Thie materials/topics include a series of introduction, examples and exercise scripts about OOP in C++: * **Abstraction**: class declaration/definition, access modifiers. * **Inheritance**: basics, multiple inheritance, multi-level inheritance, friend class. * **Polymorphism**: overload operator/function, virtual functions. * **Generic Programming**: class/function template, deduction and multiple generic types. * others / etc. ## Smart Pointer Project * Contained in the folder `Smart_Pointer` * In this project, a simple garbage collector pointer class has been implemented. The garbage collector basically uses three classes: `Pointer`, `PtrDetails` and `Iter`: * `Pointer` is the core garbage collector class, which implements a garbage-collection pointer * `PtrDetails` maintains a list reference counts with allocated memory, and bonds a reference count to a piece of allocated memory * `Iter` is a template class similar in function to an `STL` iterator, and it defines all pointer *operations*, including pointer arithmetic, such as `*`, `->`, `begin()`, and `end()`, which work much like their equivalents in the `STL`. ## Capstone Project: Elevator System * Contained in the folder `Elevator_System` * This is the Capstone/Final Project of this C++ Nanodegree program. It gives a chance to practice the knowledge of C++ programming language, by implementing the well-know Object-Oreiented Design (OOD) problem, Elevator System Design. Within this project: * Implemented single elevator system, with functions to handle `ExternalRequest` and `InternalRequest`, which are from specific floor the user wants to take the elevator, and the requests to spcific floor when the user is inside the elevator, respectively * According to the requirement of the course project, several important topics within this C++ nanodegree has been adopted: * **Loops, Functions, I/O** * **Object Oriented Programming** * **Memory Management** * **Concurrency** (right now, it hasn't been adopted yet) * A very simple demonstrating picture for this project: