Skip to content

Syllabus

Tuesdays & Thursdays, 12:30–1:50 PM · Integrated Science Center (ISC) 1353

1. Instructor and TA

  • Oscar Chaparro, Ph.D. (oscarch@wm.edu) — feel free to call me just Oscar
  • Office hours: Tuesdays & Thursdays, 10:45 AM–12:20 PM, ISC4 2325 (my office)
  • Teaching Assistant: Mustahid Hasan (mhasan02@wm.edu)
  • TA office hours: Mondays & Wednesdays, 11:00 AM–12:00 PM, via Zoom or in person (ISC4 2362) — no appointment needed.

2. Statement of purpose

Software is rarely built by a single person working alone; it's built by teams, over time, under changing requirements, and increasingly with the help of agentic AI tools. This course is about that reality. Each team will spend the semester contributing to a real, established open-source project, practicing modern software engineering: requirements analysis, design, implementation, testing, code review, continuous integration, release management, project management, and team coordination. The project will incorporate agentic AI assistants to support project evolution.

3. Learning objectives

By the end of this course, students will be able to:

  • Explain the fundamental concepts, processes, methodologies, and tools of modern software engineering.
  • Integrate agentic AI assistants into the development process responsibly and transparently, maintaining a documented record of AI usage.
  • Elicit, analyze, and specify software requirements for a realistic system, including functional and non-functional considerations.
  • Design and communicate software architectures and components using appropriate notations and design rationale.
  • Implement and test software systems using modern languages, frameworks, and continuous integration workflows.
  • Collaborate effectively in a team to manage a software project using agile methods, issue tracking, and version control.
  • Design and evaluate tests across various levels (e.g., unit, integration, and system), applying static/dynamic analysis tools if/when needed.
  • Evaluate trade-offs among design, implementation, and testing strategies, considering technical, economic, ethical, and legal dimensions.
  • Communicate engineering decisions clearly in written and oral form.
  • Reflect on the professional, ethical, and societal responsibilities of software engineers, including those specific to AI-assisted development.

4. Course description

An introduction to software engineering in the age of agentic AI, covering the principles and practices of the software development process, including requirements, design, implementation, testing, and maintenance. Students gain hands-on experience building and evolving software systems, using agentic AI tools responsibly, with emphasis on collaboration, accountability, and quality.

Prerequisites: CSCI 301 (Software Development) and CSCI 312 (Programming Languages).

5. Course Format

The course combines lectures with a semester-long team project.

Lectures pair core software engineering theory with practical techniques/tools and real-world case studies. The semester also includes periodic new tech showcases: short, walkable demo sessions where students present a modern software engineering tool or technology.

The project runs the full semester: six teams of 6–7 students each contribute to one real, established open-source project. The project follows a sprint-based structure mirroring real agile development practice, with teams periodically reporting progress through lightning talks, a written sprint report, and a final presentation.

Every team is self-organized: each team names a team lead and divides other roles as it sees fit. On a team with a graduate student, that student normally serves as team lead. Roles can change during the semester. All students, graduate and undergraduate, are expected to make direct, regular, and visible contributions to the project throughout the semester.

6. Research Study Participation

