Class Introduction

Welcome to:

COE 332 – Software Engineering & Design, Spring 2022
Department of Aerospace Engineering and Engineering Mechanics
The University of Texas at Austin

Instructors:

Time: Tues/Thur 11:00am - 12:30pm

Location: Virtual / Zoom (first two weeks of class), ASE 1.112 A (in person start date TBD)

Teaching Assistant: Geonyeong Lee, geon@utexas.edu

Important Links:

Catalog Description:

Covers methods and tools for planning, designing, implementing, validating and maintaining large software systems. May include project work to build a software system as a team, using appropriate software engineering tools and techniques.

Prerequisites:

Computational Engineering 322 with a grade of at least C-.

Knowledge, Skills, and Abilities Students Should Have Before Entering This Course:

This course assumes familiarity with the Python programming language and strong working knowledge of basic, high-level language programming concepts including data structures, conditionals, loops, and functions. We also assume a basic, working knowledge of the Linux command line. We will briefly review programming concepts in Linux and Python during the first week of class, the first homework assignment will be based on these topics, and we will make every effort to help students who are less familiar with these concepts. Ultimately, each student is expected to and responsible for mastering this material. This is not an introductory programming class and we will not have time to give a comprehensive treatment of all of these topics.

Knowledge, Skills, and Abilities Students Gain from this Course (Learning Outcomes):

The objective of this course is to introduce students to advanced computing concepts in software engineering, software systems design, cloud computing, distributed systems, and computational engineering. Through a series of assignments spanning the course of the semester, students will build a cloud-based, computational system to interact with a time series data set and provide a web-accessible interface to their system.

Relationship of Course to Program Outcomes:

This course contributes to the ABET Criterion 3 student outcomes that took effect with the Fall 2019 semester.  For more information, see Criteria for Accrediting Engineering Programs, 2020-2021 at https://www.abet.org/accreditation/accreditation-criteria/criteria-for-accrediting-engineering-programs-2020-2021/

STUDENT OUTCOME

  1. an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics

  1. an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors

  1. an ability to communicate effectively with a range of audiences

  1. an ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts

  1. an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives

  1. an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions

  1. an ability to acquire and apply new knowledge as needed, using appropriate learning strategies

ABET Program Criteria Achieved:

Program criteria are unique to each degree program and are to be compiled from the program criteria given for each degree program and listed in table format below. The faculty should check which of the program criteria are achieved in the course.

Criterion

Criterion

Criterion

  1. Aerodynamics

  1. Orbital Mechanics

  1. Preliminary/Conceptual Design

  1. Aerospace Materials

  1. Space Environment

  1. Other Design Content

  1. Structures

I. Attitude Determination and Control

  1. Professionalism

  1. Propulsion

  1. Telecommunications

  1. Computer Usage

  1. Flight Mechanics

  1. Space Structures

  1. Stability and Control

  1. Rocket Propulsion

Topics (subject to change):

  • Software engineering and design practices in Python (d=30) (outcomes=1,2,3,4,5,6,7; criteria=M,N,O,P)

  • Version control with Git (d=1)(outcomes=2,3,5; criteria=N,O,P)

  • Unit testing, integration testing, continuous integration (d=4) (outcomes=1,2,6; criteria=M,N,O,P)

  • Linux containers with Docker, container orchestration (d=4) (outcomes=1,2,7; criteria=M,N,O,P)

  • HTTP and RESTful web services (d=5) (outcomes=1,2,6, criteria=M,N,P)

  • Application programming interfaces (d=2) (outcomes=1,2,3; criteria=M,N,O,P)

  • Virtualization with Kubernetes (d=4) (outcomes=1,2,7; criteria=M,N,P)

  • Databases and Queues (d=4) (outcomes=1,2,6; criteria=M,N,P)

  • Asynchronous programming patterns in distributed systems (d=2) (outcomes=1,2,5,6,7; criteria=M,N,P)

  • Other advanced topics as time permits

