Course Announcements

  • CL7 due Friday

  • mid-course survey “due” Friday (for EC; link also on Piazza/Canvas)

Notes:

  • A5 has been released

  • No class in-person Tuesday

    • Lecture recording will be released Monday (on Canvas > Media Gallery)

    • There will be a Google Form to complete for lecture participation (effort, not correctness)

Python Projects#

Project-based Course#

Today starts the transition to a project-based course!

Project Options#

Choose ONE:

  • Complete the final project

    • we’re discussing the details today

    • submitted on datahub or Canvas by 11:59 PM on day of the final

    • opportunity to learn the most!

    • takes a lot more time (avg: 10h)

    • opportunities for extra credit (going above & beyond; GitHub)

    • can ask staff for help/ask questions throughout

  • Complete the final exam

    • it will be a guided mini-project

    • will be taken on datahub

    • 24h+ to complete

    • takes less time (avg: 2.5h)

Caveats if you take the final exam:

  1. The highest grade you can get in the course is an A (not an A+)

  2. There is no additional opportunities for extra credit (Note: clicker participation applies to both)

  3. You have to complete on your own (same rules as previous midterms, but it’s completely take-home)

Submit one, NOT both (I have lots of grading at the end of the quarter!). If you do both, I will use the lower score.

Project Overview#

  • must implement some new thing (not grading on complexity)

  • completed individually

  • uses good code practices

  • What you will turn in: folder on datahub OR zip file with your project on Canvas

    • >= 1 Jupyter notebook

      • includes project description)

      • demonstrates how your project runs (likely only a few lines of code) OR describes how to run project

    • >= 1 module (having an additional script is optional)

      • has at least three (3) unique/original functions or methods

    • a test file with >= 3 tests

Project Topics#

  • Encryption (A2)

  • Chatbots (A3)

  • Artificial Agents (A4)

  • A Data Analysis (A5)

  • Choose your own adventure (propose and develop your own project idea)

    • To brainstorm: Think of something in your daily life you want to automate, something that would help you at work/in lab/etc., or a topic/game/activity you really like

Taboo (Off-limit) topics \(^*\)#

  • Hangman

  • turtle drawings

  • tic-tac-toe

  • blackjack

  • Magic 8 Ball

  • Rock, Paper, Scissors

  • Snake Game

  • Connect4 Game

\(^*\)If you have a really new hangman implementation/idea or are super stoked about your great turtle idea or have invented a spin on traditional tic-tac-toe/blackjack/magic 8 ball/rock, paper, scissors, you’ll need to pitch your idea to (via Piazza/email or in office hours) and get approval

Process:#

  1. Download 1) template from website OR 2) fetch Project on datahub

  2. Brainstorm an idea

  3. Design what “pieces” (functions/classes/etc.) you need to execute that idea

  4. Start writing code + tests

  5. Submit on 1) datahub or 2) Canvas

Why template + Canvas?#

  • Certain packages do not work on datahub (game packages; audio; GUI)

  • Working outside of datahub will be helpful in the future

  • You are not dependent on the Internet working well

Project advice:#

  • Work steadily over time

  • Work to first create a minimal viable product

    • modular design

    • multiple, independent pieces

  • Rapid prototyping + testing

Grading#

Component

Grade Value

Concept

5%

File Structure

5%

Project Description

10%

Approach

20%

Project Code

30%

Code Style

10%

Code Documentation

10%

Code Tests

10%

Extra Credit

4%

GitHub Extra Credit

1%

Extra Credit:#

  • Go beyond the requirements of the project / press yourself to learn something new (up to 4%)

  • Put your project on GitHub (1%)

Clicker Question #1#

Do you have an idea of what you want to do for your project?

  • A) absolutely no idea

  • B) some idea, but not sure

  • C) fairly good idea

  • D) I know exactly what I want to do.

  • E) I’m thinking I’m going to take the final exam

Example Projects:#

Python Projects#

What questions remain for you?