Welcome to Comp Sci 350: Software Engineering. Software engineering is “the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” (IEEE 1990). In essence, software engineering represents a transition from writing small-scale programs (e.g., a programming exercise in a course) to the collaborative development of large-scale systems with well-defined, stable interfaces that are thoroughly tested and documented. The techniques that we study in this course will improve your ability to design complex software systems, program effectively, and introduce you to the management principles required to lead effective software teams.

Take a few minutes to review the syllabus; schedule; course overview, and first lesson, being sure to note the initial reading assignment.

This course website will be updated throughout the semester. You should check back frequently for updates and specifically review the learning activities that should be completed for each lesson.

Online Learning

Based on my prior experience teaching online for Johns Hopkins’s Engineering for Professionals program, this course generally follows a paced, asynchronous delivery format. Asynchronous interaction allows you to complete the work for each lesson whenever most convenient for you unless the instructions for a particular lesson dictate otherwise. Nevertheless, the work is paced, and you must complete assignments by their stated due dates. Established due dates ensure that you will complete the course by the end of the semester.1

In an online course, my role as an instructor shifts from leading classroom activities (e.g., lecturing and administering assessments) to facilitating the learning activities. I cannot learn for you, and for better or worse, an online course generally requires more discipline from students than a comparable face-to-face course. For example, in a face-to-face lecture I can spend 15 minutes on a topic and there’s a decent chance that you’ll remember something that was said; if you choose not to watch the comparable video that’s posted as a replacement for a lesson’s lecture, then that’s your decision, and you’ll almost certainly struggle with that material on future assessments.

You are ultimately responsible for your own learning!

Attendance

Except for mandatory synchronous sessions, attendance will be taken through the completion of a lesson activity such as a quiz.

Class Meetings

While an asynchronous delivery format has its advantages, sometimes the most efficient way to learn material is synchronously, particularly when it comes to addressing specific questions. Consequently, we will use Microsoft Teams for synchronous “office hours” during the scheduled class meeting time. The structure of these synchronous sessions may vary throughout the semester. Some may include a quick recap of the key points for the lesson; others may be question and answer sessions, and if there are no questions, then we’ll listen to the sound of silence. Occasionally, I may walk through how to start an assignment or demonstrate how to use various tools. Student feedback throughout the semester will significantly influence what content is covered in synchronous meetings.

Unless otherwise indicated in the instructions to complete the lesson, attending synchronous class meetings is optional, but attendance is strongly encouraged. I reserve the right to decline requests for extra instruction (EI) from students who have not attended these sessions.

If more than one student attends a synchronous session, I will record and post the session so that others can review it later, should that be deemed beneficial. Synchronous sessions that do not require attendance will be canceled if no one is present after 15 minutes or end when no one in attendance has any more questions.

Policies

The following policies apply for synchronous sessions:

  • Wear the Uniform of the Day (UOD)
  • Join from dorm room (or other adequately isolated environment)
  • Use headset with attached microphone
  • Be prepared to enable video upon request

These policies follow those set forth by the Department of Computer and Cyber Sciences. Remember that most – but not all – synchronous sessions are optional; if you cannot follow these policies, then contact the instructor for special circumstances (e.g., a broken headset or camera) or review the recording of the session at a later time.

Credit Hours

This course is worth 3 credit hours. A credit hour traditionally requires one hour of classroom instruction plus two hours of additional work for each lesson. Thus, if taught face-to-face, this course would have 40 contact hours (i.e., time spent in class) with an additional 80 hours of reading, homework, etc. throughout the semester.

This course has an average of 2.75–3 hours of learning activities for each lesson although the workload for some lessons may be a little higher or lower. This amount of time is commensurate with the prior definition of a 3-credit course.

Extra Instruction

For issues that are not conducive to discussion as a group, you may schedule an individual meeting with me. Please note, however, that with the exception of grades and personal issues, others typically benefit from hearing questions, and it maximizes the use of my time to address them with as wide an audience as possible. Should the need arise, I reserve the right to defer general questions until the next synchronous session.

