Deliverable 12 - Fall 2025

Due Saturday, November 22, 2025 by 11:59PM


PREPARING YOUR HANDIN FOLDER...

FIRST: Create a folder or subdirectory in your 15-104 working area on your computer or in your Andrew private folder for handin-12. You will put all of your work inside this folder and then compress or zip it to create handin-12.zip to submit to Autolab.


Conceptual Questions (The last one!)

In this part of the deliverable, you will download this Word file that contains 4 questions about concepts taught in class. You may download it anywhere on your computer. You should fill in your answers in the spaces provided, and include your name, andrewID and section letter at the top of page 1.

Once you are finished with this part of the deliverable, print/save it as a PDF and store this PDF in your handin-12 folder with the name andrewID-12-concepts.pdf. For example, if your andrewID is acarnegie, then you would save the PDF under the name acarnegie-12-concepts.pdf.


Technical Assignment 12 (The last one!)

Make a subfolder in the handin-12 folder for this assignment named andrewID-12-assignment. Store your sketch.js and index.html files in this subfolder.

Spiraling 
Squares drawn recursively

Write a short program that uses recursion to draw the picture above. Here are the requirements:

You should write a RECURSIVE function drawSquares(s, a) that draws two squares at a time, both of the same size, touching corners in the center. The function should have two parameters: the square size s (side length) for the two squares and the angle a for the squares (in degrees). It will first draw two squares touching in the center. One of the squares will be drawn with its top left corner at the center of the canvas, rotated by the given angle, and the other will drawn with its top left corner at the center of the canvas, rotated by the given angle + 180 degrees. Then it will call itself with updated arguments for the next two squares. Think about what parameters you'll need for the recursive call given the current parameters for the square size and angle. (Think: if s is the width of each of the two squares just drawn, what should this argument be in the recursive call? If a is the angle the squares were drawn with, what should be this argument in the recursive call?)

