Course Syllabus for "Software Development Practice I"#

Computer Engineering Program, KMUTNB, Academic Year 2024


Course Overview#

  • Develop skills to create small to medium-sized software projects
  • Conduct systematic analysis of software problems
  • Solve programming challenges through requirement definition and specification
  • Enhance self-learning capabilities for problem solving
  • Understand and apply the software development process
  • Integrate various software components effectively
  • Utilize modern software development tools
  • Present and deploy software projects professionally

Key Topics#

This course will cover the following topics:

  • Exploring various computing environments
  • Linux OS & distributions; Virtual Machines, WSL2 Linux
  • Containerization; Docker engine
  • Embedded Computers; Single-Board Computers (SBCs)
  • Basic Linux Commands and Bash Scripting
  • Version Control with Git; Online Project Documentation; GitHub Pages
  • VS Code IDE and Extension Packs
  • Remote Access with SSH; Remote Desktop with VNC
  • Remote Software Development Process
  • C/C++ Programming and Development Toolchains; C/C++ Build Tools; Cross Compilation
  • Embedded Software Development; Arduino Hardware & Software
  • Basic Web Programming, REST APIs, and JSON-based Data Formats
  • MQTT Protocol & WebSocket Programming
  • Open Source Smart Home Platforms (e.g., Tasmota, ESPHome)
  • Flow-based Programming using Node-RED
  • Integration of WiFi / ZigBee-based Devices; Home Assistant (HA) + Companion; Grafana and InfluxDB
  • Team-based Mini-projects (with a focus on smart home solutions)

Expected Learning Outcomes#

Here are key expected learning outcomes based on the provided topics:

  • Proficiency in Linux and Containerization:
    • Gain practical skills in navigating and managing Linux environments, utilizing Virtual Machines, WSL2, and Docker for containerization, and working with embedded and single-board computers.
  • Mastery of Programming and Development Tools:
    • Develop competence in C/C++ programming, cross-compilation, and embedded software development using tools like VS Code IDE, Arduino, and other build tools. Understand the principles of remote software development.
  • Expertise in Web and IoT Integration:
    • Learn to build and deploy web applications using REST APIs and JSON, and integrate IoT devices using MQTT, WebSockets, and open-source smart home platforms like Tasmota and ESPHome.
  • Experience in Collaborative Smart Home Projects:
    • Work effectively in teams to design and implement smart home solutions, utilizing flow-based programming with Node-RED and integrating technologies like ZigBee, Home Assistant, Grafana, and InfluxDB.

Lecture Notes / Handouts#

The following handouts for this course are designed to provide the knowledge and skills necessary for successfully completing the mini-project.

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2024-07-05 | Last Updated: 2024-08-05