Overview

The Library Coding Initiative (LCI) is a program in which YCPC provides libraries with the resources to support study groups – independent groups of students that learn programming together. YCPC provides these study groups with the educational materials and expertise required to jumpstart a community of programmers.


For a condensed version of this documentation, visit ycpc.us/lci.pdf.



Courses

YCPC Courses are crash courses in programming designed for teenagers – quick introductions designed to get many members interested in the basics of computer science. Designed to be used with study groups, these courses will provide a foundation in programming which your study group can then build on into higher levels of study.

Volunteer Programs


Volunteering is one of the most important aspects of LCI, providing real-world situations on which to test learned skills, along with raising awareness of the importance and value of programming. YCPC supports numerous coding related volunteer programs that study groups can participate in, such as tutoring, fundraising, and creating websites for local businesses.

Expertise


YCPC will lend the experience and feedback of its staff members to any chapters that want assistance. Sending questions to [email protected] will allow YCPC to provide quick and informative responses to any questions that may be asked, along with aiding efforts to organize events or get in touch with volunteer or internship opportunities.

The Open World of Programming


Even just a few years ago, learning programming was very limited. The resources were only present in colleges and to very specific people in the industry. But as our world is advancing, so is the internet and learning process. Anyone with internet access can learn any language, as complicated or simple as they would like. Programming in any language can be learned by a very young child or a very old senior citizen – basically, anyone with dedication can learn how to code.


First of all, there are many resources for learning. Many colleges offer online courses that describe how to program in a certain language. Many are very inexpensive, and some are even free. Well-known colleges, like Stanford, BYU, and even some community colleges, now offer very informational courses that can be accessed at any time the student has connection to internet. Also, certain websites have been made especially for online courses, like Udacity, Coursera, Khan Academy, and more. These websites/apps offer many different courses, from very beginner classes to very advanced topics, so anyone at any level can learn more. In addition to websites and apps that teach programming, there are lots that give tutorials for actually building apps. Websites like AppInventor give users the ability to try making different apps with very visual representations of the syntax. Similar to AppInventor is Scratch, an app that shows what is being programmed visually right in the app. Many other websites and apps have these qualities, and are able to reach many audiences.


The ability to reach more audiences with these resources has attracted many more people to the field of computer science. More kids are now getting into computers at a much earlier age, and they are able to figure it out with how easy coding has been made to learn. There are now starting to be more and more coding clubs at schools, libraries, and community centers. Recently, kids have been known to create very useful and elaborate apps, programs, and more. One of the main focuses lately has also been to get girls into coding, to create equality for all in this department. There are many organizations now in action all around the world that encourage girls to try computer science and coding. Girls are now becoming a huge part of the coding business and have had much success lately. Many young ladies are pushing through, getting jobs, and making new content for major companies. Some of the major organizations currently working with girls in computer science include Girls who Code, Girl Scouts, and others. So, with so many resources out there, the question is – why is coding so important? Well, it may not have been as important a few years ago, but as we live in a current world of booming technology, programming is essential. Everything on the internet requires coding, and the only way new content can be made and shared is through coding. The most important and most popular websites, apps, and computer games are made with computer science. Nowadays, it is extremely important to know how to code.


And learning how to code does not just benefit your future in the computer science field. Coding is very logical – it develops a greater state of logic in the mind, and helps the mind be more creative. Coding can help with forming/expanding a business, understanding online resources, and so much more. Many famous business leaders in the world today have coded at one point or another in their life, and all say that it helped them later in life, with things like creativity, organization, and a greater understanding of how everything works. And either way – since when is knowing more bad? With it being so easy and accessible, each person should try coding at one point in their life.



Establishing an LCI chapter



Beginning The Club


  1. The First Meeting
    a. Make sure the people know about it!
    b. Introduce the club, its officers, and all the information the members would need to know about the club.
    c. Record the contact information of the members, so that you can let them know when the club begins, and keep everyone on track.

  2. Plan your next few meetings
    a. A great way to begin is by educating the members on basic coding. YCPC provides lots of intro courses to get you started. As you get more advanced, you can look for more lessons online; there are many free college coding courses out there, and lots to learn!

Getting Involved


It is important to apply all you learn to the real world. There are many activities that your club can participate in.


  • Tutor others.
  • The best way to learn is to teach someone else. It shows mastery of the concept. Take a trip to a middle or even elementary school, and teach the kids what you learned about coding. It will help the club bond, and master the information.
  • Get in touch with businesses.
  • Reach out to some local businesses. It is possible that they may need help with making a website, promoting their work, and getting the word out there.
  • See if they need help, or can somehow help out at the business with other kinds of technology.

These are the basics of beginning your own club with LCI and YCPC resources.

Finding members and staff


Strive to find members who are interested. Even if they aren’t so dedicated, as long as they learn and are productive in the study group, they’ll be regular contributors and fellow participants in the quest for knowledge.


Here are some ways to attract members:

  • Ask close friends you trust to help start a study group and support your efforts.
  • Ask the library to advertise about their facility.
  • Ask your school newspaper to publish an advertisement for your study group.
  • Post information about your study group on your school's website
  • Post promotional materials (such as posters) all over school.
  • Reach out to members of volunteer clubs at your school

Once a study group reaches a sufficient number of individuals, it’ll need leaders and functionaries to run the group. When picking staff members, choose people so that the group has all areas necessary for the smooth functioning of the group covered YCPC does not have strict guidelines regarding staff positions.


You will want to decide a fair process for electing officers each year in order to ensure the smooth transition of power. When you are just starting your study group, you may not want to hold formal elections but instead select officers on your own through an application process or by choosing those you know will be productive and useful to the group.

