Basic Info

Spring 2021 Semester

Lectures and Live Meetings

Virtual Lectures (Available on YouTube)
Discussion and Guest Lecutres - Tuesdays, 11:00 AM-12:15 PM & 2:00-3:15 PM (Zoom via Online Meetings Tool in Collab)
Guided Practice Learning Activities - Thursdays, 11:00 AM-12:15 PM & 2:00-3:15 PM (Zoom via Online Meetings Tool in Collab)


Individual Team Meetings with TAs on Mondays or Tuesdays (Determined by Teams)

Staff Information

Instructor: Prof. Mark Sherriff
Office: Within running distance of Wegmans
Office Hours: Wednesdays and Fridays, 9:30-11:00 AM

Instructor: Prof. Will McBurney
Office: Next to Stewart the Cat
Office Hours: Monday, 3:30-5:00 PM, Thursday, 9:30-11:30 AM

Teaching Assistants:

Catherine Bradbury, Skylar Brodowski, Sammie Chung, Louisa Evola, Alexa-Joanne Gomez, Eric He, Srinivasa Josyula, Min Woo Kim, Jude Klena, Jennifer Long, Jiahao Luo, Samuel McBroom, Jonathan Mo, Paul Ok, Daniel Park, Kush Patel, Kaitlin Phan, Jeffrey Rhoads, Jerome Romualdez, Alex Shen, Tina Wang, Trevor Williams, Darrel Zhang, Daniel Zhao

Communication and Logistics

Being together on Grounds definitely has its challenges, but the change to virtual is giving the course staff the chance to rethink a lot of how the class could potentially work. And that is really exciting! So, we’ll focus on the positive and have a good time!


There is no official textbook for the course that you need to purchase. If you would like to reference a text, we highly recommend Cooperative Software Development by Amy Ko (University of Washington).


The first thing to know is that this class will live and breathe in our Discord server. You will find instructions on joining the Discord server on the left side menu in our course Collab site.

Discord will be the host for all office hours (professor and TA), team meetings (with and without your TA), discussion about your projects, and a whole host of off-topic channels. Feel free to stay logged in to Discord and hang out!

All office hour times are posted on the course calendar at the bottom of the Schedule page on the course website and in Discord. See the Office Hours channel in Discord for instructions on how to queue up for help during office hours.


Piazza @

Sometimes you will have longer-form questions with code (or links to your GitHub repo) that probably should not be openly posted on a Discord chat channel. And please don’t direct message (DM) staff in Discord with huge snippits of code.

Login to Piazza and use the threads for longer-form questions, particularly those that involve code. You can also post private messages here that will only be seen by staff members. Regrades, however, will never be accepted on Piazza except for specific things that are not in Gradescope and we tell you explicitly to do this.

Think of Discord as stopping by for a quick chat, for a meeting, or for hanging out, while Piazza is for submitting significant help requests or questions.


There is no textbook for this class, however, Profs. McBurney and Sherriff will be releasing regular videos on YouTube on the class content in lieu of “traditional” lectures. So, instead of a single “sit in zoom for 75 minutes twice a week,” we will release three or four 20-30 min YouTube video lectures that you can watch when it is most convenient for you. We suggest you subscribe to the YouTube playlist so you are always up to date, but we will also post all videos (with some lecture notes) on the course website.


Ah, email. Nothing beats that constant dinging sound as messages continue to pile up. Email will still be an important part of our course and used mainly for class-wide announcements that wouldn’t necessarily be seen in Discord.

For any personal issues that can only be handled by a professor, please email your professor of record directly. You do not need to CC the other professor; we will get the other person involved if necessary. PLEASE make sure to put “CS 3240” in the subject line somewhere so we can keep track of your reuqest! And please be patient with us in responding. We both receive A LOT of email and it’s easy to get behind. If there is a time-critical nature to your note, please let us know that as well.

Who do I ask about…?

