SE102 Foundations of Software Engineering II

Course Trivia


Networks of computers are ever present in modern society and are used to control devices (e.g., microwave ovens, space ships, mobile phones), support financial transactions (e.g., buying and selling stocks, banking), support infrastructure (e.g., air traffic control, nuclear power plant control), distribute media (e.g., news web sites, blogs), connect people (e.g., Facebook, Google+), simplify commerce (e.g., Amazon, Ebay), and provide entertainment (e.g., games, music, films). The computers that provide these capabilities run software, which specifies how the computer can perform the tasks that are required.

Software is a set of artifacts that is created in order to solve practical problems using computers. These artifacts include program source code written using a programming language (e.g., Java), specification documents written using natural language (e.g., English), design documents written using diagrams and natural language (e.g., UML), user documentation, installation instructions, and test suites written using testing tools.

Software engineering is about applying science (e.g., computer science), mathematics, and management to solve practical problems in a timely and cost effective manner taking into consideration qualities such as software reliability, software performance, and user satisfaction.

SE101-3 is a three course sequence that aims to introduce future software engineers to many of the fundamental concepts of the field. It mostly focuses on programming (using the Java programming language), which is a fundamental skill every software engineer must have. However, the course sequence gives students an early exposure to other important software engineering concepts (e.g., specification, design, testing, maintenance), which students will master later in the BSSE curriculum when they take more advanced software engineering courses.

Course Objectives

Intended Audience

SE102 is intended for freshmen undergraduate students in the Software Engineering major who have passed SE101.

Course Grading Scheme

Each student's final grade will be calculated by adding the scores for each quiz, lab, assignment, and the final exam. A corresponding letter grade will be assigned based on the students calculated score as follows:

Grading Rules


  1. Assignment 1
  2. Assignment 2
  3. Assignment 3


Students should prepare for each quiz by studying the corresponding reading assignment for that week. For example, if the lecture on Tuesday covers Chapter 15 (sections 15.1-15.4), the reading assignment for that week will be Chapter 15 (sections 15.1-15.4). Students should study Chapter 15 (sections 15.1-15.4) carefully to prepare for the quiz and lab on Friday of the same week.

Students who miss a quiz will receive a 0 for that quiz. All quizzes are administered during the first 30 minutes of the lab. Late students will not be given extra time to complete the quiz.

Final Examination

Students should prepare for the final examination by studying all of the chapters covered in the course.

Software Engineering Tools

The Computer Science compute server is called All of the tools listed below will be used for this course and are available on the tux compute cluster. However, you may want to install them on your personal computer so you can work from home. Otherwise students can use the Linux Lab in UC 152.

CS Unix Account Creation

If you do not have a Unix account set up on, please create an account before the first lab.

Click here to create a CS Unix Account

Course Schedule

Each week of the course covers either an entire chapter or part of a chapter. Students should attend the lecture and then read the corresponding chapter carefully before attending the lab later in the same week. The lab starts off with a brief quiz on the material of the reading list, then proceeds with exercises that students must complete in the lab under the supervision of the instructor and his teaching assistant. There are homework assignments that students should complete on their own. There is also a final examination at the and of the course.

Following is a detailed week-by-week schedule for the course. The bold text is meant to draw the attention of students as it involves something that they must do, for example, hand in an assignment, take a quiz, attend a lab, or take the final examination.

Academic Integrity

The CS Academic Integrity Policy is in effect for this course. Please read the policy carefully. Note, that if a student is caught cheating, the instructor will file a formal Academic Honesty Misconduct Report and assign an appropriate penalty for the misconduct. This report becomes a permanent entry of the student's academic record.

The easiest thing to do to avoid cheating is to not use source code solutions on the web and present them as your own work. All of the work you submit for grading must be original work and not modified work of other source code authors. Also, do not send your source code to classmates even if they promise not to use it. Finally, do not works in teams. All work for this course is based on individual performance.