Skip to main content

Software

Git

ECE 398 uses Git, a distributed version control system to manage code and track changes. There are a couple tools listed below for its use. You can also check out this link:

learngitbranching.js.org/

For a tutorial on how branching works. It's a good introduction to git as a version control system.

Development

The following are some software stackups that have been used by other projects in the past.

  • Platformio - A popular IDE for embedded development that supports multiple platforms including Arduino.
  • VSCode - A lightweight but powerful source code editor with support for many programming languages and extensions.
  • MkDocs Material - Easy to manage documentation generator to make documentation websites.
  • GitHub - A web-based platform used for version control and collaboration.
  • GitHub Desktop - A git client that can be used for version control and collaboration.
  • OnShape - A cloud-based CAD platform for mechanical design.
  • KiCad - Open source PCB design software for making custom PCBs.
  • ClickUp - A project management tool.

Note Taking

These are some options for note-taking software:

  • Obsidian - Powerful local note-taking application using markdown support. Stores notes locally, in Markdown files.
  • Notion - Cloud based note-taking and organization tool. More powerful than Obsidian, but typically requires and internet connection. Supports database features as well.
  • Notes in a Folder - Sometimes nothing beats the simplest solution of a bunch of folders with text files in them.

Language Overview

Different languages and their common use-cases.

C/C++

C and C++ are the most common embedded systems and system-level programming languages. Use C/C++ if your project requires speed and hardware access.

Good For:

  • Real-time systems
  • Embedded systems with lots of external hardware interaction
  • Fast processing

Not Great For:

  • Rapid prototyping
  • Tasks where time doesn't matter

Sample:

C

#include <stdio.h>

int main()
{
printf("Hello, world!\n");
}

C++

#include <iostream>

int main()
{
std::cout << "Hello, world!" << std::endl;
}

Python

Python is an easy-to-use high-level programming language that runs on an interpreter. Python does not compile to machine code, so it requires extra overhead that C/C++ does not.

Great For:

  • Rapid prototyping
  • Data analysis
  • Machine learning
  • Scripts

Not Great For:

  • Performance-critical applications
  • Low-level hardware interaction

Sample

print("Hello, world!")