For the context of the project, you should consider the professors “upper management” and the TAs “senior developers / managers.” Thus, high-level, requirements-based, or course-management sort of questions should go to the professors, while all technical and initial grading questions should to go the TAs. (Honestly, you’re probably going to get a faster, better answer to a Django question if you go to the TAs… sure, Prof. Sherriff or McBurney can answer it… eventually… after a lot of Googling… but you could also ask a TA who did the project last semester or has been a TA for several semesters…)

Course Description

Analyzes modern software engineering practice for multi-person projects; methods for requirements specification, design, implementation, verification, and maintenance of large software systems; advanced software development techniques and large project management approaches; project planning, scheduling, resource management, accounting, configuration control, and documentation. Prerequisite: CS 2150 with a grade of C- or higher.

Course Objectives:
Upon completion of this course students will:

  • Develop an understanding of how to specify, design, and implement a complex software entity that involves many aspects of modern software systems.
  • Master a number of modern tools and a number of difficult technical fields.
  • Acquire experience of working on a large software system as a member of a team working on system development and as a member of a team that has to interact with other teams and customer representatives.

Course Topics:
The topics to be covered in the course include:

  • Software quality, including testing and inspections
  • Project management, scheduling, planning, with an emphasis on the Scrum agile method
  • Requirements elicitation, analysis and specification
  • Architecture and design principles
  • Security in the development of software applications
  • Programming and team-based development practices
  • Professional ethics

Course Requirements

You should meet the following requirements to take this class:

  1. Prerequisite: CS 2150 with a grade of C- or higher. Students that do not meet this prerequisite may be dropped at any point from the class. It is the student’s responsibility to check this prerequisite and/or speak with the instructor ASAP. We’ll assume you have mastered the material in the courses leading up to CS 2150 also, which includes software developments skills in Java and C++.
  2. Willing to watch course lectures via YouTube and participate to the best of your ability in discussions on Piazza and Discord.
  3. You will be expected to learn programming languages and platforms on your own in this class! If you don’t feel comfortable with this, please talk to the staff as soon as possible!

Assessment and Grading

Assessment in this course is different than most courses. As the purpose of this class is for you to gain experience as a software developer working in a team on a larger-scale project, your grade in this course will be based on experience points (XP). Every student begins the course with 0 XP. As you complete assessments, work on the project, and complete Guided Practice activities, you will earn XP. Some assessments will have a way to retake or resubmit to earn some of the XP that was not earned on the first attempt. Please see individual assessments for more information regarding how this mechanic works.

Experience Point (XP) System

The class will be divided into 25 levels. For each level, students must attain a certain amount of XP. As students level up, the amount of XP required to go to the next level also increases.

Our XP table is based (loosely) on the XP table for World of Warcraft .

LevelXP Needed to Level UpTotal XP Required for Level
13 (F / NC)15000110000
14 (D- / GC)15000125000
15 (D / GC)5000130000
16 (D+ / GC)5000135000
17 (C- / GC)5000140000
18 (C / CR)10000150000
19 (C+ / CR)5000155000
20 (B- / CR)10000165000
21 (B / CR)5000170000
22 (B+ / CR)5000175000
23 (A- / CR)7500182500
24 (A / CR)7500190000
25 (A+ / CR)10000200000

Earning Experience Points (XP)

Information about the XP available for each of the assessments can be found on each assessment’s page on the website. A summary table of all XP for the course can be found below.

CS 3240 - S21 - XP Assessment Table

Class Management

Project Groups

