The lab exercises and projects are posted here weekly.
Lab gives you hands-on preparation for the week's project.

Links and schedule

Projects should be turned in by 11:59pm on the due dates below.

Lab Project Recording Due Date
Getting setup for projects What is a shape? Thursday September 3, 2020
Using functions to control shapes A shape collection Tuesday September 8, 2020
Mondrians Scenes within scenes Tuesday September 15, 2020
Unique turtles Turtle race Tuesday September 22, 2020
Turtle images Soaring Thunderbird Game Tuesday September 29, 2020
Grids Tic-tac-toe Tuesday October 6, 2020
Strings and Dictionaries Morse Code Tuesday October 20, 2020
Grids and game events Memory Puzzle Tuesday October 27, 2020
Classes and Objects Asteroid Mining Tuesday November 10, 2020
Inheritance Arcade Game Monday November 23, 2020

Policies

Attendance
Attendance in lab, like lecture, is required if you are located inside Maine's timezone to provide the best learning experience. If you are located outside of Maine's timezone or you will be absent on a particular week (or part of the semester), please notify me in advance immediately.

Evening TAs
Evening TAs specifically for CS151 help are available over Zoom this semester. Check out the main CS151 page for times and TA names.

Grading

Projects are graded on a scale of 0 to 30:

  • Up to 21 points awarded for completing the project tasks (code and following good code comments/organization practices).
  • Up to 5 points for completing the report.
  • Up to 4 additional points for extending the projects with independent explorations.

Specific criteria by which each of these components (including Extensions) will be graded is provided in each project grading rubric on Moodle.


Late projects
  • There is a 1 week grace period for turning in projects. For example, if a project is due this Tuesday, you may turn-in your project anytime until 11:59pm next Tuesday.
  • Projects turned in during the grace period are capped at a maximum possible grade of 26/30 (extensions will not be graded). This is designed to help you get back on track — staying current on projects is more important for your grade and learning experience than investing the time to get a few extension points on one particular project and getting further behind.
  • Projects will not generally be accepted after the grace period. This is also designed to help you stay on track in this class. With the weekly project schedule, it is difficult to catch up if you fall behind. Turning in what you have by the end of the grace period and staying up-to-date on projects is the best choice for your grade and learning experience.
  • If the 1 week grace period is not enough and you are facing difficult circumstances, I would like to help you out as much as possible. In these cases, open communication between us is of paramount importance. Please email me and you may propose a new due date that works for you. You will be responsible for meeting your own revised due date and keeping me updated, otherwise you will receive a 0 on the project.

Project tips
  • 30 minute rule: If you have been stuck on a problem, such as a bug, for more than 30 minutes and have made no progress, despite your best efforts, please get help. Email one of us, ask a TA, or consult a peer. If you don't get an answer immediately, do something else for a while. Please do not waste your time on one problem.
  • We are always happy to help you with any of your code for your projects. However, the earlier you come to us with questions, the happier we'll be to help you (we usually respond to a last-minute call for major help with the question "Why didn't you start earlier?").
  • Don't gloss over errors in your code. That is, if you pretend there are no errors in your code when you know there are some there, we will take off more points than if you point out the errors that you were unable to fix.

Extension
misconceptions

You need to do extensions on every project. If you complete the specified parts of the assignment properly, and produce a high-quality writeup, it's worth up to a B/B+ grade. It is important to note that it is very possible to earn these grades or higher in the course and not do extensions every week.

More extensions are better. As the project pages state, you generally receive a higher extension grade if you complete a few "deeper" extensions that explore areas that interest you and give you the opportunity to learn something new. Just because you claim to do 10 extensions does not mean they should be worth more than 1-2 creative, well thought out ones. In fact, extensions are graded according to the rubric criteria and nowhere do we count or itemize points for quantity completed.


Learning Goals

The learning goals for the lecture and lab are the same — both are meant to work together to accomplish the goals for the course as a whole. They are:

  1. Students can read a simple program and correctly identify its behavior
  2. Students can convert a problem statement into a working program that solves the problem.
  3. Students understand abstraction and can break down a program into appropriate procedural and object-oriented components
  4. Students can generate an approximate model of computer memory and describe how an algorithm affects its contents.
  5. Students can communicate the result of their work and describe an algorithm.

© 2020 Oliver Layton