Syllabus
Note: This is a tentative syllabus. This course is actively under development and both topics and schedule are subject to change.
1 Modern Software Development with GenAI (CMSC 389A)
Term: Fall, 2026
Professor: Anwar Mamat (he/him)
Email: anwar@umd.edu
Credits: 3
Prerequisite: a grade of C or better in CMSC216 and CMSC250.
Course Dates: From August 31 to December 21
Lectures: TTh, 12:30-1:45pm, CSI 1121
2 Course Description
The software engineering landscape is shifting rapidly, and CMSC 389A is designed to ensure you are leading the charge. You will master the two most critical skills for the modern developer: using AI to supercharge your own productivity and engineering the next generation of AI-powered software.
The course dives deep into full-stack development, showing you how to leverage AI tools across the entire software lifecycle — from initial system design and rapid coding to automated testing and cloud deployment — while teaching you how to architect and integrate intelligent models directly into your own applications. Students learn core software engineering principles, including version control, testing, architecture, security, UI/UX design, cloud deployment — with AI integrated at every stage. The course balances hands-on tool fluency with critical thinking about AI limitations, correctness, ethics, and responsible use.
By the end of the term, you won’t just be a faster coder; you will be a high-level engineer capable of building complex, AI-native systems from the ground up. Students document their AI usage throughout — recording successes, failures, and lessons learned — culminating in a final reflection on the evolving role of AI in software development. Join us to gain the hands-on experience you need to stand out and build the future of tech!
3 Learning Outcomes
After successfully completing this course, you will be able to:
Prompt Engineering — Apply advanced prompting techniques (k-shot, chain-of-thought, RAG, tool calling, self-consistency, reflecion) to get reliable, high-quality outputs from LLMs.
AI-Assisted Coding — Use AI coding assistants productively for code generation, refactoring, and debugging — and critically evaluate when to leverage an LLM versus solving problems manually.
Full-Stack Development — Build and deploy web applications with a modern stack (FastAPI/Flask + database + frontend) using AI to accelerate every phase.
Modular Design Patterns: Code Organization — Decompose problems into well-structured classes using encapsulation, inheritance, and composition; apply design patterns to build maintainable, modular software.
Testing & Quality Assurance — Write and generate 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; compare human vs. AI review quality.
UI/UX Design — Apply user-centered design principles and use AI for rapid UI/UX prototyping.
Security — Run static analysis, 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.
4 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, RAG, tool calling, and reflexion
AI-assisted development with Claude Code
Web frameworks: FastAPI, Flask, Streamlit
Testing and code quality: pytest, TDD, AI-generated tests, and coverage analysis
Databases and cloud tools: SQL, BigQuery, PostgreSQL, and Vertex AI
UI/UX design: user-centered design, prototyping, and AI-assisted design tools
Software architecture: design patterns, object-oriented design, 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