Project by: Oliver Eig (9th Grade)
Project Advisor: Jacob Farkas
Student(s)’s Advisor(s): Daniel Li

In this project, my goal was to learn the fundamentals of the C++ programming language using the book called Programming Principles and Practice Using C++ by Bjarne Stroustrup. Through this I would like to become proficient enough to work inside of game engines like Cryengine and Unreal 4, and make games.

Reflection/progression of learning

As of writing this, the trimester is over. Each chapter that I have followed so far (7) has taken a lot longer than I had anticipated, stretching up to ~30 pages. I had basically read a chapter each week(except for two weeks, first and last), and done the drills that went along with each chapter. This took me around 2-4 hours each week to complete. Because of this, I was left with little time to come up with a separate game to share my learnings with the larger LREI community, like I had stated in my proposal. I have not finished the book, being about 1/5 of the way done, but I am looking to continue my learning of C++ into next year. Luckily, the framework of following a chapter each week allows me to go back and reflect on learning the contents of each chapter individually, and therefore my learning this week. I will now do just that, and reflect on my learning each week.

WEEK 1/CHAPTER 1

This chapter was basically introducing the structure of the book, and the author explaining the general approach of the book, which is to communicate directly, and clearly to the reader. Beyond that, the author also talked about the importance of learning a computer language in our increasingly digitalized society, and how learning one can help the individual better appreciate, and understand the machines that they previously, probably took for granted.

WEEK 2/CHAPTER 2

This chapter was basically teaching me how to setup my programming environment(Xcode), and try out a basic, test program called “Hello World”. The author sort of delved into the notion of a “program” itself, defining it as an “idea of translating a program from human-readable form to machine instructions using a compiler, and finally executing those machine instructions”(Bjarne Stroustrup, Programming: Principles and Practice Using C++, Page 43).

WEEK 3/CHAPTER 3

This chapter was introducing different, simple ways of storing data in a c++ program. A lot of this was familiar to my previous knowledge of Python, as it went over data types, variables, values, and even value conversions. The chapter also introduced operators that could be used to manipulate data, such as %, *, /, ++, etc.

WEEK 4/CHAPTER 4

This chapter basically introduced functions, which is a way of organizing a program into parts that have their own sub-computation. It also introduced vectors, which is a data type that was not covered in Chapter 3, and it is used to hold sequences of values. This chapter also had the author give strategies to express functions in a way that organizes a program well, and makes it correct.

WEEK 5/CHAPTER 5

Chapter 5 was all about debugging and errors. The author stressed how important debugging is, and how annoying it is. He also talked about how the better organized and simple your code is, the easier debugging is. He also demonstrated mechanisms to handle errors in a program without crashing it, which included try, throw, and catch, which are called exceptions.

WEEK 6/CHAPTER 6

For Chapter 6 the author demonstrated the thinking and planning that goes behind writing a successful, well-written program. One of the key philosophies that I took away from this is that it is good to start small with your program, and then expand on it gradually, rather than to try to do everything all at once. The author then delved into writing a calculator program that got increasingly complex, explaining each step along the way. I wrote this program alongside the author, making sure I understood why I was doing what I was doing at all times. This chapter also introduced classes, which is a user-defined type. This is a concept that I find interesting among game development, as I could see how in rpgs, different “classes” of characters have different defined abilities, which defines them as a class. And they definitely have their own user-defined type in the code that defines these abilities as well. The author also went into grammars, which is a way of parsing data. This was a concept that I found to be extremely difficult to grasp mentally, but my meeting with Jacob helped clear things up.

WEEK 7/CHAPTER 7

For Chapter 7 the focus was about refining the initial working version of the calculator program. This included working on improving the error handling(using exceptions), adding things like variables to the possible inputs, reorganizing the code in general, and improving the user interface.

Next year, I plan to take the fundamentals of c++ that I have learned and apply them while learning a game engine called Unreal Engine 4. I will be following a Udemy course during this time. I will be making a small game to share with the LREI community using my knowledge of C++, and my future knowledge of Unreal Engine 4. I will also expand on my knowledge of C++ during the Udemy course, as it states that it teaches c++ as well in the description.

==================================================================

Project Proposal

Please write a description of the project you are proposing. Why do you want to take this on, and what do you hope to learn?

I am going to be learning the fundamentals of the C++ programming language using the book called Programming Principles and Practice Using C++ by Bjarne Stroustrup. Through this I would like to become proficient enough to work inside of game engines like Cryengine and Unreal 4, and make games.

Critical thinking, creativity, citizenship and courage are essential LREI learning values. Explain how you’ll draw on at least one of these values to complete your proposed project?

I will draw on critical thinking and creativity, as they are used while programming.

What is your proposed outcome? How will you be able to demonstrate successful completion of this Project? How do you plan to share your learnings with the larger LREI community (e.g., exhibit of work, poster of learnings, performance, etc.)?

My proposed outcome for this trimester is to hopefully make a small game, like a recreation of pong or something along those lines. I plan to share my learnings by showing my game to my peers. My main contributions will happen in future, larger games, though.

Please provide a general outline that indicates your work plan for the trimester? What are some of the key project benchmarks (i.e., goals that will help to ensure that you finish the project)?

I will meet with Jacob Farkas once a week for supplementation on my work within the book. I will also be completing chapters regularly in my book, hopefully at a rate of one per week. I will make mini programs throughout the trimester as benchmarks.

When do you plan on meeting?
Xblock on either Wednesday or thursday.

 

 

One thought on “Learning C++ – Oliver E.

Leave a Reply

Your email address will not be published. Required fields are marked *

*
*