Software Engineering Projects—IoT (CIS-2730) Home Page
This is the home page for Peter Chapin's Software Engineering Projects (IoT) course notes for
the Spring 2024 semester. Here you will find electronic versions of class handouts, homework
assignments, lecture slides, and links to other references of interest. If you are a student
taking Software Engineering Projects, you should bookmark this page.
- The course syllabus gives an overview of the course and
its content, lists course resources, and describes the grading policy and related issues.
- The homework submission area and grade book are on Canvas but all other course resources
are here.
- My home page contains other resources of potential interest.
Topic Summary
The lectures for this course are on Zoom. The labs for this course are face-to-face.
- 2024-01-23.
Course introduction and discussion about Lab #1.
- 2024-01-25.
Tour of the BeaglePlay file manipulation commands and overview of C.
- 2024-01-30.
Tour of the /proc and /sys file systems on the BeaglePlay. An
introduction to file manipulation in C.
- 2024-02-01.
Introduced file handling in C using an example on the BeaglePlay that prints the kernel
version by reading /proc/version.
- 2024-02-06.
Discussed Lab #2 on generating a unique system ID.
- 2024-02-08.
Introduced Lab #3. Described how to install PostgreSQL onto the
BeaglePlay. Also demonstrated some of C's standard library time handling functions.
- 2024-02-13.
More discussion about Lab #3. Described the program that inserts "fake" temperature data into
a local PostgreSQL database.
- 2024-02-15.
Introduced the LibPQ library for interacting with PostgreSQL servers directly from a C
program. Introduced Lab #4.
- 2024-02-20.
More discussion about Lab #4.
- 2024-02-22.
Introduced the Thermo-30 click-board from Mikroe.
- 2024-02-27. No class (Vacation).
- 2024-02-29. No class (Vacation).
- 2024-03-05.
Discussed Git and Git etiquette.
- 2024-03-07.
Discussed more details about the Thermo-30 click-board and how it interacts with Linux and
application software.
- 2024-03-12.
Discussed how to program I2C devices dirctly, using the bus driver via Unix API
functions.
- 2023-03-14.
Introduced Lab #5. Discussed IoT applications in general and the
overall project we are building.
- 2024-03-19.
Introduced Lab #6.
- 2024-03-21.
Introduced cron and the format of crontab files.
- 2024-03-26.
Introduced Lab #7.
- 2024-03-28.
Introduced Python and the Anaconda distribution.
- 2024-04-02.
Discussed Lab #8 and some basics of Python.
- 2024-04-04.
Demonstrated more Python features and the Python debugger.
- 2024-04-09. No class (Vacation).
- 2024-04-11. No class (Vacation).
- 2024-04-16.
Discussed curve fitting as a kind of machine learning.
- 2024-04-18.
Discussed the ML model we will use to predict temperature information based on data gathered
by the BeaglePlays.
- 2024-04-23.
Introduced Lab #9 on building a model for predicting temperatures
based on the Springtail data.
- 2024-04-25.
More discussion about Lab #9. Demonstrated gradient descent.
- 2024-04-30.
Introduced Contiki-NG.
- 2024-05-02. No class.
Slides
- The C programming language
- The Project
- ML Model Training
Labs
The lab set is summarized in the lab summary document, along with links
to specific lab handouts and supporting code samples.
Samples
- I improved the blinkLED.c sample program to include
error handling when opening the files and better variable names.
- Here is a picture of the Thermo-30 click board installed
on my BeaglePlay.
- This Jupyter notebook demonstrates machine learning as a
curve fitting problem.
Resources/Articles
Linux
- There are many Linux command cheat sheets online. This one seems good,
although it is a bit too long.
- I wrote an Overview of
Unix that includes a section on basic commands (Chapter 2).
- There are several books in the O'Reilly eBook Collection that describe how to use the
command line. The
Linux Command Line by William E. Shotts looks like a good starting point.
The C Programming Language
- I have a tutorial on C that you might find useful. There are
many other tutorials available online. Find one that works well for you.
BeaglePlay
Python
- Anaconda is a Python distribution with many data
science packages.
Last Revised: 2024-05-01
© Copyright 2024 by Peter Chapin <peter.chapin@vermontstate.edu>