Staff Selection Warning

Choosing staff members solely on the basis of friendship can lead to staff positions that are difficult to change without jeopardizing personal relationships. This sort of drama can be fatal to a fledgling study group, so ensure that staff members are chosen on their merit.


When running your club, leadership is the key to success. Therefore, the people you choose to run your club will be key to the club’s future. There are some main qualities that would be very important in a staff member, and many more can be personal based on the club and the environment.


The main quality of a staff member should be organization. An organized person will keep track of the club very well; they will be on task, on track, etc. The most organized person would be great in a secretary position, so that they can keep track of all written information and how the club is running. Organization is also the key for a treasurer position. We all know that money is very important and valuable, and must be looked after. It can only be trusted with the most responsible. The president and vice president of the club also need to be very organized. They have the most power in the club, and must be organized enough to lead the team to success. So, keep that in mind when choosing the leaders of a club or team – friends may not always be your best option.


A smile goes a long way. That is why compassion and respect are huge in leadership. An officer takes on initiative and communicates much more than an average member. The most successful leaders take into consideration their audience, and how those people will absorb the information. This quality is very important to officers that will communicate and present more, such as the president and vice president. Those officials will format their words and presentation to a way that can be understood by a large audience. Another part to respect is how the leader communicates with others. Tying in with organization, a leader should be on track with communicating with members kindly, quickly, and efficiently. Those who are able to carry out such tasks will be of great value to the team, and will only add positivity to the environment.


What is the definition of a leader? It is “the person who leads or commands a group, organization, or country,” says the Oxford Dictionary. As a commander, the officer must have confidence. Not only does confidence show that you know what you’re doing, it also lets people know to take you seriously. A speaker that has confidence radiates passion for what they are presenting, and really makes everyone listen. Choose officers with great confidence and knowledge. But beware: there is a fine line between confidence and arrogance. As a person crosses that line, they lose respect for others, and are not respected either. Arrogance will lead to a bad environment, will cause members to leave, and will decrease motivation.


Speaking of a bad environment – nobody wants to be in a room with only negative individuals. It’s very important to have an optimistic staff, with a constant positivity and creativity. Those individuals tend to work better with others, and can accomplish much more. Optimistic leaders tend to communicate easily, and avoid personal criticism and pessimistic thinking. They often have a solution for everything, and radiate positive energy towards others. The main leader, the president, definitely must be optimistic. This makes sense – the organizer, leader, and creator of the club and mission must believe in it, and always have a good sense of mind when working with the members to achieve greatness.


Overall, many have different personal opinions on what qualities leaders should have. Some want very outspoken, confident - bubbly, if you will – people. Some want those who are very intelligent, and have the brains of the operation. Either way, all the qualities above will provide a strong framework for the team, and will benefit the club.


Finding a Library


The next step to establishing a study group is to contact the local library or similar substitute. This institution will help provide resources such as computers and Internet access and act as a headquarters for the study group with physical space in which to communicate and work.


Below is a sample email for how you could reach out to your library.


YCPC highly suggests having an advisor for the chapter, and some schools even require it. An advisor can typically be any staff member, faculty or administrator at your high school. Ideally, an advisor for your chapter should share an interest in programming. The role of advisors varies by school but usually they are responsible for providing counsel and guidance to the chapter, contacting school administration should there be a need to do so, understanding and sharing policies that impact the chapter, and facilitating the development of the chapter. Advisors also should provide a room or classroom to hold the chapter meetings. To find an advisor for your chapter, consider reaching out to computer lab staffers, or any other teachers/administrators with familiarity in programming.


Email Draft

     Hi, my name is __. I am a _th grade student who is looking to start a Youth Competitive Programming Circle study group at your library. As a study group, we aim to encourage programming at the library by participating in volunteer programs, holding coding events, and providing programming classes that stress among students. We are looking for a library that can help guide our study group and provide a place for us to hold meetings. If you have any questions, please reply and I'll get back as soon as possible. Thank you!

(name)

Email: (email)

Phone Number: (Number)


The First Meeting


This is a meeting of all those interested in being a part of the study group, whether it will be as an ordinary member or as a potential staff member. Advertise the meeting to potential members through local papers, posters, websites, social media, and school radio announcements. Bringing food for everyone to eat is a good motivation for students to come too. First impressions are everything – don’t let your chapter die before it begins!


The meeting should follow a well-structured format, such as:

  • Welcome and explain briefly the reason for the meeting and be clear on the reason for the study group and what members are encouraged to do.
  • Record names, emails, and phone numbers and any special interests and skills of attendants.
  • Introduce the staff members and the potential programs the study group may do (ex: events etc.). Cover what the study group will do throughout the school year.
  • Have time for questions and general discussion.

Once the meeting is over, review the skillsets and interest levels of your members. Consider the likely programs for your study group depending on the interests and capability of both potential and extant members.


How to Make a Presentation Engaging

During gatherings presentations are crucial, and with well-sequenced slides containing the right material it would appear that that would be enough. Though your slideshow may possess the perfect content, it is you who needs to present it. In order to carry your point across, it is necessary to keep the audience engaged so that they grasp the message and remain interested. By using concepts like interaction and visuals to both initiate and carry on throughout your presentation, you will be able to successfully present at such an event.


Though it is tempting to start straight at a main point, easing into your presentation or providing some sort of initial overview will provoke attention in your audience as well as prevent any confusion.


Go about the beginning of your presentation as if you were writing a story. Just as you need to make that first sentence as intriguing as possible, you need to make those first few seconds grasp the attention of your audience. Use questions to get your audience involved as well as to foreshadow, display an eye-catching image, or start off with a comic line relating to what you will be going over. Make sure that whatever tactic you use to commence your presentation immediately attracts your audience and relates to what you will be going over.


