-
Notifications
You must be signed in to change notification settings - Fork 222
GSoC 2019
Hey all! I'm Sam Goto ([email protected]), and I'll be your mentor this year for the AIMA Javascript Project for the AIMA Code organization!
We're building visual interactive explanations for concepts from the AIMA textbook. We're looking for people who have design and explanatory skills, and can implement visualizations in Javascript. Take a look at the work from 2018 to get an idea of what you will be building in GSoC. We'd love to build explanations like these.
If you have more questions, check the FAQ and ask on the gitter channel.
Some students like to start early by contributing code to a GSoC project. AIMA-Javascript is different. We are looking for sample work on your own site, not contributions to the aima-javascript project. If you already have sample work that shows your skills with interactive explanations of technical topics, great! If not, try making something like this explanation of the trie data structure or this explanation of the diff algorithm or this demonstration of reinforcement learning or this explanation of hyperloglog. Put your work on Github Pages or a blog.
- Drop me a line to say "hello" :)
- Pick a topic. This can be from AIMA or it can be any other algorithm or data structure.
- Design your explanation.
- Create a design document. Use something lightweight and fast. You can use a google doc or a whiteboard or even a napkin. No code yet.
- Get some inspiration by looking at existing visualizations from textbooks, blog posts, other students, etc.
- Form a narrative, as explained here.
- Look at the design patterns that have emerged in good work.
- Create wireframes 1. With a narrative formed and some basic ideas of which diagrams you want to build and which controls they'd have, kick off a section in your design doc called "wireframes" to give you a clean canvas to put your thoughts in practice. 1. Use text to connect the diagrams and form a flow. 1. Use static diagrams (recommendation: google docs has some really good diagraming tools) or static images (e.g. photoshop or whatever) to turn some of your ideas more concrete (e.g. which controls would you expose? how much space would you need? does it connect well with the text? are some of the controls mixed with the text around it?).
- Get feedback. Add a comment on this page with a pointer to your design doc.
- Prototype (advice)
- here we are less interested in seeing your ability to productionize code and more your ability to design good visualizations — quality, autonomy and expediency here is more important than technical/coding robustness, elegance or purity
- use your favorite hosting environment (recommendation: github pages is very lightweight)
- use whichever CSS/HTML/JS framework you are most familiar/productive with
- Get more feedback. Add the link to your prototype here.
- Use the link of the thread in your application.
First, make sure you familiarize yourself with the timeline:
Date | Deadline |
---|---|
February 26 | Google announces whether AIMA will be in GSoC 2019 |
February 26 | discuss project ideas |
March 25 | applications opens |
April 9 | applications closes |
May 6 | students announced |
May 27 | coding begins |
June 28 | phase 1 evaluation |
July 26 | phase 2 evaluation |
August 26 | coding ends |
September 2 | final evaluation |
Take a quick look at notes from previous years:
- 2017 scope
- 2017 strategy
- 2017 accomplishments
- 2018 notes
Most importantly, take a look at advice on future work and the lessons learned.
There are three main resources that you want to collect to apply:
- About yourself
- About your work
- About your summer
- resume, name, email, school, year
- personal projects and
- online footprint (e.g. blog, github, twitter, etc)
- Form a plan: what chapter, concepts, and algorithms would you like to explore?
- Tell us why you think that's a realistic plan: do you have other commitments?
- Tell us how would you like to work together.
We are looking for a solid record of achievement in building high quality educational material.
If you already have projects in algorithm or data structure visualization (whether AI or not), point us to it. If not, make one! See the how to contribute section above.
First and foremost, we are looking for students that have the ability to create really good explanations of algorithms in the book serving readers. Readers first, code elegance second.
We'll be looking at students from this order:
- design
- engagement
- coding
Students will be compared first and foremost by the quality of their designs: a solid record of achievement in building educational visualizations. As a general rule of thumb, we'll prefer students who have made a few high quality visualizations over students who have made lots of low quality visualizations.
Here are some of the criteria to judge quality:
- how well can you explain/present algorithms?
- is it better than reading the book alone?
- is it better than watching the class alone?
- is it easy to comprehend for a large number of students with a varying degree of prior knowledge?
- are the controls intuitive and powerful?
- is it visually and aesthetically appealing?
- is it correct?
- if you sent this to an arbitrary CS/AI student who read the book, would they recommend others going through that visualization?
- can you execute well?
- do you feel like you know in which order to do things?
- are you able to design things prior to prototyping?
- are you able to prototype things prior to productionizing?
- are you able to write good production code?
- do you have a good intuition on when to pivot and when to push further?
- do you feel like you know in which order to do things?
Here is some advice from a former GSoC student.
- have you engaged early and often?
- how many rounds of reviews have we gone through?
- do you feel like we have made good progress during the interaction?
- how good do you think your design is turning out?
- what are your plans for the summer?
- do you think you have formed a solid plan of attack?
- how many visualizations do you think you can build?
- how often would you like to meet?
- tells us how you think your summer as a GSoC student will look like.
- how is your CSS/HTML/JS kung-fu?
- do you know git?
- do you use TDD?
- links to existing projects?