SE103 Foundations of Software Engineering III

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

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

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. The reading assignment will be the entire chapter unless specified otherwise. For example, the quiz on week 4 will be on the entire Chapter 16. This is different from SE102 because quizzes for SE103 are every other week, which gives enough time to cover an entire chapter.

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.

Team Labs

Each team will consist of 4 students. Teams can be self-formed, but the instructor may modify the composition of the teams to accommodate all of the students. Every member of the team is expected to work hard, if there are team members who do not contribute adequately, the instructor will adjust that student's grade accordingly. For teams that do not have under-performing members, every team member will receive the same common grade.

It is important for each team to play to the strengths of each of its members. Some members will have a knack for GUI coding, others will be stronger in Graphics, others in documentation, and so on. However, it is best the each team rotate the responsibilities so each student has a chance to participate in every aspect of the project.

Each team lab has one or more deliverables, which are due by the end of the lab. To submit your deliverable, just check it into the team Git repository. Teams can work on their projects outside of the labs if they so choose. Even if they choose to do so, the team members must come to the lab and work on the project under the supervision of the instructor and the TA.

Each team gets to create a project of its choosing as long it is a video game of some sort that has a GUI and Graphics. Teams must create original content and cannot reuse code they find on the Internet, for example, or any other sources. You can create a variant of an existing game or create a completely new one.

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 roughly half of a chapter of the text book. Students should attend the lecture and then read the corresponding chapter carefully before attending the lab later in the same week. The individual labs start 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. Every other lab will be a team lab where small teams of students work on an ongoing project throughout the quarter. 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 Honesty

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.