By starting off with a question for your viewers, an image that arouses curiosity, or a line that evokes laughter, you are getting your audience involved, which is something that should be maintained throughout your presentation. While trying to keep your audience’s involvement and interest, make sure to keep variety in how you go about doing so. There is an array of possible tactics, which include asking questions, using props, incorporating humor, or letting viewers voice their opinion. Use multiple tactics and strategically place them throughout your presentation so that there is a constant sense of involvement.


Alongside keeping your audience being involved with the presentation, you have to be involved with them. Try to create a connection between you and viewers by using body language and tone. It is important to preserve posture and face your body toward the audience; this is so that you appear more confident and open towards viewers. It is okay to use hand gestures throughout your presentation, but make sure that it is gone about modestly for the most part, since you don’t want your hand gestures to appear excessive or distracting. Large and sharp hand gestures should only be used on specific points that call for emphasis. Throughout your presentation make sure that you fluctuate your tone and appropriately match it to what you are addressing. Tone should also be used alongside gestures when applying emphasis. Above all, it is vital to maintain eye contact. Eye contact is the most versatile form of body language in that it can be used to form connection, emphasis, and engagement.


Visuals are another key aspect to a successful presentation. Not only do they give viewers a visualization of what you are addressing (hence a better understanding), but they also make a presentation generally more entertaining. People are attracted to astatically pleasing things, so throwing in images to highlight certain points will also keep the attention of your audience. Though images are amusing, it is important that they aren’t excessively used and are strategically placed in your slides. It may seem obvious, but all images should serve an exact purpose.


Using these methods will aid you in creating an effective presentation.


Effective Concepts While Teaching

When teaching younger kids, you should seek to provide lessons that are both informative and interesting. In order to accomplish an effective lesson, you can incorporate tactics such as quick recaps, questions, and displaying connections between material. To make these lessons more entertaining incorporate trivia games, awards, props, and so on. Using these concepts can aid your students’ in understanding and grasping material as well as increasing their general interest.


During video lectures or other forms of teaching, students can retain information more effectively if you simplify material to fit their understandings. This does not mean you should restrain from explaining certain aspects to the material, it just means that you should go about explaining the information in a way that those learners will most effectively understand. After going over specific material, make an effort to recap and condense the information.


When recapping information you can also incorporate questions to keep students more engaged and alert. You can approach this by throwing in quick questions (this can also help you in finding out if you need to review anything again) or small trivia games, possibly with rewards (which can help boost students’ confidences, leading to more involvement).


Throughout the lesson, try to point out connections to things students are already familiar with. This can be with previous information you’ve gone over and even things outside of coding. Exhibiting how the material is applicable to real life scenarios is also very useful. These ideas can help students have an easier time remembering and understanding material.


Alongside tactics that help students better learn and retain information, methods that keep things exciting and engaging also should be used.


You can place mini games in a lesson as another form of recapping or display a video. If you choose to use a video, make sure that it isn’t very lengthy (possibly keep it under six minutes) and to always explain the material alongside the video. It is key to remember that videos should not be providing the majority of the information, and are there only to be an interesting way to aid students’ comprehension.


Adding props can give students a more visual understanding. If you do decide on using this method, do not feel the need to buy or produce some amazing model. You can very easily create a prop with things on hand or use objects you already own to represent something. These props can be utilized in showcasing a concept or for the use of the students.


Placing activities in your lesson is another effective way in assisting students’ apprehensions. Ideas for small activities are endless, some possibilities include: drawing diagrams or pictures, discussing, or writing on the material.


Using these tactics, that both improve students’ comprehension and interest, while teaching can increase the effect of the lesson.


How To Conduct An Efficient Lesson

With a club all about learning, the lessons taught must be efficient and interactive, in order to get the most member involvement. There are a few proven methods for making lessons informative, understandable, and interactive. With the use of such methods, students will be able to retain the information much easier, and will be more interested in the subject.


One of the most effective methods for teaching others information is in the delivery. It is important to introduce the main topics of the lesson at the very beginning. Then when the presentation is in order, the key points should be stated and explained. At the very end, everything learned should be summarized and repeated. Also, keep in mind that questions are just as important as answers. Leave time for a Q&A session, and encourage an interactive discussion. It is important to quiz people, in order to see if they are taking in the information, and if you are delivering it well. Don’t stress the students out with large and graded assessments – just ask them through the Q&A discussion session.


Research shows that the combination of teaching strategies, such as visual and audio, work best. Therefore, it is essential to include a visual portion to an auditory presentation. This can include a PowerPoint, an illustration, or a video. Make sure to include an explanation of how this visual piece is an addition to your lesson. Another important element to a presentation is audience involvement. With activities that involve hands-on moments, the audience is encouraged to comprehend the material more in depth, and this can bring much more excitement to the lesson.


Carrying on with the idea of excitement – nobody wants to listen to a boring, long, continuous speech. Put yourself in the audience’s shoes, and make the presentation as exciting as they would like. If it happens to be a lengthy presentation, include a few breaks, or a few fun clips or games in between; you can even bring some snacks to lighten up the mood! Overall, just keep in mind what they will see and hear, and how you believe it will be perceived, to make the most successful lesson.


Especially when teaching programming, it is difficult to learn by just hearing the information. Try to have the students access some sort of computers or technical devices to try out the information. There are many resources for trying out new code and building small, interactive applications. Even playing a quick computer game that involves what you are learning can add some interesting edge to the lesson. For example, most games consist of a repetition of multiple steps, carried out in different orders. A helpful activity would be to try to take apart these steps, and what the code could possibly look like for this certain game.