This semester, the course will host the research study "Evaluating the Impact of Generative AI Tools on Software Engineering Education," led by Prof. Denys Poshyvanyk together with Prof. Oscar Chaparro and Ph.D students Mustahid Hasan (TA), Nathan Wintersgill, and Daniel Otten (William & Mary IRB #IRB-2026-306, exempt). The goal is to understand how students use agentic AI tools while developing real software projects, so we can design better curricula and education strategies in the future.

Participation is voluntary and requires your signed consent. Whether or not you choose to participate, your coursework, requirements, and grading are the same: there is no academic penalty either way. Project assignment also works the same way for everyone: we will collect each team's top project preferences and do our best to match them, but no team is guaranteed its first choice, regardless of study participation. Students who choose not to participate are grouped on the same team, so that team's data can be cleanly excluded from the study.

If you participate, the study will collect: surveys at the start and end of the semester, your team's GitHub repository activity, written/survey reflections on your AI use, AI conversation/usage logs (project-related use only), and your team's Zulip communication logs.

All data is anonymized for research purposes: you will be identified only by a team and member code (e.g., "student 3.5"), never by name. Only the research team can access raw, non-anonymized data, which is securely stored.

7. Suggested books and notes

There is no required textbook. Readings for each class (book chapters, papers, articles, documentation) will be posted on the course site.

8. Online tools

We will be using the following tools:

9. Schedule and important dates

The full schedule (topics, sprints, and all key dates) is maintained on the Schedule page and is subject to change.

Important dates (college dates in bold):

  • Sep 4 — Last day to add/drop
  • Sep 22 — Sprint 0 lightning project talks
  • Oct 6 — New-tech showcase, round 1
  • Oct 8 — Fall Break begins (no class; official break runs Oct 8–11)
  • Oct 20 — Sprints 1–2 lightning project talks
  • Oct 26 — Last day to withdraw
  • Nov 3 — Election Day, no class
  • Nov 5 — New-tech showcase, round 2
  • Nov 17 & 19 — In-class project working sessions (instructor away)
  • Nov 25–29 — Thanksgiving Break, no class
  • Dec 1 & 3 — Final project presentations
  • Dec 4 — Last day of classes
  • Dec 9 — Final exam, 9:00 AM–12:00 PM
  • Dec 15 — Project due

10. Grading

No curves will be applied to any individual component or to the total score for the course.

  • Final exam (cumulative): 15%
  • Quizzes / participation (min. 70% completion): 5%
  • New-tech showcases (2 rounds, 5% each): 10%
  • Presentations: 15%
    • Lightning talks (2 rounds, 3% each): 6%
    • Final presentation: 9%
  • Project development (sprints): 55%
    • Sprint 0 — team/project setup & system learning: 9%
    • Sprint 1 — project development & release: 10%
    • Sprint 2 — project development & release: 12%
    • Sprint 3 — project development & release: 12%
    • Sprint 4 / Final — project development & release: 12%
  • Total: 100%

Notes:

  • Every team member is expected to make regular, visible contributions to the project throughout the semester (commits, code review, issue work, etc.) — not simply be carried by teammates. Individual project grades may be adjusted based on peer evaluation and GitHub contribution history when there is clear evidence of unequal contribution.
  • Bonus (up to 3%): awarded for things like a pull request merged upstream into the real open-source project (not just the team's fork), an exceptional new-tech showcase, or notable contribution to the broader project community beyond the team's own scope.
  • The internal breakdown of what's assessed within each sprint (e.g., code quality, engineering practice, AI logs, etc.) will be detailed on the course site.
  • Grading weights are the same for CSCI 435 and CSCI 535; graduate students are held to a higher bar within those same weights — see Project structure for specifics.

Grading scale (based on total score S):

Letter Range Letter Range
A S ≥ 95 C+ 77 ≤ S < 80
A- 90 ≤ S < 95 C 73 ≤ S < 77
B+ 87 ≤ S < 90 C- 70 ≤ S < 73
B 83 ≤ S < 87 D+ 67 ≤ S < 70
B- 80 ≤ S < 83 D 63 ≤ S < 67
D- 60 ≤ S < 63
F S < 60

11. Project structure: sprints, presentations, and showcases

The project unfolds across 5 sprints (S0–S4). Full detail on timing and exact expectations for each item below will be provided on the Sprints and Presentations pages. Briefly:

  • Sprint 0 — team/project setup & system learning — team formation, initial planning, and getting familiar with the codebase, small but meaningful change to the project that walks the team through most of the real software engineering steps (e.g., understanding the code, making the change, testing it, opening a pull request, getting it reviewed).
  • Sprints 1–4 — project development & release — each follows the same pattern: the team plans and prioritizes its backlog for the sprint, then builds, extends, fixes, or improves the system, producing a release with its full set of artifacts (issues, pull requests, code, tests, etc.), a short live demo, AI logs, a written report, and other relevant data.
  • Presentations — short check-ins (2 rounds) where each team briefly reports on its project's status, decisions, and plans, plus one final presentation at the end of the semester where each team presents its finished project in full.
  • New-tech showcases — short demo sessions (2 rounds) where students present a modern software engineering tool or technology.
  • Graduate students (CSCI 535): each sprint specifies a minimum number of tasks/issues for graduate students that is at least 10% higher than for undergraduates (CSCI 435), and graduate students are expected to give exceptional presentations/showcases, showing greater technical depth, handling audience questions thoughtfully, and delivering a stronger overall presentation.

12. Exams

The course has a final exam (Dec 9, 9:00 AM–12:00 PM), covering all topics from the semester. Exams are closed book/notes/electronics unless stated otherwise.

Strategies to prepare for the exam:

  • Attend lectures and participate in in-class discussion and quizzes.
  • Review the case studies and examples discussed for each topic.
  • Read the materials posted on the course site for each class.

13. Late policy, attendance, and communication

Students are expected to submit coursework on time and attend lectures. While attendance is not directly controlled, it is for your benefit — in the past, students who missed classes have had more trouble completing assignments and exams.

Given extraordinary circumstances that can affect coursework, students are encouraged to promptly communicate with me to make reasonable accommodations. I want to be supportive in any way I can, so please reach out if you're experiencing difficulties.

Late submissions include point deductions. A 2-hour grace period is given; after that, 10% is deducted from the grade for every day of late submission.

14. Lectures and participation

Active participation is expected: asking and answering questions, sharing what you're encountering on your own project, and contributing to in-class discussion and activities.

Attendance/participation is assessed through short, graded in-class quizzes; students must complete at least 70% of them across the semester for full credit on this component.

15. Academic integrity and team collaboration

All work is subject to the William & Mary Honor Code. Individual quiz responses must reflect each student's own understanding.

Team collaboration policy:

  • All work submitted by a team must be done by members of that team.
  • Every team member is expected to contribute directly to the project throughout the semester — writing code, reviewing changes, working issues, etc. — not simply rely on teammates to carry the work.
  • Collaboration across teams is fine at a conceptual level (e.g., sharing debugging tips), but must not involve sharing solutions or code that undermines the independent evaluation of each team's work.
  • If you're ever unsure whether something is acceptable collaboration, ask the instructor or the TA first.

16. Policy on the use of AI tools (AI logs)

Agentic AI coding tools are a required part of the standard project workflow, not just permitted.

Allowed uses:

  • Unrestricted use for software development tasks: coding, debugging, testing, documentation, brainstorming design ideas, generating test cases, exploring libraries, etc.
  • While AI tool use is unrestricted, the team must retain full ownership of the project — its code, design, artifacts, processes, and tools. Using AI output without reviewing and understanding it is not acceptable; every team member is expected to understand how the project works and how it has been developed.
  • AI tools may also be used for writing support (drafting, clarifying, editing reports), provided you remain the author of record and exercise critical judgment.

AI logs requirement:

  • An AI log is the record of an AI conversation with an AI tool — the prompts, responses, and tool used. Logs are pushed to the team's GitHub repository rather than submitted separately, and referenced from the related GitHub issue. Naming and structure conventions will be announced on the course site.
  • For each issue or sprint, include a short written rationale (in the pull request description or sprint report) explaining how AI output was used, especially when a suggestion was modified or rejected.
  • Submitting logs is required; missing logs may be penalized. Thin logs are not penalized.

Responsibility:

  • You are accountable for verifying all AI-generated output. AI tools can fabricate or misattribute information — errors in your submission remain your responsibility.
  • "Prompt → copy → paste" without meaningful review, modification, or attribution violates the Honor Code.

17. Academic support and accommodations

The Office of Student Success supports students' personal growth, development, engagement, and belonging by providing holistic guidance as they navigate their own W&M journey. It encompasses the offices of Academic Wellbeing, Care Support Services, and Student Accessibility Services.

  • For academic support such as tutoring, time management, study skills, and academic coaching, contact Academic Wellbeing at wm.edu/academicwellbeing (academicwellbeing@wm.edu).
  • William & Mary accommodates students with disabilities and qualifying diagnosed conditions following federal and state laws. Any student who needs an accommodation should contact Student Accessibility Services at (757) 221-2512 or sas@wm.edu.

18. Mental and physical well-being

William & Mary recognizes that students juggle different responsibilities and can face challenges that make learning difficult. Resources available at W&M include:

  • The W&M Counseling Center at (757) 221-3620. Services are free and confidential.
  • The W&M Health Center at (757) 221-4386.
  • The Dean of Students at (757) 221-2510, for additional support or resources.
  • Care Support Services at wm.edu/care (care@wm.edu), for interpersonal, academic, and wellness concerns.