Syllabus for CS 345 Fall 2025 - Instructor: Chao

Objectives and Expectations

Topics include:

  • software development processes
  • requirements analysis and specification
  • software design
  • implementation
  • testing
  • maintenance
  • software project management

Also reference the Official Catalog Description at the end of this syllabus:

Course Textbook

Required Textbook

The primary textbook for this course is (the draft version of) Fox, C. and D. Bernstein (2016) Software Engineering . which is being made available to you in electronic form via Canvas. You will access readings through assignments in Canvas.

Grading Criteria

You are responsible for all material discussed in lecture and discussion section and posted on the class web page, including announcements, deadlines, policies, etc. 

Your final course grade will be determined according to the following percentages:  exam 1 (20%) , exam 2 (20%) , the final project (25%) , several homework / programming assignments (10% total) , and several labs / quizzes, and readings (25% total).

Item Percentage
Readings / quizzes / labs 25%
Homework / Programming Assignments 10%
Exam 1 20%
Exam 2 20%
Final Project 25%

Reading Quizzes, Labs, Homework / Programming Assignments

This portion of your grade will be based on graded labs, reading quizzes, and homework problems assigned.  I may drop a to be determined amount(probably 1-2) of reading quizzes and/or labs at the end of the semester to account for the 'bad day' or unforeseen circumstances for missing a particular day.

Readings

Reading the text is required. Many days there will be reading quizzes or activities involving the assigned readings. These activities will be graded on participation and completeness.

Quizzes(Canvas)

Quizzes(Canvas) There will be several quizzes.

In-Class Activities/Labs Many days we will have in-class activities designed to be done in groups. Some of these will be around the Final Team Project and graded as a part of that assignment.

Final Team Project The team project will be done in the second half of the semester by teams of 4-6 people. You will be assigned to a team. You will use an agile methodology called Scrum, which we will cover during class. In Scrum, a self-directed team creates working versions of a product about every 2-3 weeks in efforts called sprints. Your team will do 5 sprints each lasting one week due to the tight semester time schedule. Your product deliverables will include various Scrum artifacts as well as the software product and its documentation. You will also be asked to evaluate the contributions of all team members at the end of every sprint. These evaluations will be used as a part of project grades. We will discuss details about this when we discuss the project in greater detail. There will also be several team assignments outside of the sprint structure – see In Class activities above.

