SE101 Foundations of Software Engineering I

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

SE101 is intended for freshmen undergraduate students in the Software Engineering major. No prior programming experience is assumed.

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


Attendance at lectures is required. Students who are present at the lectures will receive 0.5% of their final grade for a maximum total of 5% for attending all of the lectures. Students will receive 0.5% for each cancelled class. Roll call will take place at the beginning of the lecture. Late students (who miss the roll call) or students who do not show up to class will receive a 0 grade for that lecture.


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


Students should prepare for each quiz by studying the corresponding reading assignment for that week. For example, if the lecture on Tuesday covers Chapter 3, the reading assignment for that week will be Chapter 3. Students should study Chapter 3 carefully to prepare for the quiz and lab on Thursday 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

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 five 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 Honesty

The university's Academic Dishonesty policy is in effect for this course. Please consult the Academic Dishonesty Policy for details.

If a student is caught cheating, the instructor will file a formal Academic Honesty Misconduct Report and assign a grade of 0 to the submitted work. This report becomes a permanent entry of the student's academic record. If a student is caught cheating a second time, the instructor will file a second Academic Honesty Misconduct Report and give the student a grade of F for the course.

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.