Learning Activities

Because the nature of online courses differs significantly from those taught face-to-face, I’ve made a number of changes to the amount of information shown on the course website vs. verbally covered in class. If you peruse the lessons, you’ll see explicit learning activities that should be completed for each lesson. For example,

How to Complete this Lesson

Complete the following learning activities as part of this lesson:

  1. Watch Why Software Engineering Matters (3 minutes)
  2. Read the following in Software Engineering and (optionally) complete the reading guide:
    • Chapter 1: Introduction (60–75 minutes)
      • Professional software development
      • Software engineering ethics
      • Case studies (skim)
  3. Watch the Ariane 5 Flight 501 case study:
  4. Read the Software Engineering Code of Ethics and Professional Practice (15 minutes)
  5. Watch The Conscience of Computing Professionals: A Code of Ethics (16 minutes)
  6. Participate in the synchronous session during the class meeting time
  7. Start the processes and ethics homework (60 minutes)
    • Write the ethics essay

The learning activities include watching several videos, reading a chapter from the textbook and an article about ethics, and starting a homework assignment. These activities blend what would have been preparation for a face-to-face class meeting (e.g., reading), the content that would have been covered in class (e.g., videos), and hands-on practice (e.g., homework).

You are expected to complete all the learning activities for each lesson.

As noted in the comments about the number of credit hours, the learning activities are carefully selected to satisfy the expectations of a 3-credit course.2 Listing upcoming assignments is intended to help you budget your time more effectively: if you complete the activities when listed, then assignments should not require significant effort the night before (or day!) that they are due. As previously noted, you are responsible for your own learning! You may choose to delay working on an upcoming assignment until the weekend, but you shortchange yourself if you do not complete the activities.

You are encouraged to take advantage of the asynchronous format and work ahead when practical with your schedule. For example, you are free to complete all the lessons for the next week during the weekend. Nevertheless, you should always check back the day of the lesson in case there are any changes to the learning activities.

Contact Information

I expect to be available Monday–Friday during duty hours (approximately 0800–1600 MDT) each day. I will monitor email during this time. Expect responses to email within 24 hours though I strive to respond more quickly, particularly when assignments are due.

Email accounts ending in @usafa.edu remain the official system of record with email being forwarded to Office 365 (@afacademy.af.edu). Send email to @usafa.edu and CC @afacademy.af.edu regardless of from which address you receive a response (reply all should automatically include both addresses for any email you receive from me).

Although I will likely be accessible through Microsoft Teams, please use email for all communication. Unfortunately, Microsoft Teams does not have a good way to “triage” chat messages, which makes it easy to overlook a message if I cannot answer it immediately.

While I will make every effort to respond to communication as quickly as possible, please allow one business day to hear back from me. After that time, a follow-up message is appropriate.

If you are having trouble contacting me for any reason or have an urgent issue to discuss (Note: I do not consider an assignment that is due in the next hour to be “urgent” because you’ll have ample lead time to work on assignments), you may use my personal cell phone. Please use this contact mechanism as a last resort or for emergencies.

Microsoft Teams

I’ve created a Comp Sci 350 team in Microsoft Teams. Everyone should have access to it by the first day of class.

I expect the following when using Microsoft Teams:

  • Interactions should be professional, just like in a classroom
  • Use the General channel for questions about course material or the appropriate channel for assignment-specific questions (if one exists)
    • Do not post code or answers for assignments
    • Do answer questions by other cadets – I can find ways to reward good participation
    • Do post additional resources that you find useful
  • Use “Reply” to respond to a post, but “Start a new conversation” if the topic is new

  1. In contrast, a self-paced course can be completed on your own schedule – e.g., some students might complete the course within a few weeks whereas others might spend a year to complete it. 

  2. You may find some lessons that – at least currently – require significantly more or less time than 3 hours. The learning activities for these lessons will likely be revised to minimize such differences. In some cases, new material to replace what’s covered in a face-to-face class is currently under development.