Introduction to Software Engineering with GenAI
Course description
This course focuses on essential software engineering skills needed to build and deploy a web application from the ground up. Students will collaborate on projects using professional tools and processes, experiencing the entire software development lifecycle. A key focus will be on understanding where and how to best utilize GenAI tools within this process, including how to identify and address erroneous outputs. The curriculum provides instruction through lectures and in-class activities, practice through labs and one homework assignment (dispersed throughout the semester), and assessment through unit projects. The unit projects require students to synthesize various skills while developing larger programs. Students will learn best practices for using GenAI tools for writing larger programs. Use of any GenAI tool is acceptable.
Pre-requisites: This course requires a fundamental understanding of computer science concepts and basic programming experience with Python.
Course Language: Python
What students will learn
- Software engineering practices, including full-stack development principles for designing web applications, working with databases, and implementing robust Python testing. Students will learn the end-to-end software development process, from UI design and usability testing to integrating GenAI tools.
- Professional tools and cloud frameworks, such as Git for version control and collaboration, BigQuery for effective data use, and Cloud Run for seamless application deployment. Students will also explore other cloud computing platforms and services to manage applications securely and effectively.
- Best practices for using GenAI in software engineering, including defining LLMs and their applications, identifying optimal points to integrate GenAI into development, developing effective troubleshooting skills for GenAI output, and programmatically tuning GenAI for specific purposes. Students will also learn to effectively apply GenAI-driven techniques to enhance design, development, and testing.
Units
The total course is designed for a 15-week semester. Materials may be adapted to other schedules.
Unit 1: Intro to SWE
This unit covers how to use a cloud console (GCP) through the lens of being a developer, and showcases entry-level understandings of how to work collaboratively on teams through git. This unit introduces students to the fundamentals of full stack development, covering topics such as the roles of software engineers, version control with Git and GitHub, collaborative development techniques, and software development methodologies. Students will gain hands-on experience setting up a development environment.
- Module 1: Intro to SWE
- Module 2: Git & GitHub
- Module 3: General SWE practices
Unit 2: Using AI as a SWE
This unit covers how to use Streamlit to analyze complex software design to create full stack web application prototypes and test code. It also explores how GenAI works, its applications in various fields, its limitations, and prompt engineering best practices. Responsible GenAI use is emphasized, highlighting potential issues such as bias and misinformation.
- Module 1: SWE Practices and Frameworks
- Module 2: Testing
- Module 3: GenAI as a SWE
Unit 3: Cloud Tools
This unit covers full stack development, focusing on databases, data storage, advanced testing techniques, and the integration of generative AI models. Students will learn how to design and implement robust database solutions, leverage advanced testing methodologies, and harness the power of generative AI models to enhance their applications. By the end of this unit, students will have a strong understanding of databases, advanced testing techniques, and the integration of generative AI models into full stack applications. They will be equipped to design and build sophisticated software solutions that leverage the power of AI to provide innovative and valuable features.
- Module 1: Databases
- Module 2: Testing with Mocks
- Module 3: AI Playground
Unit 4: UI/UX Design
This unit includes the user-centered design approach to software development, emphasizing the importance of understanding and incorporating user needs throughout the development process. Students will explore various prototyping and testing techniques, leverage generative AI to enhance design document creation, and gain a solid understanding of design documentation and software requirements. This unit covers the fundamentals of UI/UX design using paper prototyping. Building on unit 1 where students were given a design doc with customer user journeys, this unit will ask students to leverage AI to build design docs and CUJs to create mocks for their final project.
- Module 1: Usability Testing
- Module 2: User-Centered Design
- Module 3: Design Docs
Unit 5: Advanced Topics in Software Engineering
This unit focuses on continuous integration and continuous deployment to prepare students to deploy their final project apps. The course culminates in the presentations of the course projects. To prepare students accordingly, they will be taught and given opportunities to practice the skills required to deliver effective and engaging presentations.
- Module 1: Integration Testing
- Module 2: Architecture & Code Organization
- Module 3: Course Wrap-Up
Related resources
Navigate the course: Introduction to Software Engineering with GenAI
Overview of course assets and guide to GenAI use
Introduction to Software Engineering with GenAI - Navigate the course: A guide to assets and GenAI use.