Description

The Software Engineering concentration includes three courses in Software Engineering. CS 214 Software Development introduces practices used by individuals to develop software. CS 314 Software Engineering introduces students to team-based development of large, complex software systems. CS 414 Object-oriented Design adds to the requirements and design practices while CS 415 Software Testing adds testing practices.

Major topics in CS 314 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 the 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 prerequisite for this course 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 recording 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 Guide repository of the course GitHub organization.
  • 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 story boards and burnup charts.
  • Teams use GitHub Actions for continuous integration and delivery.
  • Teams receive feedback (smells, duplication, coverage) on their code from Qlty.
  • Teams perform integration testing of the server Restful APIs they create using Postman.

All software development for this course must be developed for a Unix (Linux or MacOS) run-time environment. All grading is done using the standard Linux environment deployed on department machines.

Development environment options are discussed in the course guide. The course can be completed using the department Linux machines in 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, Docker container, or remote development environment depending on their Unix skills and system resources. We do not help administer student systems.
  • Windows users have options for remote development or docker containers that can be setup 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. You are on your own if you attempt to use these.
  • 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, you should use the department systems to continue to make progress while you work to repair your local system.

Participation / Behavioral Expectations

This course requires students to develop a new set of behaviors focused around working in teams. Team approaches used in other courses will not fare well in this course. Students should interact professionally, so treat it like a first job that you would like to keep.

Attendance

There is a strong correlation between attendance and 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 wish to review a portion 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 the lecture live using echo360 and meet with their teammates. Otherwise, students in the 801 section should watch the recorded lectures regularly so they do not get behind. The binge watching approach for 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 an important factor in software development, both in school and in industry. The team experience in this course is far different 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 tools used in the course allow us to measure individual contribution, so each student earns a grade corresponding to their contribution to the team’s score. In a single team, it is possible for one student to 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 allow us to measure key process metrics on both a team and individual level to ensure you embrace these processes. This is quite different from other courses where the solution you turn in is 100% of the grade.

Continuous Development

When working in teams you need to learn how to work continuously throughout the project, rather than procrastinate until a deadline at the end of each three week project grading period. You will learn to break the work down into smaller tasks and complete these tasks incrementally with your teammates.

You should complete at least one task between each lecture to pass the course, 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 helpdesk on the project deadline days to discourage procrastination. The tools used in the course allow us evaluate the flow of work by each student so your grade is significantly reduced 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 that leave you less prepared for industry. Treat tools which provide AI assistance (Claude, ChatGPT, Gemini, Grok, Llama, etc.) as if they were a person outside of class that 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 the project in this course can be problematic and hurt the team score and your score. 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 are copying substantial amounts of text into and out of a chat interface, then you are likely compromising your education.

Electronics in the Classroom

Electronics may be used in the classroom to enhance learning of the material we are covering in the lecture. 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, game playing, 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 a grasp of the course concepts through a variety of activities as teams of students develop a mobile application server iteratively during the semester.

As a student enrolled in this course, one of your responsibilities is to submit course work by the due dates listed in Canvas. With that said, I take my role as your instructor seriously, and I care about how well you do in the course and that you have a satisfying, rewarding experience. To that end, it is my commitment to you to respond individually to the work you submit in this class and to return your work in a timely manner, typically within a few days.

If, however, due to unforeseeable circumstances, the grading of your work takes longer than the times I have listed here, I will keep you informed of my progress and make every effort to return your work as soon as I can.

AssignmentGrade Percentage
Project80%
Sprint activities5%
Course activities5%
Reading5%
Appraisal5%
Total100%

Project

The project consists of five 3-week programming assignments, with each building on the previous. The team grade reflects the quality of the solution and the adherence to the software development process we teach in the course. Individual student grades reflect the relative contribution made by each team member towards the team grade, including adherence to the software development process.

Sprint Activities

Sprint activities reflects completion of individual and team activities related to the project during each sprint.

Course Activities

Course activities reflects completion of logistics and other course related activities.

Reading

Reading evaluates the student’s understanding of the reading material.

Appraisal

The Appraisal is performed by students at the end of the semester in lieu of a final exam.

Final Grades

Final GradeRange
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 that 70% and you will not pass the course. The last few weeks of the semester is 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.

On some assignments, the course has a built in extension of one week 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.

On other assignments, the information is graded and used immediately in the course including some assignments with short deadlines due to the nature of the assignment itself. 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 adhere to the CSU Policy for academic integrity/misconduct, which is found 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 and providing or receiving unauthorized assistance on any form of 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, and is related only to work submitted for credit. Also included is the failure to cite sources properly; sources must always be appropriately referenced, whether the source is 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. It is staffed by the Teaching Assistants that know the course well. Please be courteous to them. Do not contact Teaching Assistants outside of their Helpdesk hours! They have course work 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 home page for this site. We offer the Helpdesk during evenings and 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 request, please complete it in 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.