You are expected to work as a member of your group in this course and cooperate with your colleagues. Cooperation means attending group meetings, completing your assignments properly and on time, letting your group know if you will be out of contact, responding to e-mail from your group, and so on. If there is a lack of cooperation by any group member, it must be brought to the attention of the instructor as soon as it happens. If the lack of cooperation is serious, the offending group member’s semester grade will be lowered.


  • No attendance will be taken during the Zoom sessions on Tuesdays and Thursdays. Students are welcome to attend any and all sessions that work for them, regardless of which section they are signed up for.
  • Zoom sessions will be recorded and made available through the Online Meetings tool in Collab. Students are responsible for any material discussed during these sessions.
  • Guided Practice activities will take place on Thursdays and count toward your overall XP. These can be done together in groups during the Thursday class time or on your own, depending on what works best for you. Please note that some Guided Practice activities must be done in teams and cannot be done solo or even in pairs. Pay attention to the instructions each week.

Late Policy

  • In general, no late work is accepted. Exceptions to this policy are stated with the individual assessments themselves. Some assessments, such as Sprint Checks, have a built-in mechanism by which a team can earn points after a failed submission.

This Syllabus

This syllabus is to be considered a reference document that can and will be adjusted through the course of the semester to address changing needs. This syllabus can be changed at any time without notification. It is up to the student to monitor this page for any changes. Final authority on any decision in this course rests with the professor, not with this document.


In this course, there will be a focus on working well together and learning about the development process. A large portion of that process involves interpersonal skills and conflict management. Students and staff are all expected to treat each other with respect. This includes, but certainly is not limited to:

  • Misuse of class platforms (Discord, Piazza, YouTube comments, etc.)
  • Disrespectful language or actions to course staff or other students
  • Promptness for all deadlines and class meetings
  • Quality work
  • Not working well with your partners
  • Collaborating with other teams

Students can and will be penalized for unprofessional behavior.

Academic Integrity


  • Know the honor code
  • Work with your team, but not any other team
  • Using code from other students (from any semester) is an honor violation
  • Using publically-available example code and libraries is fine, but you must cite your resources
  • More information on what is allowed will be included with each assignment if necessary
  • It never hurts to ask the staff what is allowed or not allowed!

The School of Engineering and Applied Science relies upon and cherishes its community of trust. We firmly endorse, uphold, and embrace the University’s Honor principle that students will not lie, cheat, or steal, nor shall they tolerate those who do. We recognize that even one honor infraction can destroy an exemplary reputation that has taken years to build. Acting in a manner consistent with the principles of honor will benefit every member of the community both while enrolled in the Engineering School and in the future.

Students are expected to be familiar with the university honor code, including the section on academic fraud Assessments will describe allowed collaborations, and deviations from these will be considered Honor violations. If you have questions on what is allowable, ask! Unless otherwise noted, all assessments will be considered pledged that you have neither given nor received help. (Among other things, this means that you are not allowed to describe problems on an exam, assignment, or project to a student who has not taken it yet. You are not allowed to show exam papers to another student or view another student’s exam papers while working on an exam.) Sending, receiving, or otherwise copying or describing the contents of electronic files that are part of course assignments are not allowed collaborations (except for those explicitly allowed in assignment instructions).

Assignments or exams where honor infractions or prohibited collaborations occur will receive a zero grade for that entire assignment or exam. Such infractions will also be submitted to the Honor Committee if that is appropriate. Students who have had prohibited collaborations may not be allowed to work with partners on remaining homeworks.

For CS3240, using code developed by previous students in the course or code written for your use by someone outside the course is not allowed and will likely be an honor violation. This does not apply to the use of publicly available frameworks and libraries, unless indicated in the assessment instructions.

In general, we expect that you will be using code, examples, and ideas from many different websites and resources for your projects. This is allowed within reason. Wholesale copying of an entire project or any major feature from any source (the web, another student, etc.) is definitely not allowed. Using code snippts that you find to round out a feature is allowed. If you ever have a question about what is or is not appropriate, ask first!

In ALL cases, you need to cite all sources at the top of the file where the code or algorithm was used AND you should note all sources in your documentation. Failure to properly attribute your sources will result in a 50% penalty for the project at a minimum.

How to Cite Code