Homework / Programming Assignments(PA's)

PA's must be submitted electronically following the instructions given in class and on the website. Assignments may not be submitted by any other means (e.g., do not email your projects to me unless I request that). It is your responsibility to test your program and verify that it works properly before submitting it.

All assignments are due at 23:00 (11:00pm) on the day indicated on the assignment unless noted otherwise. Later assignments may not be accepted.

Regardless of the any other late policy, I reserve the right to refuse to grade any programs submitted after the beginning of the second class period following the project deadline, because I may discuss the solution in class.

Project extensions will not necessarily be granted due to server congestion, system problems, network problems, power outages, etc., so do not wait to submit a program until the night it is due. No consideration in grading will be made for errors made in transferring files or submitting the wrong version of your project. Having a working, non-submitted version will not count; only submitted code will be be counted. 

You will be responsible for developing your own techniques for testing your projects before submitting it. I will grade your assignment based on test cases not provided to you in advance. Because grading may be done automatically, you must follow the project specification exactly. 

Your code will be graded on a combination of correctness, completeness, documentation, and code style. 

Any "hard coding" in a project assignment may result in a score of zero for that assignment, and is considered a bad-faith effort. Hard coding refers to attempting to make a program appear as if it works correctly, when in fact it does not. One example of hard coding would be printing the desired output instead of computing it. If you have any questions as to what constitutes hard coding for a particular assignment, be sure to ask ahead of time. 

Exams

There will be two mid-term exams given that will cover the material through the first part and second part of the course.

Final Presentation Instead of a final exam, each team will give a presentation of their team's final work. This grade will be included in the project grade.

Grading

Letter grades will be assigned on the scale A=90-100, B=80-89, C=70-79, D=60-69, F=0-59, with potential minor adjustments after considering the overall performance of the class and actual distribution of numeric scores. I will use “+” and “-” grades at my discretion.  

If you believe I have made an error while grading your work or calculating your final score, please bring it to my attention after class or during office hours. If I determine that there has been a simple mistake, I will fix it immediately and no formal request is necessary. 

If you believe an exam question or assignment has been graded unfairly, you must submit a verbal or written formal request for a regrade. Such requests must be submitted within one week of when the assignment in question is returned to you. Any coursework submitted for reconsideration may be regraded in its entirety, which could result in a lower score if warranted.

Instructor Contact Info

My email is chaoaj at the standard domain. My office is in King 257, and my office hours are posted there and in Canvas

I am also sometimes available outside office hours by appointment or just drop-in but do not guarantee availability outside posted office hours; if you wish to make an appointment, send me an email. 

Course Policies

Important announcements will be made in class and/or through the course Canvas page. Please make it a habit to check Canvas daily. 

Although every effort has been made to be complete and accurate, unforeseen circumstances arising during the semester could require the adjustment of any material given here. Consequently, given due notice to students, I reserve the right to change any information on this syllabus or in other course materials.

You are permitted to use course materials for your own personal use only. Course materials may not be distributed publicly or provided to others (excepting other students in the course), in any way or format unless explicitly allowed. 

Attendance and Participation

Attendance at lectures when we don't have quizzes is not mandatory but is strongly encouraged. - Attendance is mandatory on lab days and quiz days. - Attendance is mandatory on days when group/team activities and meetings are scheduled, such as when your team is working on the project

Please silence your cell phone while class is in session. If you have a laptop or tablet, you are encouraged to bring it to class and use it to work along with programming examples and exercises. Mute the volume to avoid unintended interruptions, and do not use any electronic devices for activities that may distract other students. Repeated violations of this policy may result in disciplinary action or a grade penalty in the course. 

I strongly encourage you to check the main website and the Canvas page regularly for important announcements (usually regarding programming projects).

Academic Honesty

You are expected to comply with the JMU Honor Code as stated in the Student Handbook and available from the Honor Council website on all assignments, projects, and exams. 

Honor Code

Students who violate the Honor Code (https://www.jmu.edu/honorcode/code.shtml) will receive a reduced or failing grade in the course. Other penalties may be imposed, and all violations will be reported to the Honor Council. Representing someone else's work as your own, in any form, constitutes an honor code violation. It is also a violation of the honor code to "render unauthorized assistance to another student by knowingly permitting him or her to see or copy all or a portion of an examination or any work to be submitted for academic credit." Automated tools may be used on any assignment, at any time, to detect inappropriate collaboration and the originality of submissions.

Generative AI

You are permitted to use AI technology in ways that support your learning. The use of AI is strictly prohibited during quizzes and exams and homework/programming assignments, so make sure you can program independently. Refer to the Generative AI in Computing Education Student Guide for examples of appropriate use.

AI tools may be used on the team project, but use caution when doing so as these tools can often create code that may not be easily integrated into other aspects of your project. Also, you should attribute any use of AI tools and be ready to explain what this code does if asked or assume a grading penalty.

Attribution

A key component of academic integrity is giving credit where credit is due. If you receive assistance, either from another student, an online source, or an AI-enabled tool, you must provide a clear and explicit acknowledgment of that assistance in your submission. To that end, every homework or programming assignment must include a statement describing your process for completing the work. Here is an example illustrating the format that I expect:

"I was able to complete questions one and two with no assistance after reading the zyBook chapter. I got stuck on question three, but Prof Chao talked me through the solution during office hours. My solution for that question is based on his advice. I had no idea how to get started on question four, so I put the prompt into ChatGPT and asked it for an annotated solution. I didn't understand the resulting code, so I talked it over with my friend Xavier. He explained how negative string indexing works, which helped me to understand the code. My final submission for that question is copied from the ChatGPT output."

Any submission without such an acknowledgment statement may receive an automatic zero.

Full credit for major assignments is conditional on making a good-faith effort to develop the skills necessary to answer each question independently. Submissions like the following would result in a zero on the assignment.

"I was in a hurry so I just copied all of the prompts into ChatGPT and uploaded the resulting code."

"My friend Bill had already completed the assignment and sent me a copy of his solution. I submitted a copy of his code after reading it over and improving some variable names."

If I find evidence of a violation of the honor code, I will bring the matter to the attention of the involved individuals via email and request a face-to-face meeting. As per section IV of the honor code, first time student offenders may agree that a violation has occurred and accept an appropriate penalty by submitting an "Informal Resolution Agreement Form" to the honor council. If the student is not a first-time offender or if there is disagreement about the violation or penalty, the matter will be refered to the honor council under section V of the honor code. 

Important Notes

You must achieve a B– or better grade to continue on to CS 159. 

Adding and Dropping the Course

Students are responsible for adding and dropping courses. Please consult the appropriate academic calendar for the exact deadlines. I will not give "WP" or "WF" grades to students requesting a drop after the deadline except in extraordinary circumstances. 

Disability Accommodations

If you need an accommodation based on the impact of a disability, you must contact the Office of Disability Services if you have not previously done so. Disability Services will provide you with an Access Plan letter that will verify your need for services and make recommendations for accommodations to be used in the classroom. Once this letter has been received, we will sit down and review the course requirements, your disability characteristics, and your requested accommodations to develop an individualized plan appropriate for this course. I will not make any accommodations without the appropriate documentation, as I am not qualified to diagnose disabilities. 

Excused Absences

Besides the policies in this syllabus, the University's policies apply during the semester. Various policies that may be relevant appear in the Undergraduate Catalog.

Excused absences will be granted at my discretion and only with appropriate documentation. Please contact me as soon as possible if you wish to request an excused absence.

Missing a quiz/exam for reasons such as illness, religious observance, participation in required university activities, or family or personal emergency (such as a serious automobile accident or the funeral of a close relative) all are circumstances that may qualify as an excused absence.  Where possible you should attempt by all means necessary to attend and take quizzes/exams at their regularly scheduled class period.  

If you are unable to take a quiz/exam at the scheduled time because of illness or other problems, you must contact me beforehand to arrange to take the exam at a different time or the day of the assessment.

Failure to make prior arrangements for a missed quiz/exam will result in a grade of 0 for the assignment. In-class work missed because of absence will only be accepted if arrangements are made beforehand. Late project and programming assignments lose 10% in value per weekday late, to a minimum of 50%. Alternate due dates can be arranged in special circumstances provided these arrangements are made before the due date.

Inclement Weather

In case of inclement weather, we will hold class online via Zoom.  A link will be available via an announcement in Canvas.  Otherwise, this class will operate in accord with JMU's official cancellation policy.

Catalog Description

CS 345. Software Engineering. 3 credits.

Study of modern methods and tools for the development of software products. Topics include software development process models, software development tools, design and construction principles and practice, software quality assurance and program management. Prerequisite(s): Fully admitted Computer Science majors or minors only and a grade of “C-” or better in CS 159.