Spring 2019

Software Engineering Laboratory

MW(F) 11:15-12:30, in SN 014 (FB009)
Dr. David Stotts (FB 144, 919.590.6133)
Dr. Jeff Terrell (FB 146, 919.590.6103)
(TA) Victor Murta (FB nnn, vvv@cs.unc.edu)


Understanding of computer organization, operation, and programming as acquired from COMP 401, 410, 411; in addition, two more upper level undergrad classes (higher than COMP 426) are required. We have found that preparation in areas like OS, networking, compilers, databases, security, and graphics provides maturity that often greatly helps with these team projects.


No text is required for purchase. We will be reading articles online.

You may find you will need various supporting materials, depending on the project you end up working on. For example, you may need a text on Ruby/Rails, or PHP, or Objective C, or Python, or Linux or something we can't predict until it happens.

Course Description

The goal of this course is to teach the technical and managerial skills necessary for building a software product as a team. The essence of the course is the faculty-coached team project. Teams of 3 to 5 students spend three months negotiating, estimating, scheduling, specifying, coding, debugging, integrating, documenting, and testing a substantial programming product. Grades are based on code, documentation, ambition, effort, teamwork, and accomplishment.

When the course is completed, each student will have


Comp 523 is mostly a project course. Lectures are practical, (providing guidance for the students' current projects) or cultural (presenting background and insight from the field of software engineering). Project groups will meet several times a week as a team among themselves, and weekly with a manager (instructor or TA), and periodically as required with their clients.

Several of our class meetings will be devoted to introduction or overview of areas of software technology that tend to be widely in use across different development areas or environments. These "tech talks" will be given by the student teams. We will also have guest lectures from practicing software professionals.


The class has no exams or graded individual homework. The grade is based on performance in the software project and on team presentations. This included attendance at the weekly manager meetings, and if a team had meet the deadlines for project deliverables (measured during weekly manager meetings).

Each team will have at least two opportunities during the semester to publicly report on progress, and will receive feedback on progress during each weekly boss meeting. Each team will also give a presentation during the semester on a technical concept or system related to the project development.

Ultimately the majority of the grade will be based on the correct functioning of the system with the capabilities outlined in the specifications. Clients will be asked if the team did deliver a working system in form that the client can (a) use properly, and (b) maintain and extend as needed.