Skip to main content Link Search Menu Expand Document (external link)

Syllabus

Modern generative artificial intelligence tools are astonishingly effective at generating code, given natural language specifications. The software engineering industry is rapidly adopting these tools to improve engineers’ productivity: instead of writing all of their code themselves, many engineers are now effectively “team leaders”, managing a “team” of artificial intelligence tools. In this course, students will get hands-on experience in using such artificial intelligence tools for software engineering in a semester-long course project. Topics will include agents, requirements elicitation and specification in the AI era, AI code generation and how to ensure that AI-generated code is correct, and discussions of how other traditional software engineering practices like code review and static analysis can help with AI-assisted software engineering.

Prerequisites

Officially, none. Students will be expected to know how to program well enough to understand and debug code generated by an AI tool. Students without significant prior exposure to software engineering concepts (e.g., in CS 490 or an internship) will be expected to do additional background reading.

Topics

  • How LLMs Work, “Vibe Coding”, and Agents
  • Requirements Elicitation and Specification in the AI Era
  • AI Code Generation and Correctness
  • Frontend Development with LLMs
  • Backend Development with LLMs
  • Testing with LLMs
  • Deployment Strategies
  • Code Review with LLMs
  • Static Analysis and LLMs
  • Traditional Software Engineering Practices in an AI-Assisted Context

Grading and Assignments

Your grade is composed of the following sub-scores (in no particular order):

  • 50%: Course Project (consisting of 7 sub-assignments, with the final submission worth 25% of the total course grade)
  • 18%: Reflection Essays
  • 32%: In-class Activities, Participation, and Professionalism

This class will be curved: when grading, I prefer to use the whole range available rather than scores in a tight range. That is, if an assignment is worth 10 points, I will give grades at all the points between 0 and 10. I will project your raw scores onto the final distribution once in the middle of the semester; you will be notified of your current projected class grade via email at this point.

Programming Projects and Other Assignments

There will be a semester-long course project that will involve a significant software development effort. Students will work in small, self-selected teams. The scale of the project will be intentionally absurd: it will be so much work that no reasonable professor could ask their students to write the code themselves. Instead, students will be expected to use AI models to generate most of the code. The project will involve using LLMs as part of every step of the engineering process, from requirements gathering to coding to testing to deployment.

As part of your submission for each assignment, you will be required to submit the logs of all of your interactions with your AI tools. Be sure to keep these logs. This page has information collected by the course staff about how to acquire the necessary logs from different model providers.

The course project is broken down into seven sub-assignments, with the final submission being the largest component.

Students will also complete several reflection essays throughout the semester, which are designed to encourage critical thinking about the use of AI in software engineering. These essays must be completed without the assistance of AI tools.

Textbook

This course has no required textbook. Students will make heavy use of generative AI tools via APIs, so a subscription to one of them is recommended. In particular, a web-based LLM is not sufficient, because students will be expected to run their LLMs in “agentic” loops, where an automated process (e.g., a test suite) provides feedback to the LLM until some condition is met. Student- or free-tier plans are often available. I expect students will need at least one of Claude Code, Cursor, OpenAI Codex, etc.

Topic-specific reading materials for software engineering topics (e.g., software architecture, various testing techniques, code review, etc.) will be provided; these will be officially optional, but strongly recommended for students who have not taken CS 490.

List of known student plans for AI tools:

Participation & Professionalism

Your participation & professionalism grade is based on your interactions with the instructors and TAs: in-class, on the course discussion forum, in office hours, etc.

Remote Participation

Generally this class does not support remote participation: teaching is much more effective, in my experience, when everyone is physically present. However, I understand that sometimes you are sick, traveling, or otherwise unable to come to class. I will arrange for remote participation in any particular lecture as long as you request it at least one hour in advance (if you’re sick or in some other emergency) or 24 hours in advance (if you’re traveling or otherwise planning to be unable to come to class). Notify the instructor via email if you need to participate in a particular class remotely.

Asking Questions

There is a course Discord server which you can use to ask (and answer) questions about any of the course topics or for help with the homework. Participating on Discord is optional, but if you do participate in a productive manner (especially by answering other student’s questions!), it will have a positive impact on your participation score.

Exams

This course does not have traditional exams. Your understanding will be assessed through your project work, reflection essays, and in-class participation.

BS vs MS/PhD students:

MS/PhD students will be expected to 1) work in teams only with other MS students, and 2) choose more ambitious course projects. I will also provide a set of readings in the current literature on this topic throughout the semester, called “Special topics readings” on the calendar; for the undergrads, these readings will be optional, but for the graduate students they will be required. I will also require an additional reflective essay from each graduate student on one of the papers from throughout the semester, to be presented to the whole class during one of the last class sessions. Otherwise, all students will be held to the same standards.

Collaboration Policy

Collaboration is generally encouraged in this course, as is consulting online resources. You are permitted to copy small amounts of code from any source except someone else’s copy of an assignment, as long as you cite your source. “Someone else’s copy of an assignment” also includes students not currently enrolled in the course - e.g., students who took this class in previous semesters or took classes that used similar projects at other institutions. To make this more clear, here are some examples of acceptable and unacceptable collaboration on assignments in this course:

Acceptable collaborations:

  • Discuss problems/solutions/anything with any number of other students (as long as you don’t look at each other’s code or text).
  • Copy a short (about 10 lines or fewer - use your judgment) snippet from stackoverflow.com or a similar source, as long as you include a comment with the source URL.
  • Copy code written by one of your teammates during a group project for another part of the group project.
  • Copy code from the output of a generative AI tool such as ChatGPT that you prompted yourself (as long as you include a log of your interaction with your assignment submission).

Unacceptable collaborations:

  • Copy text from another student’s reflection essay.
  • Copy code from another group on a group project.
  • Copy any code or text from the internet without citing your source.
  • Copy code from the output of a generative AI tool (such as ChatGPT) without including a log of your interaction with the AI tool, or otherwise implying that it is your own work.
  • Copy code from the output of a generative AI tool prompted by someone other than you or your teammates, for the group project.

These rules are intended to mimic what is acceptable in industry when working as a software engineer: using the resources available to you, such as your teammates and the wider internet, is always allowed. But, it would be illegal to copy code from a competing company working on a similar product.

Generative AI Policy

You are permitted (or, sometimes, even required) to use generative AI tools on many assignments in this course. Whenever you do, you are required to include a log of your interaction with the tool: in particular, you must ensure that the course staff has access to both your prompts and the model’s responses while grading.

For assignments or parts of assignments where you are explicitly forbidden from using a generative AI tool (e.g., on the reflection essays), using one is a violation of the collaboration policy. The course staff have intentionally limited the number of times that we ask you not to use generative AI tools; please respect it. If you are caught using a generative AI tool for such an assignment, you will at a minimum fail the course.

Consequences of Violating the Collaboration Policy

(From the University)

“Academic Integrity is the cornerstone of higher education and is central to the ideals of this course and the university. Cheating is strictly prohibited and devalues the degree that you are working on. As a member of the NJIT community, it is your responsibility to protect your educational investment by knowing and following the academic code of integrity policy that is found at: http://www5.njit.edu/policies/sites/policies/files/academic-integrity-code.pdf.

Please note that it is my professional obligation and responsibility to report any academic misconduct to the Dean of Students Office. Any student found in violation of the code by cheating, plagiarizing or using any online software inappropriately will result in disciplinary action. This may include a failing grade of F, and/or suspension or dismissal from the university. If you have any questions about the code of Academic Integrity, please contact the Dean of Students Office at dos@njit.edu”

Late Policy

Most assignments may be submitted late, with an escalating “Fibonacci” penalty for each day beyond the due date. More specifically:

Days LatePenalty
12%
23%
35%
48%
513%
621%
nfib(n + 2)%

“Days Late” is always computed AoE, so if the assignment is due on a Monday and you submit it while it is still Thursday anywhere on Earth (e.g., at 5am Friday in Newark), you will be assessed a 5% penalty (3 days late).

The final project submission may not be submitted late, because it is due at the end of the semester. After that point, the course is over and I will be computing final grades. No exceptions to this policy will be made.

Research

Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.

Students interested in considering undergraduate research should make an appointment with the professor to talk about it. I am happy to discuss independent study projects, paid research work over the summer, research work for credit, graduate school, or any other research related topic. To make an appointment with the professor, send a calendar invitation at a time when my calendar shows that I’m free during “regular business hours” (roughly 9-5, Monday through Friday). Include enough information in the invite so that I know why you want to talk to me.

Acknowledgments

This course is inspired by and indebted to similar courses offered at other institutions, including those at the University of Washington, University of Virginia, University of Maryland, and Carnegie Mellon University.



© 2022-2026 Martin Kellogg, Andrew Begel, Austin Henley, Jonathan Bell, Adeel Bhutta and Mitch Wand. Released under the CC BY-SA license