Deliverable 12 - Fall 2024

Due Saturday, November 23, 2024 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 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 (side length) for the two squares and the angle for the squares (in degrees). It will draw two squares touching in the center. One of the squares will be drawn at the given angle, and the other will drawn at that angle + 180 degrees. and 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. Also remember that you will need a base case you need to stop the recursion.

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


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:

**** MY FAVORITE HOLIDAY ****

As you program this project, you will meet with a TA mentor for advice and programming help. See CANVAS for the list of students and their mentors.

The project will have these deadlines:

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.

For 2024, collaboration (i.e. multiple people on one project) will not be allowed. All project work must be your own individual creation.

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.

PLAGIARISM 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. Students who clearly plagiarize work will 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, including AI tools, can be charged with an academic integrity violation without warning and will fail this class. If you are having trouble and feel the need to plagiarize, 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.