Miscellaneous



Zoom Instructions

There are two different permanent links, one for "lectures" and one for office hours.

Lecture Information

Join from PC, Mac, Linux, iOS or Android: https://middlebury.zoom.us/j/303130373

Or Telephone:

Office Hours Information

Join from PC, Mac, Linux, iOS or Android: https://middlebury.zoom.us/j/176099420

Or Telephone:

Rough Draft and Problem Set Submission Instructions

  1. Problem set problems are posted on the Calendar section of this website under assessments. (They are not on Canvas.)
  2. Make sure your submission is saved as a single pdf. You can do this by scanning your paper assignment to pdf using a printer on campus, or take pictures on your phone and convert using an app (or this trick on an iphone (select multiple pics to create one pdf)), or by typing in Word, LaTex, etc, and saving as a pdf.
  3. From the Assignments tab on Canvas, click on the assignment you would like to submit.
  4. Click on the black button "Submit Assignment"
  5. Click the "Browse..." button, and choose the file to upload.
  6. Click "Submit Assignment" button.
  7. Click on the link "Submission Details," which can be found either on the right side bar of the page, or at the bottom of the page.
  8. Click the link "View Feedback" and check that your submission is readable and correctly oriented. If not correctly oriented, please rotate using the button on the canvas tool bar interface.
  9. You're done!
  10. If you would like to submit an updated version, click "Re-Submit Assignment" and repeat steps 6-9.

Problem Set Self Assessment Instructions

  1. Go to the Problem Set Solutions folder under the Files tab view the solutions for the problem set.
  2. From the Assignments tab on Canvas, click on the problem set you would like to self grade.
  3. Click on the link "Submission Details," which can be found either on the right side bar of the page, or at the bottom of the page.
  4. Click the link "View Feedback."
  5. Enter full screen mode of the Canvas editor.
  6. Use the point annotation to make comments for each problem, based on my solutions, and this guide.
  7. After exiting the Canvas editor, in the "Add a comment" box on the right side-bar, write which problem parts you would like feedback on, or ask a question, or both. If you have more than one question/feedback request, the TA will prioritize based on the order in which they are written, and will respond to your top priority request within 1 week.
  8. You're done!

Reflection Prompt

Your reflection should include information on the following 4 topics:

Check-in

Please let me know how course structure/logistics worked for you this week. Any issues, difficulties, things that went well?

Personal Learning Reflection

What skills did the problem set/course video/course notes help you to improve? Where do you still need more practice? What was the underlying cause of the mistakes that you made on the pset? (Misunderstanding a concept? Carelessness? etc.) Do you notice any improvements from prior weeks? What questions do you have about the material or problems? (Literally, ask me a question!) Was the feedback from the feedback TA (from the prior week) helpful? What approaches did you try that did work/did not work? What emotions did the problem set and class evoke this week (for example pride, frustration, confidence, confusion) and why? What is your plan of practice to prepare for the quiz, and why?

Group Learning Reflection

Which of the choose your own group work options did you participate in this week?

What did you do in group work this week to actively engage each member of your group? What could you have done to better engage with each member and to make sure each member had the space to contribute? What do you plan to do in the future to make group work a more productive learning experience for each person in your group? Was there anything you found particularly valuable or frustrating about group work this week? Did you have an interaction in your group that helped you to cope with life more generally?

Self-Grade Update

How are things going with your self-grade goals? (If they are no longer relevant, think about how you might update.)


Final Self-Grade Rubric Instructions

Turn the following into Canvas:

  1. Decide on two goals for yourself in this course. One goal should be something that is important to you personally as a student, and one goal should be something to improve/work on in this course. Some ideas:
    • Consistent effort
    • On-time attendance
    • Mastering new skills
    • Not procrastinating
    • Asking questions in class
    • Working with peers outside of class
    • Regularly attending office hours
    • Creating a classrooom environment where there is space for all voices
  2. Please create a rubric for how you will grade your work on these goals at the end of the semester. To do this, describe what behavior/outcomes will earn you an A, a B, or a C for each goal.

Then set up a time to meet with me to discuss your goals and rubric during the week of March 2.


Final Self-Grade Instructions

  1. For each problem set, in order from 1 to 11:
    1. Read over the questions in each problem set (see the home page for quick links).
    2. Read over your reflection from the corresponding problem set, which you can find on Canvas.
  2. Write a reflection that addresses the following subjects. The questions are suggestions to get you started.
    Learning
    Write a paragraph or two summarizing your learning journey over the course of the semester. What topics challenged you? Where did you improve the most? What came more easily? Do you feel differently abount material now than you did at the beginning of the semester? What do you still need to work on?
    Effort
    Write a paragraph or two summarizing your personal effort/participation in the class. Are you happy with the amount of effort that you devoted to the class? Could your participation (through attendance, office hours, tutoring, course notes, contacting feedback TAs etc.) have been better? What advice would you give your former self to be successful in this class?
    Group Work
    Write a paragraph or two summarizing your participation and experiences in group work over the course of the semester. Did your role as a group member change over time? What were your most successful strategies for creating a productive and inclusive group environment? What could you have done better?
    Self-Grade Goal 1
    Based on your rubric, what grade would you give yourself for goal 1 and why? (If you already addressed the "why" in a previous section, just reference it.)
    Self-Grade Goal 2
    Based on your rubric, what grade would you give yourself for goal 2 and why? (If you already addressed the "why" in a previous section, just reference it.)
  3. Upload your reflection and self-grade to Canvas
  4. Schedule a "Self-Grade Conversation appointment to discuss your grade. (If none of the slots work for you, please let me know and we can schedule something else.
  5. On the Crowd Notes, write one piece of advice for next semester's students. (I will share this with future students.)
  6. Fill out the CRF (course response form). Your honest and thoughtful response is very important to me. I use the CRFs to help me improve my teaching, and the school uses CRFs in their hiring decisions.

Programming Assignments

Programming Assignment 1

Did you read the Programming Grading Rubric and Honor Code? Read them! (For example, you will get more credit for code that compiles and does nothing than code that you have worked on for hours but does not compile.)

The number of school-aged children in Vermont has been falling, and it is getting expensive to keep open schools that have only a few students. To deal with this many towns are consolidating schools (combining students in two neighboring school districts into one school). Data on K-12 school locations is publicly available via the Vermont Open Geodata Portal. In this assignment, you will write a program that finds the closest pair of K-12 schools in Vermont. This program could be used to suggest schools as candidates for mergers.

Complete the method ClosestPoints from this zip file containing the data and starter classes. Your code should run in O(nlogn) time. You should feel free to add additional methods or classes as appropriate for clarity or elegance.

In the comments at the top of Main.java, please include your name, the approximate number of hours you worked on the assignment, and the names of anyone you worked with.

To run from the command line, open a terminal in the directory where ClosestSchools is located. Type
javac ClosestSchools/*.java to compile, and
java -cp . ClosestSchools.Main to run. (-cp allows you to tell java where to look for the compiled code, and . tells it to look in the current directory)


Programming Assignment 2

Create a class Huffman in Java with a method encode that takes in a String. The String can contain any characters (including lower case letters, upper case letters, and usual punctuation). It should output a new String containing only 0's and 1's that is the encoding of the original String using Huffman's algorithm. You should weight each letter or symbol according to how often it appears in your input String. encode should also print a dictionary that can be used to translate between binary and English.

t - 001
d - 10
o - 0001

There are lots of versions of this code online, so please do not search for Huffman's Algorithm. However, you can look up how to do subtasks like creating trees.

You can use a min-heap/priority queue (you can use, for example, Java's PriorityQueue class), or you can just do a slower search for the smallest weight trees.

Here is some starter code.

In the comments at the top of Main.java, please include your name, the approximate number of hours you worked on the assignment, and the names of anyone you worked with.

To run from the command line, open a terminal/shell in the directory where Huffman.java is located. Type
javac Huffman.java to compile, and
java -cp . Huffman to run. (-cp allows you to tell java where to look for the compiled code, and . tells it to look in the current directory)

FAQ

Programming Assignment 3

[This scenario is based on a post-pandemic dream when you are all back at school and all restaurants are open!] You are at 75 Shannon St. and you are hungry! You would like to walk to a restaurant in town and get there using the shortest possible route. You will use the Bellman Ford algorithm to find the shortest route. (See what I did there? After doing this, you will have implemented a divide and conquer, a greedy, and a dynamic programming algorithm!) You will again use data from the Vermont Open Geodata Portal.

Complete the methods ShortestDistance and ShortestPath from the Class Graph.java in this zip file containing the data and starter classes. You should feel free to add additional methods or classes as appropriate for clarity or elegance.

In the comments at the top of Main.java, please include your name, the approximate number of hours you worked on the assignment, and the names of anyone you worked with.

To run from the command line, open a terminal in the directory where ClosestSchools is located. Type
javac ShortestMiddPath/*.java to compile, and
java -cp . ShortestMiddPath.Main to run. (-cp allows you to tell java where to look for the compiled code, and . tells it to look in the current directory)

FAQ