In the end, the most important part of a lesson is the information, and the way it is presented. With passion, and a good organizational system, students will be able to learn and contribute. Remember to present the lesson with hands-on activities and visual aids to keep everyone involved and interested throughout. Put breaks in between lesson sessions, to keep brains fresh, and create a positive and light attitude, suited for learning.

Useful Tools and Software

Text Editors


Notepad++

Notepad++ is one of the most popular text editors. Like all text editors, it is capable of syntax highlighting and basic debugging. The most advantageous feature of Notepad++ is its plug in support. By downloading plugins, users can add a variety of convenient features to the editor, including Hex Editor and Function List. HTML tags is a particularly useful plugin, and makes Notepad++ the ideal language for programming in HTML and CSS.


Crimson Editor

Crimson editor supports the fundamental functions that are also included in Notepad++; although unlike the former it does not include plug ins. It does, however, include automatic tabbing, making it easier to code in languages such as Java and C++.

Compilers


Compilers are the key to translating your scripts and programs into a language that the computer can understand. Most compilers for high level languages are written in C, eliminating complex steps and allowing for more efficient programming. Popular programming languages usually have their own websites, where the compilers can be found. After you have downloaded the compiler and written the necessary programs, the final step is to open the file using the compiler. From there, you can test your programs for bugs.


Code Academy


Code Academy is a free and extremely useful resource for new programmers. It contains interactive tutorials on languages including Python, Ruby, Perl, Java, HTML, and JavaScript; as well as information on adding APIs. There are also opportunities to practice with projects such as coding an interactive website or a basic game of Battleship. Users can also share and explore projects across the Code Academy community.


Choosing a Language

Choosing a language may appear to be a daunting task for new programmers, simply because of the seemingly endless variety of languages. However, deciding on a language ultimately depends on the tasks that your programs seek to accomplish. (Keep in mind that a programming language is only as powerful as the programmer, thus it is recommended that you continue with one language and perfect your abilities; instead of constantly shifting between languages.)

Levels of Programming Languages


Programming languages are often referred to as “high level” or “low level”; however these classifications have little to no relevance to their actual difficulty. The closer the correspondence between a language and the machine architecture are, the lower the level. Low level languages are difficult to program in, simply because they must be extremely precise in order to communicate with a computer’s hardware. Beginners are advised to program in high level languages, which are written with compilers that translate the code into low level languages that the computer can understand. Compilers make understanding and programming in high level languages easier, ultimately resulting in increased efficiency.


Popular Languages



Python: General Purpose
Python is a high-level general use scripting language whose syntax is founded upon English keywords, allowing users to program ideas while using fewer lines of code. It is used to quickly sort and search through data, and is often used by major corporations (i.e., Google, NASA,CERN, etc.) as a scripting language for web apps.

Java: General Purpose
Java is another general use language which allows for more creativity from the user. Like Python, Java is capable of writing scripts to quickly sort and process big data (such a function is advantageous, seeing that low level languages do not have this ability). It is used to program Android apps, Minecraft, web applications, and server side applications.

HTML/CSS: Web Design
Though HTML scripts act as a foundation for many web pages, the language itself is far from complex. HTML scripts mainly contain the text that is displayed from websites, and aside from being able to perform grouping and formatting/padding, HTML is not particularly aesthetic. Thus, it is often paired with CSS, which acts as an embellishment for the otherwise plain HTML.

C/C++: General Purpose
C and C++ fall lower on the language pyramid; however their close proximity to the machine allows for more complex functions. It becomes evident that because the two languages are closely connected, familiarity in one language results in a fairly detailed understanding of the other. However, C++ is written with a C compiler, heralding easier and more efficient programming. C and C++ have a wide variety of functions, from writing files and algorithms to coding boards. (Note that C cannot be used with web applications.)

Note that the above list is not definite, for there are many popular languages to explore. Other languages to delve deeper into may include Perl, Ruby, and PHP; however it is important to keep in mind that programming skills can only be acquired through practice and consistency. That being said, do not allow yourself to be led astray by the overwhelming number of languages.



First Project Suggestions

Now that you have an outline of resources to reference, the problem is finding projects to start off with. Here, are some suggested ideas that you can attempt to try and even improve upon as you gain more skills. Not only is this article helpful for beginners, but also for those who have more experience but are hoping to become familiar with a new language.

Basic Management App

What is great about this concept is that it can be created in a variety of different programming languages. If you are a complete novice, try using Scratch or App Inventor where it makes the process more unambiguous and user-friendly.


This app can be as basic as a to-do list, or something more complex. You can play around with adding labels and more levels of organizations, integrating it with other apps to increase productivity, adding notification options, and anything else you can imagine.


Currency Converter

This app can be programmed in many different languages as well and is easy to create. Some advanced features you can add include auto-detecting currency based on location and allowing there to an option to re-use recently or frequently-used conversions.


Simple Games

This is an excellent project to be introduced to programming with as it is engaging and entertaining. Some examples include Pong, Tetris, and memory puzzles. This suggestion helps aspiring programmers become familiar with the concepts of loops and understanding how to anticipate the user’s actions.


Art App

TYou can start with a rudimentary app design that allows the user to draw lines and you can expand on it by allowing for more capabilities. As you progress, try adding different colors, line thicknesses, and sharing features. This type of app allows the student to explicitly see how the output of their code for those that are visual learners.


Website

If you are most interested in pursuing a career in web development and learning HTML and CSS, then you can try and create your own website. The possibilities are endless and you can explore everything from a blog or an online magazine to something more interactive like a social network or incorporating e-commerce.


