Introduction to Software Engineering
(Aerospace 440)

273 Willard Building
Mon., Wed., and Fri.
1:25 - 2:15 PM


Dr. Lyle N. Long
Professor of Aerospace Engineering, Computational Science, and Mathematics
Certified Master Software Engineer (IEEE Computer Society)

The Pennsylvania State University

Course Description:

This course is an introduction to software engineering. Software engineering includes all aspects of professional software production, and is especially important for safety-critical and mission-critical software. It is also crucial for very large complicated software projects. It includes documentation, management, processes, requirements, design models, computer programs, validation, verification, cost estimation, management, and other aspects of the development process. Aerospace systems, including aircraft, spacecraft, onboard avionics, ground-based systems, flight simulators, and air transportation systems, rely heavily on software. Software is a major cost of all aerospace systems. For example, the Boeing 777 has more than 1000 onboard processors and more than 4 million lines of software, which is primarily written in Ada. The F/A-22 fighter has more than 2 million lines of software onboard, and much of this is Ada also. The AirBus 380 has 500 kilometers (311 miles) of wire. Aerospace systems also demand a level of reliability far beyond most other systems, which means the software must be designed using rigorous mission-critical and safety-critical procedures, which makes the software quite unique compared to most other software. Software and computing accountd for about 70% of the cost of the F-35 The FAA and DOD are both involved in certifying aircraft software, for example through the DO-178C and DOD-2168 standards.

Aerospace job openings are mainly in the area of software, computing, and systems; as shown in this slide. This course will help you enormously.

The students will learn the fundamental components of software engineering, and how complex software systems are developed so as to minimize errors and maximize the usefulness of the software. They will also learn the terminology, accepted practices, and procedures used in software engineering. You will also have a basic understanding of systems engineering, since software engineering is really systems engineering applied to software development.

There will also be a software engineering project in the course, and the students will work in teams on this. We are still working out the details of what the project will be. Also, students will need to purchase some equipment for the project (e.g. Beaglebone boards, books, sensors, ...), but the cost will be minimal.

Objectives: Students who successfully complete this course will be able to:

  1. Explain the importance of safety-, mission-, business-, and security-critical systems;
  2. Demonstrate knowledge of the importance of good software engineering practices for critical systems;
  3. Describe and explain the terminology, accepted practices, and procedures used in software engineering;
  4. Explain the differences among software engineering, computer science and systems engineering;
  5. Decide which computer languages are well suited to modern critical systems (and explain why);
  6. Explain a variety of life-cycle models;
  7. Read and demonstrate an understanding of the software engineering literature; and
  8. Demonstrate a basic understanding of the existing standards (e.g. FAA and IEEE) applicable to software systems

Brief Description: Software engineering for safety- and mission-critical systems, including requirements, management, processes, designs, programming, validation/verification, and other aspects of software development. 3 Credits. Prerequisite CmpSc 201C (and/or AERSP 424)

Guest Speakers ( ? Lectures ):

  • TBD

Detailed course notes:

Must read:

You will all need to read these thoroughly. All the material in these documents, course notes, and my lectures WILL be on the exams.

Other good books: read.html

Optional Textbook: "Software Engineering," 8th Edition, by Ian Sommerville

Course Outline:

  1. Introduction
  2. Mission- and Safety-Critical Systems
  3. Requirements Engineering
  4. Software Design (Object oriented, real-time, ...)
  5. Computer Languages (Ada, C++, and Java)
  6. Software Development, ReUse, and Evolution
  7. Verification, Validation, and Testing
  8. Project Management
  9. Software Cost Estimation
  10. Software Standards
  11. Emerging Technologies

The slides are on the web, but that does not mean you do not need to come to class. You need to hear what I have to say about the slides. Also, you will need to read the book and other materials, simply coming to class will not be enough.

And you need to take notes! Get a notebook and bring it to class every day. There is no way you can remember what I say from one class to the other, and especially to the exam time. If you do not have pen and paper in front of you during class, I will assume you are not taking the course seriously. (you could also print out the slides before class and mark them up as I talk)

Grading (tentative):

    The students will be evaluated using a combination of homework assignments, team projects, and exams. There will be no final exam. The weight given to each will be roughly:

    • 5% Class Participation
    • 35% team project (e.g. group presentations, reports, final test, ...)
      • 5%, "what is" group presentation
      • 5%, group presentation
      • 5%, Report
      • 10%, peer grades
          CEO grades CFO and CIO, CFO and CIO grade group leaders, group leaders grade group members
      • 10% , Final Test and Competition
    • 60% exams (three, 20% each)
    • 3% Extra Credit for
      • winning project competition (equivalent to 20% increase on an exam)
      • CEO, CFO, and CIO if jobs well done
      • Members of software team, if they contribute

      You can compute your Final Grades using this table:

      • A: 94-103
      • A-: 90-93
      • B+: 87-89
      • B: 83-86
      • B-: 80-82
      • C+: 75-79
      • C: 60-74
      • D: 40-59
      • F: <40

      Academic Integrity: Faculty Senate Rule 49-20 states, in part, "Academic integrity is the pursuit of scholarly activity free from fraud and deception and is an educational objective of this institution." Faculty are required to clarify the application of this rule to each course:

        I encourage you to study together and to discuss ideas for your projects, but the work that you hand in must be your own. Don't cheat: the specified penalties (see Policies and Rules for Students) are not worth it. At a minimum, assignments or exams that show evidence of cheating will be given zero credit. At the other extreme, you may be given an F in the course, or be reported for disciplinary action.

      Note the important line in the Penn State song:

        "May no act of ours bring shame To one heart that loves thy name,"

    The instructor will use a standard technology-based classroom. There may also be team-based assignments, and team presentations. The course will be offered every year.

    Students auditing the course for credit will be required to take the exams, and get a C or better. Also, I don't allow people to simply sit in on the course.

  • You will need to read and study all webpage notes also check the homework webpage regularly.

  • We gratefully acknowledge the Leonhard Center for funding to help develop this course.

    Please, please, please:

    • Be on time for class
    • Turn off your cell phones (if your phone rings, you have to buy cookies for entire class)
    • Don't talk during lecture
    • And take notes!

  • Notes:

  • Prerequisites:
      You must have taken a course in computer programming (e.g. CS 201), but it would be very valuable to have a more advanced course as well (e.g. AERSP 424 ).

    Penn State welcomes students with disabilities into the University's educational programs. Every Penn State campus has an office for students with disabilities. The Office for Disability Services (ODS) Web site provides contact information for every Penn State campus: For further information, please visit the Office for Disability Services Web site:

    In order to receive consideration for reasonable accommodations, you must contact the appropriate disability services office at the campus where you are officially enrolled, participate in an intake interview, and provide documentation: If the documentation supports your request for reasonable accommodations, your campus’s disability services office will provide you with an accommodation letter. Please share this letter with your instructors and discuss the accommodations with them as early in your courses as possible. You must follow this process for every semester that you request accommodations.

    Last modified: Wednesday, 10-Jan-2018 11:09:18 EST