Software Engineering Laboratory

TR 12:30-1:45, in SN 011
Dr. David Stotts (FB 144, 919.590.6133)


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 weekly with the "boss", and as required with their clients and among themselves.

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. We will also have guest lectures from practicing software profeesssi

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 boss 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.