ECE 49595 - Open Source Software Senior Design Projects

Note:

This is a software-related senior design option for CmpE students only at this time. Teams of 3 must propose a project for approval before registering for the course.

Course Details

Lecture Hours: 2 Lab Hours: 2 Credits: 4

Counts as:

  • Senior Design

Experimental Course Offered:

Spring 2021, Spring 2022

Requisites:

ECE 36800; all core courses for both BSEE or BSCmpE degrees.

Requisites by Topic:

Data structures, programming in C, C++ or Java

Catalog Description:

Software Projects for Senior Design is a structured approach to development and distribution of software products with the goal of providing students a complete survey of current software development practices.

Required Text(s):

None.

Recommended Text(s):

  1. Container Security , Liz Rice , O'Reilly Media , 2020
  2. DoD Enterprise DevSecOpts Reference Design , August 2019
  3. GitOps , Florian Beetz, Anja Kammer and Dr. Simon Harrer , INNOQ
  4. How Google Tests Software , James A. Whittaker, Jason Arbon, and Jeff Carollo , Addison-Wesley Professional , 2012
  5. The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities , 1st Edition , Mark Dowd, John McDonald, Justin Schuh , Addison-Wesley Professional , 2006
  6. The Debian System: Concepts and Techniques , 1st Edition , Martin F. Krafft , No Starch Press , 2005
  7. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations , IT Revolution Press , 2016

Learning Outcomes:

A student who successfully fulfills the course requirements will have demonstrated an ability to:
  1. create software architectures, and study their security properties and communicate their contents through a software bill of materials. [None]
  2. identify strategies to engage in a collaborative and diverse environment, as well as set policies for inclusive membership and organic community growth. [None]
  3. create production-quality code, as well as an ability to review, evaluate and manage expectations regarding code quality. [None]
  4. thoroughly test software applications, as well as set up security tooling to identify and fix vulnerabilities in software. [None]

Lecture Outline:

Week(s) Lecture Topics
1 Course introduction: the power of software, and the many ways you can make software to change lives
2 Version Control: Code Review and collaboration tools
3 Build harnesses: continuous integration and delivery
4 Quality Assessment: static and dynamic analysis of software
5 Security analysis: fuzzing and other techniques
6 Issue tracking and enhancements: how to deal with user's feedback
7 Security incident handling: bug reporting, bug bounties, vulnerability management, disclosure and advisories
8-9 Deployment considerations: packaging, publishing, versioning, DevOps, DevSecOps and GitOps
10 Documentation: API docs, CLI docs, documentation platforms for your community
11 Licensing and dependency analysis: Software bills of materials, claims and supply chain security
12 No technology exists in vacuum: societal implications of your software product
13 Software governance: codes of conduct, consensus building, and community enhancements
14 Guest speaker(s) and their story in open source and industry
15-16 Presentations and demo day

Engineering Design Content:

  • Establishment of Objectives and Criteria
  • Analysis
  • Construction
  • Testing
  • Evaluation

Engineering Design Consideration(s):

  • Economic
  • Environmental
  • Health/Safety
  • Social
  • Global
  • Societal

Assessment Method:

Reports Project Practicals Presentations