Assessments
Your overall course grade is composed of these weighted factors:
- 10% Practice
- 40% Assignments
- 25% Midterm Project
- 25% Final Project
Practice
Throughout the course, there are practice exercises that are recommended each week. We will not be asking you to submit evidence of completing all of these practice exercises, but we will ask for you to submit some. Just because we ask that you submit some exercises but not others, this is not an indication of their relative importance. You should strive to do as much practice as possible. As with anything, practice is how you develop mastery.
Additional Practice
If you finish the exercises and assignments (and you are up to date on your other courses), you can continue to practice programming.
We recommend that you start with the Exercism Python track. If you complete it, and complete the Python exercises, then you can move on to the other resources.
These sites host programming problems to solve. They are often educational, and can help when it is time to prepare for technical interviews. Sometimes the problems are poorly written or hard to understand, in which case it might be a problem to skip over for now.
Practice Tips
- It's good to look at other solutions, but only after you've tried solving a problem. If you come up with a solution that works, try to notice how someone else solved the same problem, and what you might do to revise your solution.
- It can be good to try solving the same problem a second time, after some days or weeks have passed. Has the problem gotten easier, now that you have solved it before?
- It's fun to solve problems with friends. If you have a solution you really like, you can share it with the squad or community. Remember to use spoiler tags so that you don't ruin the problem in case someone else wants to try it.
- Practice should be challenging, but you shouldn't spend hours stuck on a problem without making progress. If you are stuck, take a break, ask for help, try another problem, and return to the problem later.
- Take a break! It's often helpful to walk around, drink water, eat a bite of food, then return to a problem refreshed. Some problems that seem impossible become very easy when approached with a fresh mind.
Assignments
Each week you will be given an Assignment, where you'll practice the concepts covered in the readings and lessons. The assignments let you practice with the topics you covered that week, explore applications and connections, and check your own understanding of the material.
Assignments will be distributed via GitHub classroom, and you will be asked to write significant code. Upon completion of the assignments, they will be submitted to Gradescope for grading.
Projects
You will have a midterm project and a final project in this course. Projects are larger in scale and will give you an opportunity to work with larger amounts of code to solve more complex problems. You will be given two weeks to complete each project. They represent a significant portion of your grade, and so it is important that you start these projects as early as possible.
Late Policy
-
Late assignments will be accepted up to 48 hours after the original due date, but a late penalty of 10% will be applied for each day the assignment is late.
-
If a student has a legitimate reason for being unable to submit an assignment on time (e.g. illness, family emergency), they may request an extension by sending an email to the instructor. Such requests must be made at least 24 hours before the original due date. The instructor will review each request and decide whether to grant an extension on a case-by-case basis.
-
If an extension is granted, the new due date will be determined by the instructor and communicated to the student. Late penalties will still apply if the assignment is not submitted by the new due date.