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):
- Container Security , Liz Rice , O'Reilly Media , 2020
- DoD Enterprise DevSecOpts Reference Design , August 2019
- GitOps , Florian Beetz, Anja Kammer and Dr. Simon Harrer , INNOQ
- How Google Tests Software , James A. Whittaker, Jason Arbon, and Jeff Carollo , Addison-Wesley Professional , 2012
- The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities , 1st Edition , Mark Dowd, John McDonald, Justin Schuh , Addison-Wesley Professional , 2006
- The Debian System: Concepts and Techniques , 1st Edition , Martin F. Krafft , No Starch Press , 2005
- 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:
- create software architectures, and study their security properties and communicate their contents through a software bill of materials. [None]
- identify strategies to engage in a collaborative and diverse environment, as well as set policies for inclusive membership and organic community growth. [None]
- create production-quality code, as well as an ability to review, evaluate and manage expectations regarding code quality. [None]
- 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