Skip to content
dagonmeister edited this page Sep 23, 2022 · 3 revisions

Welcome to The Byte Cave cpplearning wiki!

It took me years to find the time, to finally port an old C/C++ Programming Wiki to a more robust, time proof, and standard platform that I believe github is. This space is WIP, mix of notes, language highlights, programming tools, a learning reference for students, amateurs, newbies, starters.

The entire content will be ultimately used as a resource for MOOCS. Finding the right balance on written content, media, hands-on and auto-assessment is crucial to create top quality learning platforms. While switching from the traditional academia to MOOCS, I try gathering the best from both worlds. Another popular platform for teaching youtube (a.k.a. you tuto) with very experienced content creators have tendency of teaching "on the fly". Implies you wasting valuable hours watching a genius person fixing her own (unrelated and simple) errors. Basically is you watching them working on a daily basis, at their own pace, their rules, making mistakes and experiencing their success, frustration, next challenge cycle. Watching others do the job, has a tremendous value. Youtube content is usually more raw, and darn it will help you a lot in the future when you are more experienced. Learn as much from it. Despite the amazing content found there, I don't believe that's the best teaching platform for programming or the future of top quality MOOCS.

When I was at colleague, I didn't have a curated, up to date source of knowledge. From old books, academic books, old educational system, legacy code, legacy tools. Legacy everywhere.

Through the material covered here, I want to give you the best possible start, it can help you reach as far as you want. It is a content that hopefully help you overcome those common pitfalls when learning C and C++. Clarify all those misconceptions as quickly as possible when starting from ZERO. Best case scenario, might also help you to overcome your own mental blockers.

The learning platform that I am aiming for, will end up being a mixture of different media including curated youtube videos (promise you won't see me fixing errors while streaming), auto-assessment, hands-on coding, interactive quiz, step by step instructions, sequential material tracking your progress. With such a vast neurodiversity that we live in, failures come in as many different flavors and is hard to tackle all of them with traditional academic books or assignments. The intention is to cover a wider audience embracing neurodiversity, students included. Programming is a skill where you will fail many times, will be accompanied by frustration and lots of satisfaction once you solved problems. After you deliver useful pieces of work, you will feel you are on the "other side" and ready for the next challenge.

A top quality education platform for programming must include

  • Study at your own pace
  • A secure environment to prevent cheating the problems and other students
  • A community hub for open discussions
  • Multi-media content
  • Hands-on exercises and practicing
  • Sequential and material progression that can be followed through different media: text, video and sound
  • (Auto)-Assessment system
  • Private sessions to address 101 issues
  • Free and complete public content
  • Upon completion, give you enough skills to continue the work on your own

Few of the courses offered in platforms like edx include them all. We need more alternatives and spaces that are as complete and even better. github is the perfect environment to share code and documentation. Code versioning is implicit, as a widely accepted development environment the community will surely continue using after they completed the course.

Becoming a professional programmer , implies a wide range of skills from problem solving, building a tolerance to frustration, quickly identify your own errors, help others identifying theirs, adapting new technologies, workflow styles. Big problem is, everyone has a different mindset, cognition processes, brain defects. We are all different. Luckily you know yourself better than anyone else, identifying your own errors even before coding, is a key talent that you will develop as you keep actively practicing. Most of your common failures are usually packed as mental patterns, you will be able to identify and avoid them. This same talent will naturally extent to those around you. As a newbie, shooting your own feet is so common. Do not feel stupid. As with sports or music, having a good mentor will be always the best case scenario, the rest is about yourself: practice, discipline, persistence.

I intend to provide a foundation for people interested in native applications, low level programming and optimized code with C/C++, strongly focused in game development. In the game industry, there is a place for all kinds of programming levels, all of them play an important role. Low level programming is still considered as a strong and very valuable skill in this industry. For colleagues using higher level languages, they are as valuable. It is about how we are all connected. As a team, what you deliver should be greater than the individual sum of your talents. Those really interested in understanding "the under the hood", all the nuts and cracks, I want to share the content and concepts that will guide you to the right mindset, deep understanding of the problems, how computer works and what are the tools that will help you creating the new ground breaking technology.

The original content can be found in C/C++ Programming assembla platform.

** IMPORTANT, assembla content won't be further updated and is totally deprecated. Is kept only as a revision reference, until the time comes that assembla decides to shutdown their wiki support. **

Extensive answers to the most FAQ

  • Where to begin coding for C/C++?
  • What are the fundamental concepts in C/C++ to concentrate for game development?
  • How to level up my programming skills?
  • Do you need to master C++ language to program high performance video games?
  • How much C++ language learning is enough?
  • What are typical projects/challenges to advance in your career?

Topics covered

  • Basic concepts that involves the compilation, linking and execution of a native Desktop program

  • Why native applications and high performance are still relevant

  • Provides the necessary tools needed to create a C/C++ program and how to generate the executable: editors, compilers, IDE's

  • Memory

  • Basic program structure, the scope of variables and code blocks

  • Branching, loops and boolean evaluation to create no sequential code

  • Functions, signature, declaration, definition

  • More about functions with parameters by value, by reference

  • More about functions with pointer, dynamic memory

  • Project that cover the entire topics in a cohesive and congruent small program

Clone this wiki locally