Common Programming Mistakes To Avoid

For a program to not only work, but to function the most effortlessly and with the least amount of complications, a good programmer must ensure that they are not overlooking any errors that might exist in their code. Think of your code like Jenga. When put together in the best way, then there is harmony and balance. However, one missed step can cause it to fail. Here are some frequent mistakes that programmers tend to make.

Over-complicated Code

Code should be as refined and simple as possible. When functions of code are not assigned a clear, singular function but are instead intertwined, then it can be difficult to correct any issues that may arise and to pinpoint its main purpose. When your code has the minimum amount of what is needed for the program to function, it will be vastly easier to “read”. Code with the intent of minimalism and optimization.


Not Anticipating User Actions

When writing code, you are often focused on the functionality of the app assuming that the user will understand how to use your program. You need to able to account for arbitrary or illogical user actions, then create proactive solutions for them. What if, for example, submitted information by the user is not in the proper format?


Not Testing Their Program Enough

The most effective way to understand problems with your program is to actually test it out. You can have others try it as well to gain an understanding of how their interaction with it differs from what you may have expected. And from their results, you can figure out how you can properly address these changes. Attempt to visualize all possible mistakes that may exist in your app and focus on finding ways to avoid them.


Making Their Program User Friendly

Your code may be functional and simple, but if the user can not easily utilize your program that it is for naught. Programmers can sometimes overlook or underestimate the importance of how accessible their user interface should be. The simplicity of the UI can be the determining factor in how successful your program turns out to be. Think about it: if a user can smoothly navigate your program, then they are more likely to use it. To make your program more user-friendly, try to rearrange elements into the most straightforward manner and be intuitive. Gain the foresight to predict your user. Think about how to make processes the least amount of steps and effort.


Global Variables

This is strictly for Java, but is an incredibly common mistake. Though, global variables seem to be the versatile, all-encompassing solution for a variety of concerns, they often do more harm than good. They can be acted upon by any part of the program, making it difficult to give them a localized and specific function. This can also cause them to have undesired effects. You have to not only worry about if the variable was initialized, but also why and if changed a different value than intended.


Volunteer Opportunities and Hands on Experience

Undoubtedly the purpose of any student’s joining of such a study group is to gain internships, opportunities, and volunteer positions they would have otherwise been unable to access. Here are several ideas to get started – of course, don’t be afraid to get creative and find unique ways to test your skills in the field.

Helping Local Businesses

In this program, study groups help write applications or websites for local small businesses helping to provide a unique learning experience for the members.


Getting Started

In terms of getting started writing websites for restaurants is a good place to begin.


Feel free to call, visit, or email your potential client and remember the situation is only as awkward as you make it. A restaurant owner will be less willing to place trust in a person who cannot even form a coherent proposal. To start off, we suggest using email to contact your client.

  • It's free (unless you want to use the program for fundraising purposes
  • Show them your past work
  • Emphasize on the charitable aspect of your study group
  • Convince them that having a website is crucial in today's modern society

False Advertising

A little bit of exaggeration can go a long way, but it'll eventually come back. So don't exaggerate.


Tips for Reaching Out to Businesses


The Library Coding Initiative (LCI) helps make programming more accessible in schools. Through this program, the fundamentals of computer science are introduced in interactive ways. One of these opportunities includes writing a program or website for local businesses. This is a wonderful experience for aspiring programmers as it is a chance for them to sharpen their business skills as well as demonstrates an applicable use for programming. Here are some useful tips for reaching out to potential clients.

Do Your Research


Before initiating contact with a business, find out as much prior information as you can about them. Try to find clients who lack a strong or functional program/website, as these will be the ones most likely to be enticed by what you have to offer. Researching will also help you gain a sense of what you can do specifically to improve a potential business. For example, if you are interested in building a better website for a restaurant, and you see that their current one has no app integration and isn’t user-friendly, then this is what you can focus on. Having a perspicuous understanding of your prospective client’s needs and wants will greatly benefit you later on.


Call, Visit, or Write


If you have no connection to the potential client, it is best to start by contacting them by phone or via e-mail. If you choose to call them, have an outline of what you plan to say to them and anticipate their responses. Remember to be polite and speak articulately.


If you are writing a letter or e-mail, understand how a business letter or e-mail is formatted before writing one. Remember to revise it carefully to ensure that it is high-quality, as this will be their first impression of you. If needed, you can have an adult proofread and critique it.


Once a business has expressed interest in working with you, then it is best to plan a visit with them. If you attempt to schedule one before, then it might come off as presumptuous and rude.


Be courteous and Professional


When addressing a potential client, avoid improper language and behavior. How you act and speak is often a reflection of your perceived performance and greatly determines how likely they are to enlist your services. Being professional usually entails being accountable, responsible, and punctual. Be diligent with keeping in constant contact with them, meeting deadlines, and fulfilling their requests.


Be Clear and Concise


Don’t ramble on or give a copious amount of information. The potential client should be able to understand what you are offering and why right away. Otherwise, they may quickly become disinterested. Think of it as writing a persuasive essay, where you lead off with a hook that gives an unambiguous, compelling idea of what the focus is in the very beginning. Then, you connect it to other relevant points that tie into this main idea in a coherent, logical order.


Outline the Benefits of Having a Program/Website


For a business to be interested in becoming a client, they must first understand what they can gain from it. Provide details about why having a program/website is essential and how it will impact their business. Also, it can help if you list precise examples of what you plan to do for them.


Create a Portfolio


