Course Syllabus

Table of Contents

  1. Course Description
  2. Assessment and Grading
  3. Class Management
  4. Academic Integrity

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.

NOTE: This is the same CS 3240 course that has always been offered. We have just updated the name to a more standard name that is used for this area of computer science research and education.

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 –OR– CS 3140 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.
  2. Willing and able to attend in-person lectures.
  3. Be a meaningful contributor to your team project, which includes your team role responsibilities AND writing code that will be incorporated into the final version of the product.
  4. 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

We will utilize a positive-reinforcement grading policy in this course. 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 (GP) activities, you will earn XP.

Reassessment Policy

You may request a reassessment of any graded work in this course, subject to the following conditions:

  • Students may only request the reassessment of returned coursework in writing via Gradescope. A verbal appeal is not appropriate and will not be accepted nor will requests made through other methods (e.g. email, office hours, etc.). If a follow up is necessary, we will reach out to you to come to office hours to provide additional information. All reassessment requests will be handled by the instructors (except for programming assessments, such as Django Practice).
  • Reassessment requests will open 24 hours after grades are released and will close 7 days after a grade has been released.
  • Students must provide a written rationale for requesting reassessment, with specific reference to: the learning outcomes, assessment rubric, qualitative grade descriptors, and any feedback provided to you.
  • Reassessment requests that are based on feeling or hearsay rather than information indicated above will not be considered and no further reassessment may be made. Examples include: “I feel you graded this too harshly”, “My friend did the same thing and got a better score”, etc.
  • Students who submit an item for reassessment are advised that the entire work will may be reconsidered and that the result of the reassessment may be that the grade will increase, stay the same, or decrease accordingly.
  • Graded work may only be reassessed once – you may not request reassessment a second time for the same item/problem and any changes to the grade made during reassessment will be final.
  • Reassessment requests that are not written in a professional, respectful way will be immediately discarded and may result in a professionalism penalty for the student. (In other words, venting frustration at the grader for “not getting it right” is inappropriate and will not be tolerated.)
  • Reassessment periods may be shortened at the end of the semester if needed to complete grading before submitting final grades to the University Registrar.
  • Note that reassessments done in Gradescope have to be manually synced over to Canvas. We will do this periodically after regrades have closed. Students do not need to (and should not) reach out to inform the staff that the new Gradescope grade is not in Canvas. Students will have an opportunity to verify all grades are correct between Gradescope and Canvas at the end of the semester if necessary.

Final Exam and Project Grading

Final Exam: The final exam in this course is an opportunity to show mastery of material that was previously missed on earlier quizzes. If a student has earned the maximum number of points on the three quizzes, they have a set of scores they are comfortable with, or if they already have an A in the course, the student does not (and should not) take the final exam. If a student wishes to take the final exam, they can earn back up to 100 XP total toward the available 300 XP from quizzes. We will create a custom final exam for each student based upon only the questions the student missed on the previous three quizzes. While it is possible to lose points on the final exam, this is a relatively rare occurance, usually stemming from wild guessing on questions. Students can come to either exam session, regardless of enrolled section. For more detailed information, please see the Final Exam Info section of the course website.

Project Grading: Team Projects will be graded by the faculty at the end of the semester. Every effort will be made to return the project grade at least 24 hours in advance of the first exam period so students know whether they should take the final exam or not. If there are any issues with grading, teams will have an opportunity to respond to faculty inquiries so that minor issues in the project do not hinder proper evaluation of the system.

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 (see information above under Assessment). Note that this can result in a student automatically failing the course!

Attendance

  • No attendance will be taken during the lectures sessions on Tuesdays and Thursdays.
  • We do not plan to record lectures this semester to better encourage attendance and participation. Recordings from previous semesters can be made available for students with special circumstances (e.g., SDAC accommodations, etc.).
  • Students should only attend the lecture section they have registered for due to room size restrictions.
  • Guided Practice activities will take place during announced class sessions. Some of these will be in-class only, while some can be done outside of class time. Due to the nature of most in-class GPs, these cannot be made up if they are missed. However, please note that these are relatively low-stakes and missing an additional GP is not going to have an outsized effect on your final grade. Also note that some GPs must be done in small groups, some with your project team, and some on your own. Pay attention to the instructions.

Professionalism

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:

  • Proper use of class platforms (Discord, Piazza, YouTube comments, etc.)
  • Respectful behavior in class (including extraneous internet browsing, social media, phone usage, etc.)
  • Respectful language or actions to course staff or other students
  • Promptness for all deadlines and class meetings
  • Quality work
  • Working well with your partners
  • Following the honor code and other collaboration policies
  • Following any University health and safety regulations

Students can and will be penalized for unprofessional behavior. This will be represented as a negative XP score on the Team/Staff Evaluation.

Academic Integrity

Summary:

  • 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 http://honor.virginia.edu/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 CS 3240, 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 general format as an example for 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. Use the appropriate commenting format for the programming language of your source code. Does yours have to look exactly like this? No, it just has to have enough to give the proper credit and so we can find the resource if needed.

/***************************************************************************************
*  REFERENCES
*  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: ....
*
***************************************************************************************/