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:
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!")