Description
CS 314 Software Engineering introduces students to team-based development of large, complex software systems. Major topics in the course include Agile software development, clean code, configuration management, continuous integration and deployment, project management, requirements management, test driven development, peer reviews, and teamwork. Students learn integrated tools to support a Scrum-based development process while completing a semester-long web development project. This course prepares students to work in teams in upper level courses, industry, research, or the open-source community.
CS 314 satisfies the AUCC 4A requirements for students majoring in Computer Science. You will learn software engineering processes and tools along with how to work in a team, much as you would in your first job. Your instructor met the customer, gathered the requirements, chose the architecture, created the design, and completed a initial implementation for you. You will add features to the implementation to complete a mobile web development project for the customer.
Upon completion of this course, students will be able to:
- Apply Agile Software Engineering processes and tools to manage, build, integrate, test, deploy, and review a large, complex software system.
- Write clean code and automated tests to enhance a mobile single-page web application with RESTful API services.
- Demonstrate problem-solving, communication, and teamwork skills.
- Appraise and improve individual and team performance.
Prerequisites
The course prerequisite is CS 214 Software Development or CS 253 Software Development in C++. No overrides are given for the prerequisite.
This is not an introductory programming course. You should be able to develop code on your own without reliance on Teaching Assistants, classmates, or generative AI to guide you, since you will be working with existing code and that of your teammates. Students should be familiar with Java programming, data structures, algorithms, problem-solving, and object-oriented programming to complete this course
Course Materials
The textbook(s) for this course include:
- CS 314 Software Engineering from zyBooks is required and should be available via Day One Access in Canvas.
Additional course materials and tools are provided online.
- A detailed course calendar, assignments, grades, and some course materials such as lecture slides and recordings are available in Canvas.
- Class-wide communications and the Helpdesk use the course Teams channels.
- Team communication uses Slack.
- Project materials are available in the course GitHub organization’s Guide repository.
- Each team will have a separate GitHub repository for their work in addition to a public repository for class-wide assignments. Submissions to these repositories are graded.
- Teams plan their work using GitHub Projects for task storyboards and burnup charts.
- Teams use GitHub Actions for continuous integration and delivery.
- Teams receive feedback on their code (smells, duplication, coverage) from Qlty.
- Teams perform integration testing of the RESTful APIs they build for the server using Postman.
All software development for this course must be developed for a Unix (Linux or MacOS) runtime environment. All grading is done using the standard Linux environment deployed on department machines.
The course guide discusses development environment options. You can complete the course using the department’s Linux machines in the Computer Science Building. You may set up a local development environment for your convenience, but your code must still run on the department machines.
- Linux and MacOS users can use a local environment, a Docker container, or a remote development environment depending on their Unix skills and system resources. We do not help administer student systems.
- Windows users can use remote development or Docker containers, which you can set up during the first week of classes if you choose not to use the lab machines. We do not support WSL on Windows or other virtual machine environments. If you try to use these, you are on your own.
- Docker containers require at least 16 GB of memory. More is recommended.
You are responsible for your development environment. Local development environment issues are not a valid excuse for lack of contribution in project grading. If you have trouble with your local development environment, you should seek immediate help from your teammates or the Teaching Assistants. In the meantime, use the department systems to keep making progress while you work to repair your local system.
Participation / Behavioral Expectations
This course requires students to develop a new set of team-based behaviors. Team approaches used in other courses will not fare well in this course. Students should interact professionally, so treat it like a first job you want to keep.
Attendance
Attendance strongly correlates with final grades in this course. Lecture attendance is required and taken for students in campus sections, so students may meet with their teammates to discuss the project. Students may watch recorded lectures if they want to review part of a lecture or watch a lecture from an absent day. Students should not use recorded lectures in lieu of attendance since we monitor attendance for grading purposes.
If available during the lecture, students in the 801 section may attend live via Echo360 and meet with their teammates. Otherwise, students in the 801 section should watch the recorded lectures regularly so they don’t fall behind. Binge-watching lectures does poorly in this course. We monitor Echo360 activity logs for students in the 801 section for grading purposes.
Teams
You should learn to work well with others in this course. These soft skills are essential in software development, both in school and in industry. The team experience in this course differs significantly from what most students experience in other courses.
Students work in assigned teams for the entire semester. These teams of 5-6 students are chosen to be fairly equal in capabilities (GPAs, credits, skills, etc.), so each team includes a range of performers. Each team includes at least one student from the online section so you have the opportunity to learn how to work with remote team members which is common in industry. Students evaluate the team and each others performance throughout the project as part of the project grading.
The course tools let us measure individual contributions, so each student earns a grade based on their contribution to the team’s score. In a single team, one student can earn 100% while another earns 0%.
Process Focus
Organizations and teams require some form of process to work together effectively. This allows them to achieve far more than the sum of individual contributions.
We care more about how you develop software than the resulting software. In this course, the majority (80%) of the project grade is derived from your use of the software engineering processes we introduce, not from the solution you create (20%). Approaches that worked in other courses may not work here, including procrastination.
The tools used in the course let us measure key process metrics at both the team and individual levels to ensure that you embrace these processes. This differs from other courses where the solution you turn in makes up 100% of the grade.
Continuous Development
When working in teams, you need to learn to work consistently throughout the project, rather than procrastinating until the deadline at the end of each three-week grading period. You will learn to break the work into smaller tasks and complete them incrementally with your teammates.
You should complete at least one task between each lecture to pass the course, and more to do well in the course, so you have something to talk about at the start of the next lecture during your team meeting. This approach allows you to get help from your teammates, classmates, Teaching Assistants, or the Instructor in a timely fashion.
There is no help desk on the project deadline days to discourage procrastination. The tools used in the course let us evaluate each student’s workflow, so your grade will drop significantly if you procrastinate.
Generative AI Use
We allow the use of AI in this course, but warn that you may miss valuable insights from doing the work yourself, which can leave you less prepared for industry. Treat tools that provide AI assistance (Claude, ChatGPT, Gemini, Grok, Llama, etc.) as if they were a person outside of class who knows nothing about the project.
Students find it more useful for some aspects of the course than others. AI can be a useful tool to explain things you don’t understand. Asking AI to write text, code, or tests for this course project can be problematic and hurt the team’s score and yours. Teams have lost more project points than they gained and removed the AI-generated code to improve their grades. AI produces simplistic test cases compared to those used for grading.
If you copy substantial amounts of text into and out of a chat interface, you are likely compromising your education.
Electronics in the Classroom
Electronics can enhance classroom learning by supporting the material we cover in lectures. This includes following the lecture slides and taking notes during the lecture.
Other uses of electronics are prohibited in the classroom during the lecture. This includes working on assignments or projects for this or other classes, playing games, using social media, or other activities not explicitly approved by the instructor. You may be asked to cease or leave the classroom. If in doubt, ask the instructor.
Grading
The course grading requires you to demonstrate your grasp of the course concepts through a variety of activities as teams of students iteratively develop a mobile application server during the semester.
As a student enrolled in this course, one of your responsibilities is to submit coursework by the due dates listed in Canvas. That said, I take my role as your instructor seriously, and I care about how well you do in the course and whether you have a satisfying, rewarding experience. To that end, I commit to responding individually to the work you submit in this class and returning it in a timely manner, typically within a few days.
If unforeseeable circumstances delay grading beyond the times listed here, I will keep you informed of my progress and do my best to return your work as soon as possible.
| Assignment | Grade Percentage |
|---|---|
| Project | 80% |
| Sprint activities | 5% |
| Course activities | 5% |
| Reading | 5% |
| Appraisal | 5% |
| Total | 100% |
Project
The project consists of five 3-week programming assignments, each building on the previous one. The team grade reflects the solution’s quality and adherence to the software development process we teach in the course. Individual student grades reflect each team member’s relative contribution to the team grade, including adherence to the software development process.
Sprint Activities
Sprint activities reflect the completion of individual and team activities related to the project during each sprint.
Course Activities
Course activities reflect the completion of logistics and other course-related activities.
Reading
Reading quizzes assess students’ understanding of the reading material.
Appraisal
Students complete the Appraisal at the end of the semester in lieu of a final exam.
Final Grades
| Final Grade | Range |
|---|---|
| A+ | 100% to 98% |
| A | < 98% to 90% |
| A- | < 90% to 89.5% |
| B+ | < 89.5% to 88% |
| B | < 88% to 80% |
| B- | < 80% to 79.5% |
| C+ | < 79.5% to 78% |
| C | < 78% to 70% |
| D | < 70% to 60% |
| F | < 60% to 0% |
These range boundaries are rigid. Do not inquire about rounding or bumping grades. Rather than round grades, I give + and – grades at the boundaries. A 69.99% is still less than 70%, and you will not pass the course. The last few weeks of the semester are usually too late to inquire about improving your grade.
Late and Make-Up
We understand stuff happens! This class takes a different approach than typical late dates or make-up assignments, as we try to provide an industry-like experience. Students should endeavor to complete everything by the due dates.
Project deadlines do not change in industry or in this class. Please contact the instructor if you are unable to contribute to the project during any grading period so the instructor can consider an excused absence to prorate your grade during that period at their discretion.
For some assignments, the course includes a built-in one-week extension with full credit after the due date. These extensions are clearly marked in Canvas with an Available Until date. This handles disability accommodations, illness, life events, and a wide variety of other circumstances. This extension is available to everyone, and you do not need to ask permission. We trust students to use this wisely and not become reliant on the extension.
For other assignments, the information is graded and used immediately in the course, including some with short deadlines because of the assignment’s nature. In these cases, you should contact the instructor about your situation. These are usually low-stakes assignments that the instructor may choose to excuse you from altogether at their discretion.
Academic Integrity
This course will follow the CSU Policy for Academic Integrity/Misconduct, as outlined in the General Catalog. Violations will result in a grading penalty and a report to the Office of Conflict Resolution and Student Conduct Services.
Examples of academic misconduct include (but are not limited to):
- Cheating: Cheating includes using unauthorized sources of information, providing or receiving unauthorized assistance on any academic work, or engaging in any behavior specifically prohibited by the instructor in the course syllabus or class presentation.
- Plagiarism: Plagiarism includes the copying of language, structure, images, ideas, or thoughts of another and representing them as one’s own without proper acknowledgment; it is related only to work submitted for credit. It also includes failing to cite sources properly; sources must always be appropriately referenced, whether printed, electronic, or spoken.
- Falsification: Falsification encompasses any untruth, either verbal or written, in one’s academic work.
- Facilitation of any act of Academic Misconduct: Facilitation of any act of academic misconduct includes knowingly assisting another to commit an act of misconduct. Academic integrity lies at the core of our common goal: to create an intellectually honest and rigorous community. Because academic integrity, and the personal and social integrity of which academic integrity is an integral part, is so central to our mission as students, teachers, scholars, and citizens, I will ask that you affirm the CSU Honor Pledge as part of completing your work in this course.
Further information about Academic Integrity is available at CSU’s Academic Integrity – Student Resources.
Helpdesk
An online Helpdesk is available to students in the course. Teaching Assistants staff it and know the course well. Please be courteous to them. Do not contact Teaching Assistants outside of their Helpdesk hours! They have coursework of their own to complete without interruptions from students in this course.
The real world doesn’t have a Helpdesk so you are expected to make an attempt to answer your question or solve the problem before you visit the Helpdesk. Asking a teammate for help can eliminate many Helpdesk visits and is a sign that your team is working well together. Teammates are also available when the Helpdesk is not staffed. These are important research skills to learn. Teaching Assistants will help you find a place to obtain your own answer rather than just telling you the answer. Failure to read course materials or attend lectures will result in a referral to those materials.
The Helpdesk schedule is posted on the site homepage. We offer Helpdesk support in the evenings and on weekends to accommodate online students. To discourage procrastination, we do not offer Helpdesk support on Thursdays when the project assignments are due. We use an online form to gather information to track requests; please complete it with useful information.
Copyright Course Materials
Please do not share material from this course online, in print, or in other media. Course material is the property of the instructor who developed the course. Materials authored by third parties and used in the course are also subject to copyright protection. Posting course materials on external sites (commercial or not) violates copyright law and the CSU Student Conduct Code. Students who share course content without the instructor’s express permission, including on online sites that post materials for sale to other students or LLMs, may face appropriate disciplinary or legal action.