Also remember that you will need a base case you need to stop the recursion. (HINT: You can test the base case to see if you need the recursive call or not. If you don't, then the recursive steps will stop.)

Your draw function will call the drawSquares function with an initial size of 200 for the squares and an angle of 90.


Open-ended Project 12: Final Project Proposal (3 points)

Using the programming skill you have gained throughout the semester, you are to create a project of your own design based on this semester's major theme:

CMU 125 The Power of Possibilities

To celebrate the 125th anniversary of the founding of what we now know of as Carnegie Mellon University, the University held a series of events over Homecoming Weekend and posted a special web site with historical milestones. Visit https://www.cmu.edu/125 to see all of the interesting achievements and challenges the University has faced over its 125 years. For your project, you can create an artistic display of some element of our CMU history, a game that illustrates something from our history, an interactive timeline, or other creative efforts. Sit and review the website and reflect for an hour or two on something that you think you can create in a few weeks that is similar to the scale of an open-ended project for one of our deliverables.

As you program this project, you will meet with a TA mentor for advice and programming help. Your TA mentor will email you to set up your first appointment, and it might not be your lab TA.

The project will have these deadlines:

*Due to the Thanksgiving Break, Autolab will remain open without late penalty through Saturday, November 29, but you are encouraged to submit your current version by Wednesday to give yourself a few days off.

Imagine that your Final Project is something a little larger and a little more ambitious than what you normally would create for a weekly homework programming assignment: you’ll have about two weeks to create it once your proposal is submitted. There are no further assignments other than the final project starting next week.

Your project should be a program that expresses an artistic interpretation of our theme that is designed to start a discussion or provide entertainment or educational value. Although you are free to express your views through your (programmed) art, you should avoid obscenities, nudity, blasphemy, slander, etc.

As you think about what you want to do based on your discussion with your TA mentor, draw sketches and take notes of ideas you have for your desired project. Think about a project that you can reasonably do given the programming knowledge you have gained. Don’t bite off a lot more than you can chew. Your program should illustrate correct understanding of the following concepts: loops, arrays, conditionals (if), user interaction, transformations, functions (besides setup and draw), and use of at least one object definition of your own design. Work incrementally, test carefully and give yourself enough time.

COLLABORATION AND AI POLICY: For 2025, collaboration (i.e. multiple people on one project) will not be allowed. All project work must be developed by you without the help of other people (other than TAs or the instructor) and posted code examples. For this project, you may look at code examples online for ideas (and cite these if you base your own code on them), but you should not reference them while you are writing code. You may use Generative AI tools with caution, making sure to cite each use in your program as a comment with the tool name, prompt and date. As demonstrated in class, these tools can produce incorrect results and should not be relied on to complete the entire project. Instead, they should be used to assist you, helping you understand programming concepts or examples from class/online and helping you write small sections of code that might require new functions/concepts we have not taught you. Remember that you should be able to explain to us every part of your code, so don't rely on the AI tools unless you understand what they're producing and can explain and update that code if questioned.

Make a folder inside your handin-12 folder named andrewID-12-project.

  1. In a PDF file, describe what you would like to create in more detail than you gave when you met with your TA mentor. Your chosen project should involve the creation of custom software, toward some personally interesting end. Give a summary of the overall purpose of the program. Outline what your setup and draw functions will do, along with any additional user-defined functions you might need to help support your program. You do not have to provide code at this time, but you should try to outline what you think each function will need to do to make the program work.

    Since you will need to demonstrate understanding of object-oriented programming through the use of at least one object, also describe in your proposal what object you plan to program and what data fields and (optional) methods/functions it might have. You should also briefly state how you will use an array in your program.

    You can use an editor like Word to create your proposal and print to PDF. Name the PDF file: final_proposal.pdf and store this in the andrewID-12-project folder.

  2. Include one or more drawings or diagrams to illustrate your proposed project. This might be photograph(s) of a page from your sketchbook, a mock-up done in a drawing program, etc. If you have some images or other data files you might use for your program, you can include these if you'd like. Store these files in your andrewID-12-project folder.

WARNING: Your work must be an original idea and creation. If you are inspired by some computational art, please cite this in your proposal. It is ok to be informed by an artist’s work, but it is not ok for this project to duplicate that work (or use it as your own). We will be checking resulting projects for similarity with work available online. Additionally, you may use Generative AI tools to assist you in small tasks as you program, but you may not use these tools to write the majority of the project. Students who clearly plagiarize work or use AI tools excessively can be charged with an academic integrity violation without warning and will fail this class. The work is also expected to be your own coding. Students who copy someone else’s code as their own or have someone code for them can be charged with an academic integrity violation without warning and may fail this class. If you are having trouble and feel the need to plagiarize or use AI tools to do the majority of the project, don’t do it... talk to your instructor instead. We can help you get past the stress or anxiety and create something wonderful with a little extra time if necessary.

DON'T WORRY: As you start to program, if you find that you bit off more than you can chew or your project drifts into a different project, you can submit a revised proposal as part of Deliverable 13. So get started as soon as you can so you can see if you can reach your goal by the end of the semester. Have fun making a creation of your own!

DON'T FORGET YOUR T.A. MENTOR! You can email your TA mentor or post a question on Piazza if you get stuck. You will hear from your TA Mentor on Sunday (or Monday if you submit late) with feedback on your proposal. Your TA mentor will meet with you at least once during the final two weeks to check on your progress and answer any questions you have. You can make changes as you start to work on the code for the next two weeks as long as you keep your TA Mentor updated.


Handing in your work

You will zip up the handin-12 folder and submit this to Autolab. Your overall folder organization should look something like this (indentation indicates subfolders):


  handin-12
    andrewID-12-assignment
      index.html
      sketch.js
    andrewID-12-concepts.pdf
    andrewID-12-project
      final_proposal.pdf
      other support files: sketches, images, etc.


Once you are ready to submit, zip (compress) the handin-12 folder (which will likely be named handin-12.zip) and hand in the ZIP FILE into the Deliverable 12 submission area on Autolab. Once you handin, check your handin history and click on the magnifying glass to look at what you submitted to make sure it looks right. IF YOU SUBMIT THE WRONG ZIP FILE, YOU RISK GETTTING A 0 ON THIS DELIVERABLE!

You may submit as many times as you’d like (in case you find inspiration and want to improve your work) up until the deadline. We only grade the final submission you upload to us via Autolab.