Taking the Advanced C++ course really deepened my understanding of how memory and pointers actually work in programming. Before, I mostly focused on writing code that “just worked,” but now I see why managing memory correctly is so important, especially for system programming and performance.
I learned how to use pointers in more advanced ways, from pointers to functions to dynamic arrays, and I finally understood the real difference between passing by value and by reference. One of the most eye-opening parts was memory allocation — stack, static, and heap — and how to use malloc, calloc, and free properly. I also got to practice bitwise operators, structs, and even struct alignment, which showed me how data is stored and optimized in memory.
Overall, this course gave me a stronger “systems-level” way of thinking about programming. It made me more confident in tackling lower-level problems and also more prepared for future work in areas like embedded systems or high-performance software.
Taking this advanced C++ course made me realize why C++ is both powerful and challenging. Learning about pointers showed me how much control programmers can have over memory. On one hand, pointers allow efficiency, flexibility, and are essential for data structures like linked lists and trees. On the other hand, they also make programming more complex and error-prone compared to higher-level languages that hide memory management. I found this balance between power and responsibility really eye-opening, because it helped me understand not just how to code, but also how different programming languages are designed with trade-offs in mind.
I completed this course in about a month, pretty quickly—mostly because I already had a programming background in Python. I didn’t struggle much with the logic or problem-solving part; what I needed was to get used to the C++ syntax and understand how it works.
The main reason I decided to learn C++ was for a research project and an online IoT competition I’ve been working on. These projects involve sensors, microcontrollers like Arduino and ESP32, and embedded systems in general—so Python just wasn’t enough. Most of the programming I do for these devices is in C++, and I knew I needed to build a solid foundation.
Even though this course was for beginners, I took it seriously because I knew how important it was for my current work and future learning. I even started exploring more advanced topics like pointers, which is one of the most powerful features of C++. In the future, I plan to continue with more advanced C++ and dive deeper into data structures and algorithms (DSA).
This course wasn’t AI-related like my previous ones, but it opened a new direction for me—understanding how software interacts directly with hardware. And that’s something I’m really excited about.
Before this course, I had a basic understanding of Machine Learning (ML), particularly supervised learning, where a model maps inputs to outputs (A → B).
AI in Action: I recognized AI in everyday applications, such as speech-to-text in Microsoft Word, which converts spoken words into written text. Another example is text recognition in Google Translate, where AI scans and translates printed text from images in real-time.
Learning from Data: I knew that AI models learn patterns from datasets instead of being explicitly programmed. However, data quality is crucial—a concept known as "Garbage in, garbage out" (poor data leads to poor predictions).
AI’s Limitations: While AI can generate text, images, and music, it lacks true creativity and originality. For example, AI-generated art is based on existing patterns rather than unique human imagination. It can’t evoke deep emotions the way human-created art does.
A machine learning model predicts outcomes based on given data.
Logistic Regression: A fundamental algorithm that predicts binary outcomes (e.g., will it rain or not?).
The model consists of input features (X), multiplied by parameters, summed up with a bias, resulting in Z.
Z is passed through a sigmoid function, which converts it into a probability (between 0 and 1).
Example: Predicting rain based on cloud cover, humidity, temperature, and air pressure.
Softmax Function: A generalization of logistic regression for multi-class classification.
Multilayer Perceptron (MLP): An extension of logistic regression with multiple layers, enabling more complex decision-making.
Example: A model analyzing documents, identifying topics (sports, history, politics), and combining them into meta-topics (e.g., history of sports).
Convolutional Neural Networks (CNNs):
CNNs excel at image analysis, even surpassing human performance in some cases.
Images are hierarchical, consisting of small atomic elements.
Filters scan the image at different levels, identifying features from basic shapes to complex patterns.
Applications: Medical imaging, object detection, and face recognition.
Instead of training a model from scratch, transfer learning applies pre-trained parameters from large datasets (e.g., ImageNet) to new tasks like medical imaging.
Saves time by only learning new parameters at the top layers of the network while using foundational filters from existing models.
Loss Function: Defines penalties for poor predictions.
Overfitting & Model Generalization:
A model that fits training data too well may fail in real-world applications.
Validation set helps refine model complexity.
Test set is used only once to estimate final performance and avoid bias.
Gradient Descent & Stochastic Gradient Descent (SGD):
Gradient Descent: Optimizes model parameters by minimizing loss but is inefficient for large datasets.
SGD: A faster alternative that estimates gradients using random data points, allowing scalability for big data.
Early Stopping: Stops training when validation performance reaches its peak, preventing overfitting and saving computational resources.
Words to Vectors (Word2Vec): Converts words into numerical vectors for analysis.
Similar words have similar vector representations in multidimensional space, enabling semantic understanding in AI models.
This course deepened my understanding of logistic regression, neural networks, and AI optimization techniques.
To apply these concepts, I plan to take a formal coding class to gain hands-on experience in AI programming.
Before diving into this course, I had a basic understanding of Artificial Intelligence (AI). I knew that AI could learn on its own and perform tasks that typically require human intelligence. My interest in AI grew as I noticed its rapid development and the increasing number of success stories in the news.
One of the most impressive advancements was ChatGPT, a chatbot capable of fluent communication. I learned that ChatGPT is trained on a massive dataset from the internet, including sources like Wikipedia, forums, and articles. Seeing how AI was evolving, I predicted that it would soon become widely used and highly effective in various industries.
One of the biggest takeaways from the course was understanding the two main types of AI:
Artificial Narrow Intelligence (ANI): AI that specializes in a single task, like self-driving cars, smart assistants, and recommendation systems.
Artificial General Intelligence (AGI): A hypothetical AI that can perform any intellectual task a human can. Some fear that AGI could surpass human intelligence and pose risks to humanity.
While many people worry about AGI, the course explained that AGI is not making significant progress, and concerns about it taking over the world are unnecessary. However, experts like Geoffrey Hinton, a leading AI researcher, have raised concerns about the risks of AI. He even left his position at Google to freely discuss these risks, including AI’s potential impact on society. (Source)
The course introduced me to Machine Learning (ML), specifically supervised learning, which follows an input-to-output (A to B mapping) approach.
For example:
If the input is a house’s features (size, number of bedrooms), the output can be its predicted price.
If the input is a budget, the output can be a list of houses within that price range.
This process relies on neural networks, which function similarly to trend lines in graphs. However, AI makes these predictions far more accurately than traditional methods.
I also learned about the importance of data quality in machine learning. The phrase “Garbage in, garbage out” describes how poor-quality input leads to poor-quality AI results. If data is missing, incorrect, or biased, AI models cannot function effectively.
Before taking this course, I thought AI was a super-powerful tool that could replace humans. However, the course introduced an interesting rule:
If a human can do a task in less than a second of thought, AI can likely do it too.
Some examples:
✅ AI can:
Recognize objects in images (e.g., self-driving cars detecting obstacles).
Sort customer emails by category (e.g., refund requests, shipping issues).
❌ AI struggles with:
Accurately replying to emails with unique content.
Recognizing human gestures (e.g., a police officer signaling to stop, a cyclist raising a hand to turn).
Complex reasoning and decision-making beyond pattern recognition.
This course made me even more excited about AI. One key lesson was:
"Start small—completing a simple project is more important than its value."
Now, I want to take the next step by learning how AI programs are created. My goal is to build my first AI project, no matter how simple, to gain hands-on experience.