Please note: In the course of learning and working through the above topics, students will be exposed to data sets from a variety of sources (e.g. https://data.nasa.gov/browse) representing other select Criterion (A-L) relevant to the ABET program accreditation. The exact data sets and types of data will depend on individual student interests.

Professionalism Topics:

Throughout the course, students will be taught to communicate professionally in the documentation of their software and in their software engineering & design projects. Effective communication in software projects is necessary to inform other engineers about the purpose or function of the project, and how to use it. Students will form teams to work together on the Final Projects (see description below) and will be required to address ethical and professional responsibilities in the course of working on their project.

Design Assignments (Final Project Description):

The Final Project will be a culmination of all materials covered in the class. Students will build a cloud-based, computational system to interact with a time series data set and provide a web-accessible interface to their system. Prior to working on the Final Project, students will form teams to work through a “design” phase where they must identify a primary data set to work on, describe API endpoints, diagram architecture components, and draft other major documentation components. In addition, students will be required to write in their own words what they think their ethical and professional responsibilities are as an engineer and how that relates to the Final Project. The project design will be pitched to the instructors and given feedback / subject to approval. The Final Project will be due at the end of the semester in the form of a written report (e.g. pdf) and a GitHub repository containing the software and all support files. The full Final Project description will be posted on the class webpage.

Computer:

The entire course will be computer based. The instructors will provide a remote server for students to work on. Students are expected to have access to a personal / lab computer with a web browser and a terminal (or SCP client).

Text:

No textbook will be used for this course.

Class Format:

The class will be delivered in a hybrid format, utilizing both online and in-person experiences. Following UT’s guidance, the first two weeks will be exclusively delivered via Zoom. During those two weeks we will continue to monitor for updated guidance from UT with the plan to eventually transition to in person if safe and appropriate. If / when we transition to in person lectures, we will continue to also offer the lectures via Zoom for those who do not wish to attend in person. This is subject to change.

Most class meetings will be comprised of lectures/demonstrations and hands-on labs. Students are expected to attend every lecture and actively participate in the hands-on labs during the class. The hands-on portions will often solve parts of homework assignments. Lecture materials with worked examples will be posted to the class website right before the class meeting. Additionally, there will be a class Slack channel for discussing ideas about the course with your fellow students.

Class Schedule (approximate, subject to change):

  • Week 1: Onboarding, Linux, Python Review

  • Week 2: Version Control, Working with JSON, CSV, XML

  • Week 3: Unit Testing, Logging,

  • Week 4: Intro to Containers, YAML

  • Week 5: Advanced Containers, Docker Compose

  • Week 6: HTTP, REST, Intro to Flask

  • Week 7: Advanced Flask, Containerized Flask

  • Week 8: Databases, Persistence in REST, Midterm Project Due

  • Week of March 14 – Spring Break

  • Week 9: Virtualization: Container Orchestration and Kubernetes

  • Week 10: Virtualization: Container Orchestration and Kubernetes, cont.

  • Week 11: Asynchronous Programming

  • Week 12: Queues

  • Week 13: Continuous Integration, Integration Testing

  • Week 14: Special Topics

  • Week 15: Special Topics - Final Week of Class

  • Final Exam Day / Time: Thursday, May 12, 9:00 am-12:00 noon, Final Project Due

Grading:

Grades for the course will be based on the following:

  • 30% Homework – Approximately 8-10 coding / software design assignments to be submitted via GitHub.

  • 30% Midterm – A midterm design project will include concepts from the first half of the semester and build on the first 4-5 homework assignments. A written component will also be required.

  • 40% Final Project - Students will form groups to work on a final class project consisting of a distributed, web-accessible, cloud system to interact with a time series data set. The project will draw from and build upon work done throughout the semester in homework assignments. The project will need to be pitched to the instructors for approval, and a written component will also be required.

Attendance:

Regular attendance is expected but absences will not count against the student’s grades. We expect students to give us a week notice in advance of their absence if known ahead of time.

Office Hours:

Office hours will be for 1 hour immediately following the class and/or by appointment. We plan to use Slack for general communications and to help with the materials. https://tacc-learn.slack.com/

Important Dates:

Please refer to UT’s academic calendar for important dates: https://registrar.utexas.edu/calendars/21-22

Special Notes:

The University of Texas at Austin provides upon request appropriate academic adjustments for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471-6259, 471-4641 TDD or the Cockrell School of Engineering Director of Students with Disabilities at 471-4321.

Evaluation:

Note that the Measurement and Evaluation Center forms for the Cockrell School of Engineering will be used during the last week of class to evaluate the course and the instructor. They will be conducted in an electronic format for Spring 2021. You may also want to note any other methods of evaluation you plan to employ.

Classroom Safety and COVID-19:

To help preserve our in person learning environment, the university recommends the following.

  • Adhere to university mask guidance.

  • Vaccinations are widely available, free and not billed to health insurance. The vaccine will help protect against the transmission of the virus to others and reduce serious symptoms in those who are vaccinated.

  • Proactive Community Testing remains an important part of the university’s efforts to protect our community. Tests are fast and free.

  • Visit https://protect.utexas.edu/ for more information.

Class Recordings:

Class recordings are reserved only for students in this class for educational purposes and are protected under FERPA. The recordings should not be shared outside the class in any form. Violation of this restriction by a student could lead to Student Misconduct proceedings. Guidance on public access to class recordings can be found here.

Additional Help

Our main goal for this class is your success. Please contact us if you need help:

Important links: