Problem Set Self Assessment

  1. On Canvas, go to the Problem Set Solutions folder under the Files tab to view the solution for the relevant problem set.
  2. From the Assignments tab on Canvas, click on the problem set to self assess.
  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" and enter full screen mode of the Canvas editor.
  5. Use the point annotation to make comments for each problem, based on my solutions:
    • If correct, describe any relevant skills you have demonstrated.
    • If incorrect, describe the type of error, and how you might improve in the future.
      • Exapmles of errors:
        • Incorrectly implemented [some linear algebraic operation]
        • Algebra error
        • Did not correctly interpret the problem description into math
        • Misunderstood/Misapplied [quantum concept]
        • Did not read the problem carefully
      • Examples of improvements:
        • Start earlier to have time to review after time away to see with fresh eyes
        • Read each problem carefully during rough draft phase and again in pset phase
        • Spend more time practicing with logarithms
    • Otional: Add the most important self-feedback to you Feedback List in your personal OneNote section.
  6. If there are problems you would like additional feed-back on, or if you have a problem-set specific question, after exiting the Canvas editor, in the "Add a comment" box on the right side-bar, write which problem parts you would like additional feedback on, or ask a question, or both. I or a TA will respond to your questions.
  7. You're done!

Weekly Participation

You are expected to participate weekly in the class in several modes. You will fill out a weekly check-in form to let me know how you have participated each week. Weekly participation will earn you participation points.

Exit Tickets

After each class, you have 24 hours to write an exit ticket on OneNote. Your exit ticket should let me know if there is anything that you were confused about, anything you would like to see more of, or a general question about the material. You can also put a star next to someone else's question that you second. (Questions with the most stars are the ones I will prioritize.)

Choose Your Own Adventure Participation

To get full weekly participation credit, you must also participate in one or more of the additional ways each week:

While you only need to do one to get credit, I hope you will do several, as they will contribute to your learning!


Your reflections should be completed in your personal Reflection section of the course OneNote. (This section is visible to me, but not your classmates.) There is a page for the reflection that you should fill out. For the first reflection, see the prompt. Later prompts are as follows:

To complete your reflection, you should read over your prior reflection, and consider your progress since your last reflection, as demonstrated by your problem sets, quizzes, quiz revisions, and in-class group participation. Please write a paragraph or two about each topic, following the prompts. If you would like to vary the format of your reflection to make it more useful for you, that is fine, as long as you are reflecting critically on your learning process and progress and your interactions with others in your group.

Reflect on your learning process since your last reflection. What has supported your learning, and what has hampered your learning? Describe your progress towards process sub-goals you laid out in your prior reflection. Were you able to make progress in incorporating the feedback items from your Feedback List that you are currently focused on? Please mark in bold any feedback items that you would like to focus on for the next few weeks, and unbold any that you are no longer focused on. If needed, describe some process sub-goals to focus on for the next few weeks.
Reflect on your progress towards the learning goals of the course. What are the most important skills and/or understanding that you demonstrated? Take a look at your quizzes/problem sets/exams to see, and make a list of the most important. What are you still struggling with? How will your progress towards your goals inform or change your process moving forward?
Group Work
Look back at your prior group work reflection - have you made progress in the areas that you wanted to focus on? What did you do in group work in the past weeks 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 and learn? 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 recently? If someone in your group is creating an environment in which it is challenging to learn, please let me know.

Mid-semester and Final Reflection

These reflections take the same format as a standard reflection, but instead of focusing on the past couple weeks, you should reflect on your progress throughout the semester, and you should think about your goals moving forward for the second half of the semester (mid-semester) or your life more generally (final).

Quiz/Exam Revisions

  1. Click on the "Grades" tab in Canvas, and then click on the quiz/exam you want to revise.
  2. Look at your previous solutions and the feedback comments to try to understand what you did not fully demonstrate understanding in your first attempt. Looking over class notes and the problem set solutions for similar problems might be helpful. You can also discuss with Prof. Kimmel, or with a peer who has already taken the quiz. (If you discuss with a peer, please do not look at their submission, instead, you should discuss the concepts with them generally, or can go over similar problems in more detail.)
  3. If the feedback is something you want to keep in mind moving forward, copy it to your Feedback List on OneNote.
  4. Retake the quiz/exam to demonstrate your understanding/skill. If you previously submitted a pdf, you can edit/make comments over the original pdf and re-upload. This will also make it easier for us to see your changes.
  5. Click on the "Grades" tab in Canvas again, and in the "Add a Comment" field to the right or below the Quiz Results, explain:
    • What did you not yet fully understand when you last took the quiz?
    • How has your understanding improved and how did you demonstrate that knowledge in your revision?
    • Moving forward, how will you ensure that you continue to demonstrate understanding of this concept(s)/skill(s)?

Programming Assignments

General Instructions

As with the problem sets, to get full credit for the Rough Draft part of the programming assignment, you should submit something that shows you have spent at least an hour or two working on the assignment.

For the main assignment, you should submit a .zip file containing the code, and any other files needed to run the code.

In addition, the .zip file should contain a file (in format .txt, .doc, or .pdf, etc.) called "Assessment" that answers the following questions:

For sufficient effort, which we will judge by your response on Effort, and by looking at the code that you did turn in, you will earn 3 pts. For correct, extensible, readable code, that meets assignment specifications, you will earn another 3 points.

Programming Assignment 1

Read the General Instructions and Honor Code.

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 towns 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.

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

Read the General Instructions and Honor Code.

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 the following punctuation: commas, periods, exclamation points, question marks, and apostraphes). 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 on the internet. However, you can look up how to do subtasks like creating trees or doing a tree traversal.

You can either 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: starter code.

In the comments at the top of, 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 is located. Type
javac 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)

To use Eclipse, see instructions below.


Programming Assignment 3

Read the General Instructions and Honor Code.

[This scenario is based on a post-pandemic dream when you are all back at school!] 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 in this zip file zip file containing the data and starter classes. You should feel free to add additional methods or classes as appropriate for clarity or elegance.

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)


Using Eclipse

You do not have to use Eclipse, but if you would prefer to do so, here are some instructions (modified for the first assignment, you should hopefully be able to adjust for the others). If it is not working, please reach out to Robert Lichenstein, our fearless ASI.

Point annotation tool
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.