Giter Club home page Giter Club logo

project-ideas's Introduction

Project Ideas

Submission deadline: Sunday, Sept. 27 at 11:59pm
Critique deadline: Tuesday, Sept. 29 at 11:59pm

In this assignment, we'll get a head start on our projects. You'll describe four potential project ideas and evaluate their suitability as a project. You'll also provide feedback on someone else's project idea.

Do this assignment individually: you must come up with and describe your ideas on your own. You may talk with other people, though, as you're generating ideas and describing them. If you're inspired by someone else's idea, that's totally fine! The two of you can write about the same idea (or that person can give you an idea). But once you decide you both like the idea, don't talk about it with each other until you've finished describing it. (That way, each of you can contribute your unadulterated thoughts.)

Comments / advice

  • Have fun! This is your chance to play with the idea of language and perhaps come up with something that is both surprising and obvious.

  • There's no commitment: You're not promising to do any of these things for the project (although it's certainly nice if you come up with an idea that you really like and that makes for a good project). You have until Fall Break to settle on an idea for a project, so take your time.

  • If you have some ideas already, jot them down. Then, read the rest of the assignment. Then, set things aside for a day or two and let things sit in your brain. Then, come back and describe your ideas.

  • If you'd like some additional help coming up with ideas, here's lots of advice and suggestions.

  • Focus most of your attention for now on problems, rather than solutions. In particular--in most cases--it's premature to talk about an internal vs external language, compiler vs interpreter, or choice of host language. Instead, focus on the need that a language would address and why a language helps address that need.

Your four ideas

You'll come up with four (potential) project ideas and write about them. Some of the ideas are free-form, some are subject to constraints:

  1. Free-range idea #1: No constraints on this idea--it's all you! Describe this idea in free-1.md.

  2. Free-range idea #2: No constraints on this idea--it's all you! Describe this idea in free-2.md.

  3. No-computer idea: In class, I claimed that chess is a DSL, then tried to make a case for it. Pick something that you think could be a DSL but that you think it would take some effort to convince someone else in the class, because there's no computer involved. Describe this idea in no-computer.md.

  4. No idea: Describe a problem that involves computers whose solution is definitely not a DSL. Propose a DSL to solve it. Then write about how a DSL is a bad solution to the problem. (This might seem weird, but it'll help prevent us from applying the DSL hammer where it's not needed. If we know the limits of DSLs, we're more likely to come up with a project that is both suitable for this class and useful to people.) Describe this idea in anti.md.

In each of the files mentioned above, you'll find the same set of prompts. Don't erase anything from the starter file, and fill it in with your ideas and your thoughtful and well-written responses to the prompts. Be sure to answer every question in each file.

You're free to take ideas from existing DSLs, past projects, or other people, as long as you give credit and as long as your description and evaluation of the idea are your own. However, taking all your inspiration from the same source (e.g., existing DSLs or from other people) is not advised.

Grading

Good responses (i.e., responses that receive a 3) will:

  • fully respond to every prompt in the starter file, and
  • be well-written and easy to read, i.e., clear yet concise using good spelling, grammar, organization, and proper formatting, to convey a well-formed idea, and
  • where appropriate, support your thoughts with references to material from class, from the domain of your project, or from other solutions in the same domain.

Great responses (i.e., responses that receive a 4) will additionally:

  • be particularly insightful about the needs of the user and about the suitability of the idea as a CS 111 project ("insightful" means that you've clearly articulated all the angles, the benefits and drawbacks, risks, etc.), or
  • describe a particularly novel use of language to solve a problem (e.g., something that no one has thought of before), or
  • (for the "anti" idea) describe a project that, on the surface, seems totally appropriate as a project but for which you can provide a compelling case that it's not, or
  • provide a fifth idea whose description would receive a 3 (to do so, create a new file with a name of your choosing, copy the questions into that file, answer the questions, and commit and push the file to your repository).

Critiques

After the submission deadline, read over and comment on your critique partners' work. Be sure to comment on each of their ideas.

Here are some suggestions for critiques:

  • What do you like about their idea(s)?
  • Was there a need that was similar to one you thought of? If so, how are your thoughts about the problems similar to and different from your partners?
  • Do you know anything about this domain? Do you know of existing DSLs that they didn't mention or do you have some expertise thinking about or writing programs for this domain? How might your experience augment your partner's thoughts on the domain?
  • Answer the questions about suitability, scope, etc. of the project.

Tasks

  • Read the assignment, possibly including the advice for generating ideas.
  • Think / come up with ideas.
  • Write responses in each of the four files.
  • Submit your work.
  • Comment on your critique partners' work.

project-ideas's People

Contributors

bwiedermann avatar dannnno avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.