Course Information

  • Lecture Times: 9:00am - 9:50am MWF
  • Lecture Location: ITTC 322

  • Course Website:

  • Textbook: We will not have a textbook for this course. Instead, our readings will be taken from a variety of online or library reserve resources. Note some of these resources may require you to be on campus or logged in to the library’s website to view.

Instructor Information

  • Instructor: Dr. Andrew Berns
  • E-mail:
  • Office: 318 ITTC
  • Office Hours:
    • Monday: 10:00am - 11:00am
    • Wednesday: 12:00noon - 1:00pm, 4:00pm - 5:00pm
    • Thursday: 2:00pm - 4:00pm
    • Friday: 8:00am - 9:00am

Course Description

What can we do to quickly and repeatedly create high-quality software at a low cost?

Answers to this question can come from many disciplines, from computer science to organizational psychology. Some answers involve skills and knowledge you already have, such as programming, computer organization, and discrete mathematics. There are, however, many more answers which involve content you likely have not seen, content organized around terms like “waterfall model”, “agile development”, “verification and validation”, and more. In this course, we will explore these “extra answers” to the question above, learning about modern software engineering activities and tying them in with the computer science knowledge you already have. We will learn and implement many practices, both new and old, and leave the course prepared to participate any activity which answers the question above, including new processes which are created as the field develops.

The official catalog description of the course is given below:

Study of software life cycle models and their phases–planning, requirements, specifications, design, implementation, testing, and maintenance. Emphasis on tools, documentation, and applications. Prerequisite(s): CS 1520; CS 1800.

Learning Outcomes

After successfully completing this course, a student will be able to:

  • explain how the practices of several proven software life cycle models help manage the complexity that arises with large software projects.
  • apply a proven software life cycle model to systematically create and maintain a software product.

Course Outline

Our course will consist of the five “modules” given below. While these modules provide the general theme for our discussions, there will be times when we also include additional information during our discussions which might not be reflected by the course structure given below.

Introduction to Software Engineering
Architectural Design
Software Design
Verification and Validation


The grade you earn in this course will be calculated from the number of activities that you complete satisfactorily. These activities may include quizzes, a final exam, individual homework activities, and a development project. These activities are meant not only to assess your learning for assigning grades, but also to help you learn the material and identify and correct any misunderstandings.

During the semester, we will have four in-class long quizzes (or short exams, if you wish) and a final exam. These quizzes will measure how well you have mastered the concepts contained in that module. I will provide you with a quiz review sheet prior to each quiz which will clearly enumerate the content which you must know for each quiz.

At the conclusion of the course you will also take a final cumulative exam consisting of questions similar to what you have seen during the earlier quizzes. As with the quizzes, you will be provided a review sheet clearly enumerating the expectations. The final exam for this course will be in the regular course meeting room (ITTC 322) at 10:00am – 11:50am on Wednesday, May 8.

Second, there will be five individual homework activities that you may complete during the semester. These activities may include things such as completing additional readings and writing a critical analysis, using and reviewing software engineering tools, or creating and giving presentations to the class on relevant software engineering topics. As suggested by the category, these assignments must be completed individually unless explicitly stated otherwise in the assignment description.

Finally, there will be five assignments related to a development project in this course. This project will involve applying the software engineering processes you have learned on a larger development project. While you may work in a group for this project, the scoring will be individual.


Your final grade in the course will be determined by the number of activities you have completed satisfactorily. In particular:

  • For a D, you must complete 3 activities
  • For a C, you must complete 6 activities and score at least 50% on the final exam
  • For a B, you must complete 9 activities and score at least 70% on the final exam
  • For an A, you must complete 12 activities and score at least 85% on the final exam

If you complete all of the requirements for one letter grade and only part of the requirements for the next higher letter grade, a plus or minus might be added to your final letter grade. For instance, if you complete 8 activities and score at least 70% on the final exam, you would receive a B-.

For all activities submitted by the suggested due date other than the final exam, you will have the opportunity to revise or retake the (potentially modified) activity in order to earn full credit.

Please feel free to talk with me at any time if you have questions on this policy.

Academic Integrity

I take all instances of academic dishonesty very seriously. Academic dishonesty hurts other students, damages your reputation, and hurts the reputation of the university. As students of the University of Northern Iowa, you are expected to adhere to the Student Academic Ethics Policy ( Failure to do so will result in disciplinary action as documented in the policy. Academic dishonesty of any form will not be tolerated, and the minimum punishment will consist of a failing grade on the assignment and notification of the offense to the Office of the Executive Vice President and Provost.

While academic dishonesty is not tolerated, discussion with other students is encouraged. There are two simple “rules of thumb” for determining what is acceptable in this course. First, consider what record is made of the discussion of the work: if no record exists of the discussion, then it is very likely acceptable. For instance, talking with a classmate about the approach you used to solve a problem is acceptable, while writing down verbatim a classmate’s algorithm is not. The second rule of thumb is that you should be able to defend any submitted work without advance notice. If a classmate suggests a modification to your assignment that you then independently think about and implement, this is acceptable. If a classmate suggests a change that you make, but do not understand why, this is unacceptable. I reserve the right to ask for explanation on any submitted work.

Please come talk with me at any time if you have any questions concerning this policy. Ignorance of what constitutes academic dishonesty will not be a legitimate defense.


This course will challenge you. Doing well requires you to dedicate a significant amount of time completing assignments, reviewing materials, and thinking critically about lectures and readings. A commonly-accepted guideline in higher education is that you should spend 2-3 hours outside of class for every hour inside of class. If you are unsure how to spend your time, please talk with me and I can suggest activities. If you are putting in the suggested amount of time and you are still not getting the outcomes you desire, please talk with me and we can tailor your studying approach to maximize your learning. If you require additional help, don’t hesitate to ask! The responsibility for learning the material is yours and yours alone – I am only an additional resource available to help you with your learning!

It is important that we are all respectful of each other’s viewpoints, knowledge levels, and abilities. We will have fun in this class, and we will always foster a safe and positive learning environment. You should feel free to ask any question or share any view that you wish. Your behavior should demonstrate to others that they are free to share any viewpoint they wish, as well.

As part of being respectful to other students, keep in mind that disruptive behavior is distracting and disrespectful to others. Please make sure your actions do not impede the learning of other students.


Please address any special needs or special accommodations with me at the beginning of the semester or as soon as you become aware of your needs. Those seeking accommodations based on disabilities should obtain a Student Academic Accommodation Request (SAAR) form from Student Disability Services (SDS) (phone 319-273-2677, for deaf or hard of hearing, use Relay 711). SDS is located on the top floor of the Student Health Center, Room 103.

The Learning Center

I encourage you to use the Learning Center @ Rod Library for free assistance with writing, math, science, and college reading and learning strategies. Meet with trained and certified tutors during walk-in hours or by appointment. For more information, visit them in person on the main floor of Rod Library, on the web at or by calling 319-273-6023.

Making a Suggestion or Complaint

If you have a suggestion or complaint concerning the course, you are encouraged to first contact me directly. My main goal is to provide you with the best learning experience possible and I sincerely welcome feedback which can help me improve. You will have several chances during the semester to provide unofficial and anonymous feedback.

If I fail to resolve your issue or you are not comfortable approaching me directly, you are encouraged to contact Professor and Department Chair Eugene Wallingford (305 ITTC,