# CS3704: Intermediate Software Design and Engineering
Course Syllabus (Fall 2026) ## Table of Contents * [TEACHING STAFF INFORMATION](#teaching-staff) * [COURSE OVERVIEW](#course-information) * [LEARNING OUTCOMES](#learning-outcomes) * [COURSE MATERIALS](#course-materials) * [GRADING](#grading) * [COURSE POLICIES](#course-policies) * [UNIVERSITY POLICIES](#university-policies) ## TEACHING STAFF INFORMATION | Name | Role | Email | Office Hours | |------|------|-------|--------------| | Dr. Chris Brown | Instructor | dcbrown@vt.edu | Tu/Wed 12-1pm in 4105 Gilbert or [Zoom](https://virginiatech.zoom.us/my/dcbrown) | | Minyhuk Ko | GTA | minhyukko@vt.edu | Mon 9-11am on [Zoom](https://virginiatech.zoom.us/j/9431029588) | | Jai Sundaram | UTA | jsundaram@vt.edu | Th 4-6pm on [Zoom](https://virginiatech.zoom.us/j/81378638943) | ### Office Hours You may attend any of the instructor and/or TA office hours. All TA office hours will be hosted on Zoom (see links above). Please contact the TAs to set up an in-person meeting if necessary. The instructor is also available by appointment if no office hour time works with your schedule (please email). ### Communication Students may contact the teaching staff via email. Expect a response within 1-2 days. If a response is not provided after that time, please send a follow-up email. ## COURSE OVERVIEW ### Course Information * **Meeting Time and Location:** Tuesdays and Thursdays at 9:30 - 10:45 AM in HITT 240 * **Prerequisites/Corequisites:** CS 2114 * **Knowledge Expectations:** Proficiency in a high-level programming language (i.e. Python, Java, C/C++, JavaScript, etc.) ### Course Website All information for this instance of the course is available on [GitHub](https://github.com/CS3704-VT/Course). [Canvas](https://canvas.vt.edu/courses/234343) will be used for submissions, as noted by each assignment. To access departmental course information, use the following URL: https://cs.vt.edu/Undergraduate/courses/CS3704.html. ### Course Schedule A detailed schedule for the semester is available [here](README.md). Generally, course assignments are due on Fridays before 11:59pm. The midterm exam will be held Tuesday, September 29. The final exam will be Monday, December 14 at 7:45am. Please note that the course schedule is subject to change. ### Catalog Description Explores the principles of software design in detail, with an emphasis on software engineering aspects. Includes exposure of software lifecycle activities including design, coding, testing, debugging, and maintenance, highlighting how design affects these activities. Peer reviews, designing for software reuse, CASE tools, and writing software to specifications are also covered. [_This description is very out of date, but is what's listed on the course catalog..._] ### Course Structure The course will consist of traditional lectures, practical workshop experiences, and discussions about advanced current topics in software engineering. #### Project There will be two course projects this semester to provide practical experiences with implementing and maintaining software projects, applying concepts discussed in class. Details about the projects will be released in class throughout the semester. #### Exams There will be two exams for the course. The midterm exam will be an open-book, open-notes timed Canvas quiz held online. The final exam will be closed-book, closed-notes and most likely hand-written. Each exam will cover all course materials (lectures, workshops, and homeworks) except for guest lectures to the date of the exam. Missed exams cannot be made up without an official university excuse. #### Exam Policy and Honor Pledge Do not work on the exam with anyone else nor provide information about the exam to others or receive information from others. Collaboration between students is forbidden on the exam. You must work alone. If you violate the University Code of Conduct during the exam, you will receive a -50% for the exam and will be reported to the Office of Student Conduct. By submitting the exam, you affirm that you followed the rules and the honor pledge: _"I have neither given nor received unauthorized aid on this exam."_ #### Homework There will be four homework assignments throughout the semester. Each homework assignment will be due 11:59pm on the given deadline. Homework assignments will be posted on Canvas and GitHub, and each assignment will include specific instructions for what and where to submit the completed work. All homework will be individual assignments and students must complete their own work. ## LEARNING OUTCOMES By the end of the course, students should be able to: * Compare different software engineering processes and explain when to use them; * Gather, analyze, and specify software requirements for an application; * Design a software system and user interface that meets requirements; * Understand common software engineering tools and practices to maintain, develop, and verify software; * Discuss current and emerging trends in software engineering; * Use AI tools to generate code, unit tests, and test suites; evaluate the quality and accuracy of AI-generated artifacts; and refine outputs to meet functional, performance, and quality requirements; and * Create and communicate (via demo and writing) about the requirements and design of a software application. ## COURSE MATERIALS ### Textbook The textbook for this course will be [Evidence-based Software Engineering](https://open.umn.edu/opentextbooks/textbooks/evidence-based-software-engineering) by Derek Jones. A free pdf is available [here](./resources/ESEUR.pdf). The accomanying data are available [here](https://github.com/Derek-Jones/ESEUR-code-data). ### Technology Requirements #### Hardware Virginia Tech provides technology requirements and recommendations for computer hardware. #### Software * Git and GitHub * An Integrated Development Environment (IDE) or Text editor * [Mattermost](https://meet.cs.vt.edu/signup_user_complete/?id=srrb9ndtmf8ddkqyx96nsjthwr) * Additional software requirements will be provided/installed in HW0. ## GRADING ### Semester Grade Calculation | Assignment | Percentage | |------------|------------| | Projects | 36% | | Exams | 30% | | Homework | 24% | | Ut Prosim | 5% | | Attendance/Participation | 5% | ### Attendance/Participation Attendance in class is strongly encouraged. A portion of your grade is designated for in-class participation in the course. All students will have two attendance drops to provide a cushion in the event of illness or emergency. Excused absences will not be monitored or approved unless there is an extenuating circumstance. In-class activities do not need to be made up if you miss a class, however you are responsible for learning the content. If you miss more than two weeks of school at a time, you should communicate with the Dean of Students office and notify your instructor with the proper documentation. ### Ut Prosim The university motto is Ut Prosim, which means _"That I May Serve"_. In this spirit, we aim to also serve the software engineering and computing community at Virginia Tech as stakeholders in the Computer Science department and the University. To embody this, part of your course grade will be determined by service to the department. Students must complete **_five_** service activities to support ongoing work in the department or university. Examples of activities may include participating in a research study, attending a department seminar, or other approved event on campus. Applicable events will also be communicated to students on the Ut Prosim GitHub Discussion. To report a completed activity for Ut Prosim, please fill out [this form](https://forms.gle/1nLxasXGkw8d6hMH9) _for each_ service activity. You will be contacted if a reported activity does not qualify. ### Grading Scale This course uses the following grading scale: | Low | Grade | High | |-----|-------|------| | 93.0 ≤ | A | < 100.0 | | 90.0 | A- | < 93.0 | | 87.0 ≤ | B+ | < 90.0 | | 83.0 ≤ | B | < 87.0 | | 80.0 ≤ | B- | < 83.0 | | 77.0 ≤ | C+ | < 80.0 | | 73.0 ≤ | C | < 77.0 | | 70.0 ≤ | C- | < 73.0 | | 65.0 ≤ | D | < 70.0 | | 0 ≤ | F | < 65.0 | ## COURSE POLICIES ### Late Assignments All assignments are required to be submitted by 11:59pm on the specified due date. On GitHub, the teaching staff will be able to see your latest submissions to a project. Therefore, if you make any changes to your repository after the on-time deadline, your project will be graded as late. **Late submissions without a valid excuse will receive a -25% deduction per day** (i.e., you have four days to submit an assignment). Unless otherwise specified, all exercises should be completed on your own. ### Student Conduct Students are expected to be respectful of classmates and teaching staff (see [Netiquette](#netiquette)). ### Student Concerns Please inform your instructor as soon as possible of anything that may prevent you from completing coursework and exams as well as any other concerns that you may have. ### Pandemic and Coronavirus Students are expected to attend class and participate in all course activities. Mask requirements in class for students and teaching staff will follow the university policy. Attendance is strongly encouraged—however, if you feel sick, test positive for COVID-19, or have been exposed to someone who tested positive: DO NOT COME TO CLASS! Contact the instructor to make-up any missed work. ### AI Policy Students are permitted to use generative AI tools for certain assignments in this course. AI usage is not enforced, please contact the instructor if you prefer not to use them for a substitute assignment. The primary AI tools required for this class will be [Opencode](https://opencode.ai/) for an agentic harness leveraging the models provided by [Virginia Tech's Advanced Research in Computing](https://www.docs.arc.vt.edu/ai/040_coding_agents.html). More details about the class AI policy are available at [AI_POLICY.md](./AI_POLICY.md) ### Course Evaluations There will be several opportunities to provide feedback on the course throughout the semester. The end-of-semester Student Perceptions on Teaching (SPOT) surveys will also provide an opportunity to evaluate the course and instructor. Please take advantage of these opportunities to help improve this and future iterations of CS3704. ### Netiquette Netiquette is the term used to describe the special set of rules for online communication. Higher education provides you with a training ground prior to entry into the work environment for your chosen career. You will use many of the following rules of “netiquette” when you are communicating with colleagues, your supervisor, or clients in the working world. Please observe etiquette when communicating with the teaching staff and your peers throughout the duration of this course. #### Professionalism Students are expected to conduct themselves in a respectful and professional manner at all times. Students are expected to act professionally both in person and electronically with all members of the teaching staff and their classmates. Communication, both written and verbal, should be respectful and should never include derogatory comments about yourself or others. All criticism (of yourself, the course, instructor, TAs, fellow students, resources, etc.) should be constructive and provide feedback for improvement. Guidelines for electronic communication are listed in the section below. Report any unprofessional behavior by a class member (including the TAs) to the instructor. Unprofessional electronic communication on course forums may result in suspension from the course forum and possible grade penalties. Unprofessional in-person behavior, including a lack of participation, will result in a conference with the instructor and possible grade adjustments for all involved parties. You should have the same tone of professionalism in all of your submitted work (e.g., code documentation, variable names, git commits). #### Electronic Communication We look forward to receiving emails and message board posts about any questions you have about the class, materials, exams, and exercises. Before sending an email, try to find the answer to the question by using various references already available to you: * If the question is related to class administration, check the syllabus or schedule. * If the question is related to recent information, check previous emails and posts from the teaching staff. * If the question is project or exam related, check the lecture slides to see if it has already been answered. Also, read the syllabus. * General Questions: If you have a general question about an exercise or project, contact the instructor. * Grade-Related Questions: If you have a question specific to you or your grade, email it to the TA. * If you have a question that is beyond the scope of an email, consider coming to office hours or scheduling an appointment with a member of the teaching staff. * Please spell check and correct spelling/grammatical errors. The tone of email or communication messages should be professional. Re-read your message before you press “Send”. If you have several questions or items, please number them for ease of reading. The response will also be easier to understand. ## UNIVERSITY POLICIES ### Academic Integrity and Honesty Students are required to comply with the university policy on academic integrity found in the Code of Student Conduct found at https://honorsystem.vt.edu/honor_code_policy_test.html All members of the University community, students, faculty and other employees, have the responsibility to report academic misconduct to the appropriate authority. All work that you turn in for grading must be your own! This means that all work must be an independent and individual creation by you or in the case of paired/team assignments; all work must be an independent and individual creation by you and your assigned partner or teammates. For some assignments your work may be assisted by AI, but no completely generated AI content should be submitted without modifications or review by students. Any attempt to gain an unfair advantage in grading, whether for yourself or another, is a violation of academic integrity. You may only work on an assignment with another student(s) in the class if explicitly stated in the assignment. #### Why is Academic Integrity Important? (Adapted from Matt Stallmann, Sarah Heckman, and Mitchell Wand) Would you want to fly in a plane whose controller software was designed and implemented by a group of people who had never demonstrated the persistence, attention to detail, and ability to deal with negative feedback from compilers, linkers, etc., that it takes to design, implement, and debug a program on their own? Academic misconduct affects you, your peers, the CS department, the university, all students who have ever graduated from VT with a CS degree, and all users of software products to which you contribute. When you receive a degree from Virginia Tech: The degree represents the university’s certification that you have demonstrated certain skills and knowledge in your degree program. Your grade in a course represents the instructor’s certification that you have demonstrated certain skills and knowledge in the specific course. When an employer sees your degree from Virginia Tech, they expect you to be able to demonstrate certain skills and knowledge. If a student graduates with a CS degree and performs poorly, the value and reputation of a CS degree from VT is negatively affected. In industry, intellectual property (IP) rights are crucial in software and product development. Rules regarding IP are similar to rules outlining academic integrity. Employees who “cheat” or violate copyrights or other IP rights can cost the employer large sums of money. In addition, even though you will likely work on a team in industry, completion of the CS degree program includes demonstrating skills to work effectively on teams. For example, students should demonstrate well-developed individual skills, integrity to take responsibility for one’s own work, and the ability to recognize clear boundaries between one’s own contributions and those of others. What are the Consequences of Academic Misconduct? Students who commit an academic integrity violation on any course deliverable will receive up to a -50% for the assignment! Violating the Academic Integrity Policy is worse than not turning in the item. All cases of academic misconduct will be reported to the Office of Student Conduct. #### Honor Pledge The Undergraduate Honor Code pledge that each member of the university community agrees to abide by states: _“As a Hokie, I will conduct myself with honor and integrity at all times. I will not lie, cheat, or steal, nor will I accept the actions of those who do.”_ Students enrolled in this course are responsible for abiding by the Honor Code. A student who has doubts about how the Honor Code applies to any assignment is responsible for obtaining specific guidance from the course instructor before submitting the assignment for evaluation. Students are strongly discouraged from misusing sites such as Chegg and CourseHero, as well as misusing ChatGPT and other Generative Artificial Intelligence. Students are strongly encouraged to consult their faculty members regarding the use of such outside materials as the misuse of these sources may constitute a violation of the Honor Code. Ignorance of the rules does not exclude any member of the University community from the requirements and expectations of the Honor Code. Your signature/name (written or electronic) on any exam indicates: “I have neither given nor received unauthorized aid on this exam” ### ChatGPT and AI-Based Systems Students are strongly discouraged from misusing ChatGPT and other Generative Artificial Intelligence platforms. However, certain assignments will require students to use popular AI programming assistants. Students are strongly encouraged to consult Dr. Brown regarding the use of such outside materials as the misuse of these sources may constitute a violation of the Honor Code. ### Non-Discrimination Policy Virginia Tech provides equality of opportunity in education and employment for all students and employees. Accordingly, Virginia Tech affirms its commitment to maintain a work environment for all employees and an academic environment for all students that is free from all forms of discrimination. Discrimination based on race, color, religion, creed, sex, national origin, age, disability, veteran status, or sexual orientation is a violation of state and federal law and/or Virginia Tech policy and will not be tolerated. Harassment of any person (either in the form of quid pro quo or creation of a hostile environment) based on race, color, religion, creed, sex, national origin, age, disability, veteran status, or sexual orientation also is a violation of state and federal law and/or Virginia Tech policy and will not be tolerated. Retaliation against any person who complains about discrimination is also prohibited. Virginia Tech’s policies and regulations covering discrimination, harassment, and retaliation may be accessed at https://policies.vt.edu/assets/1025.pdf or https://oea.vt.edu/harassment-discrimination/discrimination.html. Any person who feels that they have been the subject of prohibited discrimination, harassment, or retaliation should contact the Office for Equity and Accessibility at 540-231-2010. ### Supporting Fellow Students in Distress As members of the Virginia Tech community, we each share a personal responsibility to express concern for one another and to ensure that this classroom and the campus as a whole remains a safe environment for learning. Occasionally, you may come across a fellow classmate whose personal behavior concerns or worries you. When this is the case, you are encouraged to report this behavior to the Virginia Tech Dean of Students Complaints and Concerns website. Although you can report anonymously, it is preferred that you share your contact information so they can follow-up with you personally. ### Trans-Inclusive Statement In an effort to affirm and respect the identities of transgender students in the classroom and beyond, please contact me if you wish to be referred to using a name and/or pronouns other than what is listed in the student directory. ## SYLLABUS MODIFICATION STATEMENT This syllabus represents a flexible agreement. It outlines the topics we will cover and the order we will cover them in. Dates for assignments represent the earliest possible time they would be due. The pace of the class depends on student mastery and interests. Thus minor changes in the syllabus can occur if we need to slow down or speed up the pace of instruction.