Use the following format as an example citing code you use. You may not have all of these fields available, but this should give you a good idea of things to look for. Order by title of the software package. Use the appropriate commenting format for the programming language of your source code. Below is a genearl example of a citation format. Does yours have to look exactly like this? No, nor does it have to have all the fields. It does have to have enough to give the proper credit and so we can find the resource if needed.

*  Title: <title of program/source code>
*  Author: <author(s) names>
*  Date: <date>
*  Code version: <code version>
*  URL: <where it's located>
*  Software License: <license software is released under>
*  Title: ....

“Inclement Weather Policy”

If there is the possibility of inclement weather that could affect class, it is your responsibility to stay informed. Information about how to sign up for email and/or text alerts from UVA Emergency Management, along with the current University status, can be found at

Of course, for us, this is more things like internet or power outages or a particular tool (e.g. Zoom, YouTube) goes down for a period of time. We will try to keep everyone informed if something happens for a given live session. If you have to miss a session due to technical difficulties, it is your responsibility to find the recording and catch up.

SDAC and Other Special Circumstances

The University of Virginia strives to provide accessibility to all students. If you require an accommodation to fully access this course, please contact the Student Disability Access Center (SDAC) at 434-243-5180 or If you are unsure if you require an accommodation, or to learn more about their services, you may contact the SDAC at the number above or by visiting their website at

If you have been identified as an SDAC student, please let the SDAC know you are taking this class. We happily and discretely provide the recommended accommodations for those students identified by the SDAC. Please contact us one week before an exam so we can make accommodations.

If you have other special circumstances (athletics, other university-related activities, etc.), please contact the instructor as soon as you know these may affect you in class.

Religious Accommodations

It is the University’s long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements. Students who wish to request academic accommodation for a religious observance should submit their request in writing directly to me by email as far in advance as possible. Students and instructors who have questions or concerns about academic accommodations for religious observance or religious beliefs may contact the University’s Office for Equal Opportunity and Civil Rights (EOCR) at or 434-924-3200.

Accommodations do not relieve you of the responsibility for completion of any part of the coursework missed as the result of a religious observance.

Statement on Violence

The University of Virginia is dedicated to providing a safe and equitable learning environment for all students. To that end, it is vital that you know two values that I and the University hold as critically important:

  1. Power-based personal violence will not be tolerated.
  2. Everyone has a responsibility to do their part to maintain a safe community on Grounds.

If you or someone you know has been affected by power-based personal violence, more information can be found on the UVA Sexual Violence website that describes reporting options and resources available -

As your professor and as a person, know that I care about you and your well-being and stand ready to provide support and resources as I can. As a faculty member, I am a responsible employee, which means that I am required by University policy and federal law to report what you tell me to the University’s Title IX Coordinator. The Title IX Coordinator’s job is to ensure that the reporting student receives the resources and support that they need, while also reviewing the information presented to determine whether further action is necessary to ensure survivor safety and the safety of the University community. If you would rather keep this information confidential, there are Confidential Employees you can talk to on Grounds (See The worst possible situation would be for you or your friend to remain silent when there are so many here willing and able to help.

Frequently Asked Questions

Q: Can we pick our own teams?
A: No. There are solid, pedagogical reasons to have randomly assigned teams. Also, the purpose of this class is to learn about how to work together with others on a project. If you are already friends, then that negates that part of the learning objectives.

Q: Are you adding more labs or slots to the current labs?
A: We can handle 300 students max. While we recognize that in a virtual environment this may seem arbitrary due to the removal of room space issues, please realize that every additional student adds another bit of grading, another team project to manage, more office hours needed, additional TAs, etc. The new max of 300 (up from 240) is the most we think we can handle this semester and still provide a quality experience.

Q: Then why are there more lecture slots than lab slots (or visa-versa)?
A: We have to use creative SIS tricks to keep the course size at 300, while still allowing some flexibility in lecture sections that can be chosen due to other class conflicts.