Draft proposal of a final project

Use your computational methods to solve a computational problem of your own choosing.

Due: Tuesday, February 24
Points: 1

Even if your programming skills aren’t very advanced, you basically know how to apply a computer’s tireless, non-complaining brute force to the majority of the problems of information: collecting and filtering information.

You have about two weeks to come up with a final project idea, which basically amounts to: solve an interesting information problem. The scope of the project need not be much different from the homeworks, except that you do the research and you come up with the idea for a program, as well as writing the program yourself.

The program you write does not have to solve the problem on its own, as any problem worth solving entirely requires many programs (and human insight). But the program must tackle a facet of the work that is critical to solving/understanding the problem, yet too menial and repetitive for a human to do, especially if it takes dozens or hundreds of hours.


  • A folder in homework/final-project

    This will be where your code and other related-material for the project will reside. For now, it just needs a copy of the draft proposal.

  • A 300+ word proposal in draft-proposal.md

    Write a 300-word-or-more draft proposal in a plaintext file named draft-proposal.md. Include:

    • What your proposed project is about
    • The data sources you anticipate accessing
    • The general workings of the program you anticipate writing

    If you have a partner for this project, both of you must include your own copy of the final-project repo and draft-proposal.md file

  • General requirements for the final project

    The four-part "Better Know a Former Congressmember With Grep" homework project is a decent example for the scope of research, programming, and goals for your final project.

    Note: Don't let you not knowing something as a programmer – such as, how to setup a program to run every hour on the hour, to continuously monitor something – be the barrier. Part of the value of this project is just being able to judge what is easy to give to the computer, what requires some research on your part, and what should be fully left to you, the human, to fix up. You may have been writing some horrible, slow code, but hopefully you've gotten an idea of what should and shouldn't be done by computers.


    Here are concepts I like that you could attempt a limited-variation of for a project. Don't get wrapped up in the details, such as, whether the result should be a website or an auto-tweeting-bot. But rather, focus on how the program finds and filters data to bring you something interesting, and something that would be burdensome/impossible to do by clicking through a website interface or spreadsheet the old-fashioned way.