You are more likely to gain clients if you have a reputable reputation. In order to do so, you can create a portfolio of your previous works to showcase to interested parties. It would also be helpful to ask for testimonials after working with a client, especially if you feel that they were satisfied.


The Coding


For the coding, your members can either choose to write the website completely on their own, or utilize current templates. Using templates helps simplify the coding so your members aren't overwhelmed, but also exposes them to coding for real life applications which is a crucial part of their programming education.


Easy Peasy

Since creating a website via template is quick and easy, it is worth it to create the website and have a finished product to show to your client. They will be much more willing to take up your offer if they see the quality of the website for themselves.



To use templates:


  1. Google (search for free restaurant templates. You can also search for free Bootstrap website templates. Bootstrap websites are different in that they include an extra CSS file, but you won't need to worry about that if you are just using going to use a template.

  2. Select and download a template of your choice. Alternately, download the website's source file
  3. You should have a folder (if zipped, unzip it) with a .html file and folders such as img, js, css. There may be also other files and folders, it changes from website to website. If there is one html file, open it. If there are more than one, look for the primary html file.

  4. In the html file, there should be a LOT of code. We suggest using an editor such as Sublime Text that can easily identify which parts of the code are the actual content (Sublime Text offers an unlimited free trial). In Sublime Text, in the default theme, the content text should be white. You should be able to easily identify it, it's the part in the code that makes sense.

  5. Change the content as you need.

  6. If you need to view the website, save the html file in your code editor, right click the html file in the folder, and choose "Open in Google Chrome". You can open the html file in other browsers like Firefox or Internet Explorer.

  7. If done properly, it should open up the html file in your browser. The same webpage as the template should be displayed but with different content.

  8. 8. Now, you can upload it to the server. Look for free website hosting services by simply searching for them. From here, you can add the domain and etc. We won't rant on about how to upload your website, this is a chapter documentation after all. If you are stuck, just Google it.








Tutoring!

The title says it all, you tutor. In essence, you create a 3 day intensive youth study group (More specific details about study groups can be found under "YCPC Courses") at an elementary school, middle school, or day care center. In return: volunteer hours, good credibility, free publicity, and potential future members. This program requires a significant amount of computers and manpower. The purpose of the tutoring session is to get the attendees interested in programming and to give them a running start.


Preparations


Location: The library. Just like study groups, it'll be a pain to provide all those computers.


Adult Supervision: You need one. Even if it's not mandatory, get one. Even a parent will do.


Back Up Staff: Rule #1 of dealing with people - something will go wrong. Have a healthy amount of staff members to overlook the entire event to help out in emergencies or to compensate for no-shows.


Setup: Make sure you at least have 1 project and screen to show the miniproject, and a way for the students to work in groups with their computers. In computer labs, this may not be entirely possible, but make do with what you have.


Instructors: 1:5 instructor to student ratio is preferable.


Transportation

Cars are always appreciated, and the adults that drive them, are extremely helpful to operations. If you forget to bring the charger for your laptop containing all the crucial files, then it can be helpful to have someone go make a run.

Format


Video Lectures: Train your instructors to each memorize and be able to present a study group lecture. Your study group looks much smarter if you give the lectures yourself rather than use our online ones. Jokes, candy, and fun can all increase user retention.


Quizzes: You may quiz the students at the end of the tutoring session and assess their progress. However, keep in mind the session isn't supposed to make them hate programming, it's to inspire them to continue studying. If you feel the students don't have the attention span to finish the quiz,don't make them have to take it.


Study Guides: Print out the study guide for the chapter for each student to use as a sort of cheat sheet, something they can refer back to for syntax. After all, 3 days is not enough time to memorize all that code.


Miniproject: This is, like in study groups, a core part of the tutoring session. Group the students into groups of 5 and have them collaborate on the project. There should be 1 student instructor per group. The instructor should work with the students to create a program to fulfill the prompt.


Time Constraint

You only have 3 days, and the sessions can't be too long either. Things that aren't crucial should be left out entirely.

Hackathons

Events are the most fun and effective way to get publicity and in turn, more members.


Why?

Hackathons are important to a study group not just because they bring in publicity, but also because they are magnets for developers. By having all those students interested in coding in a single place, it's an all you can eat buffet of potential members. If you decide to charge an attendance fee, you may be able to recoup much of your costs.

Hackathon

Hackathons are events, typically lasting several days, in which a large number of people meet to engage in collaborative computer programming. E.g. a series of 48-hour hackathons to build new web and mobile services.


Preparation


From http://techcrunch.com/2012/03/31/hackathon-planning/

Organization and the pre-event legwork are everything. Here are the major points you must cover:

1. Pick a theme. A good approach is to explore existing verticals: at Aviary, we picked photos because of their relevance to our API / SDK in addition to the abundance of companies building awesome products in the space. If community is your primary concern (and it should, at a minimum, be a key motivation for throwing one in the first place), keep your role explicitly neutral. Don’t name the hackathon after your company (this is why we opted for “Photo Hack Day” rather than “Aviary Hack Day”). Most importantly, don’t privilege your own product.

2. Leave ample time to plan. Depending upon the scale of the event, you need anywhere from three to six weeks to properly prepare for the event. The first Photo Hack Day was organized in three incredibly frantic weeks, and Photo Hack Day 2 – a much more extensive endeavor, in terms of attendees, offerings, and general scale – took over two months.

3. Lock down a venue. For obvious reasons, nothing substantive can happen until this is taken care of.General Assembly is the go-to hackathon destination in New York City, but other alternatives exist: the Spotify hackathon was held at SPiN, hackNY continues to be held at NYU, and plenty more take place in a range of corporate venues such as Microsoft, Google, or Aol ventures.

4. Secure sponsorships. To be sure that the broadest range of potential sponsors can participate, use tiered sponsorships and keep price points relevant to what you can provide in exchange for support. This consists of varying degrees of product / API exposure, as well as branding opportunities. Generally speaking, the most expensive elements of a hackathon are venues, food, and prize money – contributions from a headline sponsor should cover the cost of at least one of these.

That being said, as an organizer, it’s crucial to strike a balance between making an event worth a sponsor’s time and preventing the weekend from degenerating into a pitch-fest. Your priority is to throw the best event possible for hackers and the tech community. After all, when builders and innovators are exposed to sponsors in ways that don’t feel forced, everyone wins.

5. Rally the interested parties. Tap into existing developer networks – Meetup is perfect for this – and make the appropriate reach-outs to sponsors and companies with cool, useful APIs. If a company with an irrelevant API contacts you, it’s perfectly okay to tell them that the event may not be the best use of their time. You save them the time, effort, and the risk of being disappointed, while sparing developers from demos of technology they won’t use.

Figure out who can help you on the day of the event: coworkers, volunteers, or friends alike. If the venue offers on-site help, be sure you establish, in writing, who is taking care of what, and what time you can rely on them to be where. When you don’t know how the hell the A/V system works or where extra power cables are stored, these people will help fend off the waves of potential panic attacks.

6. Market like heck to potential attendees – and don’t forget students! In addition to the obvious press reach outs, look for influencers who can spread the word via social media and word of mouth. Attend events, happy hours, and contact listservs: a few great places to start include StartupDigest, Gary’s Guide, or incubator mailing lists. Ask sponsors for help with cross-promotion and leverage their networks; after all, it’s in their best interest to have the widest audience.

We’ve had great success with student-hackers, so reach out to the computer science departments at local universities. At Photo Hack Day 2, Columbia senior Yufei Liucreated Synviary and walked away with the Aviary company prize, People’s Choice, and First Place, winning a grand total of $7,500. Abe Stanway and Misha Ponizil, students at Rutgers and NYU, respectively, won People’s Choice and Second Place at Photo Hack Day for Honey Badger. Their bounty? $4,000.

If, according to one redditor, neon wayfarers, American Spirits, and PBR are ingredients for the hipster beartrap, then free pizza, free beer, and the potential to win hundreds (if not thousands) of dollars over the course of a weekend is the student developer equivalent. Their attendance is absolutely worth the time it takes to reach them. For those of us a few years removed from college, we can’t allow ourselves to forget that the next wave of members in the New York tech community will be new graduates.

7. (Slightly) over-order on food. I can speak on this matter as someone who has epically over and under-ordered. If you over-order, it sucks to see food wasted (especially if you’re footing the presumably expensive bill), but it’s nothing compared to facing a maelstrom of empty, angry developer bellies. There should be two golden rules concerning hackathons and food: (1) don’t f*ck up the coffee, because nothing is more endearing than dragging developers out of bed on a Saturday morning and depriving them of caffeine, and (2) don’t f*ck up the meals. (In the interest of full disclosure: I have done both.) If you think it is remotely feasible for a room of over 200 young men and women to finish the spread, trust me – they will. Also, it helps tremendously to ask attendees to note any special dietary needs when they sign up for the event.

To give you an idea of why you should oh-so-slightly over-order on food, here’s what hackers at Photo Hack Day 2 consumed in a span of thirty-two hours: 250 bagels, 300+ tacos, 300+ burritos, 12 buckets of BBQ chicken, 20 quarts of pulled pork, 12 pans of cornbread, 20 quarts of mashed potatoes, 150 cookies, 80 boxes of pizza (640 slices total), 27 cases of water (432 bottles total), 384 beers, and 28 cases of soda (448 cans total). Hackathon organizers, do yourself and your hackers a favor by including an extra pizza (or ten) in your catering order.

8. Make sure there’s (a wide range of) cool stuff to give away. There’s a strong correlation between the quality of prizes and the quality of hacks. For the first Photo Hack Day, Twilio gave away an 11″ MacBook Air, while Shutterstock gave away a Nikon dSLR. I’m sure you can guess whose APIs were well represented on Sunday.

Push participating companies to sponsor a prize and give them the freedom to choose the winner. It’s a win-win situation for everyone: companies want developers to hack on their APIs, developers (like the rest of us) don’t mind material motivation, and attendees want to see cool hacks.

9. Remember that, regardless of how much you prepare, sh*t may – and probably will – go wrong. It’s just a matter of figuring out what constitutes an acceptable mishap and what is debilitating, and building safeguards to ensure that the latter doesn’t happen. Mishap: an order of twenty Hawaiian pizzas, when you meant to order pepperoni. Percolators end up brewing what looks like dirty water, rather than coffee. Not enough small or medium tees to go around. Compare this to the disastrous counterpart: the wifi cuts out. Projector breaks during demos. Not enough power outlets. See what I mean?

Once all of these moving pieces are in place, the foundation is set for a solid hackathon. Solid does not mean smoothly run, by any means – execution of the actual event is an entirely new beast.


Helpful Links


http://ijnet.org/stories/how-plan-successful-hackathon
http://www.pbs.org/idealab/2013/06/how-to-organize-a-successful-hackathon159/
https://docs.google.com/document/d/1fBuisDTIiBAz9u2tr7sgv6GdDLOV_aHbafjqHXSkNB0/edit
http://techcrunch.com/2012/03/31/hackathon-planning/
http://blog.newrelic.com/2014/07/01/10-hints-holding-great-hackathon/
http://www.techrepublic.com/article/how-to-organize-a-hackathon-6-key-tips/
http://www.inc.com/guides/2010/11/how-to-set-up-a-hackathon.html

Visiting Tech Companies

Organizing a field trip is a reliable method of giving members something fun to do. While it’s very fun, being able to brag about touring tech companies also makes for better PR materials. The field trip does not require much in terms of cost, and there is little risk that something will go wrong.


Preparation


Schedule: Have a detailed time schedule to keep to during the field trip and to notify students, parents, and drivers.


Transportation: Carpooling is the best option, but that may be different depending on your circumstance.


Attendee List: Keeping track of who's going, who's not, who's a maybe, and who's driving is crucial. Make sure you note down their contact information too.


Liability: Get help from your head librarian; we don't offer legal advice.


Finding Sponsors: Find computer tech companies willing to give your chapter members a tour, after all, that’s what the entire trip is for. Search up which tech companies are around your area. After you get a potential list of clients, search up their press or main phone number/email.


Feel free to use this draft:


Email Draft

Hi,

     I'm sending this message to represent our coding study group at our library in (location here). We were wondering if it would be possible for us to visit your (Insert city name here) office for an hour to tour the office, get to know the culture of the company, and also ask your developers a couple questions regarding the typical developer life in (Insert company here). We're very interested in technology and think it would be very encouraging to our members as they would be able to experience the culture of a major tech company and also see what the day to day life in the industry is like. Thanks for your time! (Insert Name)

     We were wondering if it would be possible for us to visit your (Insert city name here) office for an hour to tour the office, get to know the culture of the company, and also ask your developers a couple questions regarding the typical developer life in (Insert company here). We're very interested in technology and think it would be very encouraging to our members as they would be able to experience the culture of a major tech company and also see what the day to day life in the industry is like.

Thanks for your time!

(Insert Name)


Information for Parents:


Inform the parents of your attendees what exactly is going to go down. This makes them more willing to send their kids and less likely to spam your email.

Email Draft

          Hi, here is some information for the upcoming trip. We will be meeting at the front of (school) by (time), but please arrive a couple minutes early.

(Discuss Schedule Here)

          We will then head back to (school), where we will hopefully arrive at around (time). If you have any questions at all regarding any of our procedures or our schedule, please send us an email at (email) and we will get back to you as soon as possible.

Here is the addresses for all the places that we will be heading to.
School Meeting Location - (Address)
Destination - (Address)


-Study Group Staff

Officer Name - Officer Phone Number
Officer Name - Officer Phone Number
Officer Name - Officer Phone Number
Officer Name - Officer Phone Number

Gatherings

A fun way to stimulate and sustain interest in your study group.


Purpose


After a certain amount of time, members may begin to lose interest of the same old things going on in your study group - courses, corporate field trips, supporting local businesses, etc. Also, there may be some members that came to the first meeting or the first couple meetings but never came back. Gatherings help to provide some variety to your chapter, and if used effectively, can bring back members that may be inactive.


The beauty of gatherings is that while they provide a good opportunity to convey to your members what has been going on so far in your study group, and gatherings also appeal to anyone that knows about the study group. A proper gathering should be similar to a party. Lots of food and drinks should be provided and there should be some sort of RSVP. The material of these presentations depends on the time of year and also the stage of where your study group is located. After these presentations, it’s all fun and games! Hosting gatherings will give members the impression that you run a fun study group, and as a result you might maintain lots of active members!

Preparations


Planning a gathering does not look too hard, however there are a lot of things you need to take into consideration: Setting, extra stuff, speeches/presentations, guests, handouts, computers, specific instructions, agenda and most importantly- food (and drinks)!


  • Setting: Think really carefully about where you want to host a gathering. The first thing that guests will see is the location, so location is key. Also think about the amount of people that will be coming. Some suggestions for location are: a park, your own house, an office, etc.

  • Extra stuff: Delegate people (preferably staff members) to bring certain necessary things like balloons, spoons, forks, plates, bowls, napkins, and cups. Depending on the location, you may need chairs, picnic blankets, trash cans or tables. Be sure to hold anyone bringing extra stuff accountable and if they forget, do not hold back from punishing them.

  • Speeches/presentations: This is the most important part of the gathering. The content of these speeches/presentations will depend on each chapter’s circumstances. Then you may split off into different programming levels and talk about internships and hackathons for the experienced and study groups for the beginners. Speeches and presentations do take a lot of planning however so do not put this off till the last minute. Content and presentation is key!

  • Guests: If you or any staff members know someone working for a tech company, invite them to the gathering! Inviting “special” guests will make your chapter seem a lot more legitimate to the members watching. You can also host a small Q+A session with the special guest if you would like. Feel free to invite any parents to the gathering as well!

Make Custom Handouts


After the gathering, do not just post an outline or PowerPoint slides as an advertisement. Chances are that most members will not see it. Physically printed handouts will be a lot more effective. You can also put links for study group or field trip sign-ups in these handouts.


  • Computers: Have a couple computers on hand in case a member wants to register for your study group on the spot.

  • Agenda: Plan out a very detailed schedule for the whole event for your staff members and any curious members to follow. Be sure to include set-up and cleanup.

  • Specific instructions: Each staff member should have a series of instructions that describe what he/she does throughout the gathering. This is to ensure that all staff members know exactly what they are doing at any time. These instructions should be written by you and no one else.

  • Food: I’m sure you can figure this out. Just be sure to always over-plan food. There’s no such thing as too much food…

  • On the Day


    Have all staff follow the agenda and their specific instructions. You’ll be good to go!


You have made it to the end! If you have any questions or inquiries, please visit ycpc.us/lci.pdf and do not hesitate to contact us.