Treeism Athenaeum

[CSPF] Computer Science & Programming Fundamentals

5 Modules, 25 Exercises + Resolution examples

Start
Prerequisites: You will learn:

Quick introduction

This course will teach you the core foundations of programming: how to learn any language, how to develop different types of applications, how memory is managed, and how to use common algorithms and data structures effectively.

We will begin with a few simple lines of C++ to introduce input/output streams and basic statements such as declaration, assignment, and conditional blocks. Then, we will explore more advanced concepts using Java, as it is relatively easy to learn, has syntax inspired by C/C++, and runs on multiple platforms with a single compilation. In this section, we will cover key Object-Oriented Programming (OOP) principles such as encapsulation, inheritance, abstraction, and polymorphism.

After that, we will move on to the C programming language to understand how memory is managed, how to allocate it both statically and dynamically, how pointers work, and how to apply strategies for safe coding and effective debugging. We will follow The C Programming Language (K&R, 2nd edition) and focus on the C99 standard. From there, we will study how the CPU works, its structure, and then start writing Assembly programs using the RISC-V architecture, covering fundamental instructions such as moves, jumps, conditional jumps, memory operations, and system calls.

Next, we will return to C++ to explore more advanced topics including references, casting, RTTI, RAII, value categories (rvalue, lvalue, xvalue, glvalue, prvalue), etc. We will also dive into the Standard Template Library (STL) and modern C++ features such as fmt, iterators, smart pointers, move semantics, ranges, optional, unexpected, etc.

By the end of this course, you will have a solid understanding of programming principles and practices, enabling you to learn other IT-related topics with much less effort and greater confidence.

Start