Syllabus
Note: This is a tentative syllabus. This course is actively under development and both topics and schedule are subject to change.
21 Mandatory Reporting of Disclosures of Inappropriate Behavior |
1 Modern Software Development with GenAI (CMSC 389A)
Term: Fall, 2026
Professor: Anwar Mamat (he/him)
Email: anwar@umd.edu
Credits: 3
Prerequisites: a grade of C or better in CMSC216 and CMSC250.
Course Dates: From August 31 to December 12
Lectures: TTh, 12:30-1:45pm, CSI 1121
2 Course Description
Software engineering is being reshaped by AI, and CMSC 389A puts you at the forefront of that shift.
This course teaches you to build real-world software applications with AI as a core part of the process, not an afterthought. You’ll work across the full software lifecycle — system design, rapid implementation, automated testing, and cloud deployment — while learning to architect and integrate intelligent models directly into the systems you build. Alongside this, you’ll strengthen core software engineering fundamentals: version control, testing, architecture, and security, all practiced with AI woven into each stage. Throughout the course, you’ll develop hands-on fluency with AI-powered tools while maintaining a critical eye toward their limitations, correctness, ethics, and responsible use.
By the end of the term, you’ll be equipped to design, build, and ship complex, AI-native systems from the ground up.
3 Required Software and AI Tools
Students are required to purchase their own Claude Code subscription at the Pro level ($20/month) for the duration of the course. This is a required course cost. If this creates a financial hardship, contact course staff as soon as possible to discuss your situation.
4 Learning Outcomes
After successfully completing this course, you will be able to:
AI-Assisted Coding — Use AI coding assistants productively for design, code generation, refactoring, and debugging — and critically evaluate when to leverage an LLM versus solving problems manually.
Prompt Engineering — Apply advanced prompting techniques (k-shot, chain-of-thought, RAG, tool calling, self-consistency, reflexion) to get reliable, high-quality outputs from LLMs.
Retrieval-Augmented Generation (RAG) — Extend AI knowledge with external information using chunking, embeddings, semantic and lexical search, and vector databases.
Full-Stack Development — Build and deploy web applications with a modern stack using AI to accelerate every phase.
Modular Design — Decompose problems into well-structured classes and modules using design patterns to build maintainable, modular software.
Testing & Quality Assurance — Write and autogenerate unit, integration, and regression tests; use TDD; generate property-based and coverage-based tests; evaluate AI-generated test suites for correctness and completeness.
Version Control & Collaboration — Use Git effectively for branching, pull requests, code review, and team-based workflows.
Code Review — Perform manual code reviews and evaluate AI-assisted code review tools.
Security — Apply static analysis and linters to identify vulnerabilities, and remediate issues with AI assistance.
Agentic Workflows — Build and use autonomous coding agents, custom MCP servers, and multi-agent systems for development automation.
Cloud & Deployment — Containerize applications with Docker; deploy to cloud platforms; set up CI/CD pipelines.
Documentation — Write clear technical documentation including design docs and API references; use AI to generate and improve documentation while ensuring accuracy.
Critical Evaluation — Assess AI-generated code for correctness, security, and maintainability; document AI successes and failures; understand limitations, ethical concerns, and responsible use policies.
5 Topics
The following list of lecture topics will vary according to the pace of the course:
Foundations: software engineering overview, GenAI landscape, and development environment setup
Version control with Git and GitHub: branching, pull requests, and team workflows
Prompt engineering: zero-shot, k-shot, chain-of-thought, tool calling, and reflexion
Retrieval-Augmented Generation (RAG)
AI-assisted development with Claude Code
Web frameworks: FastAPI
Testing and code quality: pytest, TDD, AI-generated tests, and coverage analysis
Databases and cloud tools
Software architecture: design patterns and code organization
Autonomous coding agents and Model Context Protocol (MCP)
Multi-agent workflows: concurrent agents, git worktrees, and agentic environments
AI-powered code review: manual vs. AI review and automated PR workflows
Application security risks, static code analysis, security scanning, and AI-assisted vulnerability remediation
Deployment: Docker, CI/CD pipelines (GitHub Actions), and cloud deployment
Ethical considerations: IP, energy consumption, workforce impact, and responsible AI use
6 Course Structure
The course will consist of in-person lectures. There are two midterms, a final, several projects, a final project, lecture exercises, and several quizzes.
7 Tips for Success in this Course
Participate. Lectures include many hands-on exercises. Engage deeply, ask questions, and talk about the course content with your classmates. You can learn a great deal from discussing ideas and perspectives with your peers and professor. Participation can also help you articulate your thoughts and develop critical thinking skills.
Stay current. The technology is moving fast. Stay current enough to recognize important changes, experiment with them, and understand which ones actually matter for software engineering. Build a level of expertise that remains valuable even as individual tools change.
Work with your peers. Most projects are pair or group projects. Take responsibility and learn to work with your peers. It is an important skill because you will be working with people for your entire work life.
8 Policies and Resources for Undergraduate Courses
It is our shared responsibility to know and abide by the University of Maryland’s policies that relate to all courses, which include topics like:
Academic integrity
Student and instructor conduct
Accessibility and accommodations
Attendance and excused absences
Grades and appeals
Copyright and intellectual property
Please visit the Office of Undergraduate Studies’ full list of campus-wide policies and follow up with the course staff if you have questions.
9 Course Guidelines
Names/Pronouns and Self-Identifications: The University of Maryland recognizes the importance of a diverse student body, and we are committed to fostering inclusive and equitable classroom environments. We invite you, if you wish, to tell us how you want to be referred to in this class, both in terms of your name and your pronouns (he/him, she/her, they/them, etc.). Keep in mind that the pronouns someone uses are not necessarily indicative of their gender identity. Visit https://trans.umd.edu to learn more.
Additionally, it is your choice whether to disclose how you identify in terms of your gender, race, class, sexuality, religion, and dis/ability, among all aspects of your identity (e.g., should it come up in classroom conversation about our experiences and perspectives) and should be self-identified, not presumed or imposed. Course staff will do their best to address and refer to all students accordingly, and we ask you to do the same for all of your fellow Terps.
Communication with Instructor: Email: If you need to reach out and communicate with the instructor, please email me at anwar@umd.edu. Please DO NOT email questions that are easily found in the syllabus or on ELMS (i.e. When is this assignment due? How much is it worth? etc.) but please DO reach out about personal, academic, and intellectual concerns/questions.
ELMS: IMPORTANT announcements will be sent via ELMS messaging. You must make sure that your email & announcement notifications (including changes in assignments and/or due dates) are enabled in ELMS so you do not miss any messages. You are responsible for checking your email and Canvas/ELMS inbox with regular frequency.
Communication with Peers: With a diversity of perspectives and experience, we may find ourselves in disagreement and/or debate with one another. As such, it is important that we agree to conduct ourselves in a professional manner and that we work together to foster and preserve a classroom environment in which we can respectfully discuss and deliberate controversial questions. We encourage you to confidently exercise your right to free speech—bearing in mind, of course, that you will be expected to craft and defend arguments that support your position. Keep in mind that free speech has its limits and this course is NOT the space for hate speech, harassment, and derogatory language. We will make every reasonable attempt to create an atmosphere in which each student feels comfortable voicing their argument without fear of being personally attacked, mocked, demeaned, or devalued.
Any behavior (including harassment, sexual harassment, and racially and/or culturally derogatory language) that threatens this atmosphere will not be tolerated. Please alert the instructor immediately if you feel threatened, dismissed, or silenced at any point during the semester and/or if your engagement in discussion has been in some way hindered by the learning environment.
10 Grades
All assessment scores will be posted on the course ELMS page.
Late work will not be accepted for course credit so please plan to have it submitted well before the scheduled deadline.
Any formal grade disputes must be submitted in writing within one week of receiving the grade. Final letter grades are assigned based on the percentage of total assessment points earned. To be fair to everyone, I have to establish clear standards and apply them consistently, so please understand that being close to a cutoff is not the same as making the cut (89.99 ≠ 90.00). It would be unethical to make exceptions for some and not others.
Your final course grade will be determined according to the following percentages:
Component |
| Percentage |
Projects |
| 40% |
Final Project |
| 15% |
Quizzes |
| 5% |
Midterm 1 |
| 10% |
Midterm 2 |
| 10% |
Final Exam |
| 10% |
In Class Participation and Exercises |
| 10% |
Final letter grades are assigned following this grading scheme:
A+ | [100,97] | B+ | (90,87] | C+ | (80,77] | D+ | (70,67] |
|
|
A | (97,94] | B | (87,84] | C | (77,74] | D | (67,64] | F | (60,0] |
A- | (94,90] | B- | (84,80] | C- | (74,70] | D- | (64,60] |
|
|
This table uses interval notation, so "(x,y]" means any number less than x and greater than or equal to y.
11 Assignments
There will be several programming Assignments, often with a full week given for completion and submission (e.g., if it is assigned on a Tuesday it will be due the following Tuesday at 11:59pm EST unless otherwise noted). Assignments will be submitted through Gradescope.
12 Quizzes & Surveys
There will be many quizzes and surveys. These will be administered through ELMS. Completed surveys receive full credit. Instructors reserve the right to reject survey responses that are not considered thoughtful.
13 Midterms
There will be two Midterms.
Midterm 1: TBD
Midterm 2: TBD
14 Project
There will be a course Project. The project description will be posted approximately one month after classes start.
15 Computing Resources
Programming projects can be developed on your own system and submitted via Gradescope, which will provide virtual machines suitably configured for running your code. All project submissions must work correctly on the Gradescope VMs, and your projects will be graded solely based on their results on those machines. Because language and library versions may vary with the installation, in unfortunate circumstances a program might work perfectly on your system but not work at all on the VMs. Thus we strongly recommend that as you develop any project, you should run it several days early on Gradescope to have time to address any compatibility problems.
16 Outside-of-class communication with course staff
Course staff will interact with students outside of class in primarily two ways: office hours, and electronically via e-mail. The use of Piazza and/or other classroom forums is allowed, and discussion amongst the students is encouraged, as long as the discussion is about the concepts and not the solutions.
Personalized assistance, e.g., with assignments or exam preparation, will be provided during office hours. Office hours for the instructional staff will be posted on the course web page.
Additional assistance will be provided via discussion on Piazza. You may use this forum to ask general questions of interest to the class as a whole, e.g., administrative issues or problem set clarification questions. The course staff will monitor it on a daily basis, but do not expect immediate answers to questions. Please do not post publicly any information that would violate the university academic integrity policy (e.g., problem set code).
Personal e-mail to TAs should be reserved for issues that cannot be handled by the above methods.
Important announcements will be made in class or on the class web page, and via Piazza.
17 Excused Absences
Any student who needs to be excused for an absence from a single lecture due to illness shall:
Make a reasonable attempt to inform the instructor of their illness prior to the class.
Upon returning to the class, present their instructor with a self-signed note attesting to the date of their illness. Each note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University officials is prohibited under Part 9(h) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action.
Missing an 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 close relative’s funeral) will be excused so long as the absence is requested in writing at least 2 days in advance and the student includes documentation that shows the absence qualifies as excused; a self-signed note is not sufficient as exams are Major Scheduled Grading Events. For this class, such events are the final project assessment and midterms, which will be due on the following dates:
Midterm 1: TBD
Midterm 2: TBD
Final Project Assessment: December 12
The final exam is scheduled by the University Registrar.
For medical absences, you must furnish documentation from the health care professional who treated you. This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities. In addition, it must contain the name and phone number of the medical service provider to be used if verification is needed. No diagnostic information will ever be requested. Note that simply being seen by a health care professional does not constitute an excused absence; it must be clear that you were unable to perform your academic duties.
It is the University’s policy to provide accommodations for students with religious observances conflicting with exams, but it is your responsibility to inform the instructor in advance of intended religious observances. If you have a conflict with one of the planned exams, you must inform the instructor prior to the end of the first two weeks of the class.
For missed exams due to excused absences, the instructor will arrange a makeup exam. If you might miss an exam for any other reason other than those above, you must contact the instructor in advance to discuss the circumstances. We are not obligated to offer a substitute assignment or to provide a makeup exam unless the failure to perform was due to an excused absence.
The policies for excused absences do not apply to project assignments. Projects will be assigned with sufficient time to be completed by students who have a reasonable understanding of the necessary material and begin promptly. In cases of extremely serious documented illness of lengthy duration or other protracted, severe emergency situations, the instructor may consider extensions on project assignments, depending upon the specific circumstances.
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.
If you experience difficulty during the semester keeping up with the academic demands of your courses, you may consider contacting the Learning Assistance Service in 2201 Shoemaker Building at (301) 314-7693. Their educational counselors can help with time management issues, reading, note-taking, and exam preparation skills.
18 Students with Disabilities
Students with disabilities who have been certified by Disability Support Services as needing any type of special accommodations should see the instructor as soon as possible during the schedule adjustment period (the first two weeks of class). Please provide DSS’s letter of accommodation to the instructor at that time.
All arrangements for exam accommodations as a result of disability must be made and arranged with the instructor at least three business days prior to the exam date; later requests (including retroactive ones) will be refused.
19 Academic Integrity
The Campus Senate has adopted a policy asking students to include the following statement on each examination or assignment in every course:
I pledge on my honor that I have not given or received any unauthorized |
assistance on this examination (or assignment). |
Consequently, you will be requested to include this pledge on each exam and assignment. Please also carefully read the University’s policies regarding acceptable use of computer accounts and academic integrity.
This course recognizes that generative AI is an important part of modern software engineering. The use of generative AI tools is permitted and encouraged for assignments and projects in this course, unless a specific assignment or exam explicitly states otherwise. AI tools may be used for activities such as brainstorming, understanding concepts, generating or modifying code, debugging, writing tests, explaining error messages, and improving documentation.
However, using AI does not transfer responsibility for your work to the AI system. You are responsible for everything you submit. You must understand the code and other material you submit, verify that it is correct, and ensure that it satisfies the assignment requirements. AI-generated content can be incorrect, insecure, incomplete, or misleading, and you are expected to critically evaluate its output.
You may work with AI tools, but you may not misrepresent the work of another person as your own or use AI to circumvent explicit restrictions stated for a particular assignment or examination. When an assignment specifies that certain tools, resources, or techniques are prohibited, those restrictions apply regardless of whether the information is obtained from a person, an AI system, or another source.
19.1 Appropriate Use of AI
Examples of appropriate uses of AI include:
Asking an AI system to explain a programming concept.
Asking for explanations of error messages.
Brainstorming possible approaches to a problem.
Asking for examples that help you understand a concept.
Generating code that you subsequently review, test, and modify.
Asking AI to help identify bugs or suggest improvements to your code.
Generating or improving test cases.
Asking AI to explain unfamiliar code.
Using AI as a programming assistant while developing a project.
The purpose of allowing AI is not to eliminate the need for learning. You should use AI as a tool to improve your understanding and productivity, not as a substitute for understanding the material.
19.2 Your Responsibility for AI-Generated Work
You are responsible for verifying AI-generated content before submitting it. In particular, you should:
Understand the code and design you submit.
Test generated code rather than assuming that it works.
Check AI-generated explanations and factual claims.
Look for security, correctness, and edge-case problems.
Ensure that your submission actually satisfies the assignment specification.
Be able to explain and defend your work if asked.
An AI system may produce plausible but incorrect answers, fabricate APIs or references, introduce subtle bugs, or generate solutions that do not satisfy the requirements of an assignment. "The AI wrote it" is not an excuse for incorrect or inappropriate work.
19.3 Collaboration and Sharing
Assignments and projects are individual unless an assignment explicitly states otherwise. You may discuss general course concepts, programming languages, tools, and techniques with other students. However, you may not share your assignment solutions with other students or allow another student to submit your work as their own.
In particular, you may not:
Give another student your completed or partially completed solution.
Ask another student to complete a significant portion of your assignment.
Submit another student’s work as your own.
Allow another student access to your assignment files for the purpose of copying or submitting your work.
Post assignment solutions to publicly accessible sites, such as GitHub, when doing so would allow other students to use them.
Copy or incorporate another person’s work without appropriate acknowledgment or permission.
Circumvent an assignment’s explicit restrictions on collaboration, resources, or AI tools.
These restrictions apply regardless of whether the work is transferred electronically, verbally, or through another medium.
19.4 Use of External Sources
You may use publicly available resources and AI tools unless an assignment specifically restricts their use. When an assignment requires you to cite external sources, you must properly identify those sources. This includes sources discovered or used through an AI system.
You should not assume that AI-generated citations or references are accurate. Verify citations before using them.
19.5 Examinations and Quizzes
Examinations and quizzes may have different rules from assignments and projects. The instructions for each examination or quiz will specify whether AI tools, collaboration, notes, external websites, or other resources are permitted. You are responsible for following those instructions exactly.
Unless explicitly permitted, using AI or other external assistance during an exam or quiz constitutes unauthorized assistance and is a violation of the Code of Academic Integrity.
19.6 Violations of the Code of Academic Integrity
Violations may include, but are not limited to:
Submitting another person’s work as your own.
Giving your work to another student for submission as their own.
Copying another student’s solution.
Misrepresenting the source or authorship of submitted work.
Sharing assignment solutions in a way that facilitates academic dishonesty.
Using AI or other external resources in violation of explicit assignment, quiz, or examination restrictions.
Failing to properly acknowledge required external sources.
Allowing another student unauthorized access to your assignment or project.
Violating University policies governing computer accounts or other University resources.
If you have any question about whether a particular use of AI, collaboration, or another resource is permitted, ask the instructional staff before submitting your work. When in doubt, ask.
Violations of the Code of Academic Integrity may be referred to the University’s Student Honor Council and may result in significant academic penalties.
The goal of this policy is not to prevent you from using the tools that modern software engineers use. Rather, it is to ensure that you use those tools responsibly, honestly, and in a way that supports your learning.
AI can help you write software, but you are responsible for the software you submit.
20 Course Evaluations
If you have a suggestion for improving this class, don’t hesitate to tell the instructor or TAs during the semester. You may submit feedback anonymously using this form. If you are uncomfortable contacting the instructor or if issues are not addressed to your satisfaction, you may use the CS Class Concern Form.
At the end of the semester, please provide your feedback using the campus-wide Student Feedback on Course Experiences system. Your comments will help make this class better.
21 Mandatory Reporting of Disclosures of Inappropriate Behavior
Instructors and teaching assistants are designated as Responsible University Employees by the University and are required to promptly notify the Title IX Coordinator when they become aware of any type of sexual misconduct. They are not confidential resources.
If you wish to speak with someone confidentially, please contact one of UMD’s confidential resources, such as CARE to Stop Violence (located on the Ground Floor of the Health Center) at 301-741-3442 or the Counseling Center (located at the Shoemaker Building) at 301-314-7651.
You may also seek assistance or supportive measures from UMD’s Title IX Coordinator, Angela Nastase, by calling 301-405-1142, or emailing titleIXcoordinator@umd.edu. To view further information on the above, please visit the Office of Civil Rights and Sexual Misconduct’s website at ocrsm.umd.edu.
22 Right to Change Information
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, the instructors reserve the right to change any information on this syllabus or in other course materials. Such changes will be announced and prominently displayed at the top of the syllabus.