ECE 39595 - Software Engineering Tools

Note:

This course is a revamped version of ECE 36400 that has ran as ECE 49595, and is now running as ECE 39595. It will count in the place of ECE 36400 as a core course for catalog terms prior to Fall 2019.

Course Details

Lab Hours: 3 Credits: 1

Counts as:

  • EE Elective
  • CMPE Selective

Experimental Course Offered:

Fall 2020, Spring 2021, Fall 2021, Spring 2022

Requisites:

ECE 26400

Requisites by Topic:

Have completed at least two programming-intensive courses in Advanced C or another language.

Catalog Description:

This course will acquaint students with the toolkit of the modern software engineer. Students will learn the tools surrounding the software application itself, e.g. tools for software process, software construction, and software deployment. Examples include: integrated development editors (IDEs), version control systems, project management, bug tracking, scripting languages, testing aids, deployment technologies.

Required Text(s):

None.

Recommended Text(s):

  1. No Textbook-Class notes/videos will be provided

Learning Outcomes:

A student who successfully fulfills the course requirements will have demonstrated:
  1. an ability to use orchestration languages to manipulate diverse software systems. [1,2,6]
  2. an understanding of testing tools to assess software reliability and correctness. [1,2,6]
  3. an ability to use software management tools. [3,5]
  4. an awareness of software deployment technologies and tradeoffs. [2]

Lab Outline:

Lab Activity
1 The role of tools in software engineering Integrated Development Editors (IDEs)
2 Version control: Git, GitHub, models of distributed software development
3 Project management tools: Issue trackers, task trackers (e.g. Jira), and linking code changes to project management tasks
4 The UNIX programming environment: files, I/O redirection, permissions, environment variables
5-6 Shell scripting: Bash, Python, JavaScript/Note.js (not an exhaustive study of the languages, but rather exposure of similarities and differences between them)
8-10 Software testing (test frameworks, CI/CD, fuzzing)
11-14 Software deployment and monitoring (IaaS, PaaS, FaaS) - includes Docker and two cloud platforms (some combination of GCP, AWS, Azure)

Engineering Design Content:

  • Analysis

Engineering Design Consideration(s):

  • Economic
  • Societal

Assessment Method:

Each outcome is associated with multiple tasks in laboratory exercises as well as in the exam.