Skip to content

BenniWi/learn2code

Repository files navigation

learn2code

This repository contains slides, exercise examples and more for my lecture "Software Development".

All documents are located in the folder docs. The documents are completely written in markdown and are optimized for marp.

All documents are automatically exported to pdf and can be found in the pre-release with the latest tag.

Content of the Lecture

This lecture about "Software Development" is split in two parts. The main content of lecture is the introduction of the programming languages C and C++ as well as the introduction of the most basic software development tools.

Part I

In the first part of the lecture, the programming language C is introduced. On the one hand, the lecture deals with the necessary basics like datatypes, structures, arrays, pointers, branching, looping, and many more. On the other hand, basic tools of software engineering are introduced. Among others, these tools are: Linux Terminal, GCC, Clang, Git, CMake, google-test, VS Code, clang-format, and some more.

The slides of the first part of the lecture can be found in slides_learn2code_1.md. Respectively, the content of the first part is given in the Table of Contents.

For each part of the lecture, the corresponding code can be found. Further, there are some homeworks. The homeworks for part I are named Homework_1-*.md and can be found in de folder docs. The solutions to the homeworks are again to be found in the code folder.

Part II

In the second part of the lecture, the programming language C++ is introduced. The lecture deals mainly with the basics of C++ like namespaces, references, inheritance, polymorphism and more. Further, basic software engineering tools like doxygen and clang-tidy and the very basics of OpenCV are introduced. At the end a comprehensive exercise using CvPlot and Rapidcsv is given.

The slides of the second part of the lecture can be found in slides_learn2code_2.md. Respectively, the content of the first part is given in the Table of Contents.

For each part of the lecture, the corresponding code can be found. Further, there are some homeworks. The homeworks for part II are named Homework_2-*.md and can be found in de folder docs. The solutions to the homeworks are again to be found in the code folder.

Prepared Environments

Open in GitHub Codespaces

Contribute with Gitpod

How to Create the Slides

Most simple solution to work with marp ist the Marp for VS Code extension. Using this extension you most probably won't need anything else. If you want to run the PDF export on the command line you will need the following install steps.

Install Latest nodejs

https://tecadmin.net/install-latest-nodejs-npm-on-ubuntu/

sudo apt install -y curl 
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - 

Install Marp

npm install -g @marp-team/marp-cli

Install google-chrome

wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt-get install ./google-chrome-stable_current_amd64.deb
rm ./google-chrome-stable_current_amd64.deb

Possible Marp Call

marp -c docs/marp_config.yaml docs/slides_learn2code_1.md

How to Build the Code

Most of the code samples are supporting CMake. All CMake capable samples are collected in the top-level CMakeLists.txt. Configure this top level project and you are good to go.

For all non CMake samples you should use the compiler of your choice (mostly gcc or clang and build it manually.