CMU 15-113: Effective Coding with AI
Goal: Build a professional portfolio website to showcase your work
Context: Most students have never built a website before. This project teaches you to use AI as a learning tool to master new domains (HTML, CSS, JavaScript) while creating something immediately useful.
Why This Matters: By the end of the semester, you'll have a complete showcase of your work. This portfolio will be invaluable for internships, jobs, and demonstrating your skills to potential employers. Your webpage will also be how you submit your future projects to us for 15-113.
Learning Objectives:
Before you start coding, make sure you have:
Pro Tip: Enable GitHub Pages on your repository from the start - it's easier to set up early! (We'll discuss some of this in lecture, but we won't always give you step-by-step instructions for each assignment, so you should use your resources (including but not limited to AI) to achieve your goals. We strongly recommend office hours if you get stuck.)
Start with a simple sketch or outline of what you want your site to include. Here are a few example features that you will probably want, though you may wish to add more:
Don't try to build and deploy everything at once. Follow this progression, and test locally as you go:
Remember: Use AI to help with each step, but understand what the code does and modify it to fit your needs.
Once you have a basic version working:
Build and deploy a complete, professional portfolio website that meets the following requirements (at a minimum):
Your project will be graded on a 100-point scale based on the following criteria:
| Category | Description | Points |
|---|---|---|
| Required content | All of the Content Requirements listed above are present and demonstrate reasonable effort. | 20 |
| Design & Aesthetics | Evidence of effort to create a a clean, professional appearance with consistent styling | 20 |
| Technical Implementation & Deployment | Valid HTML/CSS; responsive design works on multiple devices; live on GitHub Pages; all links work; site loads properly; no broken functionality | 20 |
| AI Usage & Documentation | AI usage documented in code comments; code shows understanding and modification of AI suggestions | 10 |
| Pre-deadline Check-in | Go to office hours with a sketch or brief written plan of your website, or an early draft, and get some feedback from the TAs or faculty prior to the due date. See Ed for more details. Note: This replaces the original reflection component, which you will no longer have to do. | 10 |
| Presentation | Brief, informal 5-minute presentation to a TA and small group of peers focusing on the process used to create the website, how AI helped, and any areas where it did not. Stay tuned to Ed for more details on how to schedule these presentations near the deadline. |
20 |
Submit your project by the due date by ensuring your website is live and that you have submitted the Project 1 google form (link TBD) where you will share:
When you present your work, you should be prepared to discuss some or all of the following topics:
That's okay! If you have a 112 project, use that as your first example. Otherwise, include this portfolio website as your first project. You can add more as the semester progresses.
In short: Create a GitHub repository, push your code, go to Settings > Pages, select the main branch as source, and your site will be live at https://yourusername.github.io/repositoryname.
If needed, you can find more detailed instructions online or we can help you in office hours.You can use templates as a starting point, but you must understand and modify the code yourself. Document any AI or external help in your code comments. You do not need to cite help from Prof. Taylor or the 15-113 TAs. Your page should include clearly visible citations for any images, text, or website templates.
It's ok if it doesn't look fantastic, but it should be reasonably functional, and AI can help with making your code responsive. Make sure to test on different devices and adjust for smaller screens if necessary.
No, JavaScript is optional for basic functionality. Focus on HTML and CSS first, and add JS for interactivity if you have time.
That's great! You have two options: